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