]> git.mxchange.org Git - flightgear.git/blob - configure.ac
b9bd6e9dfaaaa7e27713ee50b8401c47da91d054
[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 dnl set the $host variable based on local machine/os
14 AC_CANONICAL_TARGET
15 AM_INIT_AUTOMAKE(FlightGear, 0.9.5-pre3)
16
17 dnl Checks for programs.
18 AC_PROG_MAKE_SET
19 AC_PROG_CC
20 AC_PROG_CPP
21 AC_PROG_CXX
22 AC_PROG_RANLIB
23 AC_PROG_INSTALL
24 AC_PROG_LN_S
25
26 # specify the simgear location
27 AC_ARG_WITH(simgear, [  --with-simgear=PREFIX   Specify the prefix path to simgear])
28
29 if test "x$with_simgear" != "x" ; then
30     echo "SimGear prefix path is $with_simgear"
31     EXTRA_DIRS="${EXTRA_DIRS} $with_simgear"
32 fi
33
34 case "${host}" in
35 *-*-irix*)
36     if test "$CXX" = "CC"; then
37         AR="CC -ar"
38         ARFLAGS="-o"
39         CXXFLAGS="$CXXFLAGS -I$with_simgear/include/simgear/compatibility"
40     else
41         AR="ar"
42         ARFLAGS="cru"
43     fi
44     ;;
45 *)
46     AR="ar"
47     ARFLAGS="cru"
48     ;;
49 esac
50 AC_SUBST(AR)
51 AC_SUBST(ARFLAGS)
52
53 dnl set logging; default value of with_logging=yes
54 AC_ARG_WITH(logging, [  --with-logging          Include logging output (default)])
55 if test "x$with_logging" = "xno" ; then
56     AC_DEFINE([FG_NDEBUG], 1, [Define for no logging output])
57 fi
58
59 # Specify if we want to build with Multiplayer support
60 # default to with_network=yes
61 AC_ARG_WITH(multiplayer, [  --with-multiplayer      Include multiplayer support [default=yes]])
62
63 if test "x$with_multiplayer" = "xno"; then
64   echo "Building without any kind of multiplayer support"
65 else
66   echo "Building with multiplayer support"
67   AC_DEFINE([FG_MPLAYER_AS], 1, [Define to build with multiplayer support])
68 fi
69 AM_CONDITIONAL(ENABLE_MPLAYER_AS, test "x$with_multiplayer" != "xno")
70
71
72 dnl Thread related checks
73 # defaults to yes
74 with_threads=yes
75 AC_ARG_WITH(threads, [  --with-threads          Include tile loading threads [default=yes]])
76 if test "x$with_threads" != "xyes"; then
77     AC_DEFINE([ENABLE_THREADS], 0, [Define to enable threaded tile paging])
78 else
79     AC_DEFINE([ENABLE_THREADS], 1, [Define to enable threaded tile paging])
80     CXXFLAGS="$CXXFLAGS -D_REENTRANT"
81     CFLAGS="$CFLAGS -D_REENTRANT"
82 fi
83 AC_CHECK_HEADER(pthread.h)
84 AM_CONDITIONAL(WITH_THREADS, test "x$with_threads" = "xyes")
85
86 # specify the plib location
87 AC_ARG_WITH(plib, [  --with-plib=PREFIX      Specify the prefix path to plib])
88
89 if test "x$with_plib" != "x" ; then
90     echo "plib prefix is $with_plib"
91     EXTRA_DIRS="${EXTRA_DIRS} $with_plib"
92 fi
93
94 dnl Used by JSBSim to conditionally compile in fgfs interface code
95 AC_DEFINE([FGFS], 1, [Define so that JSBSim compiles in 'library' mode])
96
97 dnl Used to control whether clouds3d should be compiled in or not
98 AC_DEFINE([FG_USE_CLOUDS_3D], 1, [Define to use 3D cloud support])
99 AM_CONDITIONAL(FG_USE_CLOUDS_3D, test "x" = "x")
100
101 # Check for MS Windows environment
102 AC_CHECK_HEADER(windows.h)
103
104 dnl Determine an extra directories to add to include/lib search paths
105 case "${host}" in
106 *-apple-darwin* | *-*-mingw32*)
107     echo no EXTRA_DIRS for $host
108     ;;
109
110 *-*-cygwin*)
111     if test -d /usr/local ; then
112         EXTRA_DIRS="${EXTRA_DIRS} /usr/local"
113     fi
114     ;;
115
116 *)
117     if test -d /usr/X11R6 ; then
118         EXTRA_DIR1="/usr/X11R6"
119     fi
120     if test -d /opt/X11R6 ; then
121         EXTRA_DIR2="/opt/X11R6"
122     fi
123     EXTRA_DIRS="${EXTRA_DIRS} $EXTRA_DIR1 $EXTRA_DIR2 /usr/local/"
124     ;;
125
126 esac
127 wi_EXTRA_DIRS(no, ${EXTRA_DIRS})
128
129
130 dnl Using AM_CONDITIONAL is a step out of the protected little 
131 dnl automake fold so it is potentially dangerous.  But, we are
132 dnl beginning to run into cases where the standard checks are not
133 dnl enough.  AM_CONDITIONALS are then referenced to conditionally
134 dnl build a Makefile.in from a Makefile.am which lets us define custom
135 dnl includes, compile alternative source files, etc.
136
137 dnl Check for external variables daylight and timezone.
138 AC_EXT_DAYLIGHT
139 if test "$have_daylight" = yes; then
140     AC_DEFINE([HAVE_DAYLIGHT], 1, [Define if system has daylight variable])
141 fi
142
143 AC_EXT_TIMEZONE
144 if test "$have_timezone" = yes; then
145     AC_DEFINE([HAVE_TIMEZONE], 1, [Define if system has timezone variable])
146 fi
147
148 dnl add correct audio libs and configure for audio support
149 audio_LIBS="-lplibsl -lplibsm"
150 case "${host}" in
151 *-*-cygwin* | *-*-mingw32*)
152     audio_LIBS="$audio_LIBS -lwinmm"
153     ;;
154 *-apple-darwin*)
155     audio_LIBS="$audio_LIBS -framework IOKit -framework CoreFoundation"
156     ;;
157 *-*-irix* )
158     audio_LIBS="$audio_LIBS -laudio"
159     ;;
160
161 esac
162 AC_SUBST(audio_LIBS)
163
164 dnl ENABLE_AUDIO_SUPPORT could be depricated at any time in favor of
165 dnl just assuming we have audio support on all platform.  We can
166 dnl depend on plib to hide the details.
167 AC_DEFINE([ENABLE_AUDIO_SUPPORT], 1, [Define for audio support])
168
169 dnl X11 might be installed on Mac OS X or cygwin/mingwin, we don't want
170 dnl to use it if it is.
171 case "${host}" in
172 *-apple-darwin* | *-*-cygwin* | *-*-mingw32*)
173     echo no fancy X11 check
174     ;;
175
176 *)
177     AC_PATH_XTRA
178     ;;
179
180 esac
181
182 dnl Checks for libraries.
183
184 dnl Thread related checks
185 AC_CHECK_LIB(pthread, pthread_exit)
186 if test "x$ac_cv_lib_pthread_pthread_exit" != "xyes" \
187    -a "x$ac_cv_header_pthread_h" = "xyes"; then
188     dnl FreeBSD: System has pthread.h, but -lpthread library check
189     dnl fails.  See if we need -pthread instead of -lpthread and look
190     dnl for the functions in libc_r.
191     save_CXXFLAGS="$CXXFLAGS"
192     save_CFLAGS="$CFLAGS"
193     CXXFLAGS="-pthread $CXXFLAGS"
194     CFLAGS="-pthread $CFLAGS"
195     save_LIBS=$LIBS
196     AC_CHECK_LIB(c_r, pthread_exit)
197     if test "x$ac_cv_lib_c_r_pthread_exit" != "xyes"; then
198         CXXFLAGS=$save_CXXFLAGS
199         CFLAGS=$save_CFLAGS
200     fi
201     LIBS=$save_LIBS
202 fi
203
204 thread_LIBS="$LIBS"
205 LIBS=""
206
207 dnl search for network related libraries
208 AC_SEARCH_LIBS(inet_addr, xnet)
209 AC_SEARCH_LIBS(socket, socket)
210 AC_SEARCH_LIBS(main, nsl)
211
212 network_LIBS="$LIBS"
213 LIBS=""
214
215 dnl check for some default libraries
216 AC_SEARCH_LIBS(cos, m)
217 AC_SEARCH_LIBS(dlclose, dl)
218
219 base_LIBS="$LIBS"
220
221 dnl Check for SDL if enabled.
222 AC_ARG_ENABLE(sdl, [  --enable-sdl    Configure to use SDL instead of GLUT], enable_sdl="yes", enable_sdl="")
223 AM_CONDITIONAL(USE_SDL, test "x$enable_sdl" = "xyes")
224 if test "x$enable_sdl" = "xyes"; then
225     AC_DEFINE([PU_USE_SDL], 1, [Define to use SDL])
226 else
227     AC_DEFINE([PU_USE_GLUT], 1, [Define to use glut])
228 fi
229
230 dnl check for glut location
231 AC_CHECK_HEADER(GL/glut.h)
232 if test "x$ac_cv_header_GL_glut_h" = "xyes"; then
233     AC_DEFINE([FG_GLUT_H], <GL/glut.h>, [Define as glut.h include location])
234 else
235     AC_CHECK_HEADER(GLUT/glut.h)
236     if test "x$ac_cv_header_GLUT_glut_h" = "xyes"; then
237         AC_DEFINE([FG_GLUT_H], <GLUT/glut.h>, [Define as glut.h include location])
238     else
239         if test "x$enable_sdl" != "xyes"; then
240             echo "Neither GL/glut.h nor GLUT/glut.h found.  Cannot continue"
241             exit
242         fi
243     fi
244 fi
245
246 dnl check for OpenGL related libraries
247 case "${host}" in
248 *-*-cygwin* | *-*-mingw32*)
249     dnl CygWin under Windoze.
250
251     echo Win32 specific hacks...
252     AC_DEFINE([WIN32], 1, [Define for Win32 platforms])
253     AC_DEFINE([NOMINMAX], 1, [Define for Win32 platforms])
254
255     if test "x$enable_sdl" = "xyes"; then
256         AC_SEARCH_LIBS(SDL_Init, SDL)
257     else
258         LIBS="$LIBS -lglut32"
259     fi
260
261     LIBS="$LIBS -lglu32 -lopengl32 -luser32 -lgdi32"
262
263     dnl add -lwsock32 for mingwin
264     case "${host}" in
265     *-*-mingw32*)
266         echo "********** BUILDING FOR MINGW32 *************"
267         base_LIBS="$base_LIBS -lws2_32"
268         ;;
269     esac
270
271     echo "Will link apps with $LIBS"
272     ;;
273
274
275 *-apple-darwin*)
276     dnl Mac OS X
277
278     LIBS="$LIBS -framework GLUT -framework OpenGL -framework AGL -framework Carbon -lobjc"
279     ;;
280
281 *)
282     dnl X-Windows based machines
283
284     dnl Skip X11 library tests if requested.
285     if test "x$no_x" != "xyes"; then
286         AC_SEARCH_LIBS(XCreateWindow, X11)
287         AC_SEARCH_LIBS(XShmCreateImage, Xext)
288         AC_SEARCH_LIBS(XGetExtensionVersion, Xi)
289         AC_SEARCH_LIBS(IceOpenConnection, ICE)
290         AC_SEARCH_LIBS(SmcOpenConnection, SM)
291         AC_SEARCH_LIBS(XtMalloc, Xt)
292         AC_SEARCH_LIBS(XmuLookupStandardColormap, Xmu)
293     fi
294
295     AC_SEARCH_LIBS(glNewList, [ GL GLcore MesaGL ])
296     if test "x$ac_cv_search_glNewList" = "x-lGLcore"; then
297         dnl if GLcore found, then also check for GL
298         AC_SEARCH_LIBS(glXCreateContext, GL)
299     fi
300
301     dnl if using mesa, check for xmesa.h
302     if test "x$ac_cv_search_glNewList" = "x-lMesaGL"; then
303         AC_CHECK_HEADER(GL/fxmesa.h)
304         if test "x$ac_cv_header_GL_fxmesa_h" = "xyes"; then
305             AC_DEFINE([XMESA], 1, [Define for fxmesa])
306             AC_DEFINE([FX], 1, [Define for fxmesa])
307         fi
308     fi
309
310     AC_SEARCH_LIBS(gluLookAt, [ GLU MesaGLU ])
311     AC_SEARCH_LIBS(glutGetModifiers, [ glut freeglut ])
312     if test "x$enable_sdl" = "xyes"; then
313         AC_SEARCH_LIBS(SDL_Init, SDL)
314     fi
315     ;;
316
317 esac
318
319 opengl_LIBS="$LIBS"
320 LIBS="$base_LIBS"
321
322 dnl check for OpenAL libraries
323 case "${host}" in
324 *-*-cygwin* | *-*-mingw32*)
325     dnl CygWin under Windoze.
326
327     AC_SEARCH_LIBS(alGenBuffers, openal32)
328     AC_SEARCH_LIBS(alutInit, [ openal32 ALut ] )
329     LIBS="$LIBS -lwinmm -ldsound -ldxguid -lole32"
330     ;;
331
332 *-apple-darwin*)
333     dnl Mac OS X
334
335     LIBS="$LIBS -framework IOKit -framework OpenAL"
336     ;;
337
338 *)
339     dnl default unix style machines
340
341     AC_SEARCH_LIBS(alGenBuffers, openal)
342     ;;
343
344 esac
345
346 openal_LIBS="$LIBS"
347 LIBS="$base_LIBS"
348
349 AC_SUBST(base_LIBS)
350 AC_SUBST(openal_LIBS)
351 AC_SUBST(opengl_LIBS)
352 AC_SUBST(thread_LIBS)
353 AC_SUBST(network_LIBS)
354
355 # The following are C++ items that need to be tested for with the c++
356 # compiler
357
358 AC_LANG_PUSH(C++)
359
360 # Check for "plib" without which we cannot go on
361 AC_CHECK_HEADER(plib/ul.h)
362 if test "x$ac_cv_header_plib_ul_h" != "xyes"; then
363     echo
364     echo "You *must* have the plib library installed on your system to build"
365     echo "the FGFS simulator!"
366     echo
367     echo "Please see README.plib for more details."
368     echo
369     echo "configure aborted."
370     exit
371 fi
372
373 AC_MSG_CHECKING([for plib 1.8.0 or newer])
374 AC_TRY_RUN([
375 #include <plib/ul.h>
376
377 #define MIN_PLIB_VERSION 170
378
379 int main() {
380     int major, minor, micro;
381
382     if ( PLIB_VERSION < MIN_PLIB_VERSION ) {
383          return -1;
384     }
385
386     return 0;
387 }
388
389 ],
390   AC_MSG_RESULT(yes),
391   [AC_MSG_RESULT(wrong version);
392    AC_MSG_ERROR([Install plib 1.8.0 or later first...])],
393   AC_MSG_RESULT(yes)
394 )
395
396 dnl If we get here then plib is available, so force use of plib
397 dnl joystick lib
398 AC_DEFINE([ENABLE_PLIB_JOYSTICK], 1, [Define to enable plib joystick support])
399
400
401 dnl Check for the presence of SimGear
402 AC_CHECK_HEADER(simgear/version.h)
403 if test "x$ac_cv_header_simgear_version_h" != "xyes"; then
404     echo
405     echo "You *must* have the SimGear support library installed on your system"
406     echo "to build the FGFS simulator!"
407     echo
408     echo "Please see README.SimGear for more details."
409     echo
410     echo "configure aborted."
411     exit
412 fi
413
414 AC_MSG_CHECKING([for simgear 0.3.6 or newer])
415 AC_TRY_RUN([
416 #include <stdio.h>
417
418 #include <simgear/version.h>
419
420 #define STRINGIFY(X) XSTRINGIFY(X)
421 #define XSTRINGIFY(X) #X
422
423 #define MIN_MAJOR 0
424 #define MIN_MINOR 3
425 #define MIN_MICRO 6
426
427 int main() {
428     int major, minor, micro;
429
430     /* printf("%d.%d.%d or greater, ", MIN_MAJOR, MIN_MINOR, MIN_MICRO); */
431     printf("[found %s] ... ", STRINGIFY(SIMGEAR_VERSION));
432
433     sscanf( STRINGIFY(SIMGEAR_VERSION), "%d.%d.%d", &major, &minor, &micro );
434
435     if ( (major < MIN_MAJOR) ||
436          (major == MIN_MAJOR && minor < MIN_MINOR) ||
437          (major == MIN_MAJOR && minor == MIN_MINOR && micro < MIN_MICRO) ) {
438          return -1;
439     }
440
441     return 0;
442 }
443
444 ],
445   AC_MSG_RESULT(yes),
446   [AC_MSG_RESULT(wrong version);
447    AC_MSG_ERROR([Install latest simgear first...])],
448   AC_MSG_RESULT(yes)
449 )
450
451 LIBS="$saved_LIBS"
452
453 dnl Check if SimGear was built with Norman's JPEG factory support
454 AC_CHECK_HEADER(simgear/screen/jpgfactory.hxx)
455 if test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes"; then
456     AC_CHECK_LIB(jpeg, jpeg_start_compress)
457     if test "x$ac_cv_lib_jpeg_jpeg_start_compress" != "xyes" ; then
458         echo
459         echo "The JPEG factory code was built and installed with SimGear."
460         echo "However it appears the libjpeg is no longer installed."
461         echo "You need to install libjpeg or remove jpgfactory support from"
462         echo "SimGear"
463         echo
464         echo "libjpeg is available at :"
465         echo "  ftp://ftp.uu.net in the directory graphics/jpeg"
466         exit 1
467     fi
468     AC_DEFINE([FG_JPEG_SERVER], 1,
469               [Define to build with jpeg screen shot server])
470 fi
471 AM_CONDITIONAL(ENABLE_JPEG_SERVER, test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes")
472
473 AC_LANG_POP
474
475 dnl Check for system installed zlib
476 AC_CHECK_HEADER(zlib.h)
477 if test "x$ac_cv_header_zlib_h" != "xyes"; then
478     echo
479     echo "zlib library not found."
480     echo
481     echo "If your OS does not provide an installable package for zlib"
482     echo "you will have to compile and install it first yourself.  A copy"
483     echo "of zlib-1.1.4.tar.gz is included with SimGear.  You will"
484     echo "have to untar this source code, and follow it's included instructions"
485     echo "to compile and install on your system."
486     echo
487     echo "configure aborted."
488     echo
489 fi
490
491 dnl Checks for header files.
492 AC_HEADER_STDC
493 AC_CHECK_HEADERS( \
494         fcntl.h getopt.h malloc.h memory.h stdlib.h sys/param.h sys/stat.h \
495         sys/time.h sys/timeb.h unistd.h windows.h values.h )
496
497 dnl Checks for typedefs, structures, and compiler characteristics.
498 AC_C_CONST
499 AC_TYPE_SIZE_T
500 AC_HEADER_TIME
501 AC_STRUCT_TM
502
503 dnl Checks for library functions.
504 old_LIBS=$LIBS
505 LIBS="$base_LIBS $network_LIBS $opengl_LIBS"
506 AC_TYPE_SIGNAL
507 AC_FUNC_VPRINTF
508 AC_CHECK_FUNCS( [ \
509         ftime gettimeofday timegm memcpy bcopy mktime strstr rand mkfifo \
510         random drand48 setitimer getitimer signal GetLocalTime rint getrusage \
511         truncf ] )
512 LIBS=$old_LIBS
513
514 AM_CONFIG_HEADER(src/Include/config.h)
515
516 AC_CONFIG_FILES([ \
517         Makefile \
518         man/Makefile \
519         man/est-epsilon.1 \
520         man/fgfs.1 \
521         man/fgjs.1 \
522         man/gl-info.1 \
523         man/js_demo.1 \
524         man/pstest.1 \
525         scripts/Makefile \
526         scripts/debug/Makefile \
527         scripts/perl/Makefile \
528         scripts/perl/examples/Makefile \
529         scripts/python/Makefile \
530         src/Makefile \
531         src/Include/Makefile \
532         src/Include/version.h \
533         src/Aircraft/Makefile \
534         src/Airports/Makefile \
535         src/ATC/Makefile \
536         src/Autopilot/Makefile \
537         src/Cockpit/Makefile \
538         src/Cockpit/built_in/Makefile \
539         src/Controls/Makefile \
540         src/Environment/Makefile \
541         src/FDM/Balloon/Makefile \
542         src/FDM/ExternalNet/Makefile \
543         src/FDM/ExternalPipe/Makefile \
544         src/FDM/JSBSim/Makefile \
545         src/FDM/JSBSim/filtersjb/Makefile \
546         src/FDM/LaRCsim/Makefile \
547         src/FDM/UIUCModel/Makefile \
548         src/FDM/YASim/Makefile \
549         src/FDM/Makefile \
550         src/GUI/Makefile \
551         src/Input/Makefile \
552         src/Instrumentation/Makefile \
553         src/Main/Makefile \
554         src/Main/runfgfs \
555         src/Main/runfgfs.bat \
556         src/Model/Makefile \
557         src/AIModel/Makefile \
558         src/MultiPlayer/Makefile \
559         src/Navaids/Makefile \
560         src/Network/Makefile \
561         src/Objects/Makefile \
562         src/Replay/Makefile \
563         src/Scenery/Makefile \
564         src/Scripting/Makefile \
565         src/Sound/Makefile \
566         src/Systems/Makefile \
567         src/Time/Makefile \
568         src/Traffic/Makefile \
569         tests/Makefile \
570         utils/Makefile \
571         utils/TerraSync/Makefile \
572         utils/Modeller/Makefile \
573         utils/js_server/Makefile \
574 ])
575 AC_OUTPUT
576
577 AC_OUTPUT_COMMANDS([chmod 755 src/Main/runfgfs])
578
579 echo ""
580 echo "Configure Summary"
581 echo "================="
582
583 echo "Prefix: $prefix"
584
585 if test "x$with_logging" != "x"; then
586     echo "Debug messages: $with_logging"
587 else
588     echo "Debug messages: yes"
589 fi
590
591 echo -n "Automake version: "
592 automake --version | head -1
593
594 if test "x$with_multiplayer" != "xno"; then
595     echo "Building with multiplayer support"
596 fi
597
598 if test "x$with_threads" = "xyes"; then
599     echo "threads: yes"
600 else
601     echo "threads: no"
602 fi