]> git.mxchange.org Git - flightgear.git/blob - configure.ac
Change GUI method names.
[flightgear.git] / configure.ac
1 dnl Process this file with autoget.sh to produce a working configure
2 dnl script.
3 dnl
4 dnl $Id$
5
6 AC_INIT
7 AC_CONFIG_SRCDIR([src/Aircraft/aircraft.cxx])
8
9 dnl Require at least automake 2.52
10 AC_PREREQ(2.52)
11
12 dnl Initialize the automake stuff
13 AM_INIT_AUTOMAKE(FlightGear, 0.9.1)
14
15 dnl Checks for programs.
16 AC_PROG_MAKE_SET
17 AC_PROG_CC
18 AC_PROG_CPP
19 AC_PROG_CXX
20 AC_PROG_RANLIB
21 AC_PROG_INSTALL
22 AC_PROG_LN_S
23
24 # specify the simgear location
25 AC_ARG_WITH(simgear, [  --with-simgear=PREFIX   Specify the prefix path to simgear])
26
27 if test "x$with_simgear" != "x" ; then
28     echo "SimGear prefix path is $with_simgear"
29     EXTRA_DIRS="${EXTRA_DIRS} $with_simgear"
30 fi
31
32 dnl set the $host variable based on local machine/os
33 AC_CANONICAL_HOST
34
35 case "${host}" in
36 *-*-irix*)
37     if test "$CXX" = "CC"; then
38         AR="CC -ar"
39         ARFLAGS="-o"
40         CXXFLAGS="$CXXFLAGS -I$with_simgear/include/simgear/compatibility"
41     else
42         AR="ar"
43         ARFLAGS="cru"
44     fi
45     ;;
46 *)
47     AR="ar"
48     ARFLAGS="cru"
49     ;;
50 esac
51 AC_SUBST(AR)
52 AC_SUBST(ARFLAGS)
53
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])
58 fi
59
60 # Specify if we want to build with Oliver's networking support
61 # default to with_network=yes
62 AC_ARG_WITH(network_olk, [  --with-network-olk      Include Oliver's multi-pilot networking support])
63 if test "x$with_network_olk" = "xno" ; then
64     echo "Building without Oliver's multi-pilot network support"
65 else
66     echo "Building with Oliver's multi-pilot network support"
67     AC_DEFINE([FG_NETWORK_OLK], 1, [Define to build with Oliver's networking])
68 fi
69 AM_CONDITIONAL(ENABLE_NETWORK_OLK, test "x$with_network_olk" != "xno")
70
71
72 # Specify if we want to use WeatherCM instead of FGEnvironment.
73 # default to with_weathercm=no
74 AC_ARG_WITH(weathercm, [  --with-weathercm        Use WeatherCM instead of FGEnvironment])
75 if test "x$with_weathercm" = "xyes" ; then
76     echo "Building with WeatherCM"
77     AC_DEFINE([FG_WEATHERCM], 1,
78               [Define to build with Christian Mayer's weather code])
79 else
80     echo "Building with FGEnvironment"
81 fi
82 AM_CONDITIONAL(ENABLE_WEATHERCM, test "x$with_weathercm" = "xyes")
83
84 dnl Specify if we want the old menubar; default to the new one
85 AC_ARG_WITH(old-menubar, [  --with-old-menubar        Use the old menu bar])
86 if test "x$with_old_menubar" = "xyes" ; then
87     echo "Building with old menubar"
88     AC_DEFINE([FG_OLD_MENUBAR], 1,
89               [Define to build with old menubar])
90 else
91     echo "Building with new menubar"
92 fi
93 AM_CONDITIONAL(ENABLE_WEATHERCM, test "x$with_weathercm" = "xyes")
94
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"
101     AC_CHECK_HEADER(pthread.h)
102 fi
103 AM_CONDITIONAL(WITH_THREADS, test "x$with_threads" = "xyes")
104
105 # specify the plib location
106 AC_ARG_WITH(plib, [  --with-plib=PREFIX      Specify the prefix path to plib])
107
108 if test "x$with_plib" != "x" ; then
109     echo "plib prefix is $with_plib"
110     EXTRA_DIRS="${EXTRA_DIRS} $with_plib"
111 fi
112
113 # specify the metakit location
114 AC_ARG_WITH(metakit, [  --with-metakit=PREFIX   Specify the prefix path to metakit])
115
116 if test "x$with_metakit" != "x" ; then
117     echo "metakit prefix is $with_metakit"
118     EXTRA_DIRS="${EXTRA_DIRS} $with_metakit"
119 fi
120
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])
123
124 # Check for MS Windows environment
125 AC_CHECK_HEADER(windows.h)
126
127 dnl Determine an extra directories to add to include/lib search paths
128 case "${host}" in
129 *-apple-darwin* | *-*-mingw32*)
130     echo no EXTRA_DIRS for $host
131     ;;
132
133 *)
134     if test -d /usr/X11R6 ; then
135         EXTRA_DIR1="/usr/X11R6"
136     fi
137     if test -d /opt/X11R6 ; then
138         EXTRA_DIR2="/opt/X11R6"
139     fi
140     EXTRA_DIRS="$EXTRA_DIR1 $EXTRA_DIR2"
141     ;;
142
143 esac
144 wi_EXTRA_DIRS(no, ${EXTRA_DIRS})
145
146
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.
153
154 dnl Check for external variables daylight and timezone.
155 AC_EXT_DAYLIGHT
156 if test "$have_daylight" = yes; then
157     AC_DEFINE([HAVE_DAYLIGHT], 1, [Define if system has daylight variable])
158 fi
159
160 AC_EXT_TIMEZONE
161 if test "$have_timezone" = yes; then
162     AC_DEFINE([HAVE_TIMEZONE], 1, [Define if system has timezone variable])
163 fi
164
165 dnl add correct audio libs and configure for audio support
166 audio_LIBS="-lplibsl -lplibsm"
167 case "${host}" in
168 *-*-cygwin* | *-*-mingw32*)
169     audio_LIBS="$audio_LIBS -lwinmm"
170     ;;
171
172 *-*-irix* )
173     audio_LIBS="$audio_LIBS -laudio"
174     ;;
175
176 esac
177 AC_SUBST(audio_LIBS)
178
179 dnl ENABLE_AUDIO_SUPPORT could be depricated at any time in favor of
180 dnl just assuming we have audio support on all platform.  We can
181 dnl depend on plib to hide the details.
182 AC_DEFINE([ENABLE_AUDIO_SUPPORT], 1, [Define for audio support])
183
184 dnl X11 might be installed on Mac OS X or cygwin/mingwin, we don't want
185 dnl to use it if it is.
186 case "${host}" in
187 *-apple-darwin* | *-*-cygwin* | *-*-mingw32*)
188     echo no fancy X11 check
189     ;;
190
191 *)
192     AC_PATH_XTRA
193     ;;
194
195 esac
196
197 dnl Checks for libraries.
198
199 null_LIBS="$LIBS"
200
201 AC_CHECK_LIB(m, cos)
202
203 base_LIBS="$LIBS"
204
205 dnl Thread related checks
206 AC_CHECK_LIB(pthread, pthread_exit)
207 AC_CHECK_LIB(socket, socket)
208
209 dnl check for glut location
210 AC_CHECK_HEADER(GL/glut.h)
211 if test "x$ac_cv_header_GL_glut_h" = "xyes"; then
212     AC_DEFINE([GLUT_H], "GL/glut.h", [Define as glut.h include location])
213 else
214     AC_CHECK_HEADER(GLUT/glut.h)
215     if test "x$ac_cv_header_GLUT_glut_h" = "xyes"; then
216         AC_DEFINE([GLUT_H], "GLUT/glut.h", [Define as glut.h include location])
217     else
218         echo "Neither GL/glut.h nor GLUT/glut.h found.  Cannot continue"
219         exit
220     fi
221 fi
222
223 dnl check for OpenGL related libraries
224 case "${host}" in
225 *-*-cygwin* | *-*-mingw32*)
226     dnl CygWin under Windoze.
227
228     echo Win32 specific hacks...
229     AC_DEFINE([WIN32], 1, [Define for Win32 platforms])
230     AC_DEFINE([NOMINMAX], 1, [Define for Win32 platforms])
231
232     LIBS="$LIBS -lglut32 -lglu32 -lopengl32"
233     LIBS="$LIBS -luser32 -lgdi32"
234
235     dnl add -lwsock32 for mingwin
236     case "${host}" in
237     *-*-mingw32*)
238         echo "********** BUILDING FOR MINGW32 *************"
239         base_LIBS="$base_LIBS -lws2_32"
240         ;;
241     esac
242
243     echo "Will link apps with $LIBS"
244     ;;
245
246
247 *-apple-darwin*)
248     dnl Mac OS X
249
250     LIBS="$LIBS -framework GLUT -framework OpenGL -framework Carbon -lobjc"
251     ;;
252
253 *)
254     dnl X-Windows based machines
255
256     dnl Skip X11 library tests if requested.
257     if test "x$no_x" != "xyes"; then
258         AC_CHECK_LIB(X11, XCreateWindow)
259         AC_CHECK_LIB(Xext, XShmCreateImage)
260         AC_CHECK_LIB(Xi, XGetExtensionVersion)
261         AC_CHECK_LIB(ICE, IceOpenConnection)
262         AC_CHECK_LIB(SM, SmcOpenConnection)
263         AC_CHECK_LIB(Xt, XtMalloc)
264         AC_CHECK_LIB(Xmu, XmuLookupStandardColormap)
265     fi
266
267     AC_CHECK_LIB(GLcore, glNewList)
268     if test "x$ac_cv_lib_GLcore_glNewList" = "xno" ; then
269         dnl if no GLcore, check for GL
270         AC_CHECK_LIB(GL, glNewList)
271         if test "x$ac_cv_lib_GL_glNewList" = "xno" ; then
272             dnl if no GL, check for MesaGL
273             AC_CHECK_LIB(MesaGL, glNewList)
274         fi
275     else
276         dnl if GLcore found, then also check for GL
277         AC_CHECK_LIB(GL, glXCreateContext)
278     fi
279
280     dnl if using mesa, check for xmesa.h
281     if test "x$ac_cv_lib_MesaGL_glNewList" = "xyes" ; then
282         AC_CHECK_HEADER(GL/fxmesa.h)
283         if test "x$ac_cv_header_GL_fxmesa_h" = "xyes"; then
284             AC_DEFINE([XMESA], 1, [Define for fxmesa])
285             AC_DEFINE([FX], 1, [Define for fxmesa])
286         fi
287     fi
288
289     AC_CHECK_LIB(GLU, gluLookAt)
290     if test "x$ac_cv_lib_GLU_gluLookAt" = "xno" ; then
291         dnl if no GLU, check for MesaGLU
292         AC_CHECK_LIB(MesaGLU, gluLookAt)
293     fi
294
295     AC_CHECK_LIB(glut, glutGetModifiers)
296     if test "x$ac_cv_lib_glut_glutGetModifiers" = "xno" ; then
297         dnl if no "real" glut, check for freeglut
298         AC_CHECK_LIB(freeglut, glutGetModifiers)
299     fi
300     ;;
301
302 esac
303
304 opengl_LIBS="$LIBS"
305 LIBS="$base_LIBS"
306
307 AC_SUBST(base_LIBS)
308 AC_SUBST(opengl_LIBS)
309
310 # The following are C++ items that need to be tested for with the c++
311 # compiler
312
313 AC_LANG_PUSH(C++)
314
315 # Check for "plib" without which we cannot go on
316 AC_CHECK_HEADER(plib/ul.h)
317 if test "x$ac_cv_header_plib_ul_h" != "xyes"; then
318     echo
319     echo "You *must* have the plib library installed on your system to build"
320     echo "the FGFS simulator!"
321     echo
322     echo "Please see README.plib for more details."
323     echo
324     echo "configure aborted."
325     exit
326 fi
327
328 AC_MSG_CHECKING([for plib 1.6.0 or newer])
329 AC_TRY_RUN([
330 #include <plib/ul.h>
331
332 #define MIN_PLIB_VERSION 160
333
334 int main() {
335     int major, minor, micro;
336
337     if ( PLIB_VERSION < MIN_PLIB_VERSION ) {
338          return -1;
339     }
340
341     return 0;
342 }
343
344 ],
345   AC_MSG_RESULT(yes),
346   [AC_MSG_RESULT(wrong version);
347    AC_MSG_ERROR([Install plib 1.6.0 or later first...])],
348   AC_MSG_RESULT(yes)
349 )
350
351 dnl If we get here then plib is available, so force use of plib
352 dnl joystick lib
353 AC_DEFINE([ENABLE_PLIB_JOYSTICK], 1, [Define to enable plib joystick support])
354
355
356 dnl Checking for PSL in plib
357 dnl version of plib, so check for it.
358 AC_MSG_CHECKING([for plib PSL scripting support])
359 AC_COMPILE_IFELSE([
360 #include <plib/psl.h>
361
362 int main() {
363   // not for running...
364   pslProgram program((pslExtension *)0);
365   program.compile("int main () {}", "");
366   return 0;
367 }
368 ],
369   [AC_MSG_RESULT(yes);
370    have_plib_psl=yes],
371   AC_MSG_RESULT(no)
372 )
373 AM_CONDITIONAL(HAVE_PLIB_PSL, test "x$have_plib_psl" = "xyes")
374
375 dnl Check for MetaKit
376 AC_CHECK_HEADER(mk4.h)
377 if test "x$ac_cv_header_mk4_h" != "xyes"; then
378     echo
379     echo "MetaKit library not found."
380     echo
381     echo "If your OS does not provide an installable package for MetaKit"
382     echo "you will have to compile and install it first yourself.  A copy"
383     echo "of metakit-$(VERSION).tar.gz is included with SimGear.  You will"
384     echo "have to untar this source code, and follow it's included instructions"
385     echo "to compile and install on your system."
386     echo
387     echo "configure aborted."
388     exit
389 fi
390
391 AC_MSG_CHECKING([for metakit 2.4.3 or newer])
392 saved_LIBS="$LIBS"
393 LIBS="$saved_LIBS -lmk4"
394 AC_TRY_RUN([
395 #include <mk4.h>
396
397 #define MIN_MK4_VERSION 243
398
399 int main() {
400     int major, minor, micro;
401
402     if ( d4_MetaKitLibraryVersion < MIN_MK4_VERSION ) {
403          return -1;
404     }
405
406     return 0;
407 }
408
409 ],
410   AC_MSG_RESULT(yes),
411   [AC_MSG_RESULT(wrong version);
412    AC_MSG_ERROR([
413
414 Install metakit 2.4.3 or later first.
415
416 Or, the compiler may not be finding your libmk4.so library.
417 Please check the config.log file for specific details of the
418 failure if you believe you have the correct metakit version.
419 Also, look up this issue in the FlightGear FAQ.])],
420   AC_MSG_RESULT(yes)
421 )
422
423 dnl Check for the presence of SimGear
424 AC_CHECK_HEADER(simgear/version.h)
425 if test "x$ac_cv_header_simgear_version_h" != "xyes"; then
426     echo
427     echo "You *must* have the SimGear support library installed on your system"
428     echo "to build the FGFS simulator!"
429     echo
430     echo "Please see README.SimGear for more details."
431     echo
432     echo "configure aborted."
433     exit
434 fi
435
436 AC_MSG_CHECKING([for simgear 0.3.0 or newer])
437 AC_TRY_RUN([
438 #include <stdio.h>
439
440 #include <simgear/version.h>
441
442 #define STRINGIFY(X) XSTRINGIFY(X)
443 #define XSTRINGIFY(X) #X
444
445 #define MIN_MAJOR 0
446 #define MIN_MINOR 3
447 #define MIN_MICRO 0
448
449 int main() {
450     int major, minor, micro;
451
452     printf("%d.%d.%d or greater... ", MIN_MAJOR, MIN_MINOR, MIN_MICRO);
453
454     sscanf( STRINGIFY(SIMGEAR_VERSION), "%d.%d.%d", &major, &minor, &micro );
455
456     if ( major < MIN_MAJOR ) {
457          return -1;
458     } else if ( major == MIN_MAJOR && minor < MIN_MINOR ) {
459          return -1;
460     } else if ( major == MIN_MAJOR && minor == MIN_MINOR && micro < MIN_MICRO ){
461          return -1;
462     }
463
464     return 0;
465 }
466
467 ],
468   AC_MSG_RESULT(yes),
469   [AC_MSG_RESULT(wrong version);
470    AC_MSG_ERROR([Install latest simgear first...])],
471   AC_MSG_RESULT(yes)
472 )
473
474 LIBS="$saved_LIBS"
475
476 dnl Check if SimGear was built with Norman JPEG factory support
477 AC_CHECK_HEADER(simgear/screen/jpgfactory.hxx)
478 if test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes"; then
479     AC_CHECK_LIB(jpeg, jpeg_start_compress)
480     if test "x$ac_cv_lib_jpeg_jpeg_start_compress" != "xyes" ; then
481         echo
482         echo "The JPEG factory code was built and installed with SimGear."
483         echo "However it appears the libjpeg is no longer installed."
484         echo "You need to install libjpeg or remove jpgfactory support from"
485         echo "SimGear"
486         echo
487         echo "libjpeg is available at :"
488         echo "  ftp://ftp.uu.net in the directory graphics/jpeg"
489         exit 1
490     fi
491     AC_DEFINE([FG_JPEG_SERVER], 1,
492               [Define to build with jpeg screen shot server])
493 fi
494 AM_CONDITIONAL(ENABLE_JPEG_SERVER, test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes")
495
496 AC_LANG_POP
497
498 dnl Check for system installed zlib
499 AC_CHECK_HEADER(zlib.h)
500 if test "x$ac_cv_header_zlib_h" != "xyes"; then
501     echo
502     echo "zlib library not found."
503     echo
504     echo "If your OS does not provide an installable package for zlib"
505     echo "you will have to compile and install it first yourself.  A copy"
506     echo "of zlib-1.1.4.tar.gz is included with SimGear.  You will"
507     echo "have to untar this source code, and follow it's included instructions"
508     echo "to compile and install on your system."
509     echo
510     echo "configure aborted."
511     echo
512 fi
513
514 dnl Checks for header files.
515 AC_HEADER_STDC
516 AC_CHECK_HEADERS( \
517         fcntl.h getopt.h malloc.h memory.h stdlib.h sys/param.h sys/stat.h \
518         sys/time.h sys/timeb.h unistd.h windows.h winbase.h values.h )
519
520 dnl Checks for typedefs, structures, and compiler characteristics.
521 AC_C_CONST
522 AC_TYPE_SIZE_T
523 AC_HEADER_TIME
524 AC_STRUCT_TM
525
526 dnl Checks for library functions.
527 AC_TYPE_SIGNAL
528 AC_FUNC_VPRINTF
529 AC_CHECK_FUNCS( \
530         ftime gettimeofday timegm memcpy bcopy mktime strstr rand \
531         random drand48 setitimer getitimer signal GetLocalTime rint getrusage )
532
533 AM_CONFIG_HEADER(src/Include/config.h)
534
535 AC_CONFIG_FILES([ \
536         Makefile \
537         man/Makefile \
538         man/est-epsilon.1 \
539         man/fgfs.1 \
540         man/fgjs.1 \
541         man/gl-info.1 \
542         man/js_demo.1 \
543         man/pstest.1 \
544         scripts/Makefile \
545         scripts/debug/Makefile \
546         scripts/python/Makefile \
547         src/Makefile \
548         src/Include/Makefile \
549         src/Include/version.h \
550         src/Aircraft/Makefile \
551         src/Airports/Makefile \
552         src/ATC/Makefile \
553         src/Autopilot/Makefile \
554         src/Cockpit/Makefile \
555         src/Cockpit/built_in/Makefile \
556         src/Controls/Makefile \
557         src/Environment/Makefile \
558         src/FDM/Balloon/Makefile \
559         src/FDM/ExternalNet/Makefile \
560         src/FDM/JSBSim/Makefile \
561         src/FDM/JSBSim/filtersjb/Makefile \
562         src/FDM/LaRCsim/Makefile \
563         src/FDM/UIUCModel/Makefile \
564         src/FDM/YASim/Makefile \
565         src/FDM/Makefile \
566         src/GUI/Makefile \
567         src/Input/Makefile \
568         src/Instrumentation/Makefile \
569         src/Main/Makefile \
570         src/Main/runfgfs \
571         src/Main/runfgfs.bat \
572         src/Model/Makefile \
573         src/Navaids/Makefile \
574         src/Network/Makefile \
575         src/NetworkOLK/Makefile \
576         src/Objects/Makefile \
577         src/Scenery/Makefile \
578         src/Scripting/Makefile \
579         src/Sound/Makefile \
580         src/Systems/Makefile \
581         src/Time/Makefile \
582         src/WeatherCM/Makefile \
583         tests/Makefile \
584         utils/Makefile \
585         utils/TerraSync/Makefile \
586 ])
587 AC_OUTPUT
588
589 AC_OUTPUT_COMMANDS([chmod 755 src/Main/runfgfs])
590
591 echo ""
592 echo "Configure Summary"
593 echo "================="
594
595 echo "Prefix: $prefix"
596
597 if test "x$have_plib_psl" = "xyes"; then
598     echo "Plib PSL scripting: yes"
599 else
600     echo "Plib PSL scripting: $fg_psl_string_compile"
601     echo "  You will not be able to run scripts written in PSL"
602     echo "  and some advanced GUI and input features may not"
603     echo "  work.  Download and install the latest CVS version"
604     echo "  of plib if you would like to enable PSL support."
605 fi
606
607 if test "x$with_logging" != "x"; then
608     echo "Debug messages: $with_logging"
609 else
610     echo "Debug messages: yes"
611 fi
612
613 echo -n "Automake version: "
614 automake --version | head -1
615
616 if test "x$with_weathercm" != "x"; then
617     echo "WeatherCM instead of FGEnvironment: $with_weathercm"
618 else
619     echo "Using FGEnvironment"
620 fi
621
622 if test "x$with_old_menubar" != "x"; then
623     echo "Using old menubar"
624 else
625     echo "Defaulting to new XML-configurable menubar"
626 fi
627
628 if test "x$with_threads" = "xyes"; then
629     echo "threads: yes"
630 else
631     echo "threads: no"
632 fi