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 default Multiplayer support
61 # default to with_network=yes
62 AC_ARG_WITH(multiplayer, [ --with-multiplayer Include default multiplayer support])
63 if test "x$with_multiplayer" = "xno" ; then
64 echo "Building without default multiplayer support"
66 echo "Building with default multiplayer support"
67 AC_DEFINE([FG_MPLAYER_AS], 1, [Define to build with default multiplayer support])
69 AM_CONDITIONAL(ENABLE_MPLAYER_AS, test "x$with_multiplayer" != "xno")
72 # Specify if we want to build with Oliver's networking support
73 # default to with_network=yes
75 AC_ARG_WITH(network_olk, [ --with-network-olk Include Oliver's multi-pilot networking support [default=no]])
76 if test "x$with_network_olk" = "xno" ; then
77 echo "Building without Oliver's multi-pilot network support"
79 echo "Building with Oliver's multi-pilot network support"
80 AC_DEFINE([FG_NETWORK_OLK], 1, [Define to build with Oliver's networking])
82 AM_CONDITIONAL(ENABLE_NETWORK_OLK, test "x$with_network_olk" != "xno" -a "x$with_multiplayer" = "xno")
86 # Specify if we want to use WeatherCM instead of FGEnvironment.
87 # default to with_weathercm=no
88 AC_ARG_WITH(weathercm, [ --with-weathercm Use WeatherCM instead of FGEnvironment])
89 if test "x$with_weathercm" = "xyes" ; then
90 echo "Building with WeatherCM"
91 AC_DEFINE([FG_WEATHERCM], 1,
92 [Define to build with Christian Mayer's weather code])
94 echo "Building with FGEnvironment"
96 AM_CONDITIONAL(ENABLE_WEATHERCM, test "x$with_weathercm" = "xyes")
98 dnl Specify if we want the old menubar; default to the new one
99 AC_ARG_WITH(old-menubar, [ --with-old-menubar Use the old menu bar])
100 if test "x$with_old_menubar" = "xyes" ; then
101 echo "Building with old menubar"
102 AC_DEFINE([FG_OLD_MENUBAR], 1,
103 [Define to build with old menubar])
105 echo "Building with new menubar"
108 dnl Thread related checks
109 AC_ARG_WITH(threads, [ --with-threads Include tile loading threads [default=no]])
110 if test "x$with_threads" = "xyes"; then
111 AC_DEFINE([ENABLE_THREADS], 1, [Define to enable threaded tile paging])
112 CXXFLAGS="$CXXFLAGS -D_REENTRANT"
113 CFLAGS="$CFLAGS -D_REENTRANT"
115 AC_CHECK_HEADER(pthread.h)
116 AM_CONDITIONAL(WITH_THREADS, test "x$with_threads" = "xyes")
118 # specify the plib location
119 AC_ARG_WITH(plib, [ --with-plib=PREFIX Specify the prefix path to plib])
121 if test "x$with_plib" != "x" ; then
122 echo "plib prefix is $with_plib"
123 EXTRA_DIRS="${EXTRA_DIRS} $with_plib"
126 # specify the metakit location
127 AC_ARG_WITH(metakit, [ --with-metakit=PREFIX Specify the prefix path to metakit])
129 if test "x$with_metakit" != "x" ; then
130 echo "metakit prefix is $with_metakit"
131 EXTRA_DIRS="${EXTRA_DIRS} $with_metakit"
134 dnl Used by JSBSim to conditionally compile in fgfs interface code
135 AC_DEFINE([FGFS], 1, [Define so that JSBSim compiles in 'library' mode])
137 # Check for MS Windows environment
138 AC_CHECK_HEADER(windows.h)
140 dnl Determine an extra directories to add to include/lib search paths
142 *-apple-darwin* | *-*-mingw32*)
143 echo no EXTRA_DIRS for $host
147 if test -d /usr/X11R6 ; then
148 EXTRA_DIR1="/usr/X11R6"
150 if test -d /opt/X11R6 ; then
151 EXTRA_DIR2="/opt/X11R6"
153 EXTRA_DIRS="${EXTRA_DIRS} $EXTRA_DIR1 $EXTRA_DIR2"
157 wi_EXTRA_DIRS(no, ${EXTRA_DIRS})
160 dnl Using AM_CONDITIONAL is a step out of the protected little
161 dnl automake fold so it is potentially dangerous. But, we are
162 dnl beginning to run into cases where the standard checks are not
163 dnl enough. AM_CONDITIONALS are then referenced to conditionally
164 dnl build a Makefile.in from a Makefile.am which lets us define custom
165 dnl includes, compile alternative source files, etc.
167 dnl Check for external variables daylight and timezone.
169 if test "$have_daylight" = yes; then
170 AC_DEFINE([HAVE_DAYLIGHT], 1, [Define if system has daylight variable])
174 if test "$have_timezone" = yes; then
175 AC_DEFINE([HAVE_TIMEZONE], 1, [Define if system has timezone variable])
178 dnl add correct audio libs and configure for audio support
179 audio_LIBS="-lplibsl -lplibsm"
181 *-*-cygwin* | *-*-mingw32*)
182 audio_LIBS="$audio_LIBS -lwinmm"
185 audio_LIBS="$audio_LIBS -framework IOKit -framework CoreFoundation"
188 audio_LIBS="$audio_LIBS -laudio"
194 dnl ENABLE_AUDIO_SUPPORT could be depricated at any time in favor of
195 dnl just assuming we have audio support on all platform. We can
196 dnl depend on plib to hide the details.
197 AC_DEFINE([ENABLE_AUDIO_SUPPORT], 1, [Define for audio support])
199 dnl X11 might be installed on Mac OS X or cygwin/mingwin, we don't want
200 dnl to use it if it is.
202 *-apple-darwin* | *-*-cygwin* | *-*-mingw32*)
203 echo no fancy X11 check
212 dnl Checks for libraries.
220 dnl Thread related checks
221 AC_CHECK_LIB(pthread, pthread_exit)
222 if test "x$ac_cv_lib_pthread_pthread_exit" != "xyes" \
223 -a "x$ac_cv_header_pthread_h" = "xyes"; then
224 dnl FreeBSD: System has pthread.h, but -lpthread library check
225 dnl fails. See if we need -pthread instead of -lpthread and look
226 dnl for the functions in libc_r.
227 save_CXXFLAGS="$CXXFLAGS"
228 save_CFLAGS="$CFLAGS"
229 CXXFLAGS="-pthread $CXXFLAGS"
230 CFLAGS="-pthread $FLAGS"
232 AC_CHECK_LIB(c_r, pthread_exit)
233 if test "x$ac_cv_lib_c_r_pthread_exit" != "xyes"; then
234 CXXFLAGS=$save_CXXFLAGS
239 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")
407 dnl Check for MetaKit
408 AC_CHECK_HEADER(mk4.h)
409 if test "x$ac_cv_header_mk4_h" != "xyes"; then
411 echo "MetaKit library not found."
413 echo "If your OS does not provide an installable package for MetaKit"
414 echo "you will have to compile and install it first yourself. A copy"
415 echo "of metakit-$(VERSION).tar.gz is included with SimGear. You will"
416 echo "have to untar this source code, and follow it's included instructions"
417 echo "to compile and install on your system."
419 echo "configure aborted."
423 AC_MSG_CHECKING([for metakit 2.4.3 or newer])
425 LIBS="$saved_LIBS -lmk4"
429 #define MIN_MK4_VERSION 243
432 int major, minor, micro;
434 if ( d4_MetaKitLibraryVersion < MIN_MK4_VERSION ) {
443 [AC_MSG_RESULT(wrong version);
446 Install metakit 2.4.3 or later first.
448 Or, the compiler may not be finding your libmk4.so library.
449 Please check the config.log file for specific details of the
450 failure if you believe you have the correct metakit version.
451 Also, look up this issue in the FlightGear FAQ.])],
455 dnl Check for the presence of SimGear
456 AC_CHECK_HEADER(simgear/version.h)
457 if test "x$ac_cv_header_simgear_version_h" != "xyes"; then
459 echo "You *must* have the SimGear support library installed on your system"
460 echo "to build the FGFS simulator!"
462 echo "Please see README.SimGear for more details."
464 echo "configure aborted."
468 AC_MSG_CHECKING([for simgear 0.3.0 or newer])
472 #include <simgear/version.h>
474 #define STRINGIFY(X) XSTRINGIFY(X)
475 #define XSTRINGIFY(X) #X
482 int major, minor, micro;
484 printf("%d.%d.%d or greater... ", MIN_MAJOR, MIN_MINOR, MIN_MICRO);
486 sscanf( STRINGIFY(SIMGEAR_VERSION), "%d.%d.%d", &major, &minor, µ );
488 if ( major < MIN_MAJOR ) {
490 } else if ( major == MIN_MAJOR && minor < MIN_MINOR ) {
492 } else if ( major == MIN_MAJOR && minor == MIN_MINOR && micro < MIN_MICRO ){
501 [AC_MSG_RESULT(wrong version);
502 AC_MSG_ERROR([Install latest simgear first...])],
508 dnl Check if SimGear was built with Norman JPEG factory support
509 AC_CHECK_HEADER(simgear/screen/jpgfactory.hxx)
510 if test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes"; then
511 AC_CHECK_LIB(jpeg, jpeg_start_compress)
512 if test "x$ac_cv_lib_jpeg_jpeg_start_compress" != "xyes" ; then
514 echo "The JPEG factory code was built and installed with SimGear."
515 echo "However it appears the libjpeg is no longer installed."
516 echo "You need to install libjpeg or remove jpgfactory support from"
519 echo "libjpeg is available at :"
520 echo " ftp://ftp.uu.net in the directory graphics/jpeg"
523 AC_DEFINE([FG_JPEG_SERVER], 1,
524 [Define to build with jpeg screen shot server])
526 AM_CONDITIONAL(ENABLE_JPEG_SERVER, test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes")
530 dnl Check for system installed zlib
531 AC_CHECK_HEADER(zlib.h)
532 if test "x$ac_cv_header_zlib_h" != "xyes"; then
534 echo "zlib library not found."
536 echo "If your OS does not provide an installable package for zlib"
537 echo "you will have to compile and install it first yourself. A copy"
538 echo "of zlib-1.1.4.tar.gz is included with SimGear. You will"
539 echo "have to untar this source code, and follow it's included instructions"
540 echo "to compile and install on your system."
542 echo "configure aborted."
546 dnl Checks for header files.
549 fcntl.h getopt.h malloc.h memory.h stdlib.h sys/param.h sys/stat.h \
550 sys/time.h sys/timeb.h unistd.h windows.h winbase.h values.h )
552 dnl Checks for typedefs, structures, and compiler characteristics.
558 dnl Checks for library functions.
562 ftime gettimeofday timegm memcpy bcopy mktime strstr rand \
563 random drand48 setitimer getitimer signal GetLocalTime rint getrusage )
565 AM_CONFIG_HEADER(src/Include/config.h)
577 scripts/debug/Makefile \
578 scripts/python/Makefile \
580 src/Include/Makefile \
581 src/Include/version.h \
582 src/Aircraft/Makefile \
583 src/Airports/Makefile \
585 src/Autopilot/Makefile \
586 src/Cockpit/Makefile \
587 src/Cockpit/built_in/Makefile \
588 src/Controls/Makefile \
589 src/Environment/Makefile \
590 src/FDM/Balloon/Makefile \
591 src/FDM/ExternalNet/Makefile \
592 src/FDM/ExternalPipe/Makefile \
593 src/FDM/JSBSim/Makefile \
594 src/FDM/JSBSim/filtersjb/Makefile \
595 src/FDM/LaRCsim/Makefile \
596 src/FDM/UIUCModel/Makefile \
597 src/FDM/YASim/Makefile \
601 src/Instrumentation/Makefile \
604 src/Main/runfgfs.bat \
606 src/MultiPlayer/Makefile \
607 src/Navaids/Makefile \
608 src/Network/Makefile \
609 src/NetworkOLK/Makefile \
610 src/Objects/Makefile \
611 src/Scenery/Makefile \
612 src/Scripting/Makefile \
614 src/Systems/Makefile \
616 src/WeatherCM/Makefile \
619 utils/TerraSync/Makefile \
623 AC_OUTPUT_COMMANDS([chmod 755 src/Main/runfgfs])
626 echo "Configure Summary"
627 echo "================="
629 echo "Prefix: $prefix"
631 if test "x$have_plib_psl" = "xyes"; then
632 echo "Plib PSL scripting: yes"
634 echo "Plib PSL scripting: $fg_psl_string_compile"
635 echo " You will not be able to run scripts written in PSL"
636 echo " and some advanced GUI and input features may not"
637 echo " work. Download and install the latest CVS version"
638 echo " of plib if you would like to enable PSL support."
641 if test "x$with_logging" != "x"; then
642 echo "Debug messages: $with_logging"
644 echo "Debug messages: yes"
647 echo -n "Automake version: "
648 automake --version | head -1
650 if test "x$with_weathercm" != "x"; then
651 echo "WeatherCM instead of FGEnvironment: $with_weathercm"
653 echo "Using FGEnvironment"
656 if test "x$with_multiplayer" != "xno"; then
657 echo "Using default multiplayer support"
658 elif test "x$with_network_olk" != "xno"; then
659 echo "Using Oliver's multi-pilot network support"
662 if test "x$with_old_menubar" != "x"; then
663 echo "Using old menubar"
665 echo "Defaulting to new XML-configurable menubar"
668 if test "x$with_threads" = "xyes"; then