1 dnl Process this file with autoget.sh to produce a working configure
7 AC_CONFIG_SRCDIR([src/Aircraft/aircraft.cxx])
9 dnl Require at least automake 2.52
12 dnl Initialize the automake stuff
13 AM_INIT_AUTOMAKE(FlightGear, 0.9.1)
15 dnl Checks for programs.
24 # specify the simgear location
25 AC_ARG_WITH(simgear, [ --with-simgear=PREFIX Specify the prefix path to simgear])
27 if test "x$with_simgear" != "x" ; then
28 echo "SimGear prefix path is $with_simgear"
29 EXTRA_DIRS="${EXTRA_DIRS} $with_simgear"
32 dnl set the $host variable based on local machine/os
37 if test "$CXX" = "CC"; then
40 CXXFLAGS="$CXXFLAGS -I$with_simgear/include/simgear/compatibility"
54 dnl set logging; default value of with_logging=yes
55 AC_ARG_WITH(logging, [ --with-logging Include logging output (default)])
56 if test "x$with_logging" = "xno" ; then
57 AC_DEFINE([FG_NDEBUG], 1, [Define for no logging output])
60 # Specify if we want to build with Multiplayer support
61 # default to with_network=yes
62 AC_ARG_WITH(multiplayer, [ --with-multiplayer Include default multiplayer support])
63 AC_ARG_WITH(network_olk, [ --with-network-olk Include Oliver's multi-pilot networking support [default=no]])
65 if test "x$with_multiplayer" = "xno" -a "x$with_network_olk" = "xno"; then
66 echo "Building without any kind of multiplayer support"
68 elif test "x$with_multiplayer" = "xno"; then
69 # echo "Building without default multiplayer support"
70 echo "Building with Oliver's multi-pilot network support"
71 AC_DEFINE([FG_NETWORK_OLK], 1, [Define to build with Oliver's networking])
74 echo "Building with default multiplayer support"
75 # echo "Building without Oliver's multi-pilot network support"
76 AC_DEFINE([FG_MPLAYER_AS], 1, [Define to build with default multiplayer support])
79 AM_CONDITIONAL(ENABLE_NETWORK_OLK, test "x$with_network_olk" != "xno" -a "x$with_multiplayer" = "xno")
80 AM_CONDITIONAL(ENABLE_MPLAYER_AS, test "x$with_multiplayer" != "xno")
83 # Specify if we want to use WeatherCM instead of FGEnvironment.
84 # default to with_weathercm=no
85 AC_ARG_WITH(weathercm, [ --with-weathercm Use WeatherCM instead of FGEnvironment])
86 if test "x$with_weathercm" = "xyes" ; then
87 echo "Building with WeatherCM"
88 AC_DEFINE([FG_WEATHERCM], 1,
89 [Define to build with Christian Mayer's weather code])
91 echo "Building with FGEnvironment"
93 AM_CONDITIONAL(ENABLE_WEATHERCM, test "x$with_weathercm" = "xyes")
95 dnl Specify if we want the old menubar; default to the new one
96 AC_ARG_WITH(old-menubar, [ --with-old-menubar Use the old menu bar])
97 if test "x$with_old_menubar" = "xyes" ; then
98 echo "Building with old menubar"
99 AC_DEFINE([FG_OLD_MENUBAR], 1,
100 [Define to build with old menubar])
102 echo "Building with new menubar"
105 dnl Thread related checks
106 AC_ARG_WITH(threads, [ --with-threads Include tile loading threads [default=no]])
107 if test "x$with_threads" = "xyes"; then
108 AC_DEFINE([ENABLE_THREADS], 1, [Define to enable threaded tile paging])
109 CXXFLAGS="$CXXFLAGS -D_REENTRANT"
110 CFLAGS="$CFLAGS -D_REENTRANT"
112 AC_CHECK_HEADER(pthread.h)
113 AM_CONDITIONAL(WITH_THREADS, test "x$with_threads" = "xyes")
115 # specify the plib location
116 AC_ARG_WITH(plib, [ --with-plib=PREFIX Specify the prefix path to plib])
118 if test "x$with_plib" != "x" ; then
119 echo "plib prefix is $with_plib"
120 EXTRA_DIRS="${EXTRA_DIRS} $with_plib"
123 # specify the metakit location
124 AC_ARG_WITH(metakit, [ --with-metakit=PREFIX Specify the prefix path to metakit])
126 if test "x$with_metakit" != "x" ; then
127 echo "metakit prefix is $with_metakit"
128 EXTRA_DIRS="${EXTRA_DIRS} $with_metakit"
131 dnl Used by JSBSim to conditionally compile in fgfs interface code
132 AC_DEFINE([FGFS], 1, [Define so that JSBSim compiles in 'library' mode])
134 # Check for MS Windows environment
135 AC_CHECK_HEADER(windows.h)
137 dnl Determine an extra directories to add to include/lib search paths
139 *-apple-darwin* | *-*-mingw32*)
140 echo no EXTRA_DIRS for $host
144 if test -d /usr/X11R6 ; then
145 EXTRA_DIR1="/usr/X11R6"
147 if test -d /opt/X11R6 ; then
148 EXTRA_DIR2="/opt/X11R6"
150 EXTRA_DIRS="${EXTRA_DIRS} $EXTRA_DIR1 $EXTRA_DIR2"
154 wi_EXTRA_DIRS(no, ${EXTRA_DIRS})
157 dnl Using AM_CONDITIONAL is a step out of the protected little
158 dnl automake fold so it is potentially dangerous. But, we are
159 dnl beginning to run into cases where the standard checks are not
160 dnl enough. AM_CONDITIONALS are then referenced to conditionally
161 dnl build a Makefile.in from a Makefile.am which lets us define custom
162 dnl includes, compile alternative source files, etc.
164 dnl Check for external variables daylight and timezone.
166 if test "$have_daylight" = yes; then
167 AC_DEFINE([HAVE_DAYLIGHT], 1, [Define if system has daylight variable])
171 if test "$have_timezone" = yes; then
172 AC_DEFINE([HAVE_TIMEZONE], 1, [Define if system has timezone variable])
175 dnl add correct audio libs and configure for audio support
176 audio_LIBS="-lplibsl -lplibsm"
178 *-*-cygwin* | *-*-mingw32*)
179 audio_LIBS="$audio_LIBS -lwinmm"
182 audio_LIBS="$audio_LIBS -framework IOKit -framework CoreFoundation"
185 audio_LIBS="$audio_LIBS -laudio"
191 dnl ENABLE_AUDIO_SUPPORT could be depricated at any time in favor of
192 dnl just assuming we have audio support on all platform. We can
193 dnl depend on plib to hide the details.
194 AC_DEFINE([ENABLE_AUDIO_SUPPORT], 1, [Define for audio support])
196 dnl X11 might be installed on Mac OS X or cygwin/mingwin, we don't want
197 dnl to use it if it is.
199 *-apple-darwin* | *-*-cygwin* | *-*-mingw32*)
200 echo no fancy X11 check
209 dnl Checks for libraries.
217 dnl Thread related checks
218 AC_CHECK_LIB(pthread, pthread_exit)
219 if test "x$ac_cv_lib_pthread_pthread_exit" != "xyes" \
220 -a "x$ac_cv_header_pthread_h" = "xyes"; then
221 dnl FreeBSD: System has pthread.h, but -lpthread library check
222 dnl fails. See if we need -pthread instead of -lpthread and look
223 dnl for the functions in libc_r.
224 save_CXXFLAGS="$CXXFLAGS"
225 save_CFLAGS="$CFLAGS"
226 CXXFLAGS="-pthread $CXXFLAGS"
227 CFLAGS="-pthread $FLAGS"
229 AC_CHECK_LIB(c_r, pthread_exit)
230 if test "x$ac_cv_lib_c_r_pthread_exit" != "xyes"; then
231 CXXFLAGS=$save_CXXFLAGS
236 AC_CHECK_LIB(socket, socket)
238 dnl check for glut location
239 AC_CHECK_HEADER(GL/glut.h)
240 if test "x$ac_cv_header_GL_glut_h" = "xyes"; then
241 AC_DEFINE([GLUT_H], "GL/glut.h", [Define as glut.h include location])
243 AC_CHECK_HEADER(GLUT/glut.h)
244 if test "x$ac_cv_header_GLUT_glut_h" = "xyes"; then
245 AC_DEFINE([GLUT_H], <GLUT/glut.h>, [Define as glut.h include location])
247 echo "Neither GL/glut.h nor GLUT/glut.h found. Cannot continue"
252 dnl check for OpenGL related libraries
254 *-*-cygwin* | *-*-mingw32*)
255 dnl CygWin under Windoze.
257 echo Win32 specific hacks...
258 AC_DEFINE([WIN32], 1, [Define for Win32 platforms])
259 AC_DEFINE([NOMINMAX], 1, [Define for Win32 platforms])
261 LIBS="$LIBS -lglut32 -lglu32 -lopengl32"
262 LIBS="$LIBS -luser32 -lgdi32"
264 dnl add -lwsock32 for mingwin
267 echo "********** BUILDING FOR MINGW32 *************"
268 base_LIBS="$base_LIBS -lws2_32"
272 echo "Will link apps with $LIBS"
279 LIBS="$LIBS -framework GLUT -framework OpenGL -framework Carbon -lobjc"
283 dnl X-Windows based machines
285 dnl Skip X11 library tests if requested.
286 if test "x$no_x" != "xyes"; then
287 AC_CHECK_LIB(X11, XCreateWindow)
288 AC_CHECK_LIB(Xext, XShmCreateImage)
289 AC_CHECK_LIB(Xi, XGetExtensionVersion)
290 AC_CHECK_LIB(ICE, IceOpenConnection)
291 AC_CHECK_LIB(SM, SmcOpenConnection)
292 AC_CHECK_LIB(Xt, XtMalloc)
293 AC_CHECK_LIB(Xmu, XmuLookupStandardColormap)
296 AC_CHECK_LIB(GLcore, glNewList)
297 if test "x$ac_cv_lib_GLcore_glNewList" = "xno" ; then
298 dnl if no GLcore, check for GL
299 AC_CHECK_LIB(GL, glNewList)
300 if test "x$ac_cv_lib_GL_glNewList" = "xno" ; then
301 dnl if no GL, check for MesaGL
302 AC_CHECK_LIB(MesaGL, glNewList)
305 dnl if GLcore found, then also check for GL
306 AC_CHECK_LIB(GL, glXCreateContext)
309 dnl if using mesa, check for xmesa.h
310 if test "x$ac_cv_lib_MesaGL_glNewList" = "xyes" ; then
311 AC_CHECK_HEADER(GL/fxmesa.h)
312 if test "x$ac_cv_header_GL_fxmesa_h" = "xyes"; then
313 AC_DEFINE([XMESA], 1, [Define for fxmesa])
314 AC_DEFINE([FX], 1, [Define for fxmesa])
318 AC_CHECK_LIB(GLU, gluLookAt)
319 if test "x$ac_cv_lib_GLU_gluLookAt" = "xno" ; then
320 dnl if no GLU, check for MesaGLU
321 AC_CHECK_LIB(MesaGLU, gluLookAt)
324 AC_CHECK_LIB(glut, glutGetModifiers)
325 if test "x$ac_cv_lib_glut_glutGetModifiers" = "xno" ; then
326 dnl if no "real" glut, check for freeglut
327 AC_CHECK_LIB(freeglut, glutGetModifiers)
337 AC_SUBST(opengl_LIBS)
339 # The following are C++ items that need to be tested for with the c++
344 # Check for "plib" without which we cannot go on
345 AC_CHECK_HEADER(plib/ul.h)
346 if test "x$ac_cv_header_plib_ul_h" != "xyes"; then
348 echo "You *must* have the plib library installed on your system to build"
349 echo "the FGFS simulator!"
351 echo "Please see README.plib for more details."
353 echo "configure aborted."
357 AC_MSG_CHECKING([for plib 1.6.0 or newer])
361 #define MIN_PLIB_VERSION 160
364 int major, minor, micro;
366 if ( PLIB_VERSION < MIN_PLIB_VERSION ) {
375 [AC_MSG_RESULT(wrong version);
376 AC_MSG_ERROR([Install plib 1.6.0 or later first...])],
380 dnl If we get here then plib is available, so force use of plib
382 AC_DEFINE([ENABLE_PLIB_JOYSTICK], 1, [Define to enable plib joystick support])
385 dnl Checking for PSL in plib
386 dnl version of plib, so check for it.
387 AC_MSG_CHECKING([for plib PSL scripting support])
389 #include <plib/psl.h>
392 // not for running...
393 pslProgram program((pslExtension *)0);
394 program.compile("int main () {}", "");
402 AM_CONDITIONAL(HAVE_PLIB_PSL, test "x$have_plib_psl" = "xyes")
404 dnl Check for MetaKit
405 AC_CHECK_HEADER(mk4.h)
406 if test "x$ac_cv_header_mk4_h" != "xyes"; then
408 echo "MetaKit library not found."
410 echo "If your OS does not provide an installable package for MetaKit"
411 echo "you will have to compile and install it first yourself. A copy"
412 echo "of metakit-$(VERSION).tar.gz is included with SimGear. You will"
413 echo "have to untar this source code, and follow it's included instructions"
414 echo "to compile and install on your system."
416 echo "configure aborted."
420 AC_MSG_CHECKING([for metakit 2.4.3 or newer])
422 LIBS="$saved_LIBS -lmk4"
426 #define MIN_MK4_VERSION 243
429 int major, minor, micro;
431 if ( d4_MetaKitLibraryVersion < MIN_MK4_VERSION ) {
440 [AC_MSG_RESULT(wrong version);
443 Install metakit 2.4.3 or later first.
445 Or, the compiler may not be finding your libmk4.so library.
446 Please check the config.log file for specific details of the
447 failure if you believe you have the correct metakit version.
448 Also, look up this issue in the FlightGear FAQ.])],
452 dnl Check for the presence of SimGear
453 AC_CHECK_HEADER(simgear/version.h)
454 if test "x$ac_cv_header_simgear_version_h" != "xyes"; then
456 echo "You *must* have the SimGear support library installed on your system"
457 echo "to build the FGFS simulator!"
459 echo "Please see README.SimGear for more details."
461 echo "configure aborted."
465 AC_MSG_CHECKING([for simgear 0.3.0 or newer])
469 #include <simgear/version.h>
471 #define STRINGIFY(X) XSTRINGIFY(X)
472 #define XSTRINGIFY(X) #X
479 int major, minor, micro;
481 printf("%d.%d.%d or greater... ", MIN_MAJOR, MIN_MINOR, MIN_MICRO);
483 sscanf( STRINGIFY(SIMGEAR_VERSION), "%d.%d.%d", &major, &minor, µ );
485 if ( major < MIN_MAJOR ) {
487 } else if ( major == MIN_MAJOR && minor < MIN_MINOR ) {
489 } else if ( major == MIN_MAJOR && minor == MIN_MINOR && micro < MIN_MICRO ){
498 [AC_MSG_RESULT(wrong version);
499 AC_MSG_ERROR([Install latest simgear first...])],
505 dnl Check if SimGear was built with Norman JPEG factory support
506 AC_CHECK_HEADER(simgear/screen/jpgfactory.hxx)
507 if test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes"; then
508 AC_CHECK_LIB(jpeg, jpeg_start_compress)
509 if test "x$ac_cv_lib_jpeg_jpeg_start_compress" != "xyes" ; then
511 echo "The JPEG factory code was built and installed with SimGear."
512 echo "However it appears the libjpeg is no longer installed."
513 echo "You need to install libjpeg or remove jpgfactory support from"
516 echo "libjpeg is available at :"
517 echo " ftp://ftp.uu.net in the directory graphics/jpeg"
520 AC_DEFINE([FG_JPEG_SERVER], 1,
521 [Define to build with jpeg screen shot server])
523 AM_CONDITIONAL(ENABLE_JPEG_SERVER, test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes")
527 dnl Check for system installed zlib
528 AC_CHECK_HEADER(zlib.h)
529 if test "x$ac_cv_header_zlib_h" != "xyes"; then
531 echo "zlib library not found."
533 echo "If your OS does not provide an installable package for zlib"
534 echo "you will have to compile and install it first yourself. A copy"
535 echo "of zlib-1.1.4.tar.gz is included with SimGear. You will"
536 echo "have to untar this source code, and follow it's included instructions"
537 echo "to compile and install on your system."
539 echo "configure aborted."
543 dnl Checks for header files.
546 fcntl.h getopt.h malloc.h memory.h stdlib.h sys/param.h sys/stat.h \
547 sys/time.h sys/timeb.h unistd.h windows.h winbase.h values.h )
549 dnl Checks for typedefs, structures, and compiler characteristics.
555 dnl Checks for library functions.
559 ftime gettimeofday timegm memcpy bcopy mktime strstr rand \
560 random drand48 setitimer getitimer signal GetLocalTime rint getrusage )
562 AM_CONFIG_HEADER(src/Include/config.h)
574 scripts/debug/Makefile \
575 scripts/python/Makefile \
577 src/Include/Makefile \
578 src/Include/version.h \
579 src/Aircraft/Makefile \
580 src/Airports/Makefile \
582 src/Autopilot/Makefile \
583 src/Cockpit/Makefile \
584 src/Cockpit/built_in/Makefile \
585 src/Controls/Makefile \
586 src/Environment/Makefile \
587 src/FDM/Balloon/Makefile \
588 src/FDM/ExternalNet/Makefile \
589 src/FDM/ExternalPipe/Makefile \
590 src/FDM/JSBSim/Makefile \
591 src/FDM/JSBSim/filtersjb/Makefile \
592 src/FDM/LaRCsim/Makefile \
593 src/FDM/UIUCModel/Makefile \
594 src/FDM/YASim/Makefile \
598 src/Instrumentation/Makefile \
601 src/Main/runfgfs.bat \
603 src/MultiPlayer/Makefile \
604 src/Navaids/Makefile \
605 src/Network/Makefile \
606 src/NetworkOLK/Makefile \
607 src/Objects/Makefile \
608 src/Scenery/Makefile \
609 src/Scripting/Makefile \
611 src/Systems/Makefile \
613 src/WeatherCM/Makefile \
616 utils/TerraSync/Makefile \
620 AC_OUTPUT_COMMANDS([chmod 755 src/Main/runfgfs])
623 echo "Configure Summary"
624 echo "================="
626 echo "Prefix: $prefix"
628 if test "x$have_plib_psl" = "xyes"; then
629 echo "Plib PSL scripting: yes"
631 echo "Plib PSL scripting: $fg_psl_string_compile"
632 echo " You will not be able to run scripts written in PSL"
633 echo " and some advanced GUI and input features may not"
634 echo " work. Download and install the latest CVS version"
635 echo " of plib if you would like to enable PSL support."
638 if test "x$with_logging" != "x"; then
639 echo "Debug messages: $with_logging"
641 echo "Debug messages: yes"
644 echo -n "Automake version: "
645 automake --version | head -1
647 if test "x$with_weathercm" != "x"; then
648 echo "WeatherCM instead of FGEnvironment: $with_weathercm"
650 echo "Using FGEnvironment"
653 if test "x$with_multiplayer" != "xno"; then
654 echo "Using default multiplayer support"
655 elif test "x$with_network_olk" != "xno"; then
656 echo "Using Oliver's multi-pilot network support"
659 if test "x$with_old_menubar" != "x"; then
660 echo "Using old menubar"
662 echo "Defaulting to new XML-configurable menubar"
665 if test "x$with_threads" = "xyes"; then