]> git.mxchange.org Git - flightgear.git/blob - configure.ac
Various tweaks for v0.9.5-pre1.
[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-pre1)
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     LIBS="$LIBS -lalut -lopenal32 -lwinmm -ldsound -ldxguid -lole32"
328     ;;
329
330 *-apple-darwin*)
331     dnl Mac OS X
332
333     LIBS="$LIBS -framework IOKit -framework OpenAL"
334     ;;
335
336 *)
337     dnl default unix style machines
338
339     AC_SEARCH_LIBS(alGenBuffers, openal)
340     ;;
341
342 esac
343
344 openal_LIBS="$LIBS"
345 LIBS="$base_LIBS"
346
347 AC_SUBST(base_LIBS)
348 AC_SUBST(openal_LIBS)
349 AC_SUBST(opengl_LIBS)
350 AC_SUBST(thread_LIBS)
351 AC_SUBST(network_LIBS)
352
353 # The following are C++ items that need to be tested for with the c++
354 # compiler
355
356 AC_LANG_PUSH(C++)
357
358 # Check for "plib" without which we cannot go on
359 AC_CHECK_HEADER(plib/ul.h)
360 if test "x$ac_cv_header_plib_ul_h" != "xyes"; then
361     echo
362     echo "You *must* have the plib library installed on your system to build"
363     echo "the FGFS simulator!"
364     echo
365     echo "Please see README.plib for more details."
366     echo
367     echo "configure aborted."
368     exit
369 fi
370
371 AC_MSG_CHECKING([for plib 1.8.0 or newer])
372 AC_TRY_RUN([
373 #include <plib/ul.h>
374
375 #define MIN_PLIB_VERSION 170
376
377 int main() {
378     int major, minor, micro;
379
380     if ( PLIB_VERSION < MIN_PLIB_VERSION ) {
381          return -1;
382     }
383
384     return 0;
385 }
386
387 ],
388   AC_MSG_RESULT(yes),
389   [AC_MSG_RESULT(wrong version);
390    AC_MSG_ERROR([Install plib 1.8.0 or later first...])],
391   AC_MSG_RESULT(yes)
392 )
393
394 dnl If we get here then plib is available, so force use of plib
395 dnl joystick lib
396 AC_DEFINE([ENABLE_PLIB_JOYSTICK], 1, [Define to enable plib joystick support])
397
398
399 dnl Check for the presence of SimGear
400 AC_CHECK_HEADER(simgear/version.h)
401 if test "x$ac_cv_header_simgear_version_h" != "xyes"; then
402     echo
403     echo "You *must* have the SimGear support library installed on your system"
404     echo "to build the FGFS simulator!"
405     echo
406     echo "Please see README.SimGear for more details."
407     echo
408     echo "configure aborted."
409     exit
410 fi
411
412 AC_MSG_CHECKING([for simgear 0.3.6 or newer])
413 AC_TRY_RUN([
414 #include <stdio.h>
415
416 #include <simgear/version.h>
417
418 #define STRINGIFY(X) XSTRINGIFY(X)
419 #define XSTRINGIFY(X) #X
420
421 #define MIN_MAJOR 0
422 #define MIN_MINOR 3
423 #define MIN_MICRO 6
424
425 int main() {
426     int major, minor, micro;
427
428     printf("%d.%d.%d or greater... ", MIN_MAJOR, MIN_MINOR, MIN_MICRO);
429
430     sscanf( STRINGIFY(SIMGEAR_VERSION), "%d.%d.%d", &major, &minor, &micro );
431
432     if ( major < MIN_MAJOR ) {
433          return -1;
434     } else if ( major == MIN_MAJOR && minor < MIN_MINOR ) {
435          return -1;
436     } else if ( major == MIN_MAJOR && minor == MIN_MINOR && micro < MIN_MICRO ){
437          return -1;
438     }
439
440     return 0;
441 }
442
443 ],
444   AC_MSG_RESULT(yes),
445   [AC_MSG_RESULT(wrong version);
446    AC_MSG_ERROR([Install latest simgear first...])],
447   AC_MSG_RESULT(yes)
448 )
449
450 LIBS="$saved_LIBS"
451
452 dnl Check if SimGear was built with Norman JPEG factory support
453 AC_CHECK_HEADER(simgear/screen/jpgfactory.hxx)
454 if test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes"; then
455     AC_CHECK_LIB(jpeg, jpeg_start_compress)
456     if test "x$ac_cv_lib_jpeg_jpeg_start_compress" != "xyes" ; then
457         echo
458         echo "The JPEG factory code was built and installed with SimGear."
459         echo "However it appears the libjpeg is no longer installed."
460         echo "You need to install libjpeg or remove jpgfactory support from"
461         echo "SimGear"
462         echo
463         echo "libjpeg is available at :"
464         echo "  ftp://ftp.uu.net in the directory graphics/jpeg"
465         exit 1
466     fi
467     AC_DEFINE([FG_JPEG_SERVER], 1,
468               [Define to build with jpeg screen shot server])
469 fi
470 AM_CONDITIONAL(ENABLE_JPEG_SERVER, test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes")
471
472 AC_LANG_POP
473
474 dnl Check for system installed zlib
475 AC_CHECK_HEADER(zlib.h)
476 if test "x$ac_cv_header_zlib_h" != "xyes"; then
477     echo
478     echo "zlib library not found."
479     echo
480     echo "If your OS does not provide an installable package for zlib"
481     echo "you will have to compile and install it first yourself.  A copy"
482     echo "of zlib-1.1.4.tar.gz is included with SimGear.  You will"
483     echo "have to untar this source code, and follow it's included instructions"
484     echo "to compile and install on your system."
485     echo
486     echo "configure aborted."
487     echo
488 fi
489
490 dnl Checks for header files.
491 AC_HEADER_STDC
492 AC_CHECK_HEADERS( \
493         fcntl.h getopt.h malloc.h memory.h stdlib.h sys/param.h sys/stat.h \
494         sys/time.h sys/timeb.h unistd.h windows.h values.h )
495
496 dnl Checks for typedefs, structures, and compiler characteristics.
497 AC_C_CONST
498 AC_TYPE_SIZE_T
499 AC_HEADER_TIME
500 AC_STRUCT_TM
501
502 dnl Checks for library functions.
503 old_LIBS=$LIBS
504 LIBS="$base_LIBS $network_LIBS $opengl_LIBS"
505 AC_TYPE_SIGNAL
506 AC_FUNC_VPRINTF
507 AC_CHECK_FUNCS( [ \
508         ftime gettimeofday timegm memcpy bcopy mktime strstr rand mkfifo \
509         random drand48 setitimer getitimer signal GetLocalTime rint getrusage \
510         truncf ] )
511 LIBS=$old_LIBS
512
513 AM_CONFIG_HEADER(src/Include/config.h)
514
515 AC_CONFIG_FILES([ \
516         Makefile \
517         man/Makefile \
518         man/est-epsilon.1 \
519         man/fgfs.1 \
520         man/fgjs.1 \
521         man/gl-info.1 \
522         man/js_demo.1 \
523         man/pstest.1 \
524         scripts/Makefile \
525         scripts/debug/Makefile \
526         scripts/perl/Makefile \
527         scripts/perl/examples/Makefile \
528         scripts/python/Makefile \
529         src/Makefile \
530         src/Include/Makefile \
531         src/Include/version.h \
532         src/Aircraft/Makefile \
533         src/Airports/Makefile \
534         src/ATC/Makefile \
535         src/Autopilot/Makefile \
536         src/Cockpit/Makefile \
537         src/Cockpit/built_in/Makefile \
538         src/Controls/Makefile \
539         src/Environment/Makefile \
540         src/FDM/Balloon/Makefile \
541         src/FDM/ExternalNet/Makefile \
542         src/FDM/ExternalPipe/Makefile \
543         src/FDM/JSBSim/Makefile \
544         src/FDM/JSBSim/filtersjb/Makefile \
545         src/FDM/LaRCsim/Makefile \
546         src/FDM/UIUCModel/Makefile \
547         src/FDM/YASim/Makefile \
548         src/FDM/Makefile \
549         src/GUI/Makefile \
550         src/Input/Makefile \
551         src/Instrumentation/Makefile \
552         src/Main/Makefile \
553         src/Main/runfgfs \
554         src/Main/runfgfs.bat \
555         src/Model/Makefile \
556         src/AIModel/Makefile \
557         src/MultiPlayer/Makefile \
558         src/Navaids/Makefile \
559         src/Network/Makefile \
560         src/Objects/Makefile \
561         src/Replay/Makefile \
562         src/Scenery/Makefile \
563         src/Scripting/Makefile \
564         src/Sound/Makefile \
565         src/Systems/Makefile \
566         src/Time/Makefile \
567         src/Traffic/Makefile \
568         tests/Makefile \
569         utils/Makefile \
570         utils/TerraSync/Makefile \
571         utils/Modeller/Makefile \
572         utils/js_server/Makefile \
573 ])
574 AC_OUTPUT
575
576 AC_OUTPUT_COMMANDS([chmod 755 src/Main/runfgfs])
577
578 echo ""
579 echo "Configure Summary"
580 echo "================="
581
582 echo "Prefix: $prefix"
583
584 if test "x$with_logging" != "x"; then
585     echo "Debug messages: $with_logging"
586 else
587     echo "Debug messages: yes"
588 fi
589
590 echo -n "Automake version: "
591 automake --version | head -1
592
593 if test "x$with_multiplayer" != "xno"; then
594     echo "Building with multiplayer support"
595 fi
596
597 if test "x$with_threads" = "xyes"; then
598     echo "threads: yes"
599 else
600     echo "threads: no"
601 fi