]> git.mxchange.org Git - flightgear.git/blob - configure.ac
Assigned an ATC controller to the user's Aircraft and change the comm1 radio frequenc...
[flightgear.git] / configure.ac
1 dnl Process this file with autogen.sh to produce a working configure
2 dnl script.
3
4 AC_INIT(FlightGear, m4_esyscmd([cat ./version | tr -d '\n']), [http://www.flightgear.org])
5
6 dnl Ensure touching the version causes autoconf to re-run
7 AC_SUBST([CONFIGURE_DEPENDENCIES], ['$(top_srcdir)/version'])
8
9 AC_CONFIG_SRCDIR([src/Airports/simple.cxx])
10
11 dnl Require at least automake 2.52
12 AC_PREREQ(2.52)
13
14 dnl Initialize the automake stuff
15 dnl set the $host variable based on local machine/os
16 AC_CANONICAL_TARGET
17 AM_INIT_AUTOMAKE([dist-bzip2])
18
19 # variables for version.h
20 AC_DEFINE([HAVE_VERSION_H], 1, [Set if version.h is generated])
21
22 # are we running under Hudson? (defines BUILD_ID, BUILD_NUMBER in the environment)
23 if test "x$BUILD_ID" != "x" ; then
24     AC_SUBST([HUDSON_BUILD_ID], $BUILD_ID)
25     AC_SUBST([HUDSON_BUILD_NUMBER], $BUILD_NUMBER)
26 else
27     AC_SUBST([HUDSON_BUILD_ID], [none])
28     AC_SUBST([HUDSON_BUILD_NUMBER], 0)
29 fi
30
31 AC_CHECK_PROG([HAVE_GIT], git, 1)
32 if test "x$HAVE_GIT" != "x" ; then
33     # git might be installed, but we might be building from a tarball
34     if git rev-parse ; then
35         AC_SUBST([REVISION], `git rev-parse HEAD`)
36     else
37         AC_SUBST([REVISION], [none])
38     fi
39 else
40     AC_SUBST([REVISION], [none])
41 fi
42
43 dnl Checks for programs.
44 AC_PROG_MAKE_SET
45 AC_PROG_CC
46 AC_PROG_CPP
47 AC_PROG_CXX
48 AC_PROG_CXXCPP
49 AC_PROG_RANLIB
50 AC_PROG_INSTALL
51 AC_PROG_LN_S
52 AX_BOOST_BASE([1.37.0])
53
54 # Show all compiler warnings by default
55 CXXFLAGS="$CXXFLAGS -Wall"
56 CFLAGS="$CFLAGS -Wall"
57
58 if test "x$BOOST_CPPFLAGS" != "x-I/usr/include" ; then
59    CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
60 fi
61
62 # specify the simgear location
63 AC_ARG_WITH(simgear, [  --with-simgear=PREFIX   Specify the prefix path to SimGear])
64
65 if test "x$with_simgear" != "x" ; then
66     echo "SimGear prefix path is $with_simgear"
67     EXTRA_DIRS="${EXTRA_DIRS} $with_simgear"
68     CXXFLAGS="$CXXFLAGS -I$with_simgear"
69 fi
70
71 # specify the plib location
72 AC_ARG_WITH(plib, [  --with-plib=PREFIX      Specify the prefix path to plib])
73
74 if test "x$with_plib" != "x" ; then
75     echo "plib prefix is $with_plib"
76     EXTRA_DIRS="${EXTRA_DIRS} $with_plib"
77 fi
78
79 # specify the osg location
80 AC_ARG_WITH(osg, [  --with-osg=PREFIX       Specify the prefix path to osg])
81
82 if test "x$with_osg" != "x" ; then
83     echo "osg prefix is $with_osg"
84     EXTRA_DIRS="${EXTRA_DIRS} $with_osg"
85 fi
86
87 # specify framework related locations for Mac OS X
88 case "${host}" in
89 *-apple-darwin*)
90
91     dnl Thank you Christian Bauer from SheepSaver
92     dnl Modified by Tatsuhiro Nishioka for accepting a given framework path
93     dnl AC_CHECK_FRAMEWORK($1=NAME, $2=INCLUDES, $3=FRAMEWORK_PATH, $4=ACTION_IF_FOUND) ;
94     AC_DEFUN([AC_CHECK_FRAMEWORK], [
95     AS_VAR_PUSHDEF([ac_Framework], [ac_cv_framework_$1])dnl
96     AC_CACHE_CHECK([whether compiler supports framework $1],
97         ac_Framework, [
98         saved_LIBS="$LIBS"
99         FRAMEWORKS="$FRAMEWORKS -framework $1"
100         if test "$3" = ""; then
101             FRAMEWORKS="$FRAMEWORKS $ADD2LD"
102         elif test "`echo $FRAMEWORKS | grep -- -F$3`" = ""; then
103             FRAMEWORKS="$FRAMEWORKS -F$3"
104             CXXFLAGS="$CXXFLAGS -F$3"
105             CCFLAGS="$CCFLAGS -F$3"
106             CPPFLAGS="$CPPFLAGS -F$3"
107             dnl This is needed for AC_TRY_LINK when a framework path is specified
108             export DYLD_FRAMEWORK_PATH="${DYLD_FRAMEWORK_PATH}:$3"
109         fi
110         AC_TRY_LINK(
111         [$2], [],
112         [AS_VAR_SET(ac_Framework, yes)], [AS_VAR_SET(ac_Framework, no); LIBS="$saved_LIBS"]
113         )
114     ])
115     AS_IF([test AS_VAR_GET(ac_Framework) = yes],
116         [AC_DEFINE(AS_TR_CPP(HAVE_FRAMEWORK_$1), 1, [Define if framework $1 is available.])]
117     )
118     AS_IF([test AS_VAR_GET(ac_Framework) = yes], $4)
119     AS_VAR_POPDEF([ac_Framework])dnl
120     ])
121
122     # Mac OS X specific configure options
123     AC_ARG_WITH(cocoa_framework, [  --with-cocoa-framework         Use the Cocoa rather than Carbon])
124     if test "x$with_cocoa_framework" != "x" ; then
125         macAPI=Cocoa
126         AC_MSG_NOTICE([Using Cocoa framework])
127     else
128         macAPI=Carbon
129         AC_MSG_NOTICE([Using Carbon framework])
130     fi
131
132     AC_ARG_WITH(osg_framework, [  --with-osg-framework=PREFIX    Specify the prefix path to osg frameworks [default=standard framework paths]])
133     if test "x$with_osg_framework" != "x" ; then
134         echo "osg prefix is $with_osg_framework"
135         export DYLD_FRAMEWORK_PATH="$DYLD_FRAMEWORK_PATH:$with_osg_framework"
136     fi
137
138     AC_ARG_WITH(plib_framework, [  --with-plib-framework=PREFIX   Specify the prefix path to PLIB framework [default=standard framework paths]])
139     if test "x$with_plib_framework" != "x" ; then
140         echo "plib prefix is $with_plib_framework"
141         export DYLD_FRAMEWORK_PATH="$DYLD_FRAMEWORK_PATH:$with_plib_framework"
142     fi
143
144     AC_ARG_WITH(alut_framework, [  --with-alut-framework=PREFIX   Specify the prefix path to ALUT.framework ])
145     if test "x$with_alut_framework" != "x"; then
146         echo "ALUT framework prefix is $with_alut_framework"
147     fi
148
149     ;;
150 esac
151
152 dnl Determine an extra directories to add to include/lib search paths
153 case "${host}" in
154 *-apple-darwin* | *-*-mingw32*)
155     echo no EXTRA_DIRS for $host
156     ;;
157
158 *-*-cygwin*)
159     if test -d /usr/local ; then
160         EXTRA_DIRS="${EXTRA_DIRS} /usr/local"
161     fi
162     ;;
163
164 *)
165     if test -d /usr/X11R6 ; then
166         EXTRA_DIR1="/usr/X11R6"
167     fi
168     if test -d /opt/X11R6 ; then
169         EXTRA_DIR2="/opt/X11R6"
170     fi
171     EXTRA_DIRS="${EXTRA_DIRS} $EXTRA_DIR1 $EXTRA_DIR2 /usr/local"
172     ;;
173
174 esac
175 wi_EXTRA_DIRS(no, ${EXTRA_DIRS})
176
177
178 case "${host}" in
179 *-*-irix*)
180     if test "$CXX" = "CC"; then
181         AR="CC -ar"
182         ARFLAGS="-o"
183         CXXFLAGS="$CXXFLAGS -c99 -I$with_simgear/include/simgear/compatibility"
184         CFLAGS="$CFLAGS -c99"
185     else
186         AR="ar"
187         ARFLAGS="cru"
188     fi
189     ;;
190 *)
191     AR="ar"
192     ARFLAGS="cru"
193     ;;
194 esac
195 AC_SUBST(AR)
196 AC_SUBST(ARFLAGS)
197
198 dnl set logging; default value of with_logging=yes
199 AC_ARG_WITH(logging, [  --with-logging          Include logging output (default)])
200 if test "x$with_logging" = "xno" ; then
201     AC_DEFINE([FG_NDEBUG], 1, [Define for no logging output])
202 fi
203
204 AC_ARG_ENABLE(sp_fdms, [  --enable-sp-fdms               Include special purpose Flight Models], [enable_sp_fdms="$enableval"] )
205 if test "x$enable_sp_fdms" != "xno"; then
206     AC_DEFINE([ENABLE_SP_FDM], 1, [Define to include special purpose FDMs])
207 else
208     AC_DEFINE([ENABLE_SP_FDM], 0, [Define to include special purpose FDMs])
209 fi
210 AM_CONDITIONAL(ENABLE_SP_FDM, test "x$enable_sp_fdms" != "xno")
211
212 dnl EXPERIMENTAL generic event driven input device
213 # defaults to no
214 AC_ARG_WITH(eventinput, [  --with-eventinput       Include event driven input (EXPERIMENTAL) [default=no]], [], [with_eventinput=no])
215 if test "x$with_eventinput" = "xyes"; then
216     AC_DEFINE([WITH_EVENTINPUT], 1, [Define to enable generic event driven input device])
217     case "${host}" in
218     dnl OS specific sources for event driven input
219     dnl Linux and Mac OS X are supported at this moment
220     *-apple-darwin*)
221         eventinput_EXTRA_OBJS="FGMacOSXEventInput.o"
222         eventinput_INCUDES=""
223         eventinput_LIBS=""
224         ;;
225     *linux*)
226         dnl
227         dnl FIXME: include paths for dbus are hard-coded at this moment.
228         dnl FIXME: these must be found in configure
229         dnl
230         eventinput_EXTRA_OBJS="FGLinuxEventInput.o"
231         eventinput_INCLUDES="-I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/lib/dbus-1.0/include"
232         eventinput_LIBS="-ldbus-1 -lhal"
233         ;;
234     *)
235         echo "Event driven input is not supported on ${host}."
236         ;;
237     esac
238     AC_SUBST(eventinput_EXTRA_OBJS)
239     AC_SUBST(eventinput_INCLUDES)
240     AC_SUBST(eventinput_LIBS)
241 fi
242 AM_CONDITIONAL(WITH_EVENTINPUT, test "x$with_eventinput" = "xyes")
243
244 dnl Thread related checks
245 # defaults to yes
246 AC_ARG_WITH(threads, [  --with-threads          Include tile loading threads [default=yes]], [], [with_threads=yes])
247 if test "x$with_threads" = "xyes"; then
248     AC_DEFINE([ENABLE_THREADS], 1, [Define to enable threaded tile paging])
249     CXXFLAGS="$CXXFLAGS -D_REENTRANT"
250     CFLAGS="$CFLAGS -D_REENTRANT"
251 fi
252 AC_CHECK_HEADER(pthread.h)
253
254 dnl Configure HLA support
255 AC_ARG_WITH(rti13, [  --with-rti13[[=PATH]]     Enable the HLA/RTI 1.3 interface, set a path to the RTI13 RTI libraries (default=no)])
256 if test "x$with_rti13" != "xno"; then
257     if test "x$with_rti13" != "xyes"; then
258         AC_SUBST(HLA_CPPFLAGS, "-I$with_rti13/include")
259         AC_SUBST(HLA_LDFLAGS, "-L$with_rti13/lib")
260     fi
261
262     dnl Configure HLA support
263     AC_MSG_CHECKING([for simgear HLA/RTI support])
264     AC_LANG_PUSH(C++)
265     AC_TRY_COMPILE([
266         #include <simgear/hla/HLA13Federate.hxx>
267         ],[
268         new simgear::HLA13Federate;
269         ], simgear_hla=yes, simgear_hla=no)
270     AC_MSG_RESULT($simgear_hla)
271     if test "x$simgear_hla" = "xyes" ; then
272         AC_MSG_CHECKING([for hla libraries])
273         saved_LIBS="$LIBS"
274         saved_LDFLAGS="$LDFLAGS"
275         for rti13libs in "-lRTI-NG -lFedTime" "-lRTI-NGd -lFedTimed" ; do
276             if test "x$hla_libs" = "x" ; then
277                 LIBS="-lsghla13 -lsghla -lsgxml -lsgstructure -lsgmath -lsgdebug -lsgtiming $rti13libs -lrt $saved_LIBS"
278                 LDFLAGS="$HLA_LDFLAGS $saved_LDFLAGS"
279                 AC_TRY_LINK([
280                     #include <simgear/hla/HLA13Federate.hxx>
281                     ],[
282                     new simgear::HLA13Federate;
283                     ], [hla_libs="$rti13libs"; have_rti13=yes],)
284             fi
285         done
286         LIBS="$saved_LIBS"
287         LDFLAGS="$saved_LDFLAGS"
288         AC_MSG_RESULT($hla_libs)
289     fi
290     AC_LANG_POP()
291 fi
292 dnl Currently only the rti13 variant, but in the future also rti1516
293 AM_CONDITIONAL(WITH_HLA, test "x$have_rti13" = "xyes")
294 if test "x$have_rti13" = "xyes" ; then
295     AC_DEFINE([FG_HAVE_HLA], 1, [Define if HLA/RTI is available.])
296     AC_SUBST(HLA_LIBS, "-lsghla13 -lsghla $hla_libs")
297 fi
298
299 dnl Used by JSBSim to conditionally compile in fgfs interface code
300 AC_DEFINE([FGFS], 1, [Define so that JSBSim compiles in 'library' mode])
301
302 # Check for MS Windows environment
303 AC_CHECK_HEADER(windows.h)
304
305 dnl Using AM_CONDITIONAL is a step out of the protected little
306 dnl automake fold so it is potentially dangerous.  But, we are
307 dnl beginning to run into cases where the standard checks are not
308 dnl enough.  AM_CONDITIONALS are then referenced to conditionally
309 dnl build a Makefile.in from a Makefile.am which lets us define custom
310 dnl includes, compile alternative source files, etc.
311
312 dnl Check for external variables daylight and timezone.
313 AC_EXT_DAYLIGHT
314 if test "$have_daylight" = yes; then
315     AC_DEFINE([HAVE_DAYLIGHT], 1, [Define if system has daylight variable])
316 fi
317
318 AC_EXT_TIMEZONE
319 if test "$have_timezone" = yes; then
320     AC_DEFINE([HAVE_TIMEZONE], 1, [Define if system has timezone variable])
321 fi
322
323
324 dnl add joystick support libraries
325 dnl search for FreeBSD library
326 AC_SEARCH_LIBS(hid_init, usbhid)
327 joystick_LIBS="$LIBS"
328 LIBS=""
329
330
331 dnl ENABLE_AUDIO_SUPPORT could be depricated at any time in favor of
332 dnl just assuming we have audio support on all platform.  We can
333 dnl depend on plib to hide the details.
334 AC_DEFINE([ENABLE_AUDIO_SUPPORT], 1, [Define for audio support])
335
336 dnl X11 might be installed on Mac OS X or cygwin/mingwin, we don't want
337 dnl to use it if it is.
338 case "${host}" in
339 *-apple-darwin* | *-*-cygwin* | *-*-mingw32*)
340     echo no fancy X11 check
341     ;;
342
343 *)
344     AC_PATH_XTRA
345     ;;
346
347 esac
348
349 dnl Checks for libraries.
350
351 dnl Thread related checks
352 AC_SEARCH_LIBS(pthread_create, [pthread c_r])
353 if test "x$ac_cv_header_pthread_h" = "xyes"; then
354   if test "x$ac_cv_search_pthread_exit" = "x-lc_r"; then
355     CXXFLAGS="-pthread $CXXFLAGS"
356     CFLAGS="-pthread $CFLAGS"
357     LIBS="-lsgthreads $LIBS"
358   fi
359 fi
360
361 thread_LIBS="$LIBS"
362 LIBS=""
363
364 dnl search for network related libraries
365 AC_SEARCH_LIBS(inet_addr, xnet)
366 AC_SEARCH_LIBS(socket, socket)
367 AC_SEARCH_LIBS(main, nsl)
368
369 network_LIBS="$LIBS"
370 LIBS=""
371
372 dnl check for some default libraries
373 AC_SEARCH_LIBS(sqrt, [am ffm fm fastm m])
374 AC_SEARCH_LIBS(ceil, m)
375 AC_SEARCH_LIBS(dlclose, dl)
376 AC_SEARCH_LIBS(clock_gettime, rt)
377
378 base_LIBS="$LIBS"
379
380 dnl Check for SDL or glut if enabled.
381 AC_ARG_ENABLE(osgviewer, [  --enable-osgviewer             Configure to use osgViewer (default)], [enable_osgviewer="$enableval"])
382 AC_ARG_ENABLE(sdl,  [  --enable-sdl                   Configure to use SDL], [enable_sdl="$enableval"])
383 AC_ARG_ENABLE(glut, [  --enable-glut                  Configure to use GLUT], [enable_glut="$enableval"])
384 AM_CONDITIONAL(USE_SDL, test "x$enable_sdl" = "xyes")
385 AM_CONDITIONAL(USE_GLUT, test "x$enable_glut" = "xyes")
386 if test "x$enable_sdl" != "xyes" -a "x$enable_glut" != "xyes" -a "x$enable_osgviewer" != "xno"; then
387    enable_osgviewer="yes"
388 fi
389 if test \( "x$enable_osgviewer" = "xyes" \
390    -a \( "x$enable_sdl" = "xyes" -o "x$enable_glut" = "xyes" \) \) \
391    -o \( "x$enable_sdl" = "xyes" -a "x$enable_glut" = "xyes" \); then
392    echo " Only one of --enable-osgviewer, --enable-sdl, or --enable -glut may"
393    echo " be supplied."
394    exit
395 fi
396 AC_DEFINE([PU_USE_NONE], 1, [Define to use application's pu callbacks])
397
398 AC_ARG_ENABLE(osgdebug, [  --enable-osgdebug              Use OSG debug libraries], [enable_osgdebug="$enableval"])
399
400 dnl check for OpenGL related libraries
401 case "${host}" in
402 *-*-cygwin* | *-*-mingw32*)
403     dnl CygWin under Windoze.
404
405     echo Win32 specific hacks...
406     AC_DEFINE([WIN32], 1, [Define for Win32 platforms])
407     AC_DEFINE([NOMINMAX], 1, [Define for Win32 platforms])
408
409     if test "x$enable_sdl" = "xyes"; then
410         AC_SEARCH_LIBS(SDL_Init, SDL)
411     else
412         LIBS="$LIBS -lglut32"
413     fi
414
415     LIBS="$LIBS -lglu32 -lopengl32 -luser32 -lgdi32"
416     joystick_LIBS="$joystick_LIBS -lwinmm"
417
418     dnl add -lwsock32 for mingwin
419     case "${host}" in
420     *-*-mingw32*)
421         echo "********** BUILDING FOR MINGW32 *************"
422         network_LIBS="$network_LIBS -lws2_32"
423         ;;
424     esac
425
426     echo "Will link apps with $LIBS"
427     ;;
428
429
430 *-apple-darwin*)
431     dnl Mac OS X
432
433     LIBS="$LIBS -framework GLUT -framework OpenGL -framework AGL -framework $macAPI -lobjc"
434     LDFLAGS="$LDFLAGS -headerpad_max_install_names"
435     joystick_LIBS="$joystick_LIBS -framework IOKit -framework CoreFoundation"
436     ;;
437
438 *)
439     dnl X-Windows based machines
440
441     dnl Skip X11 library tests if requested.
442     if test "x$no_x" != "xyes"; then
443         AC_SEARCH_LIBS(XCreateWindow, X11)
444         AC_SEARCH_LIBS(XShmCreateImage, Xext)
445         AC_SEARCH_LIBS(XGetExtensionVersion, Xi)
446         AC_SEARCH_LIBS(IceOpenConnection, ICE)
447         AC_SEARCH_LIBS(SmcOpenConnection, SM)
448         AC_SEARCH_LIBS(XtMalloc, Xt)
449         AC_SEARCH_LIBS(XmuLookupStandardColormap, Xmu)
450     fi
451
452     AC_SEARCH_LIBS(glNewList, [ GL GLcore MesaGL ])
453     if test "x$ac_cv_search_glNewList" = "x-lGLcore"; then
454         dnl if GLcore found, then also check for GL
455         AC_SEARCH_LIBS(glXCreateContext, GL)
456     fi
457
458     dnl if using mesa, check for xmesa.h
459     if test "x$ac_cv_search_glNewList" = "x-lMesaGL"; then
460         AC_CHECK_HEADER(GL/fxmesa.h)
461         if test "x$ac_cv_header_GL_fxmesa_h" = "xyes"; then
462             AC_DEFINE([XMESA], 1, [Define for fxmesa])
463             AC_DEFINE([FX], 1, [Define for fxmesa])
464         fi
465     fi
466
467     AC_SEARCH_LIBS(gluLookAt, [ GLU MesaGLU ])
468     AC_SEARCH_LIBS(glutGetModifiers, [ glut freeglut ])
469     if test "x$enable_sdl" = "xyes"; then
470         AC_SEARCH_LIBS(SDL_Init, SDL)
471     fi
472     ;;
473
474 esac
475
476 opengl_LIBS="$LIBS"
477 LIBS="$base_LIBS $joystick_LIBS"
478
479 dnl check for OpenAL libraries
480 OPENAL_OK="no"
481 ALUT_OK="no"
482 case "${host}" in
483 *-*-cygwin* | *-*-mingw32*)
484     dnl CygWin under Windoze.
485     INCLUDES="$INCLUDES -I/usr/local/include/"
486     LIBS="$LIBS -L/usr/local/lib"
487     AC_SEARCH_LIBS(alGenBuffers, [ openal32 openal 'openal -ldsound -lwinmm' ] )
488     AC_SEARCH_LIBS(alutInit, [ openal32 ALut alut ] )
489     LIBS="$LIBS -lwinmm -ldsound -ldxguid -lole32"
490     openal_LIBS="$LIBS"
491     OPENAL_OK="$ac_cv_search_alGenBuffers"
492     ALUT_OK="$ac_cv_search_alutInit"
493     ;;
494
495 *-apple-darwin*)
496     dnl Mac OS X
497
498     # Mac OS X has OpenAL.framework, but no ALUT, by default, so we
499     # require use of a non-Apple ALUT.framework which we provide
500     openal_LIBS="-framework IOKit -framework OpenAL"
501
502     AC_CHECK_FRAMEWORK(OpenAL, [#include <OpenAL/al.h>], "", [OPENAL_OK="yes"])
503     AC_CHECK_FRAMEWORK(ALUT, [#include <ALUT/alut.h>], $with_alut_framework, [
504         ALUT_OK="yes"
505         openal_LIBS="$openal_LIBS -framework ALUT"
506     ])
507     ;;
508
509 *)
510     dnl default unix style machines
511
512     save_LIBS=$LIBS
513     LIBS="$LIBS $thread_LIBS"
514     AC_SEARCH_LIBS(alGenBuffers, openal)
515     AC_SEARCH_LIBS(alutInit, [ alut openal ] )
516     OPENAL_OK="$ac_cv_search_alGenBuffers"
517     ALUT_OK="$ac_cv_search_alutInit"
518     openal_LIBS="$LIBS"
519     LIBS=$save_LIBS
520     ;;
521
522 esac
523
524 if test "$OPENAL_OK" == "no"; then
525     echo
526     echo "You *must* have the openal library installed on your system to build"
527     echo "SimGear!"
528     echo
529     echo "Please see README.OpenAL for more details."
530     echo
531     echo "configure aborted."
532     exit
533 fi
534
535 if test "$ALUT_OK" == "no"; then
536     echo
537     echo "You *must* have the alut library installed on your system to build"
538     echo "SimGear!"
539     echo
540     echo "Please see README.OpenAL for more details."
541     echo
542     echo "configure aborted."
543     exit
544 fi
545
546
547 LIBS="$base_LIBS"
548
549 AC_SUBST(base_LIBS)
550 AC_SUBST(openal_LIBS)
551 AC_SUBST(opengl_LIBS)
552 AC_SUBST(thread_LIBS)
553 AC_SUBST(network_LIBS)
554 AC_SUBST(joystick_LIBS)
555
556 # The following are C++ items that need to be tested for with the c++
557 # compiler
558
559 AC_LANG_PUSH(C++)
560
561 dnl Check for the presence of SimGear
562 if test "x$with_simgear" != "x"; then
563 AC_CHECK_HEADER($with_simgear/include/simgear/version.h, [ac_cv_header_simgear_version_h=yes], [ac_cv_header_simgear_version_h=no])
564 else
565 AC_CHECK_HEADER(simgear/version.h)
566 fi
567 if test "x$ac_cv_header_simgear_version_h" != "xyes"; then
568     echo
569     echo "You *must* have the SimGear support library installed on your system"
570     echo "to build the FGFS simulator!"
571     echo
572     echo "Please see README.SimGear for more details."
573     echo
574     echo "configure aborted."
575     exit
576 fi
577
578 AC_MSG_CHECKING([for SimGear 2.2.0 or newer])
579 AC_TRY_RUN([
580 #include <stdio.h>
581
582 #include <simgear/version.h>
583
584 #define STRINGIFY(X) XSTRINGIFY(X)
585 #define XSTRINGIFY(X) #X
586
587 #define MIN_MAJOR 2
588 #define MIN_MINOR 2
589 #define MIN_MICRO 0
590
591 int main() {
592     int major, minor, micro;
593
594     /* printf("%d.%d.%d or greater, ", MIN_MAJOR, MIN_MINOR, MIN_MICRO); */
595     printf("[found %s] ... ", STRINGIFY(SIMGEAR_VERSION));
596
597     sscanf( STRINGIFY(SIMGEAR_VERSION), "%d.%d.%d", &major, &minor, &micro );
598
599     if ( (major < MIN_MAJOR) ||
600          (major == MIN_MAJOR && minor < MIN_MINOR) ||
601          (major == MIN_MAJOR && minor == MIN_MINOR && micro < MIN_MICRO) ) {
602          return -1;
603     }
604
605     return 0;
606 }
607
608 ],
609   AC_MSG_RESULT(yes),
610   [AC_MSG_RESULT(wrong version);
611    AC_MSG_ERROR([Install latest SimGear first...])],
612   AC_MSG_RESULT(yes)
613 )
614
615 LIBS="$saved_LIBS"
616
617 dnl Check if SimGear was built with Norman's JPEG factory support
618 if test "x$with_simgear" != "x"; then
619 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])
620 else
621 AC_CHECK_HEADER(simgear/screen/jpgfactory.hxx)
622 fi
623 if test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes"; then
624     AC_CHECK_LIB(jpeg, jpeg_start_compress)
625     if test "x$ac_cv_lib_jpeg_jpeg_start_compress" != "xyes" ; then
626         echo
627         echo "The JPEG factory code was built and installed with SimGear."
628         echo "However it appears the libjpeg is no longer installed."
629         echo "You need to install libjpeg or remove jpgfactory support from"
630         echo "SimGear"
631         echo
632         echo "libjpeg is available at :"
633         echo "  ftp://ftp.uu.net in the directory graphics/jpeg"
634         exit 1
635     fi
636     AC_DEFINE([FG_JPEG_SERVER], 1,
637               [Define to build with jpeg screen shot server])
638 fi
639 AM_CONDITIONAL(ENABLE_JPEG_SERVER, test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes")
640
641 # Check for "plib" without which we cannot go on
642 case "${host}" in
643 *-apple-darwin*)
644     if test "x$with_plib_framework" != "x"; then
645         AC_CHECK_FRAMEWORK(PLIB, [#include <plib/ul.h>], $with_plib_framework, no)
646         plib_FRAMEWORK="$FRAMEWORKS"
647         AC_SUBST(plib_FRAMEWORK)
648         FRAMEWORKS=""
649     fi
650     ;;
651 esac
652 AM_CONDITIONAL(HAVE_FRAMEWORK_PLIB, test "x$ac_cv_framework_PLIB" != "x")
653
654 AC_CHECK_HEADER(plib/ul.h)
655 if test "x$ac_cv_header_plib_ul_h" != "xyes"; then
656     echo
657     echo "You *must* have the plib library installed on your system to build"
658     echo "the FGFS simulator!"
659     echo
660     echo "Please see README.plib for more details."
661     echo
662     echo "configure aborted."
663     exit
664 fi
665
666 echo "$DYLD_FRAMEWORK_PATH"
667 AC_MSG_CHECKING([for plib 1.8.5 or newer])
668 AC_TRY_RUN([
669 #include <plib/ul.h>
670
671 #define MIN_PLIB_VERSION 185
672
673 int main() {
674     if ( PLIB_VERSION < MIN_PLIB_VERSION ) {
675          return -1;
676     }
677
678     return 0;
679 }
680
681 ],
682   AC_MSG_RESULT(yes),
683   [AC_MSG_RESULT(wrong version);
684    AC_MSG_ERROR([Install plib 1.8.5 or later first...])],
685   AC_MSG_RESULT(yes)
686 )
687
688 dnl If we get here then plib is available, so force use of plib
689 dnl joystick lib
690 AC_DEFINE([ENABLE_PLIB_JOYSTICK], 1, [Define to enable plib joystick support])
691
692 # Find the OSG libraries.  Note special handling for OS X frameworks
693 if test "x$with_osg_framework" = "x"; then
694     if test "x$enable_osgdebug" = "xyes"; then
695         AC_CHECK_LIB(OpenThreadsd,OpenThreadsGetVersion, , [AC_MSG_ERROR(OpenThreads library not found.)],)
696         AC_CHECK_LIB(osgd,osgGetVersion, , [AC_MSG_ERROR(OpenSceneGraph library not found.)],)
697         AC_CHECK_LIB(osgUtild,osgUtilGetVersion, , [AC_MSG_ERROR(OpenSceneGraph utility library not found.)],)
698         AC_CHECK_LIB(osgDBd,osgDBGetVersion, , [AC_MSG_ERROR(OpenSceneGraph database library not found.)],)
699         AC_CHECK_LIB(osgTextd,osgTextGetVersion, , [AC_MSG_ERROR(OpenSceneGraph Text library not found.)],)
700         AC_CHECK_LIB(osgGAd,osgGAGetVersion, , [AC_MSG_ERROR(OpenSceneGraph GUI Abstraction library not found.)],)
701         AC_CHECK_LIB(osgViewerd,osgViewerGetVersion, , [AC_MSG_ERROR(OpenSceneGraph Viewer library not found.)],)
702         AC_CHECK_LIB(osgSimd,osgSimGetVersion, , [AC_MSG_ERROR(OpenSceneGraph simulation library not found.)],)
703         AC_CHECK_LIB(osgParticled,osgParticleGetVersion, , [AC_MSG_ERROR(OpenSceneGraph Particle library not found.)],)
704         AC_CHECK_LIB(osgFXd, osgFXGetVersion, , [AC_MSG_ERROR(OpenSceneGraph FX library not found.)],)
705     else
706         AC_CHECK_LIB(OpenThreads,OpenThreadsGetVersion, , [AC_MSG_ERROR(OpenThreads library not found.)],)
707         AC_CHECK_LIB(osg,osgGetVersion, , [AC_MSG_ERROR(OpenSceneGraph library not found.)],)
708         AC_CHECK_LIB(osgUtil,osgUtilGetVersion, , [AC_MSG_ERROR(OpenSceneGraph utility library not found.)],)
709         AC_CHECK_LIB(osgDB,osgDBGetVersion, , [AC_MSG_ERROR(OpenSceneGraph database library not found.)],)
710         AC_CHECK_LIB(osgText,osgTextGetVersion, , [AC_MSG_ERROR(OpenSceneGraph Text library not found.)],)
711         AC_CHECK_LIB(osgGA,osgGAGetVersion, , [AC_MSG_ERROR(OpenSceneGraph GUI Abstraction library not found.)],)
712         AC_CHECK_LIB(osgViewer,osgViewerGetVersion, , [AC_MSG_ERROR(OpenSceneGraph Viewer library not found.)],)
713         AC_CHECK_LIB(osgSim,osgSimGetVersion, , [AC_MSG_ERROR(OpenSceneGraph simulation library not found.)],)
714         AC_CHECK_LIB(osgParticle,osgParticleGetVersion, , [AC_MSG_ERROR(OpenSceneGraph Particle library not found.)],)
715         AC_CHECK_LIB(osgFX, osgFXGetVersion, , [AC_MSG_ERROR(OpenSceneGraph FX library not found.)],)
716     fi
717 else
718     # Checking osg frameworks.
719     AC_CHECK_FRAMEWORK(osgViewer, [#include <osgViewer/Version>], $with_osg_framework)
720     AC_CHECK_FRAMEWORK(osgGA, [#include <osgGA/Version>], $with_osg_framework)
721     AC_CHECK_FRAMEWORK(osgText, [#include <osgText/Version>], $with_osg_framework)
722     AC_CHECK_FRAMEWORK(osgFX, [#include <osgFX/AnisotropicLighting>], $with_osg_framework)
723     AC_CHECK_FRAMEWORK(osgUtil, [#include <osgUtil/Version>], $with_osg_framework)
724     AC_CHECK_FRAMEWORK(osgDB, [#include <osgDB/Version>], $with_osg_framework)
725     AC_CHECK_FRAMEWORK(osgSim, [#include <osgSim/Version>], $with_osg_framework)
726     AC_CHECK_FRAMEWORK(osgParticle, [#include <osgParticle/Version>], $with_osg_framework)
727     AC_CHECK_FRAMEWORK(osg, [#include <osg/Version>], $with_osg_framework)
728     osg_FRAMEWORKS="$FRAMEWORKS"
729     FRAMEWORKS=""
730     AC_CHECK_FRAMEWORK(OpenThreads, [#include <OpenThreads/Version>], $with_osg_framework)
731     openthreads_FRAMEWORK="$FRAMEWORKS"
732     AC_SUBST(osg_FRAMEWORKS)
733     AC_SUBST(openthreads_FRAMEWORK)
734 fi
735 AM_CONDITIONAL(HAVE_FRAMEWORK_OSG, test "x$ac_cv_framework_osg" != "x")
736
737 AC_CHECK_HEADER(osg/Version)
738 if test "x$ac_cv_header_osg_Version" != "xyes"; then
739     echo
740     echo "You *must* have the OpenSceneGraph support library installed on your system"
741     echo "to build the FGFS simulator!"
742     echo
743     echo "Please see README.OSG for more details."
744     echo
745     echo "configure aborted."
746     exit
747 fi
748
749
750 AC_MSG_CHECKING([checking for osg::CullSettings::CLEAR_MASK])
751 AC_COMPILE_IFELSE(
752   [AC_LANG_PROGRAM([[#include <osg/CullSettings>]],
753     [[osg::CullSettings::VariablesMask mask = osg::CullSettings::CLEAR_MASK;]])],
754   [AC_DEFINE([HAVE_CULLSETTINGS_CLEAR_MASK],1,[define if OSG has CullSettings::CLEAR_MASK])
755    AC_MSG_RESULT([yes])],
756   [AC_MSG_RESULT([no])])
757
758 # Special handling for static version of OSG
759 if test -n "`echo "$CPPFLAGS" "$CXXFLAGS" "$CFLAGS" | grep "\-DOSG_LIBRARY_STATIC" 2>/dev/null`" ; then
760     saved_LIBS="$LIBS"
761     LIBS=""
762     #***** Check image support (needed for static build) *****
763     AC_SEARCH_LIBS([jpeg_read_header], [jpeg], [CPPFLAGS="$CPPFLAGS -DOSG_JPEG_ENABLED"])
764     AC_SEARCH_LIBS([png_read_image], [png 'png -lz'], [CPPFLAGS="$CPPFLAGS -DOSG_PNG_ENABLED"])
765     AC_SEARCH_LIBS([TIFFOpen], [tiff], [CPPFLAGS="$CPPFLAGS -DOSG_TIFF_ENABLED"])
766     img_LIBS="$LIBS"
767     LIBS="$saved_LIBS"
768
769     if test "x$with_osg" != "x" ; then
770         osg_prefix="$with_osg"
771     else
772         osg_prefix="/usr"
773     fi
774     PKG_CHECK_EXISTS([openscenegraph], [osg_version="`$PKG_CONFIG --modversion openscenegraph 2>/dev/null`"])
775     LIBS="-L$osg_prefix/lib/osgPlugins-$osg_version -losgdb_bmp -losgdb_dds -losgdb_hdr -losgdb_pic -losgdb_pnm -losgdb_rgb -losgdb_tga \
776                                                           -losgdb_3ds -losgdb_ac -losgdb_ive -losgdb_osg -losgdb_txf \
777                                                           -losgVolume -losgTerrain $LIBS -losgUtil"
778
779     if test -n "`echo "$CPPFLAGS" "$CXXFLAGS" "$CFLAGS" | grep "\-DOSG_JPEG_ENABLED" 2>/dev/null`" ; then
780       LIBS="$LIBS -losgdb_jpeg"
781     fi
782     if test -n "`echo "$CPPFLAGS" "$CXXFLAGS" "$CFLAGS" | grep "\-DOSG_PNG_ENABLED" 2>/dev/null`" ; then
783       LIBS="$LIBS -losgdb_png"
784     fi
785     if test -n "`echo "$CPPFLAGS" "$CXXFLAGS" "$CFLAGS" | grep "\-DOSG_TIFF_ENABLED" 2>/dev/null`" ; then
786       LIBS="$LIBS -losgdb_tiff"
787     fi
788
789     LIBS="$LIBS $img_LIBS"
790 fi
791
792 AC_LANG_POP
793
794 dnl Check for system installed zlib
795 AC_CHECK_HEADER(zlib.h)
796 if test "x$ac_cv_header_zlib_h" != "xyes"; then
797     echo
798     echo "zlib library not found."
799     echo
800     echo "If your OS does not provide an installable package for zlib"
801     echo "you will have to compile and install it first yourself.  A copy"
802     echo "of zlib-1.1.4.tar.gz is included with SimGear.  You will"
803     echo "have to untar this source code, and follow it's included instructions"
804     echo "to compile and install on your system."
805     echo
806     echo "configure aborted."
807     echo
808 fi
809
810 dnl Check for Subversion library support
811 # libsvn support defaults to yes
812 save_LIBS=$LIBS
813 save_CPPFLAGS=$CPPFLAGS
814 AC_ARG_WITH(libsvn, [  --without-libsvn        Do not use libsvn for terrasync [default=no]], [], [with_libsvn=yes])
815 if test "x$with_libsvn" = "xyes"; then
816     LIBS="`apr-1-config --link-ld`"
817     CPPFLAGS="-I/usr/include/subversion-1 `apr-1-config --includes --cppflags`"
818     AC_CHECK_HEADERS([svn_client.h])
819        if test "x$ac_cv_header_svn_client_h" = "xyes"; then
820         echo "TerraSync will use libsvn"
821         AC_SEARCH_LIBS(svn_client_checkout, svn_client-1)
822         AC_SEARCH_LIBS(svn_cmdline_init, svn_subr-1)
823         svn_LIBS=$LIBS
824         svn_CPPFLAGS=$CPPFLAGS
825         AC_SUBST(svn_LIBS)
826         AC_SUBST(svn_CPPFLAGS)
827        else
828         echo "Libsvn not found. TerraSync will use command line subversion"
829         svn_LIBS=""
830         svn_CPPFLAGS=""
831        fi
832 else
833 echo "Libsvn explicitly disabled. TerraSync will use command line subversion"
834   svn_LIBS=""
835   svn_CPPFLAGS=""
836 fi
837 LIBS=$save_LIBS
838 CPPFLAGS=$save_CPPFLAGS
839
840 AC_MSG_CHECKING([for feenableexcept])
841 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#define _GNU_SOURCE
842 #include <fenv.h>]], [[feenableexcept(FE_DIVBYZERO)]])],
843 [AC_DEFINE([HAVE_FEENABLEEXCEPT], 1, [define if system has fenableexcept])],
844 AC_MSG_RESULT([yes]),
845 AC_MSG_RESULT([no]))
846
847 dnl Checks for header files.
848 AC_HEADER_STDC
849 AC_CHECK_HEADERS( \
850         fcntl.h getopt.h malloc.h memory.h stdlib.h sys/param.h sys/stat.h \
851         sys/time.h sys/timeb.h unistd.h windows.h values.h )
852
853 dnl Checks for typedefs, structures, and compiler characteristics.
854 AC_C_CONST
855 AC_TYPE_SIZE_T
856 AC_HEADER_TIME
857 AC_STRUCT_TM
858
859 dnl Checks for library functions.
860 old_LIBS=$LIBS
861 LIBS="$base_LIBS $network_LIBS $opengl_LIBS"
862 AC_TYPE_SIGNAL
863 AC_FUNC_VPRINTF
864 AC_CHECK_FUNCS( [ \
865         ftime gettimeofday timegm memcpy bcopy mktime strstr rand mkfifo \
866         random drand48 setitimer getitimer signal GetLocalTime rint getrusage \
867         truncf ] )
868 LIBS=$old_LIBS
869
870 AM_CONFIG_HEADER(src/Include/config.h)
871
872 AC_CONFIG_FILES([ \
873         Makefile \
874         man/Makefile \
875         man/est-epsilon.1 \
876         man/fgfs.1 \
877         man/fgjs.1 \
878         man/gl-info.1 \
879         man/js_demo.1 \
880         man/pstest.1 \
881         scripts/Makefile \
882         scripts/debug/Makefile \
883         scripts/perl/Makefile \
884         scripts/perl/examples/Makefile \
885         scripts/perl/traffic/Makefile \
886         scripts/python/Makefile \
887         src/Makefile \
888         src/Include/Makefile \
889         src/Include/version.h \
890         src/Aircraft/Makefile \
891         src/Airports/Makefile \
892         src/ATC/Makefile \
893         src/ATCDCL/Makefile \
894         src/Autopilot/Makefile \
895         src/Cockpit/Makefile \
896         src/Cockpit/built_in/Makefile \
897         src/Environment/Makefile \
898         src/FDM/ExternalNet/Makefile \
899         src/FDM/ExternalPipe/Makefile \
900         src/FDM/JSBSim/Makefile \
901         src/FDM/JSBSim/initialization/Makefile \
902         src/FDM/JSBSim/input_output/Makefile \
903         src/FDM/JSBSim/math/Makefile \
904         src/FDM/JSBSim/models/Makefile \
905         src/FDM/JSBSim/models/flight_control/Makefile \
906         src/FDM/JSBSim/models/atmosphere/Makefile \
907         src/FDM/JSBSim/models/propulsion/Makefile \
908         src/FDM/LaRCsim/Makefile \
909         src/FDM/SP/Makefile \
910         src/FDM/UIUCModel/Makefile \
911         src/FDM/YASim/Makefile \
912         src/FDM/Makefile \
913         src/GUI/Makefile \
914         src/Input/Makefile \
915         src/Instrumentation/Makefile \
916         src/Instrumentation/KLN89/Makefile \
917         src/Instrumentation/HUD/Makefile \
918         src/Main/Makefile \
919         src/Main/runfgfs \
920         src/Main/runfgfs.bat \
921         src/Model/Makefile \
922         src/AIModel/Makefile \
923         src/MultiPlayer/Makefile \
924         src/Navaids/Makefile \
925         src/Network/Makefile \
926         src/Network/HLA/Makefile \
927         src/Scenery/Makefile \
928         src/Scripting/Makefile \
929         src/Sound/Makefile \
930         src/Systems/Makefile \
931         src/Time/Makefile \
932         src/Traffic/Makefile \
933         tests/Makefile \
934         utils/Makefile \
935         utils/GPSsmooth/Makefile \
936         utils/fgadmin/Makefile
937         utils/fgadmin/src/Makefile \
938         utils/js_server/Makefile \
939         utils/Modeller/Makefile \
940         utils/propmerge/Makefile \
941         utils/TerraSync/Makefile \
942         utils/xmlgrep/Makefile \
943         utils/fgviewer/Makefile
944 ])
945 AC_OUTPUT
946
947 AC_OUTPUT_COMMANDS([chmod 755 src/Main/runfgfs])
948
949 echo ""
950 echo "Configure Summary"
951 echo "================="
952
953 echo "Prefix: $prefix"
954
955 if test "x$with_logging" != "x"; then
956     echo "Log messages: $with_logging"
957 else
958     echo "Log messages: yes"
959 fi
960
961 echo -n "Automake version: "
962 automake --version | head -n 1
963
964 if test "x$with_multiplayer" != "xno"; then
965     echo "Building with multiplayer support"
966 fi
967
968 if test "x$with_threads" = "xyes"; then
969     echo "Threads: yes"
970 else
971     echo "Threads: no"
972 fi
973
974 if test "x$with_eventinput" = "xyes"; then
975     echo "Event input: yes"
976 else
977     echo "Event input: no"
978 fi
979
980 if test "x$enable_sp_fdms" != "xno"; then
981     echo "Include special purpose flight models: yes"
982 else
983     echo "Include special purpose flight models: no"
984 fi