dnl -*- sh -*-
dnl the "configure" script is made from this by running GNU "autoconf"
dnl
dnl "$Id: configure.in,v 1.33.2.31.2.85 2002/08/12 19:42:54 easysw Exp $"
dnl
dnl Configuration script for the Fast Light Tool Kit (FLTK).
dnl
dnl Copyright 1998-2002 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 to "fltk-bugs@fltk.org".
dnl

dnl We need at least autoconf 2.13...
AC_PREREQ(2.13)

dnl Required file in package...
AC_INIT(src/Fl.cxx)

dnl FLTK library versions...
FL_MAJOR_VERSION=1
FL_MINOR_VERSION=1
FL_PATCH_VERSION=0
FL_RELEASE_VERSION=rc6
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_RELEASE_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 Don't automatically add "-g" to compiler options...
CFLAGS="${CFLAGS:=}"
CPPFLAGS="${CPPFLAGS:=}"
CXXFLAGS="${CXXFLAGS:=}"
OPTIM="${OPTIM:=}"

AC_SUBST(OPTIM)

dnl OS-specific pre-tests...
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]])
	if test x$enable_cygwin != xyes; then
	    CFLAGS="$CFLAGS -mno-cygwin"
	    CPPFLAGS="$CPPFLAGS -mno-cygwin"
	    CXXFLAGS="$CXXFLAGS -mno-cygwin"
	fi
	;;
esac

dnl Define the libraries and link options we'll need.
LINKFLTK="-lfltk"
LINKFLTKGL="-lfltk_gl"
LINKFLTKIMG="-lfltk_images"
GLDEMOS="gldemos"

LIBNAME="../lib/libfltk.a"
FLLIBNAME="../lib/libfltk_forms.a"
GLLIBNAME="../lib/libfltk_gl.a"
IMGLIBNAME="../lib/libfltk_images.a"

AC_SUBST(FLLIBNAME)
AC_SUBST(GLDEMOS)
AC_SUBST(GLLIBNAME)
AC_SUBST(IMGLIBNAME)
AC_SUBST(LIBNAME)
AC_SUBST(LINKFLTK)
AC_SUBST(LINKFLTKGL)
AC_SUBST(LINKFLTKIMG)

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"
	    DSOCOMMAND="ld $DSOFLAGS -dylib /usr/lib/dylib1.o -lc"
	    if test "$libdir" != "/usr/lib"; then
		    DSOLINK="-Wl,-rpath,$libdir"
            fi
	    ;;

	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"
	    DSOCOMMAND="\$(CXX) -h \$@ \$(LDLIBS) -G $DEBUGFLAG -o"
	    if test "$libdir" != "/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"
	    DSOCOMMAND="ld -b -z +h \$@ $DEBUGFLAG -o"
	    if test "$libdir" != "/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"
            DSOCOMMAND="\$(CXX) -Wl,-soname,\$@,-set_version,sgi1.1 \$(LDLIBS) -shared $DEBUGFLAG -o"
	    if test "$libdir" != "/usr/lib" - a "$libdir" != "/usr/lib32"; 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"
            DSOCOMMAND="\$(CXX) -Wl,-soname,\$@ \$(LDLIBS) -shared $DEBUGFLAG -o"
	    if test "$libdir" != "/usr/lib" - a "$libdir" != "/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"
            DSOCOMMAND="\$(CXX) -Wl,-soname,\$@ \$(LDLIBS) -shared -fPIC $DEBUGFLAG -o"
	    if test "$libdir" != "/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"
            DSOCOMMAND="\$(CXX) -Wl,-bexpall,-bM:SRE,-bnoentry -o"
            SHAREDSUFFIX="_s"
            ;;
        CYGWIN* | MINGW*)
            AC_MSG_WARN(Shared libraries are not supported under CygWin.)
	    ;;
	*)
            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"
            DSOCOMMAND="\$(CXX) -Wl,-soname,\$@ \$(LDLIBS) -shared $DEBUGFLAG -o"
	    ;;
    esac

    LINKSHARED="-L../src -lfltk_images$SHAREDSUFFIX -lfltk_forms$SHAREDSUFFIX -lfltk$SHAREDSUFFIX"
else
    DSOCOMMAND="echo"
    DSOLINK=""
    DSONAME=""
    FLDSONAME=""
    GLDSONAME=""
    IMGDSONAME=""
    PICFLAG=0
    SHAREDSUFFIX=""
    FLUID="fluid"
    LINKSHARED="-L../lib -lfltk_images -lfltk_forms -lfltk"
fi

AC_SUBST(DSOCOMMAND)
AC_SUBST(DSOLINK)
AC_SUBST(DSONAME)
AC_SUBST(FLDSONAME)
AC_SUBST(GLDSONAME)
AC_SUBST(IMGDSONAME)
AC_SUBST(SHAREDSUFFIX)
AC_SUBST(LINKSHARED)
AC_SUBST(FLUID)

AC_ARG_ENABLE(threads, [  --enable-threads        enable multi-threading support])

AC_ARG_WITH(optim, [  --with-optim="flags"    use custom optimization flags])

dnl Find commands...
AC_PROG_CC
AC_PROG_CXX
dnl AC_PROG_INSTALL
AC_PATH_PROG(NROFF,nroff)
if test "$NROFF" = ""; then
    AC_PATH_PROG(GROFF,groff)
    if test "$GROFF" = ""; then
        NROFF="echo"
    else
        NROFF="$GROFF -T ascii"
    fi
fi
AC_PATH_PROG(HTMLDOC,htmldoc)

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 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 "$uname" = SunOS -o "$uname" = QNX; then
        AC_MSG_WARN(Not using $uname scandir emulation function.)
    else
        AC_DEFINE(HAVE_SCANDIR)
    fi)
AC_CHECK_FUNC(vsnprintf,
    if test "$uname" = "HP-UX" -a "$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)
AC_CHECK_FUNC(snprintf,
    if test "$uname" = "HP-UX" -a "$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)
AC_CHECK_HEADER(strings.h, AC_DEFINE(HAVE_STRINGS_H))
AC_CHECK_FUNCS(strcasecmp strlcat strlcpy)

dnl FLTK library uses math library functions...
AC_SEARCH_LIBS(pow, m)

dnl Check for image libraries...
SAVELIBS="$LIBS"
IMAGELIBS=""

AC_SUBST(IMAGELIBS)

AC_CHECK_HEADER(jpeglib.h,
    AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,
	AC_DEFINE(HAVE_LIBJPEG)
	IMAGELIBS="$IMAGELIBS -ljpeg"))

AC_CHECK_HEADER(zlib.h,
    AC_CHECK_LIB(z, gzopen,
	AC_DEFINE(HAVE_LIBZ)
	IMAGELIBS="$IMAGELIBS -lz"
	LIBS="$LIBS -lz"))

AC_CHECK_HEADER(png.h, AC_DEFINE(HAVE_PNG_H))
AC_CHECK_HEADER(libpng/png.h, AC_DEFINE(HAVE_LIBPNG_PNG_H))

if test x$ac_cv_header_png_h = xyes -o x$ac_cv_header_libpng_png_h = xyes; then
    AC_CHECK_LIB(png, png_read_rows,
	AC_DEFINE(HAVE_LIBPNG)
	IMAGELIBS="-lpng $IMAGELIBS"
	LIBS="-lpng $LIBS"
	AC_CHECK_FUNCS(png_get_valid png_set_tRNS_to_alpha))
fi

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

if test x"$enable_threads" = xyes; then
    AC_CHECK_HEADER(pthread.h, AC_DEFINE(HAVE_PTHREAD_H))
    AC_CHECK_LIB(pthread, pthread_create)

    if test x"$ac_cv_lib_pthread_pthread_create" = xyes -a x$ac_cv_header_pthread_h = xyes; then
        have_pthread=yes
    else
        dnl *BSD uses -pthread option...
        AC_MSG_CHECKING([for pthread_create using -pthread])
	SAVELIBS="$LIBS"
	LIBS="-pthread $LIBS"
        AC_TRY_LINK([#include <pthread.h>],
	    [pthread_create(0, 0, 0, 0);],
            LIBS="-pthread $SAVELIBS"
            have_pthread=yes,
	    LIBS="$SAVELIBS")
        AC_MSG_RESULT([$have_pthread])
    fi
fi

dnl Define OS-specific stuff...
HLINKS=
POSTBUILD=:
THREADS=

case $uname in
    CYGWIN* | MINGW*)
	dnl Cygwin environment...
	CFLAGS="-mwindows -DWIN32 $CFLAGS"
	CXXFLAGS="-mwindows -DWIN32 $CXXFLAGS"
	LDFLAGS="-mwindows $LDFLAGS"
	LIBS="$LIBS -lole32 -luuid -lcomctl32 -lwsock32"
	OPTIM="$OPTIM"

	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$have_pthread = xyes; then
	    AC_DEFINE(HAVE_PTHREAD)
	    THREADS="threads.exe"
	fi

	# Don't make symlinks since Windows is not case sensitive.
	HLINKS="#"
	;;

    Darwin*)
        # MacOS X uses Carbon for graphics...
        LIBS="$LIBS -framework Carbon -framework ApplicationServices"

	if test x$have_pthread = xyes; then
	    AC_DEFINE(HAVE_PTHREAD)
	    THREADS="threads"
	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...
	HLINKS="#"

	# Add a postbuild step after linking applications
	POSTBUILD="/Developer/Tools/Rez -t APPL -o"
	;;

    *)
	# All others are UNIX/X11...
	if test x$have_pthread = xyes; then
	    AC_DEFINE(HAVE_PTHREAD)
	    THREADS="threads"
	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 -lXext -lX11 $X_EXTRA_LIBS"
	CFLAGS="$CFLAGS$X_CFLAGS"
	CXXFLAGS="$CXXFLAGS$X_CFLAGS"
	LDFLAGS="$X_LIBS $LDFLAGS"

	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_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 the Xft library unless disabled...
        AC_ARG_ENABLE(xft, [  --enable-xft            turn on Xft support [default=no]])

	if test x$enable_xft = xyes; then
	    AC_CHECK_HEADER(X11/Xft/Xft.h,
		AC_CHECK_LIB(Xft, XftDrawCreate,
	            AC_DEFINE(USE_XFT)
		    LIBS="-lXft $LIBS"))
	fi

	dnl Check for the Xdbe extension unless disabled...
        AC_ARG_ENABLE(xdbe, [  --enable-xdbe           turn on Xdbe support [default=no]])

	if test x$enable_xdbe = xyes; then
	    AC_CHECK_HEADER(X11/extensions/Xdbe.h, AC_DEFINE(HAVE_XDBE),,
	        [#include <X11/Xlib.h>])
	fi

	dnl Check for overlay visuals...
	AC_CACHE_CHECK(for X overlay visuals, ac_cv_have_overlay,
	    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)

        if test x$ac_cv_have_overlay = xyes; then
	    AC_DEFINE(HAVE_OVERLAY)
	fi
	;;
esac

AC_SUBST(GLDEMOS)
AC_SUBST(GLLIB)
AC_SUBST(HLINKS)
AC_SUBST(POSTBUILD)
AC_SUBST(THREADS)

dnl Figure out the appropriate formatted man page extension...
case "$uname" in
    *BSD* | Darwin*)
	# *BSD
	CAT1EXT=0
	CAT3EXT=0
	;;
    IRIX*)
	# SGI IRIX
	CAT1EXT=z
	CAT3EXT=z
	;;
    *)
	# All others
	CAT1EXT=1
	CAT3EXT=3
	;;
esac

AC_SUBST(CAT1EXT)
AC_SUBST(CAT3EXT)

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
    # Starting with GCC 3.0, you must link C++ programs against either
    # libstdc++ (shared by default), or libsupc++ (always static).  If
    # you care about binary portability between Linux distributions,
    # you need to either 1) build your own GCC with static C++ libraries
    # or 2) link using gcc and libsupc++.  We choose the latter since
    # CUPS doesn't (currently) use any of the stdc++ library.
    #
    # Also, GCC 3.0.x still has problems compiling some code.  You may
    # or may not have success with it.  USE 3.0.x WITH EXTREME CAUTION!
    #
    # Previous versions of GCC do not have the reliance on the stdc++
    # or g++ libraries, so the extra supc++ library is not needed.

    AC_MSG_CHECKING(if libsupc++ is required)

    SUPC="`$CXX -print-file-name=libsupc++.a 2>/dev/null`"
    case "$SUPC" in
    	libsupc++.a*)
	    # Library not found, so this is and older GCC...
	    AC_MSG_RESULT(no)
	    ;;
	*)
            # This is gcc 3.x, and it knows of libsupc++, so we need it
            LIBS="$LIBS -lsupc++"
            AC_MSG_RESULT(yes)
	    ;;
    esac

    CXX="$CC"

    # Show all standard warnings + unused variables when compiling...
    OPTIM="-Wall -Wunused $OPTIM"

    # The following additional warnings are useful for tracking down problems...
    #OPTIM="-Wshadow -Wconversion -Winline $OPTIM"

    # 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.
        #
	#       "-O2" 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="-O2 $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 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 "x$with_optim" = x; then
		OPTIM="$OPTIM +DAportable"
            fi

	    if test $PICFLAG = 1; then
		OPTIM="+z $OPTIM"
	    fi

	    OPTIM="$OPTIM +W336,501,736,740,749,829"
	    ;;
	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 Write all of the files...
AC_CONFIG_HEADER(config.h:configh.in)
AC_OUTPUT(makeinclude fltk.list fltk-config FL/Makefile)

dnl Make sure the fltk-config script is executable...
chmod +x fltk-config

dnl
dnl End of "$Id: configure.in,v 1.33.2.31.2.85 2002/08/12 19:42:54 easysw Exp $".
dnl
