]> git.mxchange.org Git - flightgear.git/blob - configure.ac
Cmake: restore its original name to the ephemeris library
[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         for rti13libs in "-lRTI-NG -lFedTime" "-lRTI-NGd -lFedTimed" ; do
275             if test "x$hla_libs" = "x" ; then
276                 LIBS="-lsghla13 -lsghla -lsgxml -lsgstructure -lsgmath -lsgdebug -lsgtiming $rti13libs -lrt $saved_LIBS"
277                 AC_TRY_LINK([
278                     #include <simgear/hla/HLA13Federate.hxx>
279                     ],[
280                     new simgear::HLA13Federate;
281                     ], [hla_libs="$rti13libs"; have_rti13=yes],)
282             fi
283         done
284         LIBS="$saved_LIBS"
285         AC_MSG_RESULT($hla_libs)
286     fi
287     AC_LANG_POP()
288 fi
289 dnl Currently only the rti13 variant, but in the future also rti1516
290 AM_CONDITIONAL(WITH_HLA, test "x$have_rti13" = "xyes")
291 if test "x$have_rti13" = "xyes" ; then
292     AC_DEFINE([FG_HAVE_HLA], 1, [Define if HLA/RTI is available.])
293     AC_SUBST(HLA_LIBS, "-lsghla13 -lsghla $hla_libs")
294 fi
295
296 dnl Used by JSBSim to conditionally compile in fgfs interface code
297 AC_DEFINE([FGFS], 1, [Define so that JSBSim compiles in 'library' mode])
298
299 # Check for MS Windows environment
300 AC_CHECK_HEADER(windows.h)
301
302 dnl Using AM_CONDITIONAL is a step out of the protected little
303 dnl automake fold so it is potentially dangerous.  But, we are
304 dnl beginning to run into cases where the standard checks are not
305 dnl enough.  AM_CONDITIONALS are then referenced to conditionally
306 dnl build a Makefile.in from a Makefile.am which lets us define custom
307 dnl includes, compile alternative source files, etc.
308
309 dnl Check for external variables daylight and timezone.
310 AC_EXT_DAYLIGHT
311 if test "$have_daylight" = yes; then
312     AC_DEFINE([HAVE_DAYLIGHT], 1, [Define if system has daylight variable])
313 fi
314
315 AC_EXT_TIMEZONE
316 if test "$have_timezone" = yes; then
317     AC_DEFINE([HAVE_TIMEZONE], 1, [Define if system has timezone variable])
318 fi
319
320
321 dnl add joystick support libraries
322 dnl search for FreeBSD library
323 AC_SEARCH_LIBS(hid_init, usbhid)
324 joystick_LIBS="$LIBS"
325 LIBS=""
326
327
328 dnl ENABLE_AUDIO_SUPPORT could be depricated at any time in favor of
329 dnl just assuming we have audio support on all platform.  We can
330 dnl depend on plib to hide the details.
331 AC_DEFINE([ENABLE_AUDIO_SUPPORT], 1, [Define for audio support])
332
333 dnl X11 might be installed on Mac OS X or cygwin/mingwin, we don't want
334 dnl to use it if it is.
335 case "${host}" in
336 *-apple-darwin* | *-*-cygwin* | *-*-mingw32*)
337     echo no fancy X11 check
338     ;;
339
340 *)
341     AC_PATH_XTRA
342     ;;
343
344 esac
345
346 dnl Checks for libraries.
347
348 dnl Thread related checks
349 AC_SEARCH_LIBS(pthread_create, [pthread c_r])
350 if test "x$ac_cv_header_pthread_h" = "xyes"; then
351   if test "x$ac_cv_search_pthread_exit" = "x-lc_r"; then
352     CXXFLAGS="-pthread $CXXFLAGS"
353     CFLAGS="-pthread $CFLAGS"
354     LIBS="-lsgthreads $LIBS"
355   fi
356 fi
357
358 thread_LIBS="$LIBS"
359 LIBS=""
360
361 dnl search for network related libraries
362 AC_SEARCH_LIBS(inet_addr, xnet)
363 AC_SEARCH_LIBS(socket, socket)
364 AC_SEARCH_LIBS(main, nsl)
365
366 network_LIBS="$LIBS"
367 LIBS=""
368
369 dnl check for some default libraries
370 AC_SEARCH_LIBS(sqrt, [am ffm fm fastm m])
371 AC_SEARCH_LIBS(ceil, m)
372 AC_SEARCH_LIBS(dlclose, dl)
373 AC_SEARCH_LIBS(clock_gettime, rt)
374
375 base_LIBS="$LIBS"
376
377 dnl Check for SDL or glut if enabled.
378 AC_ARG_ENABLE(osgviewer, [  --enable-osgviewer             Configure to use osgViewer (default)], [enable_osgviewer="$enableval"])
379 AC_ARG_ENABLE(sdl,  [  --enable-sdl                   Configure to use SDL], [enable_sdl="$enableval"])
380 AC_ARG_ENABLE(glut, [  --enable-glut                  Configure to use GLUT], [enable_glut="$enableval"])
381 AM_CONDITIONAL(USE_SDL, test "x$enable_sdl" = "xyes")
382 AM_CONDITIONAL(USE_GLUT, test "x$enable_glut" = "xyes")
383 if test "x$enable_sdl" != "xyes" -a "x$enable_glut" != "xyes" -a "x$enable_osgviewer" != "xno"; then
384    enable_osgviewer="yes"
385 fi
386 if test \( "x$enable_osgviewer" = "xyes" \
387    -a \( "x$enable_sdl" = "xyes" -o "x$enable_glut" = "xyes" \) \) \
388    -o \( "x$enable_sdl" = "xyes" -a "x$enable_glut" = "xyes" \); then
389    echo " Only one of --enable-osgviewer, --enable-sdl, or --enable -glut may"
390    echo " be supplied."
391    exit
392 fi
393 AC_DEFINE([PU_USE_NONE], 1, [Define to use application's pu callbacks])
394
395 AC_ARG_ENABLE(osgdebug, [  --enable-osgdebug              Use OSG debug libraries], [enable_osgdebug="$enableval"])
396
397 dnl check for OpenGL related libraries
398 case "${host}" in
399 *-*-cygwin* | *-*-mingw32*)
400     dnl CygWin under Windoze.
401
402     echo Win32 specific hacks...
403     AC_DEFINE([WIN32], 1, [Define for Win32 platforms])
404     AC_DEFINE([NOMINMAX], 1, [Define for Win32 platforms])
405
406     if test "x$enable_sdl" = "xyes"; then
407         AC_SEARCH_LIBS(SDL_Init, SDL)
408     else
409         LIBS="$LIBS -lglut32"
410     fi
411
412     LIBS="$LIBS -lglu32 -lopengl32 -luser32 -lgdi32"
413     joystick_LIBS="$joystick_LIBS -lwinmm"
414
415     dnl add -lwsock32 for mingwin
416     case "${host}" in
417     *-*-mingw32*)
418         echo "********** BUILDING FOR MINGW32 *************"
419         network_LIBS="$network_LIBS -lws2_32"
420         ;;
421     esac
422
423     echo "Will link apps with $LIBS"
424     ;;
425
426
427 *-apple-darwin*)
428     dnl Mac OS X
429
430     LIBS="$LIBS -framework GLUT -framework OpenGL -framework AGL -framework $macAPI -lobjc"
431     LDFLAGS="$LDFLAGS -headerpad_max_install_names"
432     joystick_LIBS="$joystick_LIBS -framework IOKit -framework CoreFoundation"
433     ;;
434
435 *)
436     dnl X-Windows based machines
437
438     dnl Skip X11 library tests if requested.
439     if test "x$no_x" != "xyes"; then
440         AC_SEARCH_LIBS(XCreateWindow, X11)
441         AC_SEARCH_LIBS(XShmCreateImage, Xext)
442         AC_SEARCH_LIBS(XGetExtensionVersion, Xi)
443         AC_SEARCH_LIBS(IceOpenConnection, ICE)
444         AC_SEARCH_LIBS(SmcOpenConnection, SM)
445         AC_SEARCH_LIBS(XtMalloc, Xt)
446         AC_SEARCH_LIBS(XmuLookupStandardColormap, Xmu)
447     fi
448
449     AC_SEARCH_LIBS(glNewList, [ GL GLcore MesaGL ])
450     if test "x$ac_cv_search_glNewList" = "x-lGLcore"; then
451         dnl if GLcore found, then also check for GL
452         AC_SEARCH_LIBS(glXCreateContext, GL)
453     fi
454
455     dnl if using mesa, check for xmesa.h
456     if test "x$ac_cv_search_glNewList" = "x-lMesaGL"; then
457         AC_CHECK_HEADER(GL/fxmesa.h)
458         if test "x$ac_cv_header_GL_fxmesa_h" = "xyes"; then
459             AC_DEFINE([XMESA], 1, [Define for fxmesa])
460             AC_DEFINE([FX], 1, [Define for fxmesa])
461         fi
462     fi
463
464     AC_SEARCH_LIBS(gluLookAt, [ GLU MesaGLU ])
465     AC_SEARCH_LIBS(glutGetModifiers, [ glut freeglut ])
466     if test "x$enable_sdl" = "xyes"; then
467         AC_SEARCH_LIBS(SDL_Init, SDL)
468     fi
469     ;;
470
471 esac
472
473 opengl_LIBS="$LIBS"
474 LIBS="$base_LIBS $joystick_LIBS"
475
476 dnl check for OpenAL libraries
477 OPENAL_OK="no"
478 ALUT_OK="no"
479 case "${host}" in
480 *-*-cygwin* | *-*-mingw32*)
481     dnl CygWin under Windoze.
482     INCLUDES="$INCLUDES -I/usr/local/include/"
483     LIBS="$LIBS -L/usr/local/lib"
484     AC_SEARCH_LIBS(alGenBuffers, [ openal32 openal 'openal -ldsound -lwinmm' ] )
485     AC_SEARCH_LIBS(alutInit, [ openal32 ALut alut ] )
486     LIBS="$LIBS -lwinmm -ldsound -ldxguid -lole32"
487     openal_LIBS="$LIBS"
488     OPENAL_OK="$ac_cv_search_alGenBuffers"
489     ALUT_OK="$ac_cv_search_alutInit"
490     ;;
491
492 *-apple-darwin*)
493     dnl Mac OS X
494
495     # Mac OS X has OpenAL.framework, but no ALUT, by default, so we
496     # require use of a non-Apple ALUT.framework which we provide
497     openal_LIBS="-framework IOKit -framework OpenAL"
498
499     AC_CHECK_FRAMEWORK(OpenAL, [#include <OpenAL/al.h>], "", [OPENAL_OK="yes"])
500     AC_CHECK_FRAMEWORK(ALUT, [#include <ALUT/alut.h>], $with_alut_framework, [
501         ALUT_OK="yes"
502         openal_LIBS="$openal_LIBS -framework ALUT"
503     ])
504     ;;
505
506 *)
507     dnl default unix style machines
508
509     save_LIBS=$LIBS
510     LIBS="$LIBS $thread_LIBS"
511     AC_SEARCH_LIBS(alGenBuffers, openal)
512     AC_SEARCH_LIBS(alutInit, [ alut openal ] )
513     OPENAL_OK="$ac_cv_search_alGenBuffers"
514     ALUT_OK="$ac_cv_search_alutInit"
515     openal_LIBS="$LIBS"
516     LIBS=$save_LIBS
517     ;;
518
519 esac
520
521 if test "$OPENAL_OK" == "no"; then
522     echo
523     echo "You *must* have the openal library installed on your system to build"
524     echo "SimGear!"
525     echo
526     echo "Please see README.OpenAL for more details."
527     echo
528     echo "configure aborted."
529     exit
530 fi
531
532 if test "$ALUT_OK" == "no"; then
533     echo
534     echo "You *must* have the alut library installed on your system to build"
535     echo "SimGear!"
536     echo
537     echo "Please see README.OpenAL for more details."
538     echo
539     echo "configure aborted."
540     exit
541 fi
542
543
544 LIBS="$base_LIBS"
545
546 AC_SUBST(base_LIBS)
547 AC_SUBST(openal_LIBS)
548 AC_SUBST(opengl_LIBS)
549 AC_SUBST(thread_LIBS)
550 AC_SUBST(network_LIBS)
551 AC_SUBST(joystick_LIBS)
552
553 # The following are C++ items that need to be tested for with the c++
554 # compiler
555
556 AC_LANG_PUSH(C++)
557
558 dnl Check for the presence of SimGear
559 if test "x$with_simgear" != "x"; then
560 AC_CHECK_HEADER($with_simgear/include/simgear/version.h, [ac_cv_header_simgear_version_h=yes], [ac_cv_header_simgear_version_h=no])
561 else
562 AC_CHECK_HEADER(simgear/version.h)
563 fi
564 if test "x$ac_cv_header_simgear_version_h" != "xyes"; then
565     echo
566     echo "You *must* have the SimGear support library installed on your system"
567     echo "to build the FGFS simulator!"
568     echo
569     echo "Please see README.SimGear for more details."
570     echo
571     echo "configure aborted."
572     exit
573 fi
574
575 AC_MSG_CHECKING([for SimGear 2.2.0 or newer])
576 AC_TRY_RUN([
577 #include <stdio.h>
578
579 #include <simgear/version.h>
580
581 #define STRINGIFY(X) XSTRINGIFY(X)
582 #define XSTRINGIFY(X) #X
583
584 #define MIN_MAJOR 2
585 #define MIN_MINOR 2
586 #define MIN_MICRO 0
587
588 int main() {
589     int major, minor, micro;
590
591     /* printf("%d.%d.%d or greater, ", MIN_MAJOR, MIN_MINOR, MIN_MICRO); */
592     printf("[found %s] ... ", STRINGIFY(SIMGEAR_VERSION));
593
594     sscanf( STRINGIFY(SIMGEAR_VERSION), "%d.%d.%d", &major, &minor, &micro );
595
596     if ( (major < MIN_MAJOR) ||
597          (major == MIN_MAJOR && minor < MIN_MINOR) ||
598          (major == MIN_MAJOR && minor == MIN_MINOR && micro < MIN_MICRO) ) {
599          return -1;
600     }
601
602     return 0;
603 }
604
605 ],
606   AC_MSG_RESULT(yes),
607   [AC_MSG_RESULT(wrong version);
608    AC_MSG_ERROR([Install latest SimGear first...])],
609   AC_MSG_RESULT(yes)
610 )
611
612 LIBS="$saved_LIBS"
613
614 dnl Check if SimGear was built with Norman's JPEG factory support
615 if test "x$with_simgear" != "x"; then
616 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])
617 else
618 AC_CHECK_HEADER(simgear/screen/jpgfactory.hxx)
619 fi
620 if test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes"; then
621     AC_CHECK_LIB(jpeg, jpeg_start_compress)
622     if test "x$ac_cv_lib_jpeg_jpeg_start_compress" != "xyes" ; then
623         echo
624         echo "The JPEG factory code was built and installed with SimGear."
625         echo "However it appears the libjpeg is no longer installed."
626         echo "You need to install libjpeg or remove jpgfactory support from"
627         echo "SimGear"
628         echo
629         echo "libjpeg is available at :"
630         echo "  ftp://ftp.uu.net in the directory graphics/jpeg"
631         exit 1
632     fi
633     AC_DEFINE([FG_JPEG_SERVER], 1,
634               [Define to build with jpeg screen shot server])
635 fi
636 AM_CONDITIONAL(ENABLE_JPEG_SERVER, test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes")
637
638 # Check for "plib" without which we cannot go on
639 case "${host}" in
640 *-apple-darwin*)
641     if test "x$with_plib_framework" != "x"; then
642         AC_CHECK_FRAMEWORK(PLIB, [#include <plib/ul.h>], $with_plib_framework, no)
643         plib_FRAMEWORK="$FRAMEWORKS"
644         AC_SUBST(plib_FRAMEWORK)
645         FRAMEWORKS=""
646     fi
647     ;;
648 esac
649 AM_CONDITIONAL(HAVE_FRAMEWORK_PLIB, test "x$ac_cv_framework_PLIB" != "x")
650
651 AC_CHECK_HEADER(plib/ul.h)
652 if test "x$ac_cv_header_plib_ul_h" != "xyes"; then
653     echo
654     echo "You *must* have the plib library installed on your system to build"
655     echo "the FGFS simulator!"
656     echo
657     echo "Please see README.plib for more details."
658     echo
659     echo "configure aborted."
660     exit
661 fi
662
663 echo "$DYLD_FRAMEWORK_PATH"
664 AC_MSG_CHECKING([for plib 1.8.5 or newer])
665 AC_TRY_RUN([
666 #include <plib/ul.h>
667
668 #define MIN_PLIB_VERSION 185
669
670 int main() {
671     if ( PLIB_VERSION < MIN_PLIB_VERSION ) {
672          return -1;
673     }
674
675     return 0;
676 }
677
678 ],
679   AC_MSG_RESULT(yes),
680   [AC_MSG_RESULT(wrong version);
681    AC_MSG_ERROR([Install plib 1.8.5 or later first...])],
682   AC_MSG_RESULT(yes)
683 )
684
685 dnl If we get here then plib is available, so force use of plib
686 dnl joystick lib
687 AC_DEFINE([ENABLE_PLIB_JOYSTICK], 1, [Define to enable plib joystick support])
688
689 # Find the OSG libraries.  Note special handling for OS X frameworks
690 if test "x$with_osg_framework" = "x"; then
691     if test "x$enable_osgdebug" = "xyes"; then
692         AC_CHECK_LIB(OpenThreadsd,OpenThreadsGetVersion, , [AC_MSG_ERROR(OpenThreads library not found.)],)
693         AC_CHECK_LIB(osgd,osgGetVersion, , [AC_MSG_ERROR(OpenSceneGraph library not found.)],)
694         AC_CHECK_LIB(osgUtild,osgUtilGetVersion, , [AC_MSG_ERROR(OpenSceneGraph utility library not found.)],)
695         AC_CHECK_LIB(osgDBd,osgDBGetVersion, , [AC_MSG_ERROR(OpenSceneGraph database library not found.)],)
696         AC_CHECK_LIB(osgTextd,osgTextGetVersion, , [AC_MSG_ERROR(OpenSceneGraph Text library not found.)],)
697         AC_CHECK_LIB(osgGAd,osgGAGetVersion, , [AC_MSG_ERROR(OpenSceneGraph GUI Abstraction library not found.)],)
698         AC_CHECK_LIB(osgViewerd,osgViewerGetVersion, , [AC_MSG_ERROR(OpenSceneGraph Viewer library not found.)],)
699         AC_CHECK_LIB(osgSimd,osgSimGetVersion, , [AC_MSG_ERROR(OpenSceneGraph simulation library not found.)],)
700         AC_CHECK_LIB(osgParticled,osgParticleGetVersion, , [AC_MSG_ERROR(OpenSceneGraph Particle library not found.)],)
701         AC_CHECK_LIB(osgFXd, osgFXGetVersion, , [AC_MSG_ERROR(OpenSceneGraph FX library not found.)],)
702     else
703         AC_CHECK_LIB(OpenThreads,OpenThreadsGetVersion, , [AC_MSG_ERROR(OpenThreads library not found.)],)
704         AC_CHECK_LIB(osg,osgGetVersion, , [AC_MSG_ERROR(OpenSceneGraph library not found.)],)
705         AC_CHECK_LIB(osgUtil,osgUtilGetVersion, , [AC_MSG_ERROR(OpenSceneGraph utility library not found.)],)
706         AC_CHECK_LIB(osgDB,osgDBGetVersion, , [AC_MSG_ERROR(OpenSceneGraph database library not found.)],)
707         AC_CHECK_LIB(osgText,osgTextGetVersion, , [AC_MSG_ERROR(OpenSceneGraph Text library not found.)],)
708         AC_CHECK_LIB(osgGA,osgGAGetVersion, , [AC_MSG_ERROR(OpenSceneGraph GUI Abstraction library not found.)],)
709         AC_CHECK_LIB(osgViewer,osgViewerGetVersion, , [AC_MSG_ERROR(OpenSceneGraph Viewer library not found.)],)
710         AC_CHECK_LIB(osgSim,osgSimGetVersion, , [AC_MSG_ERROR(OpenSceneGraph simulation library not found.)],)
711         AC_CHECK_LIB(osgParticle,osgParticleGetVersion, , [AC_MSG_ERROR(OpenSceneGraph Particle library not found.)],)
712         AC_CHECK_LIB(osgFX, osgFXGetVersion, , [AC_MSG_ERROR(OpenSceneGraph FX library not found.)],)
713     fi
714 else
715     # Checking osg frameworks.
716     AC_CHECK_FRAMEWORK(osgViewer, [#include <osgViewer/Version>], $with_osg_framework)
717     AC_CHECK_FRAMEWORK(osgGA, [#include <osgGA/Version>], $with_osg_framework)
718     AC_CHECK_FRAMEWORK(osgText, [#include <osgText/Version>], $with_osg_framework)
719     AC_CHECK_FRAMEWORK(osgFX, [#include <osgFX/AnisotropicLighting>], $with_osg_framework)
720     AC_CHECK_FRAMEWORK(osgUtil, [#include <osgUtil/Version>], $with_osg_framework)
721     AC_CHECK_FRAMEWORK(osgDB, [#include <osgDB/Version>], $with_osg_framework)
722     AC_CHECK_FRAMEWORK(osgSim, [#include <osgSim/Version>], $with_osg_framework)
723     AC_CHECK_FRAMEWORK(osgParticle, [#include <osgParticle/Version>], $with_osg_framework)
724     AC_CHECK_FRAMEWORK(osg, [#include <osg/Version>], $with_osg_framework)
725     osg_FRAMEWORKS="$FRAMEWORKS"
726     FRAMEWORKS=""
727     AC_CHECK_FRAMEWORK(OpenThreads, [#include <OpenThreads/Version>], $with_osg_framework)
728     openthreads_FRAMEWORK="$FRAMEWORKS"
729     AC_SUBST(osg_FRAMEWORKS)
730     AC_SUBST(openthreads_FRAMEWORK)
731 fi
732 AM_CONDITIONAL(HAVE_FRAMEWORK_OSG, test "x$ac_cv_framework_osg" != "x")
733
734 AC_CHECK_HEADER(osg/Version)
735 if test "x$ac_cv_header_osg_Version" != "xyes"; then
736     echo
737     echo "You *must* have the OpenSceneGraph support library installed on your system"
738     echo "to build the FGFS simulator!"
739     echo
740     echo "Please see README.OSG for more details."
741     echo
742     echo "configure aborted."
743     exit
744 fi
745
746
747 AC_MSG_CHECKING([checking for osg::CullSettings::CLEAR_MASK])
748 AC_COMPILE_IFELSE(
749   [AC_LANG_PROGRAM([[#include <osg/CullSettings>]],
750     [[osg::CullSettings::VariablesMask mask = osg::CullSettings::CLEAR_MASK;]])],
751   [AC_DEFINE([HAVE_CULLSETTINGS_CLEAR_MASK],1,[define if OSG has CullSettings::CLEAR_MASK])
752    AC_MSG_RESULT([yes])],
753   [AC_MSG_RESULT([no])])
754
755 # Special handling for static version of OSG
756 if test -n "`echo "$CPPFLAGS" "$CXXFLAGS" "$CFLAGS" | grep "\-DOSG_LIBRARY_STATIC" 2>/dev/null`" ; then
757     saved_LIBS="$LIBS"
758     LIBS=""
759     #***** Check image support (needed for static build) *****
760     AC_SEARCH_LIBS([jpeg_read_header], [jpeg], [CPPFLAGS="$CPPFLAGS -DOSG_JPEG_ENABLED"])
761     AC_SEARCH_LIBS([png_read_image], [png 'png -lz'], [CPPFLAGS="$CPPFLAGS -DOSG_PNG_ENABLED"])
762     AC_SEARCH_LIBS([TIFFOpen], [tiff], [CPPFLAGS="$CPPFLAGS -DOSG_TIFF_ENABLED"])
763     img_LIBS="$LIBS"
764     LIBS="$saved_LIBS"
765
766     if test "x$with_osg" != "x" ; then
767         osg_prefix="$with_osg"
768     else
769         osg_prefix="/usr"
770     fi
771     PKG_CHECK_EXISTS([openscenegraph], [osg_version="`$PKG_CONFIG --modversion openscenegraph 2>/dev/null`"])
772     LIBS="-L$osg_prefix/lib/osgPlugins-$osg_version -losgdb_bmp -losgdb_dds -losgdb_hdr -losgdb_pic -losgdb_pnm -losgdb_rgb -losgdb_tga \
773                                                           -losgdb_3ds -losgdb_ac -losgdb_ive -losgdb_osg -losgdb_txf \
774                                                           -losgVolume -losgTerrain $LIBS -losgUtil"
775
776     if test -n "`echo "$CPPFLAGS" "$CXXFLAGS" "$CFLAGS" | grep "\-DOSG_JPEG_ENABLED" 2>/dev/null`" ; then
777       LIBS="$LIBS -losgdb_jpeg"
778     fi
779     if test -n "`echo "$CPPFLAGS" "$CXXFLAGS" "$CFLAGS" | grep "\-DOSG_PNG_ENABLED" 2>/dev/null`" ; then
780       LIBS="$LIBS -losgdb_png"
781     fi
782     if test -n "`echo "$CPPFLAGS" "$CXXFLAGS" "$CFLAGS" | grep "\-DOSG_TIFF_ENABLED" 2>/dev/null`" ; then
783       LIBS="$LIBS -losgdb_tiff"
784     fi
785
786     LIBS="$LIBS $img_LIBS"
787 fi
788
789 AC_LANG_POP
790
791 dnl Check for system installed zlib
792 AC_CHECK_HEADER(zlib.h)
793 if test "x$ac_cv_header_zlib_h" != "xyes"; then
794     echo
795     echo "zlib library not found."
796     echo
797     echo "If your OS does not provide an installable package for zlib"
798     echo "you will have to compile and install it first yourself.  A copy"
799     echo "of zlib-1.1.4.tar.gz is included with SimGear.  You will"
800     echo "have to untar this source code, and follow it's included instructions"
801     echo "to compile and install on your system."
802     echo
803     echo "configure aborted."
804     echo
805 fi
806
807 dnl Check for Subversion library support
808 # libsvn support defaults to yes
809 save_LIBS=$LIBS
810 save_CPPFLAGS=$CPPFLAGS
811 AC_ARG_WITH(libsvn, [  --without-libsvn        Do not use libsvn for terrasync [default=no]], [], [with_libsvn=yes])
812 if test "x$with_libsvn" = "xyes"; then
813     LIBS="`apr-1-config --link-ld`"
814     CPPFLAGS="-I/usr/include/subversion-1 `apr-1-config --includes --cppflags`"
815     AC_CHECK_HEADERS([svn_client.h])
816        if test "x$ac_cv_header_svn_client_h" = "xyes"; then
817         echo "TerraSync will use libsvn"
818         AC_SEARCH_LIBS(svn_client_checkout, svn_client-1)
819         AC_SEARCH_LIBS(svn_cmdline_init, svn_subr-1)
820         svn_LIBS=$LIBS
821         svn_CPPFLAGS=$CPPFLAGS
822         AC_SUBST(svn_LIBS)
823         AC_SUBST(svn_CPPFLAGS)
824        else
825         echo "Libsvn not found. TerraSync will use command line subversion"
826         svn_LIBS=""
827         svn_CPPFLAGS=""
828        fi
829 else
830 echo "Libsvn explicitly disabled. TerraSync will use command line subversion"
831   svn_LIBS=""
832   svn_CPPFLAGS=""
833 fi
834 LIBS=$save_LIBS
835 CPPFLAGS=$save_CPPFLAGS
836
837 AC_MSG_CHECKING([for feenableexcept])
838 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#define _GNU_SOURCE
839 #include <fenv.h>]], [[feenableexcept(FE_DIVBYZERO)]])],
840 [AC_DEFINE([HAVE_FEENABLEEXCEPT], 1, [define if system has fenableexcept])],
841 AC_MSG_RESULT([yes]),
842 AC_MSG_RESULT([no]))
843
844 dnl Checks for header files.
845 AC_HEADER_STDC
846 AC_CHECK_HEADERS( \
847         fcntl.h getopt.h malloc.h memory.h stdlib.h sys/param.h sys/stat.h \
848         sys/time.h sys/timeb.h unistd.h windows.h values.h )
849
850 dnl Checks for typedefs, structures, and compiler characteristics.
851 AC_C_CONST
852 AC_TYPE_SIZE_T
853 AC_HEADER_TIME
854 AC_STRUCT_TM
855
856 dnl Checks for library functions.
857 old_LIBS=$LIBS
858 LIBS="$base_LIBS $network_LIBS $opengl_LIBS"
859 AC_TYPE_SIGNAL
860 AC_FUNC_VPRINTF
861 AC_CHECK_FUNCS( [ \
862         ftime gettimeofday timegm memcpy bcopy mktime strstr rand mkfifo \
863         random drand48 setitimer getitimer signal GetLocalTime rint getrusage \
864         truncf ] )
865 LIBS=$old_LIBS
866
867 AM_CONFIG_HEADER(src/Include/config.h)
868
869 AC_CONFIG_FILES([ \
870         Makefile \
871         man/Makefile \
872         man/est-epsilon.1 \
873         man/fgfs.1 \
874         man/fgjs.1 \
875         man/gl-info.1 \
876         man/js_demo.1 \
877         man/pstest.1 \
878         scripts/Makefile \
879         scripts/debug/Makefile \
880         scripts/perl/Makefile \
881         scripts/perl/examples/Makefile \
882         scripts/perl/traffic/Makefile \
883         scripts/python/Makefile \
884         src/Makefile \
885         src/Include/Makefile \
886         src/Include/version.h \
887         src/Aircraft/Makefile \
888         src/Airports/Makefile \
889         src/ATC/Makefile \
890         src/ATCDCL/Makefile \
891         src/Autopilot/Makefile \
892         src/Cockpit/Makefile \
893         src/Cockpit/built_in/Makefile \
894         src/Environment/Makefile \
895         src/FDM/ExternalNet/Makefile \
896         src/FDM/ExternalPipe/Makefile \
897         src/FDM/JSBSim/Makefile \
898         src/FDM/JSBSim/initialization/Makefile \
899         src/FDM/JSBSim/input_output/Makefile \
900         src/FDM/JSBSim/math/Makefile \
901         src/FDM/JSBSim/models/Makefile \
902         src/FDM/JSBSim/models/flight_control/Makefile \
903         src/FDM/JSBSim/models/atmosphere/Makefile \
904         src/FDM/JSBSim/models/propulsion/Makefile \
905         src/FDM/LaRCsim/Makefile \
906         src/FDM/SP/Makefile \
907         src/FDM/UIUCModel/Makefile \
908         src/FDM/YASim/Makefile \
909         src/FDM/Makefile \
910         src/GUI/Makefile \
911         src/Input/Makefile \
912         src/Instrumentation/Makefile \
913         src/Instrumentation/KLN89/Makefile \
914         src/Instrumentation/HUD/Makefile \
915         src/Main/Makefile \
916         src/Main/runfgfs \
917         src/Main/runfgfs.bat \
918         src/Model/Makefile \
919         src/AIModel/Makefile \
920         src/MultiPlayer/Makefile \
921         src/Navaids/Makefile \
922         src/Network/Makefile \
923         src/Network/HLA/Makefile \
924         src/Scenery/Makefile \
925         src/Scripting/Makefile \
926         src/Sound/Makefile \
927         src/Systems/Makefile \
928         src/Time/Makefile \
929         src/Traffic/Makefile \
930         tests/Makefile \
931         utils/Makefile \
932         utils/GPSsmooth/Makefile \
933         utils/fgadmin/Makefile
934         utils/fgadmin/src/Makefile \
935         utils/js_server/Makefile \
936         utils/Modeller/Makefile \
937         utils/propmerge/Makefile \
938         utils/TerraSync/Makefile \
939         utils/xmlgrep/Makefile \
940         utils/fgviewer/Makefile
941 ])
942 AC_OUTPUT
943
944 AC_OUTPUT_COMMANDS([chmod 755 src/Main/runfgfs])
945
946 echo ""
947 echo "Configure Summary"
948 echo "================="
949
950 echo "Prefix: $prefix"
951
952 if test "x$with_logging" != "x"; then
953     echo "Log messages: $with_logging"
954 else
955     echo "Log messages: yes"
956 fi
957
958 echo -n "Automake version: "
959 automake --version | head -n 1
960
961 if test "x$with_multiplayer" != "xno"; then
962     echo "Building with multiplayer support"
963 fi
964
965 if test "x$with_threads" = "xyes"; then
966     echo "Threads: yes"
967 else
968     echo "Threads: no"
969 fi
970
971 if test "x$with_eventinput" = "xyes"; then
972     echo "Event input: yes"
973 else
974     echo "Event input: no"
975 fi
976
977 if test "x$enable_sp_fdms" != "xno"; then
978     echo "Include special purpose flight models: yes"
979 else
980     echo "Include special purpose flight models: no"
981 fi