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