dnl Process this file with autoconf to produce a configure script.
dnl
dnl The basis for this file was generated by autoscan(1) [pere 1998-03-19]
dnl

AC_INIT(Simulator/Aircraft/aircraft.c)

dnl Initialize the automake stuff
AM_INIT_AUTOMAKE(FlightGear, 0.55)

dnl Checks for programs.
AC_PROG_MAKE_SET
AC_PROG_CC
AC_PROG_CXX
AC_PROG_RANLIB
AC_PROG_INSTALL
AC_PROG_LN_S

dnl Initialize libtool
dnl AM_PROG_LIBTOOL

dnl Initialize maintainer mode
dnl AM_MAINTAINER_MODE

dnl This is needed for AC_TRY_COMPILE later
dnl AC_ISC_POSIX

dnl Check to see if this `configure' is being run in the `Cygwin32' environment
dnl AM_CYGWIN32

dnl specify if we are building with "checker"
AC_ARG_WITH(efence, [  --with-efence           Specify if we are building with "electric-fence"])

if test "x$with_efence" = "xyes" ; then
    echo "Building with efence"
    LIBS= "$LIBS -lefence"
fi

dnl specify the compiled flight model
AC_ARG_WITH(flight-model, [  --with-flight-model=xxx Specify the flight model (navion, cherokee)])

if test "x$with_flight_model" = "xcherokee" ; then
    echo "Building with cherokee flight model"
else 
    echo "Building with navion flight model"
fi
AM_CONDITIONAL(ENABLE_CHEROKEE, test "x$with_flight_model" = "xcherokee")

dnl Let the Win32 user specify if they want to build with the SGI
dnl opengl.dll as opposed to the more standard openg32.dll
AC_ARG_WITH(sgi-opengl, [  --with-sgi-opengl       Build against SGI's opengl.dll glu.dll and glut.dll])

dnl Check for MS Windows environment
AC_CHECK_HEADER(windows.h)

dnl Using AM_CONDITIONAL is a step out of the protected little 
dnl automake fold so it is potentially dangerous.  But, we are
dnl beginning to run into cases where the standard checks are not
dnl enough.  AM_CONDITIONALS are then referenced to conditionally
dnl build a Makefile.in from a Makefile.am which lets us define custom
dnl includes, compile alternative source files, etc.

dnl Check for external variables daylight and timezone.
AC_EXT_DAYLIGHT
AM_CONDITIONAL(HAVE_DAYLIGHT, test "$have_daylight" = yes )

AC_EXT_TIMEZONE
AM_CONDITIONAL(HAVE_TIMEZONE, test "$have_timezone" = yes )

dnl Check for Linux style audio support
AM_CONDITIONAL(ENABLE_AUDIO_SUPPORT, \
	test -r /usr/include/soundcard.h \
		-o -r /usr/include/linux/soundcard.h \
		-o -r /usr/include/machine/soundcard.h \
		-o -r /usr/include/audio.h \
		-o "x$ac_cv_header_windows_h" = "xyes" )

AM_CONDITIONAL(ENABLE_IRIX_AUDIO, test -r /usr/include/audio.h)

AM_CONDITIONAL(ENABLE_WIN32_AUDIO, test "x$ac_cv_header_windows_h" = "xyes")

dnl extra library and include directories
EXTRA_DIRS="/usr/local /usr/X11R6 /opt/X11R6"

if test "x$ac_cv_header_windows_h" = "xyes" ; then
    EXTRA_DIRS="${EXTRA_DIRS} `pwd`/Win32"
# elif test `uname -s` = "SunOS" ; then
#   EXTRA_DIRS="${EXTRA_DIRS} `pwd`/SunOS"
fi
wi_EXTRA_DIRS(no, ${EXTRA_DIRS})

dnl Check for X11 (fancy)
AC_PATH_XTRA

dnl Checks for libraries.

AC_CHECK_LIB(m, cos)
AC_CHECK_LIB(socket, socket)
AC_CHECK_LIB(X11, XCreateWindow)
AC_CHECK_LIB(Xext, XShmCreateImage)
AC_CHECK_LIB(Xi, XGetExtensionVersion)
AC_CHECK_LIB(ICE, IceOpenConnection)
AC_CHECK_LIB(SM, SmcOpenConnection)
AC_CHECK_LIB(Xt, XtMalloc)
AC_CHECK_LIB(Xmu, XmuLookupStandardColormap)

dnl check for OpenGL related libraries

if test "x$ac_cv_header_windows_h" != "xyes" ; then
    dnl Reasonable stuff non-windoze variants ... :-)

    AC_CHECK_LIB(GLcore, glNewList)
    if test "x$ac_cv_lib_GLcore_glNewList" = "xno" ; then
	dnl if no GLcore, check for GL
	AC_CHECK_LIB(GL, glNewList)
	if test "x$ac_cv_lib_GL_glNewList" = "xno" ; then
	    dnl if no GL, check for MesaGL
	    AC_CHECK_LIB(MesaGL, glNewList)
	fi
    else
	dnl if GLcore found, then also check for GL
	AC_CHECK_LIB(GL, glXCreateContext)
    fi

    dnl if using mesa, check for xmesa.h
    if test "x$ac_cv_lib_MesaGL_glNewList" = "xyes" ; then
	AC_CHECK_HEADER(GL/xmesa.h)
	AM_CONDITIONAL(ENABLE_XMESA_FX, \
		       test "x$ac_cv_header_GL_xmesa_h" = "xyes")
    else
        dnl force a failed check
        AM_CONDITIONAL(ENABLE_XMESA_FX, test "no" = "yes")
    fi

    AC_CHECK_LIB(GLU, gluLookAt)
    if test "x$ac_cv_lib_GLU_gluLookAt" = "xno" ; then
	dnl if no GLU, check for MesaGLU
	AC_CHECK_LIB(MesaGLU, gluLookAt)
    fi

    dnl check for glut
    AC_CHECK_LIB(glut, glutGetModifiers)

    dnl test for glutGameModeString
    AC_CHECK_LIB(glut, glutGameModeString)
else
    dnl Win32 is a little wierd because it has to try to handle the various
    dnl winbloze-isms.  We'll just do this manually for now.

    echo Win32 specific hacks...
    AC_DEFINE(WIN32)

    dnl force a failed check since we will be building under windoze
    AM_CONDITIONAL(ENABLE_XMESA_FX, test "no" = "yes")

    if test "x$with_sgi_opengl" = "xyes" ; then
        echo "Building with glut.dll, glu.dll, and opengl.dll"
	WIN32_GLUT=glut
	WIN32_GLU=glu
	WIN32_OPENGL=opengl
    else 
	echo "Building with glut32.dll, glu32.dll, and opengl32.dll"
	WIN32_GLUT=glut32
	WIN32_GLU=glu32
	WIN32_OPENGL=opengl32
    fi

    if test -f `pwd`/Win32/${WIN32_GLUT}.dll; then
	echo "    found ${WIN32_GLUT}.dll, adding -l${WIN32_GLUT}"
	LIBS="$LIBS -l${WIN32_GLUT}"
    else
	echo "    Cannot find ${WIN32_GLUT}.dll"
	exit 1
    fi

    if test -f `pwd`/Win32/${WIN32_GLU}.dll; then
	echo "    found ${WIN32_GLU}.dll"
    else
	echo "    Can't find ${WIN32_GLU}.dll, assuming it's someplace"
    fi
    echo "    adding -l${WIN32_GLU}"
    LIBS="$LIBS -l${WIN32_GLU}"

    if test -f `pwd`/Win32/${WIN32_OPENGL}.dll; then
	echo "    found ${WIN32_OPENGL}.dll"
    else
	echo "    Can't find ${WIN32_OPENGL}.dll, assuming it's somplace"
    fi
    echo "    adding -l${WIN32_OPENGL}"
    LIBS="$LIBS -l${WIN32_OPENGL}"

    echo "    adding -luser32 -lgdi32"
    LIBS="$LIBS -luser32 -lgdi32"
    ac_cv_lib_glut_glutGetModifiers="yes"
    ac_cv_lib_glut_glutGameModeString="yes"
fi

dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS( \
	fcntl.h getopt.h malloc.h stdlib.h sys/time.h sys/timeb.h \
	unistd.h windows.h winbase.h values.h )

dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM

dnl Checks for library functions.
AC_TYPE_SIGNAL
AC_FUNC_VPRINTF
AC_CHECK_FUNCS( ftime gettimeofday mktime strstr rand random \
	setitimer getitimer signal GetLocalTime rint getrusage )

if test "x$ac_cv_lib_glut_glutGetModifiers" = "xno"; then
    echo 
    echo "Unable to find the necessary OpenGL or GLUT libraries."
    echo "See config.log for automated test details and results ..."
    exit 1
fi

if test "x$ac_cv_lib_glut_glutGameModeString" = "xno"; then
    echo
    echo "Your version of glut doesn't support game mode."
    echo "You need to fetch and install the latest version of glut from:"
    echo
    echo "    http://reality.sgi.com/opengl/glut3/glut3.html"
    exit 1
fi

AM_CONFIG_HEADER(Include/config.h)

AC_OUTPUT( \
	Makefile \
	Include/Makefile \
	Lib/Makefile \
	Lib/Audio/Makefile \
	Lib/Audio/src/Makefile \
	Lib/Audio/example/Makefile \
	Lib/Bucket/Makefile \
	Lib/Debug/Makefile \
	Lib/DEM/Makefile \
	Lib/gpc/Makefile \
	Lib/Math/Makefile \
	Lib/Misc/Makefile \
	Lib/PUI/Makefile \
	Lib/XGL/Makefile \
	Lib/zlib/Makefile \
	Simulator/Makefile \
	Simulator/Aircraft/Makefile \
	Simulator/Airports/Makefile \
	Simulator/Astro/Makefile \
	Simulator/Autopilot/Makefile \
	Simulator/Cockpit/Makefile \
	Simulator/Controls/Makefile \
	Simulator/Flight/LaRCsim/Makefile \
	Simulator/Flight/Slew/Makefile \
	Simulator/Flight/Makefile \
	Simulator/GUI/Makefile \
	Simulator/Joystick/Makefile \
	Simulator/Main/Makefile \
	Simulator/Main/runfgfs \
	Simulator/Main/runfgfs.bat \
	Simulator/Makefile \
	Simulator/Objects/Makefile \
	Simulator/Scenery/Makefile \
	Simulator/Time/Makefile \
	Simulator/Weather/Makefile \
	Tools/Makefile \
	Tools/Areas/Makefile \
	Tools/AssemTris/Makefile \
	Tools/Dem2node/Makefile \
	Tools/DemInfo/Makefile \
	Tools/DemRaw2ascii/Makefile \
	Tools/FixNode/Makefile \
	Tools/FixObj/Makefile \
	Tools/GenAirports/Makefile \
	Tools/SplitTris/Makefile \
	Tools/Stripe_w/Makefile \
	Tools/Tri2obj/Makefile \
	Tools/Triangle/Makefile \
	Tests/Makefile \
)

AC_OUTPUT_COMMANDS([chmod 755 Simulator/Main/runfgfs])