dnl -*- sh -*- dnl the "configure" script is made from this by running GNU "autoconf" dnl dnl "$Id$" dnl dnl Configuration script for the Fast Light Tool Kit (FLTK). dnl dnl Copyright 1998-2009 by Bill Spitzak and others. dnl dnl This library is free software; you can redistribute it and/or dnl modify it under the terms of the GNU Library General Public dnl License as published by the Free Software Foundation; either dnl version 2 of the License, or (at your option) any later version. dnl dnl This library is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl Library General Public License for more details. dnl dnl You should have received a copy of the GNU Library General Public dnl License along with this library; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 dnl USA. dnl dnl Please report all bugs and problems on the following page: dnl dnl http://www.fltk.org/str.php dnl dnl We need at least autoconf 2.50... AC_PREREQ(2.50) dnl Required file in package... AC_INIT(src/Fl.cxx) dnl FLTK library versions... FL_MAJOR_VERSION=1 FL_MINOR_VERSION=3 FL_PATCH_VERSION=0 FL_API_VERSION=${FL_MAJOR_VERSION}.${FL_MINOR_VERSION} AC_SUBST(FL_MAJOR_VERSION) AC_SUBST(FL_MINOR_VERSION) AC_SUBST(FL_PATCH_VERSION) AC_SUBST(FL_API_VERSION) dnl Get the operating system and version number... uname=`uname` uversion=`uname -r | sed -e '1,$s/[[^0-9]]//g'` if test "x$uname" = xIRIX64; then uname="IRIX" fi if test "x$uname" = x; then # MingW doesn't provide any output when uname is run, even with "-s"... uname="CYGWIN" fi dnl Do not automatically add "-g" to compiler options... ARCHFLAGS="${ARCHFLAGS:=}" CFLAGS="${CFLAGS:=}" CPPFLAGS="${CPPFLAGS:=}" CXXFLAGS="${CXXFLAGS:=}" DSOFLAGS="${DSOFLAGS:=}" LDFLAGS="${LDFLAGS:=}" OPTIM="${OPTIM:=}" AC_SUBST(ARCHFLAGS) AC_SUBST(OPTIM) dnl in case of cross-compiling mingw32 under linux we must change uname for Win32 GUI dnl run ./configure --host=i686-pc-ming32 try use X11 without change uname if test "x$cross_compiling" != xno ; then case $host_alias in *mingw*) uname=MINGW ;; esac fi dnl OS-specific pre-tests... dnl uname_GUI equals $uname unless we target cygwin dnl in combination with X11. uname_GUI=$uname case $uname in CYGWIN* | MINGW*) # Handle Cygwin option *first*, before all other tests. AC_ARG_ENABLE(cygwin, [ --enable-cygwin use the CygWin libraries [(default=no)]]) AC_ARG_ENABLE(x11, [ --enable-x11 use CygWin with X11 [(default=no)]]) if test x$enable_cygwin != xyes; then # NOTE: We can't use ARCHFLAGS for this, since it does not work # with some of the function tests - Cygwin uses a # different C library... CFLAGS="$CFLAGS -mno-cygwin" CPPFLAGS="$CPPFLAGS -mno-cygwin" CXXFLAGS="$CXXFLAGS -mno-cygwin" LDFLAGS="$LDFLAGS -mno-cygwin" DSOFLAGS="$DSOFLAGS -mno-cygwin" else # we target cygwin in combination with X11 if test x$enable_x11 == xyes; then uname_GUI="X11$uname" fi fi ;; Darwin*) # Starting with 10.6 (Snow Leopard), OS X does not support # Carbon calls anymore. We patch this until we are completely Cocoa compliant # by limiting ourselves to 32 bit Intel compiles d_ver_rev=`sw_vers -productVersion | sed -e 's/\.[[0-9]][[0-9]]*//2'` d_ver=`echo $d_ver_rev | sed -e 's/\.[[0-9]][[0-9]]*//'` d_rev=`echo $d_ver_rev | sed -e 's/[[0-9]][[0-9]]*\.//'` if test $d_ver -gt 10 -o $d_ver -eq 10 -a $d_rev -ge 6; then CFLAGS="$CFLAGS -arch i386" CXXFLAGS="$CXXFLAGS -arch i386" LDFLAGS="$LDFLAGS -arch i386" fi ;; esac dnl Define the libraries and link options we will need. LINKFLTK="../lib/libfltk.a" LINKFLTKFORMS="../lib/libfltk_forms.a" LINKFLTKGL="../lib/libfltk_gl.a" LINKFLTKIMG="../lib/libfltk_images.a" GLDEMOS="gldemos" LIBEXT=".a" LIBNAME="../lib/libfltk.a" FLLIBNAME="../lib/libfltk_forms.a" GLLIBNAME="../lib/libfltk_gl.a" IMGLIBNAME="../lib/libfltk_images.a" CAIROLIBNAME="../lib/libfltk_cairo.a" LIBBASENAME="libfltk.a" FLLIBBASENAME="libfltk_forms.a" GLLIBBASENAME="libfltk_gl.a" IMGLIBBASENAME="libfltk_images.a" CAIROLIBBASENAME="libfltk_cairo.a" dnl Check for Cairo library unless disabled... CAIRODIR="" CAIROFLAGS="" LINKFLTKCAIRO="" FLTKCAIROOPTION="" CAIROLIBS="" AC_ARG_ENABLE(cairoext,[ --enable-cairoext use fltk code instrumentation for cairo extended use (default=no)]) AC_ARG_ENABLE(cairo,[ --enable-cairo use lib Cairo (default=no)]) if test x$enable_cairoext = xyes; then AC_DEFINE(USE_CAIRO) AC_DEFINE(HAVE_CAIRO) dnl FIXME This part should be fixed so configure do not depend on dnl we do not rely on pkg-config . CAIRODIR="cairo" CAIROFLAGS="`pkg-config --cflags cairo`" CAIROLIBS="-lcairo -lpixman-1" CXXFLAGS="$CAIROFLAGS $CXXFLAGS" LINKFLTKCAIRO="../lib/libfltk_cairo.a" FLTKCAIROOPTION="-L ../cairo -lfltk_cairo$SHAREDSUFFIX" LIBS="$CAIROLIBS $LIBS" dnl $LINKFLTKCAIRO LINKFLTK+=" $LINKFLTKCAIRO" else if test x$enable_cairo = xyes; then AC_DEFINE(HAVE_CAIRO) dnl FIXME This part should be fixed so configure do not depend on dnl we do not rely on pkg-config . CAIRODIR="cairo" CAIROFLAGS="`pkg-config --cflags cairo`" CAIROLIBS="-lcairo -lpixman-1" CXXFLAGS="$CAIROFLAGS $CXXFLAGS" LINKFLTKCAIRO="../lib/libfltk_cairo.a" FLTKCAIROOPTION="-L ../cairo -lfltk_cairo$SHAREDSUFFIX" fi fi AC_SUBST(CAIRODIR) AC_SUBST(CAIROFLAGS) AC_SUBST(CAIROLIBS) AC_SUBST(LINKFLTKCAIRO) AC_SUBST(FLTKCAIROOPTION) AC_SUBST(FLLIBNAME) AC_SUBST(GLDEMOS) AC_SUBST(GLLIBNAME) AC_SUBST(IMGLIBNAME) AC_SUBST(CAIROLIBNAME) AC_SUBST(LIBEXT) AC_SUBST(LIBNAME) AC_SUBST(LINKFLTK) AC_SUBST(LINKFLTKFORMS) AC_SUBST(LINKFLTKGL) AC_SUBST(LINKFLTKIMG) AC_SUBST(LIBBASENAME) AC_SUBST(FLLIBBASENAME) AC_SUBST(GLLIBBASENAME) AC_SUBST(IMGLIBBASENAME) AC_SUBST(CAIROLIBBASENAME) dnl Handle compile-time options... AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]]) if test x$enable_debug = xyes; then DEBUGFLAG="-g " else DEBUGFLAG="" fi AC_ARG_ENABLE(gl, [ --enable-gl turn on OpenGL support [default=yes]]) AC_ARG_ENABLE(shared, [ --enable-shared turn on shared libraries [default=no]]) if test x$enable_shared = xyes; then PICFLAG=1 SHAREDSUFFIX="" FLUID="fluid-shared" case $uname in Darwin*) DSONAME="libfltk.$FL_API_VERSION.dylib" FLDSONAME="libfltk_forms.$FL_API_VERSION.dylib" GLDSONAME="libfltk_gl.$FL_API_VERSION.dylib" IMGDSONAME="libfltk_images.$FL_API_VERSION.dylib" CAIRODSONAME="libfltk_cairo.$FL_API_VERSION.dylib" DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -dynamiclib -lc -o" ;; SunOS* | UNIX_S*) DSONAME="libfltk.so.$FL_API_VERSION" FLDSONAME="libfltk_forms.so.$FL_API_VERSION" GLDSONAME="libfltk_gl.so.$FL_API_VERSION" IMGDSONAME="libfltk_images.so.$FL_API_VERSION" CAIRODSONAME="libfltk_cairo.so.$FL_API_VERSION" DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -h \$@ \$(LDLIBS) -G $DEBUGFLAG -o" if test "x$libdir" != "x/usr/lib"; then DSOLINK="-R$libdir" fi ;; HP-UX*) DSONAME="libfltk.sl.$FL_API_VERSION" FLDSONAME="libfltk_forms.sl.$FL_API_VERSION" GLDSONAME="libfltk_gl.sl.$FL_API_VERSION" IMGDSONAME="libfltk_images.sl.$FL_API_VERSION" CAIRODSONAME="libfltk_cairo.sl.$FL_API_VERSION" DSOCOMMAND="ld \$(DSOFLAGS) -b -z +h \$@ $DEBUGFLAG -o" if test "x$libdir" != "x/usr/lib"; then DSOLINK="-Wl,-rpath,$libdir" fi ;; IRIX*) DSONAME="libfltk.so.$FL_API_VERSION" FLDSONAME="libfltk_forms.so.$FL_API_VERSION" GLDSONAME="libfltk_gl.so.$FL_API_VERSION" IMGDSONAME="libfltk_images.so.$FL_API_VERSION" CAIRODSONAME="libfltk_cairo.so.$FL_API_VERSION" DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@,-set_version,sgi1.1 \$(LDLIBS) -shared $DEBUGFLAG -o" if test "x$libdir" != "x/usr/lib" -a "x$libdir" != "x/usr/lib32" -a "x$libdir" != "x/usr/lib64"; then DSOLINK="-Wl,-rpath,$libdir" fi ;; OSF1*) DSONAME="libfltk.so.$FL_API_VERSION" FLDSONAME="libfltk_forms.so.$FL_API_VERSION" GLDSONAME="libfltk_gl.so.$FL_API_VERSION" IMGDSONAME="libfltk_images.so.$FL_API_VERSION" CAIRODSONAME="libfltk_cairo.so.$FL_API_VERSION" DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ \$(LDLIBS) -shared $DEBUGFLAG -o" if test "x$libdir" != "x/usr/lib" -a "x$libdir" != "x/usr/lib32"; then DSOLINK="-Wl,-rpath,$libdir" fi ;; Linux* | *BSD*) DSONAME="libfltk.so.$FL_API_VERSION" FLDSONAME="libfltk_forms.so.$FL_API_VERSION" GLDSONAME="libfltk_gl.so.$FL_API_VERSION" IMGDSONAME="libfltk_images.so.$FL_API_VERSION" CAIRODSONAME="libfltk_cairo.so.$FL_API_VERSION" DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ \$(LDLIBS) -shared -fPIC $DEBUGFLAG -o" if test "x$libdir" != "x/usr/lib"; then DSOLINK="-Wl,-rpath,$libdir" fi ;; AIX*) DSONAME="libfltk_s.a" FLDSONAME="libfltk_forms_s.a" GLDSONAME="libfltk_gl_s.a" IMGDSONAME="libfltk_images_s.a" CAIRODSONAME="libfltk_cairo_s.a" DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-bexpall,-bM:SRE,-bnoentry -o" SHAREDSUFFIX="_s" ;; CYGWIN* | MINGW*) PICFLAG=0 if test x$enable_cygwin != xyes; then DSONAME="mgwfltknox-$FL_API_VERSION.dll" FLDSONAME="mgwfltknox_forms-$FL_API_VERSION.dll" GLDSONAME="mgwfltknox_gl-$FL_API_VERSION.dll" IMGDSONAME="mgwfltknox_images-$FL_API_VERSION.dll" CAIRODSONAME="mgwfltknox_cairo-$FL_API_VERSION.dll" else if test x$enable_x11 == xyes; then DSONAME="cygfltk-$FL_API_VERSION.dll" FLDSONAME="cygfltk_forms-$FL_API_VERSION.dll" GLDSONAME="cygfltk_gl-$FL_API_VERSION.dll" IMGDSONAME="cygfltk_images-$FL_API_VERSION.dll" CAIRODSONAME="cygfltk_cairo-$FL_API_VERSION.dll" else DSONAME="cygfltknox-$FL_API_VERSION.dll" FLDSONAME="cygfltknox_forms-$FL_API_VERSION.dll" GLDSONAME="cygfltknox_gl-$FL_API_VERSION.dll" IMGDSONAME="cygfltknox_images-$FL_API_VERSION.dll" CAIRODSONAME="cygfltknox_cairo-$FL_API_VERSION.dll" fi fi #----------------------------------------------------------- # -Wl,--enable-runtime-pseudo-reloc: See str 1585 # appears to be necessary for older binutils versions < 2.16 #----------------------------------------------------------- LDFLAGS="$LDFLAGS -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc" DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -shared \ -Wl,--whole-archive -Wl,--export-all-symbols \ -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-import \ -Wl,--enable-auto-image-base -o \$@" ;; *) AC_MSG_WARN(Shared libraries may not be supported. Trying -shared option with compiler.) DSONAME="libfltk.so.$FL_API_VERSION" FLDSONAME="libfltk_forms.so.$FL_API_VERSION" GLDSONAME="libfltk_gl.so.$FL_API_VERSION" IMGDSONAME="libfltk_images.so.$FL_API_VERSION" CAIRODSONAME="libfltk_cairo.so.$FL_API_VERSION" DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ \$(LDLIBS) -shared $DEBUGFLAG -o" ;; esac LINKSHARED="-L../src $FLTKCAIROOPTION -lfltk_images$SHAREDSUFFIX -lfltk_forms$SHAREDSUFFIX -lfltk$SHAREDSUFFIX" else DSOCOMMAND="echo" DSOLINK="" DSONAME="" FLDSONAME="" GLDSONAME="" IMGDSONAME="" CAIRODSONAME="" PICFLAG=0 SHAREDSUFFIX="" FLUID="fluid" LINKSHARED="$LINKFLTKCAIRO ../lib/libfltk_images.a ../lib/libfltk_forms.a ../lib/libfltk.a" fi AC_SUBST(DSOCOMMAND) AC_SUBST(DSOFLAGS) AC_SUBST(DSOLINK) AC_SUBST(DSONAME) AC_SUBST(FLDSONAME) AC_SUBST(GLDSONAME) AC_SUBST(IMGDSONAME) AC_SUBST(CAIRODSONAME) AC_SUBST(SHAREDSUFFIX) AC_SUBST(LINKSHARED) AC_SUBST(FLUID) AC_ARG_ENABLE(threads, [ --enable-threads enable multi-threading support (default=yes)]) AC_ARG_WITH(optim, [ --with-optim="flags" use custom optimization flags]) AC_ARG_WITH(archflags, [ --with-archflags="flags" use custom architecture flags], ARCHFLAGS="$withval") case $uname in Darwin*) # QD is not supported anymore since 1.3 AC_DEFINE(USE_QUARTZ, 1) AC_DEFINE(__APPLE_QUARTZ__) AC_DEFINE(__APPLE_COCOA__) ;; esac dnl Find commands... AC_PROG_CC AC_PROG_CXX AC_PROG_INSTALL case $uname in OSF1*) INSTALL="`pwd`/install-sh -c" ;; esac if test "$INSTALL" = "$ac_install_sh"; then # Use full path to install-sh script... INSTALL="`pwd`/install-sh -c" fi AC_PATH_PROG(NROFF,nroff) if test "x$NROFF" = "x:"; then # Try groff instead of nroff... AC_PATH_PROG(GROFF,groff) if test "x$GROFF" = "x:"; then NROFF="echo" else NROFF="$GROFF -T ascii" fi fi AC_PATH_PROG(HTMLDOC,htmldoc) AC_PATH_PROG(DOXYDOC,doxygen) dnl How do we make libraries? AC_PROG_RANLIB AC_PATH_PROG(AR, ar) if test "x$AR" = "x:"; then AC_MSG_ERROR(Configure could not find the library archiver, aborting.) fi if test "x$RANLIB" != "x:"; then LIBCOMMAND="$AR cr" else LIBCOMMAND="$AR crs" fi AC_SUBST(LIBCOMMAND) dnl Architecture checks... AC_C_BIGENDIAN AC_CHECK_SIZEOF(short, 2) AC_CHECK_SIZEOF(int, 4) AC_CHECK_SIZEOF(long, 4) if test $ac_cv_sizeof_short -eq 2; then AC_DEFINE(U16,unsigned short) fi if test $ac_cv_sizeof_int -eq 4; then AC_DEFINE(U32,unsigned) else if test $ac_cv_sizeof_long -eq 4; then AC_DEFINE(U32,unsigned long) fi fi if test $ac_cv_sizeof_int -eq 8; then AC_DEFINE(U64,unsigned) else if test $ac_cv_sizeof_long -eq 8; then AC_DEFINE(U64,unsigned long) fi fi dnl Does the C++ compiler support the bool type? AC_CACHE_CHECK(whether the compiler recognizes bool as a built-in type, ac_cv_cxx_bool,[ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ int f(int x){return 1;} int f(char x){return 1;} int f(bool x){return 1;} ],[ bool b = true; return f(b); ], ac_cv_cxx_bool=yes, ac_cv_cxx_bool=no) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_bool" != yes; then CXXFLAGS="-Dbool=char -Dfalse=0 -Dtrue=1 $CXXFLAGS" fi dnl Standard headers and functions... AC_HEADER_DIRENT AC_CHECK_HEADER(sys/select.h,AC_DEFINE(HAVE_SYS_SELECT_H)) AC_CHECK_HEADER(sys/stdtypes.h,AC_DEFINE(HAVE_SYS_SELECT_H)) AC_CHECK_FUNC(scandir, if test "x$uname" = xSunOS -o "x$uname" = xQNX; then AC_MSG_WARN(Not using $uname scandir emulation function.) else AC_DEFINE(HAVE_SCANDIR) fi) dnl Do we have the POSIX compatible scandir() prototype? AC_CACHE_CHECK([whether we have the POSIX compatible scandir() prototype], ac_cv_cxx_scandir_posix,[ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ #include int func (const char *d, dirent ***list, void *sort) { int n = scandir(d, list, 0, (int(*)(const dirent **, const dirent **))sort); } ],[ ], ac_cv_cxx_scandir_posix=yes, ac_cv_cxx_scandir_posix=no) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_scandir_posix" = yes; then AC_DEFINE(HAVE_SCANDIR_POSIX) fi AC_CHECK_FUNC(vsnprintf,[ case "$uname" in HP-UX*) if test "$uversion" = "1020"; then AC_MSG_WARN(Not using built-in vsnprintf function because you are running HP-UX 10.20.) else AC_DEFINE(HAVE_VSNPRINTF) fi ;; OSF1*) if test "$uversion" = "40"; then AC_MSG_WARN(Not using built-in vsnprintf function because you are running Tru64 4.0.) else AC_DEFINE(HAVE_VSNPRINTF) fi ;; *) AC_DEFINE(HAVE_VSNPRINTF) ;; esac]) AC_CHECK_FUNC(snprintf,[ case "$uname" in HP-UX*) if test "$uversion" = "1020"; then AC_MSG_WARN(Not using built-in snprintf function because you are running HP-UX 10.20.) else AC_DEFINE(HAVE_SNPRINTF) fi ;; OSF1*) if test "$uversion" = "40"; then AC_MSG_WARN(Not using built-in snprintf function because you are running Tru64 4.0.) else AC_DEFINE(HAVE_SNPRINTF) fi ;; *) AC_DEFINE(HAVE_SNPRINTF) ;; esac]) AC_CHECK_HEADER(strings.h, AC_DEFINE(HAVE_STRINGS_H)) AC_CHECK_FUNCS(strcasecmp strlcat strlcpy) AC_CHECK_HEADER(locale.h, AC_DEFINE(HAVE_LOCALE_H)) AC_CHECK_FUNCS(localeconv) dnl FLTK library uses math library functions... AC_SEARCH_LIBS(pow, m) dnl Check for largefile support... AC_SYS_LARGEFILE dnl Define largefile options as needed... LARGEFILE="" if test x$enable_largefile != xno; then LARGEFILE="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE" if test x$ac_cv_sys_large_files = x1; then LARGEFILE="$LARGEFILE -D_LARGE_FILES" fi if test x$ac_cv_sys_file_offset_bits = x64; then LARGEFILE="$LARGEFILE -D_FILE_OFFSET_BITS=64" fi fi AC_SUBST(LARGEFILE) dnl Check for "long long" support... AC_CACHE_CHECK(for long long int, ac_cv_c_long_long, [if test "$GCC" = yes; then ac_cv_c_long_long=yes else AC_TRY_COMPILE(,[long long int i;], ac_cv_c_long_long=yes, ac_cv_c_long_long=no) fi]) if test $ac_cv_c_long_long = yes; then AC_DEFINE(HAVE_LONG_LONG) fi AC_CHECK_FUNC(strtoll, AC_DEFINE(HAVE_STRTOLL)) dnl Check for dlopen/dlsym... AC_SEARCH_LIBS(dlsym, dl, AC_DEFINE(HAVE_DLSYM)) AC_CHECK_HEADER(dlfcn.h, AC_DEFINE(HAVE_DLFCN_H)) dnl Check for audio libraries... AUDIOLIBS="" case $uname in CYGWIN* | MINGW*) dnl Cygwin environment... AUDIOLIBS="-lwinmm" ;; Darwin*) AUDIOLIBS="-framework CoreAudio" ;; *) AC_CHECK_HEADER(alsa/asoundlib.h, AC_DEFINE(HAVE_ALSA_ASOUNDLIB_H) AUDIOLIBS="-lasound") ;; esac AC_SUBST(AUDIOLIBS) dnl Check for image libraries... SAVELIBS="$LIBS" IMAGELIBS="" STATICIMAGELIBS="" AC_SUBST(IMAGELIBS) AC_SUBST(STATICIMAGELIBS) # Handle the JPEG lib linking mode (use fltk local or system lib) # If --enable-(resp. --disable-)localjpeg parameter is not set by user # Then we check the JPEG lib usability, with result in sysjpeglib_ok variable AC_ARG_ENABLE(localjpeg, [ --enable-localjpeg use local JPEG library, default=auto]) # Check for System lib use if automatic mode or --disable-localjpeg is requested sysjpeglib_ok=no sysjpeginc_ok=no if test x$enable_localjpeg != xyes; then AC_CHECK_LIB(jpeg,jpeg_CreateCompress, [AC_CHECK_HEADER(jpeglib.h, sysjpeginc_ok=yes) if test x$sysjpeginc_ok = xyes; then sysjpeglib_ok=yes fi]) fi # Now set the jpeg lib and include flags according to the requested mode and availability if test x$enable_localjpeg = xyes -o x$sysjpeglib_ok = xno; then JPEGINC="-I../jpeg" JPEG="jpeg" IMAGELIBS="-lfltk_jpeg $IMAGELIBS" STATICIMAGELIBS="\$libdir/libfltk_jpeg.a $STATICIMAGELIBS" AC_DEFINE(HAVE_LIBJPEG) #ac_cv_lib_jpeg_jpeg_CreateCompress=no # from ima: should not be necessary # Finally, warn user if system lib was requested but not found if test x$enable_localjpeg = xno; then AC_MSG_WARN(Cannot find system jpeg lib or header: choosing the local lib mode.) fi else JPEGINC="" JPEG="" IMAGELIBS="-ljpeg $IMAGELIBS" STATICIMAGELIBS="-ljpeg $STATICIMAGELIBS" AC_DEFINE(HAVE_LIBJPEG) fi # Handle the ZLIB lib linking mode (use fltk local or system lib) # If --enable-(resp. --disable-)localzlib parameter is not set by user # Then we check the ZLIB lib usability, with result in syszlib_ok variable AC_ARG_ENABLE(localzlib, [ --enable-localzlib use local ZLIB library, default=auto]) # Check for System lib use if automatic mode or --disable-localzlib is requested syszlib_ok=no syszinc_ok=no if test x$enable_localzlib != xyes; then AC_CHECK_LIB(z,gzgets, [AC_CHECK_HEADER(zlib.h, syszinc_ok=yes) if test x$syszinc_ok = xyes; then syszlib_ok=yes fi]) fi # Now set the Z lib and include flags according to the requested mode and availability if test x$enable_localzlib = xyes -o x$syszlib_ok = xno ; then ZLIBINC="-I../zlib" ZLIB="zlib" LIBS="-lfltk_z $LIBS" IMAGELIBS="-lfltk_z $IMAGELIBS" STATICIMAGELIBS="\$libdir/libfltk_z.a $STATICIMAGELIBS" AC_DEFINE(HAVE_LIBZ) ac_cv_lib_z_gzgets=no # fc: is still necessary ? # Finally, warn user if system lib was requested but not found if test x$enable_localzlib = xno; then AC_MSG_WARN(Cannot find system z lib or header: choosing the local lib mode.) fi else ZLIBINC="" ZLIB="" LIBS="-lz $LIBS" IMAGELIBS="-lz $IMAGELIBS" STATICIMAGELIBS="-lz $STATICIMAGELIBS" AC_DEFINE(HAVE_LIBZ) fi # Handle the PNG lib linking mode (use fltk local or system lib) # If --enable-(resp. --disable-)localpng parameter is not set by user # Then we check the png lib usability with result in syspng_lib variable AC_ARG_ENABLE(localpng, [ --enable-localpng use local PNG library, default=auto]) # Now check if system lib is usable, we check Lib AND include availability with inc variant, # but only, if the builtin lib is not requested syspnglib_ok=no syspnginc_ok=no if test x$enable_localpng != xyes; then AC_CHECK_LIB(png, png_read_info, [AC_CHECK_HEADER(png.h, AC_DEFINE(HAVE_PNG_H) syspnginc_ok=yes) AC_CHECK_HEADER(libpng/png.h, AC_DEFINE(HAVE_LIBPNG_PNG_H) syspnginc_ok=yes) if test x$syspnginc_ok = xyes; then syspnglib_ok=yes fi]) fi # The following is executed if the lib was not found usable or if local lib is required explicitly if test x$enable_localpng = xyes -o x$syspnglib_ok = xno ; then PNGINC="-I../png" PNG="png" IMAGELIBS="-lfltk_png $IMAGELIBS" STATICIMAGELIBS="\$libdir/libfltk_png.a $STATICIMAGELIBS" AC_DEFINE(HAVE_LIBPNG) AC_DEFINE(HAVE_PNG_H) AC_DEFINE(HAVE_PNG_GET_VALID) AC_DEFINE(HAVE_PNG_SET_TRNS_TO_ALPHA) # Finally, warn user if system lib was requested but not found if test x$enable_localpng = xno; then AC_MSG_WARN(Cannot find system png lib or header: choosing the local lib mode.) fi else PNGINC="" PNG="" IMAGELIBS="-lpng $IMAGELIBS" STATICIMAGELIBS="-lpng $STATICIMAGELIBS" AC_DEFINE(HAVE_LIBPNG) AC_CHECK_LIB(png,png_get_valid, AC_DEFINE(HAVE_PNG_GET_VALID)) AC_CHECK_LIB(png,png_set_tRNS_to_alpha, AC_DEFINE(HAVE_PNG_SET_TRNS_TO_ALPHA)) fi AC_SUBST(JPEG) AC_SUBST(JPEGINC) AC_SUBST(PNG) AC_SUBST(PNGINC) AC_SUBST(ZLIB) AC_SUBST(ZLIBINC) dnl Restore original LIBS settings... LIBS="$SAVELIBS" dnl See if we need a .exe extension on executables... AC_EXEEXT dnl Check for pthreads for multi-threaded apps... have_pthread=no PTHREAD_FLAGS="" if test "x$enable_threads" != xno; then AC_CHECK_HEADER(pthread.h, AC_DEFINE(HAVE_PTHREAD_H)) if test x$ac_cv_header_pthread_h = xyes; then dnl Check various threading options for the platforms we support for flag in -lpthreads -lpthread -pthread; do AC_MSG_CHECKING([for pthread_create using $flag]) SAVELIBS="$LIBS" LIBS="$flag $LIBS" AC_TRY_LINK([#include ], [pthread_create(0, 0, 0, 0);], have_pthread=yes, LIBS="$SAVELIBS") AC_MSG_RESULT([$have_pthread]) if test $have_pthread = yes; then AC_DEFINE(HAVE_PTHREAD) PTHREAD_FLAGS="-D_THREAD_SAFE -D_REENTRANT" # Solaris requires -D_POSIX_PTHREAD_SEMANTICS to # be POSIX-compliant... :( if test $uname = SunOS; then PTHREAD_FLAGS="$PTHREAD_FLAGS -D_POSIX_PTHREAD_SEMANTICS" fi break fi done fi fi AC_SUBST(PTHREAD_FLAGS) dnl Define OS-specific stuff... HLINKS= OSX_ONLY=: THREADS= AC_ARG_WITH(links, [ --with-links make header links for common misspellings]) INSTALL_DESKTOP="" UNINSTALL_DESKTOP="" case $uname_GUI in CYGWIN* | MINGW*) dnl Cygwin environment, using windows GDI ... # Recent versions of Cygwin are seriously broken and the size # checks don't work because the shell puts out \r\n instead of # \n. Here we just force U32 to be defined to "unsigned"... AC_DEFINE(U32,unsigned) CFLAGS="-mwindows -DWIN32 -DUSE_OPENGL32 $CFLAGS" CXXFLAGS="-mwindows -DWIN32 -DUSE_OPENGL32 $CXXFLAGS" LDFLAGS="-mwindows $LDFLAGS" DSOFLAGS="-mwindows $DSOFLAGS" LIBS="$LIBS -lole32 -luuid -lcomctl32" if test "x$with_optim" = x; then dnl Avoid -Os optimization on Cygwin/Mingw with_optim="-O3" fi if test x$enable_gl != xno; then AC_CHECK_HEADER(GL/gl.h, AC_DEFINE(HAVE_GL) GLLIB="-lopengl32") AC_CHECK_HEADER(GL/glu.h, AC_DEFINE(HAVE_GL_GLU_H) GLLIB="-lglu32 $GLLIB") else LINKFLTKGL="" GLLIBNAME="" GLDSONAME="" GLDEMOS="" fi if test "x$enable_threads" != xno; then if test x$have_pthread = xyes; then AC_DEFINE(HAVE_PTHREAD) fi THREADS="threads$EXEEXT" fi # Don't make symlinks since Windows is not case sensitive. if test "x$with_links" != xyes; then HLINKS="#" fi ;; Darwin*) # MacOS X uses Cocoa for graphics. There are still some Carbon leftovers. LIBS="$LIBS -framework Carbon -framework Cocoa -framework ApplicationServices -framework AudioToolbox" if test x$have_pthread = xyes; then AC_DEFINE(HAVE_PTHREAD) THREADS="threads$EXEEXT" fi if test x$enable_gl != xno; then AC_DEFINE(HAVE_GL) AC_DEFINE(HAVE_GL_GLU_H) GLLIB="-framework AGL -framework OpenGL" else LINKFLTKGL="" GLLIBNAME="" GLDSONAME="" GLDEMOS="" fi # Don't make symlinks because HFS+ is not case sensitive... if test "x$with_links" != xyes; then HLINKS="#" fi # Some steps are only done for OS X package management OSX_ONLY= # Install/Uninstall FLUID application INSTALL_DESKTOP="install-osx" UNINSTALL_DESKTOP="uninstall-osx" ;; *) # All others are UNIX/X11... # This includes cygwin target combined with X11 if test x$have_pthread = xyes; then AC_DEFINE(HAVE_PTHREAD) THREADS="threads$EXEEXT" fi dnl Check for X11... AC_PATH_XTRA if test x$no_x = xyes; then AC_MSG_ERROR(Configure could not find required X11 libraries, aborting.) fi if test "x$X_PRE_LIBS" != x; then AC_MSG_WARN(Ignoring libraries \"$X_PRE_LIBS\" requested by configure.) fi LIBS="$LIBS -lX11 $X_EXTRA_LIBS" CFLAGS="$CFLAGS $X_CFLAGS" CXXFLAGS="$CXXFLAGS $X_CFLAGS" LDFLAGS="$X_LIBS $LDFLAGS" DSOFLAGS="$X_LIBS $DSOFLAGS" AC_DEFINE(USE_X11) if test "x$x_includes" != x; then ac_cpp="$ac_cpp -I$x_includes" fi dnl Check for OpenGL unless disabled... GLLIB= if test x$enable_gl != xno; then AC_SEARCH_LIBS(dlopen, dl) AC_CHECK_HEADER(GL/gl.h, AC_CHECK_LIB(GL, glXMakeCurrent, AC_DEFINE(HAVE_GL) GLLIB="-lGL", AC_CHECK_LIB(MesaGL,glXMakeCurrent, AC_DEFINE(HAVE_GL) GLLIB=" -lMesaGL",, -lm), -lm) AC_CHECK_LIB(GL, glXGetProcAddressARB, AC_DEFINE(HAVE_GLXGETPROCADDRESSARB),, -lm) ) AC_CHECK_HEADER(GL/glu.h, AC_DEFINE(HAVE_GL_GLU_H) if test x$ac_cv_lib_GL_glXMakeCurrent = xyes; then GLLIB="-lGLU $GLLIB" fi if test x$ac_cv_lib_MesaGL_glXMakeCurrent = xyes; then GLLIB="-lMesaGLU $GLLIB" fi ) if test x$ac_cv_lib_GL_glXMakeCurrent != xyes -a x$ac_cv_lib_MesaGL_glXMakeCurrent != xyes; then LINKFLTKGL="" GLLIBNAME="" GLDSONAME="" GLDEMOS="" fi else LINKFLTKGL="" GLLIBNAME="" GLDSONAME="" GLDEMOS="" fi dnl Check for Xinerama support unless disabled... AC_ARG_ENABLE(xinerama, [ --enable-xinerama turn on Xinerama support [default=yes]]) if test x$enable_xinerama != xno; then AC_CHECK_LIB(Xinerama,XineramaIsActive, AC_DEFINE(HAVE_XINERAMA) LIBS="-lXinerama $LIBS") fi dnl Check for the Xft library unless disabled... AC_ARG_ENABLE(xft, [ --enable-xft turn on Xft support [default=yes]]) if test x$enable_xft != xno; then AC_PATH_PROG(FTCONFIG,freetype-config) if test "x$FTCONFIG" != x; then CPPFLAGS="`$FTCONFIG --cflags` $CPPFLAGS" CXXFLAGS="`$FTCONFIG --cflags` $CXXFLAGS" AC_CHECK_LIB(fontconfig, FcPatternCreate) AC_CHECK_HEADER(X11/Xft/Xft.h, AC_CHECK_LIB(Xft, XftDrawCreate, AC_DEFINE(USE_XFT) LIBS="-lXft $LIBS")) fi fi dnl Check for the Xdbe extension unless disabled... AC_ARG_ENABLE(xdbe, [ --enable-xdbe turn on Xdbe support [default=yes]]) if test x$enable_xdbe != xno; then AC_CHECK_HEADER(X11/extensions/Xdbe.h, AC_DEFINE(HAVE_XDBE),, [#include ]) AC_CHECK_LIB(Xext, XdbeQueryExtension, LIBS="-lXext $LIBS") fi dnl Check for overlay visuals... AC_PATH_PROG(XPROP, xprop) AC_CACHE_CHECK(for X overlay visuals, ac_cv_have_overlay, if test "x$XPROP" != x; then if $XPROP -root 2>/dev/null | grep -c "SERVER_OVERLAY_VISUALS" >/dev/null; then ac_cv_have_overlay=yes else ac_cv_have_overlay=no fi else ac_cv_have_overlay=no fi) if test x$ac_cv_have_overlay = xyes; then AC_DEFINE(HAVE_OVERLAY) fi # Make symlinks since UNIX/Linux is case sensitive, # but cygwin in general not. case $uname in CYGWIN*) HLINKS="#" ;; *) ;; esac if test "x$with_links" = xno; then HLINKS="#" fi # Install/Uninstall FLUID application support files INSTALL_DESKTOP="install-linux" UNINSTALL_DESKTOP="uninstall-linux" ;; esac AC_SUBST(GLDEMOS) AC_SUBST(GLLIB) AC_SUBST(HLINKS) AC_SUBST(OSX_ONLY) AC_SUBST(THREADS) AC_SUBST(INSTALL_DESKTOP) AC_SUBST(UNINSTALL_DESKTOP) dnl Figure out the appropriate formatted man page extension... case "$uname" in *BSD* | Darwin*) # *BSD CAT1EXT=0 CAT3EXT=0 CAT6EXT=0 ;; IRIX*) # SGI IRIX CAT1EXT=z CAT3EXT=z CAT6EXT=z ;; *) # All others CAT1EXT=1 CAT3EXT=3 CAT6EXT=6 ;; esac AC_SUBST(CAT1EXT) AC_SUBST(CAT3EXT) AC_SUBST(CAT6EXT) dnl Fix "mandir" variable... if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/usr"; then case "$uname" in *BSD* | Darwin* | Linux*) # *BSD, Darwin, and Linux mandir="\${prefix}/share/man" ;; IRIX*) # SGI IRIX mandir="\${prefix}/share/catman" ;; esac fi dnl Fix "libdir" variable... if test "$prefix" = NONE; then prefix=/usr/local fi if test "$exec_prefix" = NONE; then exec_prefix="\${prefix}" fi if test "$uname" = "IRIX" -a $uversion -ge 62 -a "$libdir" = "\${exec_prefix}/lib" -a "$exec_prefix" = "\${prefix}" -a "$prefix" = "/usr"; then libdir="/usr/lib32" fi dnl Define the command used to update the dependencies (this option dnl mainly for FLTK core developers - not necessary for users) MAKEDEPEND="\$(CXX) -M" AC_SUBST(MAKEDEPEND) dnl Add warnings to compiler switches: dnl do this last so messing with switches does not break tests if test -n "$GCC"; then # Show all standard warnings + unused variables, conversion errors, # and inlining problems when compiling... OPTIM="-Wall -Wunused -Wno-format-y2k $OPTIM" # The following additional warnings are useful for tracking down problems... #OPTIM="-Wshadow -Wconversion $OPTIM" # We know that Carbon is deprecated on OS X 10.4. To avoid hundreds of warnings # we will temporarily disable 'deprecated' warnings on OS X. if test "$uname" = "Darwin" -a $uversion -ge 800; then OPTIM="-Wno-deprecated-declarations $OPTIM" fi # Set the default compiler optimizations... if test -z "$DEBUGFLAG"; then # # Note: Can't use -fomit-frame-pointer - prevents tools like # libsafe from working! # # Don't use -fforce-mem, -fforce-addr, or -fcaller-saves. # They all seem to make either no difference or enlarge # the code by a few hundred bytes. # # "-Os" seems to be the best compromise between speed and # code size. "-O3" and higher seem to make no effective # difference in the speed of the code, but does bloat the # library 10+%. # if test "x$with_optim" != x; then OPTIM="$with_optim $OPTIM" else OPTIM="-Os $OPTIM" fi fi # Generate position-independent code when needed... if test $PICFLAG = 1; then OPTIM="$OPTIM -fPIC" fi # See if GCC supports -fno-exceptions... AC_MSG_CHECKING(if GCC supports -fno-exceptions) OLDCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-exceptions" AC_TRY_COMPILE(,, OPTIM="$OPTIM -fno-exceptions" AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) CFLAGS="$OLDCFLAGS" # See if GCC supports -fno-strict-aliasing... AC_MSG_CHECKING(if GCC supports -fno-strict-aliasing) OLDCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-strict-aliasing" AC_TRY_COMPILE(,, OPTIM="$OPTIM -fno-strict-aliasing" AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) CFLAGS="$OLDCFLAGS" # See if we are running Solaris; if so, try the -fpermissive option... # This option is required on some versions of Solaris to work around # bugs in the X headers up through Solaris 7. # # Unlike the other compiler/optimization settings, this one is placed # in CFLAGS and CXXFLAGS so that fltk-config will provide the option # to clients - otherwise client apps will not compile properly... if test "$uname" = SunOS; then AC_MSG_CHECKING(if GCC supports -fpermissive) OLDCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fpermissive" AC_TRY_COMPILE(,, CXXFLAGS="$CXXFLAGS -fpermissive" AC_MSG_RESULT(yes), CFLAGS="$OLDCFLAGS" AC_MSG_RESULT(no)) fi else case "$uname" in IRIX*) # Running some flavor of IRIX; see which version and # set things up according... if test "$uversion" -ge 62; then # We are running IRIX 6.2 or higher; uncomment the following # lines if you don't have IDO 7.2 or higher: # # CXX="CC -n32 -mips3" # CC="cc -n32 -mips3" # LD="ld -n32 -mips3" # MAKEDEPEND="CC -M" if test "x`grep abi=n32 /etc/compiler.defaults`" = x; then AC_MSG_WARN(FOR BEST RESULTS BEFORE COMPILING: setenv SGI_ABI \"-n32 -mips3\") fi OPTIM="-fullwarn $OPTIM" fi if test -z "$DEBUGFLAG"; then if test "x$with_optim" != x; then OPTIM="$with_optim $OPTIM" else OPTIM="-O2 $OPTIM" if test $uversion -gt 62; then OPTIM="-OPT:Olimit=4000 $OPTIM" fi fi fi ;; HP-UX*) # Running HP-UX; these options should work for the HP compilers. if test -z "$DEBUGFLAG"; then if test "x$with_optim" != x; then OPTIM="$with_optim $OPTIM" else OPTIM="+O2 $OPTIM" fi fi if test $PICFLAG = 1; then OPTIM="+z $OPTIM" fi CXXFLAGS="$CXXFLAGS +W336,501,736,740,749,829" ;; OSF1*) # Running Digital/Tru64 UNIX; these options should work for the # Digital/Compaq/NewHP compilers. if test -z "$DEBUGFLAG"; then if test "x$with_optim" != x; then OPTIM="$with_optim $OPTIM" else OPTIM="-O2 $OPTIM" fi fi ;; SunOS*) # Solaris if test -z "$DEBUGFLAG"; then if test "x$with_optim" != x; then OPTIM="$with_optim $OPTIM" else OPTIM="-xO3 $OPTIM" fi fi if test $PICFLAG = 1; then OPTIM="-KPIC $OPTIM" fi ;; AIX*) if test -z "$DEBUGFLAG"; then if test "x$with_optim" != x; then OPTIM="$with_optim $OPTIM" else OPTIM="-O2 $OPTIM" fi fi AC_MSG_WARN(The AIX C and C++ compilers are known not to correctly compile the FLTK library.) ;; *) # Running some other operating system; inform the user they # should contribute the necessary options to fltk-bugs@fltk.org... AC_MSG_WARN(Building FLTK with default compiler optimizations) AC_MSG_WARN(Contact fltk-bugs@fltk.org with uname and compiler options.) ;; esac fi OPTIM="$DEBUGFLAG $OPTIM" dnl Define the FLTK documentation directory... if test x$prefix = xNONE; then AC_DEFINE_UNQUOTED(FLTK_DOCDIR, "/usr/local/share/doc/fltk") else AC_DEFINE_UNQUOTED(FLTK_DOCDIR, "$prefix/share/doc/fltk") fi dnl Define the FLTK data directory... if test x$prefix = xNONE; then AC_DEFINE_UNQUOTED(FLTK_DATADIR, "/usr/local/share/fltk") else AC_DEFINE_UNQUOTED(FLTK_DATADIR, "$prefix/share/fltk") fi dnl Summarize results of configure tests... echo "" echo "Configuration Summary" echo "-------------------------------------------------------------------------" case $uname_GUI in CYGWIN* | MINGW*) graphics="GDI" ;; Darwin*) graphics="Quartz" ;; *) graphics="X11" if test x$enable_xft != xno; then graphics="$graphics+Xft" fi if test x$enable_xdbe != xno; then graphics="$graphics+Xdbe" fi if test x$enable_xinerama != xno; then graphics="$graphics+Xinerama" fi ;; esac echo " Directories: prefix=$prefix" echo " bindir=$bindir" echo " datadir=$datadir" echo " datarootdir=$datarootdir" echo " exec_prefix=$exec_prefix" echo " includedir=$includedir" echo " libdir=$libdir" echo " mandir=$mandir" echo " Graphics: $graphics" if test x$JPEG = x; then echo "Image Libraries: JPEG=System" else echo "Image Libraries: JPEG=Builtin" fi if test x$PNG = x; then echo " PNG=System" else echo " PNG=Builtin" fi if test x$ZLIB = x; then echo " ZLIB=System" else echo " ZLIB=Builtin" fi if test x$enable_cairo = xyes; then echo " CAIRO=lib" fi if test x$enable_cairoext = xyes; then echo " CAIRO=internal_use" fi if test x$enable_largefile != xno; then echo " Large Files: YES" else echo " Large Files: NO" fi if test x$GLDEMOS = x; then echo " OpenGL: NO" else echo " OpenGL: YES" fi if test x$THREADS = x; then echo " Threads: NO" else echo " Threads: YES" fi dnl Write all of the files... AC_CONFIG_HEADER(config.h:configh.in) AC_OUTPUT(makeinclude fltk.list fltk-config fltk.spec FL/Makefile) dnl Make sure the fltk-config script is executable... chmod +x fltk-config dnl dnl End of "$Id$". dnl