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