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.2)
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 Thread related checks
96 AC_ARG_WITH(threads, [ --with-threads Include tile loading threads [default=no]])
97 if test "x$with_threads" = "xyes"; then
98 AC_DEFINE([ENABLE_THREADS], 1, [Define to enable threaded tile paging])
99 CXXFLAGS="$CXXFLAGS -D_REENTRANT"
100 CFLAGS="$CFLAGS -D_REENTRANT"
102 AC_CHECK_HEADER(pthread.h)
103 AM_CONDITIONAL(WITH_THREADS, test "x$with_threads" = "xyes")
105 # specify the plib location
106 AC_ARG_WITH(plib, [ --with-plib=PREFIX Specify the prefix path to plib])
108 if test "x$with_plib" != "x" ; then
109 echo "plib prefix is $with_plib"
110 EXTRA_DIRS="${EXTRA_DIRS} $with_plib"
113 # specify the metakit location
114 AC_ARG_WITH(metakit, [ --with-metakit=PREFIX Specify the prefix path to metakit])
116 if test "x$with_metakit" != "x" ; then
117 echo "metakit prefix is $with_metakit"
118 EXTRA_DIRS="${EXTRA_DIRS} $with_metakit"
121 dnl Used by JSBSim to conditionally compile in fgfs interface code
122 AC_DEFINE([FGFS], 1, [Define so that JSBSim compiles in 'library' mode])
124 # Check for MS Windows environment
125 AC_CHECK_HEADER(windows.h)
127 dnl Determine an extra directories to add to include/lib search paths
129 *-apple-darwin* | *-*-mingw32*)
130 echo no EXTRA_DIRS for $host
134 if test -d /usr/X11R6 ; then
135 EXTRA_DIR1="/usr/X11R6"
137 if test -d /opt/X11R6 ; then
138 EXTRA_DIR2="/opt/X11R6"
140 EXTRA_DIRS="${EXTRA_DIRS} $EXTRA_DIR1 $EXTRA_DIR2"
144 wi_EXTRA_DIRS(no, ${EXTRA_DIRS})
147 dnl Using AM_CONDITIONAL is a step out of the protected little
148 dnl automake fold so it is potentially dangerous. But, we are
149 dnl beginning to run into cases where the standard checks are not
150 dnl enough. AM_CONDITIONALS are then referenced to conditionally
151 dnl build a Makefile.in from a Makefile.am which lets us define custom
152 dnl includes, compile alternative source files, etc.
154 dnl Check for external variables daylight and timezone.
156 if test "$have_daylight" = yes; then
157 AC_DEFINE([HAVE_DAYLIGHT], 1, [Define if system has daylight variable])
161 if test "$have_timezone" = yes; then
162 AC_DEFINE([HAVE_TIMEZONE], 1, [Define if system has timezone variable])
165 dnl add correct audio libs and configure for audio support
166 audio_LIBS="-lplibsl -lplibsm"
168 *-*-cygwin* | *-*-mingw32*)
169 audio_LIBS="$audio_LIBS -lwinmm"
172 audio_LIBS="$audio_LIBS -framework IOKit -framework CoreFoundation"
175 audio_LIBS="$audio_LIBS -laudio"
181 dnl ENABLE_AUDIO_SUPPORT could be depricated at any time in favor of
182 dnl just assuming we have audio support on all platform. We can
183 dnl depend on plib to hide the details.
184 AC_DEFINE([ENABLE_AUDIO_SUPPORT], 1, [Define for audio support])
186 dnl X11 might be installed on Mac OS X or cygwin/mingwin, we don't want
187 dnl to use it if it is.
189 *-apple-darwin* | *-*-cygwin* | *-*-mingw32*)
190 echo no fancy X11 check
199 dnl Checks for libraries.
207 dnl Thread related checks
208 AC_CHECK_LIB(pthread, pthread_exit)
209 if test "x$ac_cv_lib_pthread_pthread_exit" != "xyes" \
210 -a "x$ac_cv_header_pthread_h" = "xyes"; then
211 dnl FreeBSD: System has pthread.h, but -lpthread library check
212 dnl fails. See if we need -pthread instead of -lpthread and look
213 dnl for the functions in libc_r.
214 save_CXXFLAGS="$CXXFLAGS"
215 save_CFLAGS="$CFLAGS"
216 CXXFLAGS="-pthread $CXXFLAGS"
217 CFLAGS="-pthread $FLAGS"
219 AC_CHECK_LIB(c_r, pthread_exit)
220 if test "x$ac_cv_lib_c_r_pthread_exit" != "xyes"; then
221 CXXFLAGS=$save_CXXFLAGS
231 AC_CHECK_LIB(nsl, main)
232 AC_CHECK_LIB(dl, dlclose)
233 AC_CHECK_LIB(xnet,inet_addr)
234 AC_CHECK_LIB(socket, socket)
237 AC_CHECK_LIB(socket, socket)
241 dnl check for glut location
242 AC_CHECK_HEADER(GL/glut.h)
243 if test "x$ac_cv_header_GL_glut_h" = "xyes"; then
244 AC_DEFINE([GLUT_H], "GL/glut.h", [Define as glut.h include location])
246 AC_CHECK_HEADER(GLUT/glut.h)
247 if test "x$ac_cv_header_GLUT_glut_h" = "xyes"; then
248 AC_DEFINE([GLUT_H], <GLUT/glut.h>, [Define as glut.h include location])
250 echo "Neither GL/glut.h nor GLUT/glut.h found. Cannot continue"
255 dnl check for OpenGL related libraries
257 *-*-cygwin* | *-*-mingw32*)
258 dnl CygWin under Windoze.
260 echo Win32 specific hacks...
261 AC_DEFINE([WIN32], 1, [Define for Win32 platforms])
262 AC_DEFINE([NOMINMAX], 1, [Define for Win32 platforms])
264 LIBS="$LIBS -lglut32 -lglu32 -lopengl32"
265 LIBS="$LIBS -luser32 -lgdi32"
267 dnl add -lwsock32 for mingwin
270 echo "********** BUILDING FOR MINGW32 *************"
271 base_LIBS="$base_LIBS -lws2_32"
275 echo "Will link apps with $LIBS"
282 LIBS="$LIBS -framework GLUT -framework OpenGL -framework Carbon -lobjc"
286 dnl X-Windows based machines
288 dnl Skip X11 library tests if requested.
289 if test "x$no_x" != "xyes"; then
290 AC_CHECK_LIB(X11, XCreateWindow)
291 AC_CHECK_LIB(Xext, XShmCreateImage)
292 AC_CHECK_LIB(Xi, XGetExtensionVersion)
293 AC_CHECK_LIB(ICE, IceOpenConnection)
294 AC_CHECK_LIB(SM, SmcOpenConnection)
295 AC_CHECK_LIB(Xt, XtMalloc)
296 AC_CHECK_LIB(Xmu, XmuLookupStandardColormap)
299 AC_CHECK_LIB(GLcore, glNewList)
300 if test "x$ac_cv_lib_GLcore_glNewList" = "xno" ; then
301 dnl if no GLcore, check for GL
302 AC_CHECK_LIB(GL, glNewList)
303 if test "x$ac_cv_lib_GL_glNewList" = "xno" ; then
304 dnl if no GL, check for MesaGL
305 AC_CHECK_LIB(MesaGL, glNewList)
308 dnl if GLcore found, then also check for GL
309 AC_CHECK_LIB(GL, glXCreateContext)
312 dnl if using mesa, check for xmesa.h
313 if test "x$ac_cv_lib_MesaGL_glNewList" = "xyes" ; then
314 AC_CHECK_HEADER(GL/fxmesa.h)
315 if test "x$ac_cv_header_GL_fxmesa_h" = "xyes"; then
316 AC_DEFINE([XMESA], 1, [Define for fxmesa])
317 AC_DEFINE([FX], 1, [Define for fxmesa])
321 AC_CHECK_LIB(GLU, gluLookAt)
322 if test "x$ac_cv_lib_GLU_gluLookAt" = "xno" ; then
323 dnl if no GLU, check for MesaGLU
324 AC_CHECK_LIB(MesaGLU, gluLookAt)
327 AC_CHECK_LIB(glut, glutGetModifiers)
328 if test "x$ac_cv_lib_glut_glutGetModifiers" = "xno" ; then
329 dnl if no "real" glut, check for freeglut
330 AC_CHECK_LIB(freeglut, glutGetModifiers)
340 AC_SUBST(opengl_LIBS)
342 # The following are C++ items that need to be tested for with the c++
347 # Check for "plib" without which we cannot go on
348 AC_CHECK_HEADER(plib/ul.h)
349 if test "x$ac_cv_header_plib_ul_h" != "xyes"; then
351 echo "You *must* have the plib library installed on your system to build"
352 echo "the FGFS simulator!"
354 echo "Please see README.plib for more details."
356 echo "configure aborted."
360 AC_MSG_CHECKING([for plib 1.6.0 or newer])
364 #define MIN_PLIB_VERSION 160
367 int major, minor, micro;
369 if ( PLIB_VERSION < MIN_PLIB_VERSION ) {
378 [AC_MSG_RESULT(wrong version);
379 AC_MSG_ERROR([Install plib 1.6.0 or later first...])],
383 dnl If we get here then plib is available, so force use of plib
385 AC_DEFINE([ENABLE_PLIB_JOYSTICK], 1, [Define to enable plib joystick support])
388 dnl Checking for PSL in plib
389 dnl version of plib, so check for it.
390 AC_MSG_CHECKING([for plib PSL scripting support])
392 #include <plib/psl.h>
395 // not for running...
396 pslProgram program((pslExtension *)0);
397 program.compile("int main () {}", "");
405 AM_CONDITIONAL(HAVE_PLIB_PSL, test "x$have_plib_psl" = "xyes")
406 if test "x$have_plib_psl" = "xyes"; then
407 AC_DEFINE([HAVE_PLIB_PSL], 1,
408 [Define if plib version is new enough to provide "PSL"])
411 dnl Check for MetaKit
412 AC_CHECK_HEADER(mk4.h)
413 if test "x$ac_cv_header_mk4_h" != "xyes"; then
415 echo "MetaKit library not found."
417 echo "If your OS does not provide an installable package for MetaKit"
418 echo "you will have to compile and install it first yourself. A copy"
419 echo "of metakit-$(VERSION).tar.gz is included with SimGear. You will"
420 echo "have to untar this source code, and follow it's included instructions"
421 echo "to compile and install on your system."
423 echo "configure aborted."
427 AC_MSG_CHECKING([for metakit 2.4.3 or newer])
429 LIBS="$saved_LIBS -lmk4"
433 #define MIN_MK4_VERSION 243
436 int major, minor, micro;
438 if ( d4_MetaKitLibraryVersion < MIN_MK4_VERSION ) {
447 [AC_MSG_RESULT(wrong version);
450 Install metakit 2.4.3 or later first.
452 Or, the compiler may not be finding your libmk4.so library.
453 Please check the config.log file for specific details of the
454 failure if you believe you have the correct metakit version.
455 Also, look up this issue in the FlightGear FAQ.])],
459 dnl Check for the presence of SimGear
460 AC_CHECK_HEADER(simgear/version.h)
461 if test "x$ac_cv_header_simgear_version_h" != "xyes"; then
463 echo "You *must* have the SimGear support library installed on your system"
464 echo "to build the FGFS simulator!"
466 echo "Please see README.SimGear for more details."
468 echo "configure aborted."
472 AC_MSG_CHECKING([for simgear 0.3.3 or newer])
476 #include <simgear/version.h>
478 #define STRINGIFY(X) XSTRINGIFY(X)
479 #define XSTRINGIFY(X) #X
486 int major, minor, micro;
488 printf("%d.%d.%d or greater... ", MIN_MAJOR, MIN_MINOR, MIN_MICRO);
490 sscanf( STRINGIFY(SIMGEAR_VERSION), "%d.%d.%d", &major, &minor, µ );
492 if ( major < MIN_MAJOR ) {
494 } else if ( major == MIN_MAJOR && minor < MIN_MINOR ) {
496 } else if ( major == MIN_MAJOR && minor == MIN_MINOR && micro < MIN_MICRO ){
505 [AC_MSG_RESULT(wrong version);
506 AC_MSG_ERROR([Install latest simgear first...])],
512 dnl Check if SimGear was built with Norman JPEG factory support
513 AC_CHECK_HEADER(simgear/screen/jpgfactory.hxx)
514 if test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes"; then
515 AC_CHECK_LIB(jpeg, jpeg_start_compress)
516 if test "x$ac_cv_lib_jpeg_jpeg_start_compress" != "xyes" ; then
518 echo "The JPEG factory code was built and installed with SimGear."
519 echo "However it appears the libjpeg is no longer installed."
520 echo "You need to install libjpeg or remove jpgfactory support from"
523 echo "libjpeg is available at :"
524 echo " ftp://ftp.uu.net in the directory graphics/jpeg"
527 AC_DEFINE([FG_JPEG_SERVER], 1,
528 [Define to build with jpeg screen shot server])
530 AM_CONDITIONAL(ENABLE_JPEG_SERVER, test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes")
534 dnl Check for system installed zlib
535 AC_CHECK_HEADER(zlib.h)
536 if test "x$ac_cv_header_zlib_h" != "xyes"; then
538 echo "zlib library not found."
540 echo "If your OS does not provide an installable package for zlib"
541 echo "you will have to compile and install it first yourself. A copy"
542 echo "of zlib-1.1.4.tar.gz is included with SimGear. You will"
543 echo "have to untar this source code, and follow it's included instructions"
544 echo "to compile and install on your system."
546 echo "configure aborted."
550 dnl Checks for header files.
553 fcntl.h getopt.h malloc.h memory.h stdlib.h sys/param.h sys/stat.h \
554 sys/time.h sys/timeb.h unistd.h windows.h values.h )
556 dnl Checks for typedefs, structures, and compiler characteristics.
562 dnl Checks for library functions.
566 ftime gettimeofday timegm memcpy bcopy mktime strstr rand mkfifo \
567 random drand48 setitimer getitimer signal GetLocalTime rint getrusage )
569 AM_CONFIG_HEADER(src/Include/config.h)
581 scripts/debug/Makefile \
582 scripts/python/Makefile \
584 src/Include/Makefile \
585 src/Include/version.h \
586 src/Aircraft/Makefile \
587 src/Airports/Makefile \
589 src/Autopilot/Makefile \
590 src/Cockpit/Makefile \
591 src/Cockpit/built_in/Makefile \
592 src/Controls/Makefile \
593 src/Environment/Makefile \
594 src/FDM/Balloon/Makefile \
595 src/FDM/ExternalNet/Makefile \
596 src/FDM/ExternalPipe/Makefile \
597 src/FDM/JSBSim/Makefile \
598 src/FDM/JSBSim/filtersjb/Makefile \
599 src/FDM/LaRCsim/Makefile \
600 src/FDM/UIUCModel/Makefile \
601 src/FDM/YASim/Makefile \
605 src/Instrumentation/Makefile \
608 src/Main/runfgfs.bat \
610 src/MultiPlayer/Makefile \
611 src/Navaids/Makefile \
612 src/Network/Makefile \
613 src/NetworkOLK/Makefile \
614 src/Objects/Makefile \
615 src/Scenery/Makefile \
616 src/Scripting/Makefile \
618 src/Systems/Makefile \
620 src/WeatherCM/Makefile \
623 utils/TerraSync/Makefile \
627 AC_OUTPUT_COMMANDS([chmod 755 src/Main/runfgfs])
630 echo "Configure Summary"
631 echo "================="
633 echo "Prefix: $prefix"
635 if test "x$have_plib_psl" = "xyes"; then
636 echo "Plib PSL scripting: yes"
638 echo "Plib PSL scripting: $fg_psl_string_compile"
639 echo " You will not be able to run scripts written in PSL"
640 echo " and some advanced GUI and input features may not"
641 echo " work. Download and install the latest CVS version"
642 echo " of plib if you would like to enable PSL support."
645 if test "x$with_logging" != "x"; then
646 echo "Debug messages: $with_logging"
648 echo "Debug messages: yes"
651 echo -n "Automake version: "
652 automake --version | head -1
654 if test "x$with_weathercm" != "x"; then
655 echo "WeatherCM instead of FGEnvironment: $with_weathercm"
657 echo "Using FGEnvironment"
660 if test "x$with_multiplayer" != "xno"; then
661 echo "Using default multiplayer support"
662 elif test "x$with_network_olk" != "xno"; then
663 echo "Using Oliver's multi-pilot network support"
666 if test "x$with_threads" = "xyes"; then