]> git.mxchange.org Git - simgear.git/blob - configure.ac
Merge branch 'master' into next
[simgear.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([simgear/bucket/newbucket.cxx])
6
7 dnl Require at least automake 2.52
8 AC_PREREQ(2.52)
9
10 dnl Initialize the automake stuff
11 AM_INIT_AUTOMAKE(SimGear, 1.9.1)
12
13 dnl Specify KAI C++ compiler and flags.
14 dnl Borrowed with slight modification from blitz distribution.
15 AC_ARG_WITH(cxx,
16   [  --with-cxx=COMPILER[:name-flags] set options for COMPILER (KCC)],
17   [case "$withval" in
18     KCC*)    # KAI C++ http://www.kai.com/
19       echo "Configuring for KAI C++"
20       AC_SG_SET_COMPILER($withval,"KCC","--restrict --strict_warnings")
21       CXX_OPTIMIZE_FLAGS=="+K3 -O3"
22       CXX_DEBUG_FLAGS="-g +K0"
23     ;;
24   esac
25 ])
26
27 AC_MSG_CHECKING([CXX])
28 AC_MSG_RESULT([$CXX])
29 AC_MSG_CHECKING([CC])
30 AC_MSG_RESULT([$CC])
31
32 dnl Checks for programs.
33 AC_PROG_MAKE_SET
34 AC_PROG_CC
35 AC_PROG_CPP
36 AC_PROG_CXX
37 AC_PROG_RANLIB
38 AC_PROG_INSTALL
39 AC_PROG_LN_S
40 AX_BOOST_BASE([1.34.0])
41
42 if test "x$BOOST_CPPFLAGS" != "x-I/usr/include" ; then
43    CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
44 fi
45
46 dnl set the $host variable based on local machine/os
47 AC_CANONICAL_HOST
48
49 dnl Used on the Irix platform
50 case "${host}" in
51 *-*-irix*)
52     if test "x$CXX" = "xCC" -o "x$CXX" = "xccache CC"; then
53         AR="$CXX -ar"
54         ARFLAGS="-o"
55         CXXFLAGS="$CXXFLAGS -I$(top_srcdir)/simgear/compatibility/MIPSpro740"
56         compatibility_DIR="compatibility"
57         MIPSpro_DIRS="MIPSpro740"
58         AC_MSG_CHECKING([for MIPSpro compiler version 7.4 or newer])
59         AC_TRY_RUN([
60            int main() {
61               if ( _COMPILER_VERSION < 740 ) {
62                  return -1;
63               }
64               return 0;
65            }
66
67         ], AC_MSG_RESULT(yes),
68         [  AC_MSG_RESULT(no)
69            CXXFLAGS="$CXXFLAGS -I$(top_srcdir)/simgear/compatibility/MIPSpro721"
70            MIPSpro_DIRS="$(MIPSpro_DIRS) MIPSpro721"
71            AC_MSG_WARN([Using our own subset of the STL headers])
72         ], AC_MSG_RESULT(yes))
73         AC_SUBST(MIPSpro_DIRS)
74     fi
75     ;;
76 *)
77     AR="ar"
78     ARFLAGS="cru"
79     compatibility_DIR=
80     ;;
81 esac
82 AC_SUBST(AR)
83 AC_SUBST(ARFLAGS)
84 AC_SUBST(compatibility_DIR)
85
86 if echo $includedir | egrep "simgear$" > /dev/null; then
87     echo "includedir is" $includedir "libdir is" $libdir
88 else
89     includedir="${includedir}/simgear"
90     echo "includedir changed to" $includedir "libdir is" $libdir
91 fi
92          
93 dnl set logging; default value of with_logging=yes
94 AC_ARG_WITH(logging, [  --with-logging          Include logging output (default)])
95 if test "x$with_logging" = "xno" ; then
96     AC_DEFINE([FG_NDEBUG], 1, [Define for no logging output])
97 fi
98
99 # Specify if we want to build with Norman's jpeg image server support.
100 # This requires libjpeg to be installed and available.
101 # Default to with_jpeg_server=no
102 JPEGLIB=''
103 AC_ARG_WITH(jpeg_factory, [  --with-jpeg-factory     Include Norman's jpeg image factory support code])
104 if test "x$with_jpeg_factory" = "xyes" ; then
105     echo "Building with Norman's jpeg image factory support"
106     AC_CHECK_LIB(jpeg, jpeg_start_compress)
107     if test "x$ac_cv_lib_jpeg_jpeg_start_compress" != "xyes" ; then
108         echo
109         echo "In order to build the jpeg factory code you need libjpeg installed."
110         echo "otherwise please configure with the --with-jpeg-sever=no option"
111         echo
112         echo "libjpeg is available at :"
113         echo "  ftp://ftp.uu.net in the directory graphics/jpeg"
114         exit 1
115     fi
116 else
117     echo "Building without Norman's jpeg image server support"
118 fi
119 AM_CONDITIONAL(ENABLE_JPEG_SERVER, test "x$with_jpeg_factory" = "xyes")
120
121 # specify the plib location
122 AC_ARG_WITH(plib, [  --with-plib=PREFIX      Specify the prefix path to plib])
123
124 if test "x$with_plib" != "x" ; then
125     echo "plib prefix is $with_plib"
126     EXTRA_DIRS="${EXTRA_DIRS} $with_plib"
127 fi
128
129 AC_ARG_WITH(plib_framework, [ --with-plib-framework=PREFIX      Specify the prefix path to PLIB.framework ])
130
131 if test "x$with_plib_framework" != "x"; then
132     echo "plib framework prefix is $with_plib_framework"
133 fi
134
135 # specify the osg location
136 AC_ARG_WITH(osg, [  --with-osg=PREFIX       Specify the prefix path to osg])
137
138 if test "x$with_osg" != "x" ; then
139     echo "osg prefix is $with_osg"
140     EXTRA_DIRS="${EXTRA_DIRS} $with_osg"
141 fi
142
143 AC_ARG_WITH(osg_framework, [ --with-osg-framework=PREFIX      Specify the prefix path to OSG.framework ])
144
145 if test "x$with_osg_framework" != "x"; then
146     echo "osg framework prefix is $with_osg_framework"
147 fi
148
149 dnl Determine an extra directories to add to include/lib search paths
150 case "${host}" in
151 *-apple-darwin* | *-*-cygwin* | *-*-mingw32*)
152     echo no EXTRA_DIRS for $host
153     ;;
154
155 *)
156     if test -d /usr/X11R6 ; then
157         EXTRA_DIR1="/usr/X11R6"
158     fi
159     if test -d /opt/X11R6 ; then
160         EXTRA_DIR2="/opt/X11R6"
161     fi
162     EXTRA_DIRS="${EXTRA_DIRS} $EXTRA_DIR1 $EXTRA_DIR2"
163     ;;
164
165 esac
166 wi_EXTRA_DIRS(no, ${EXTRA_DIRS})
167
168
169 dnl Using AM_CONDITIONAL is a step out of the protected little 
170 dnl automake fold so it is potentially dangerous.  But, we are
171 dnl beginning to run into cases where the standard checks are not
172 dnl enough.  AM_CONDITIONALS are then referenced to conditionally
173 dnl build a Makefile.in from a Makefile.am which lets us define custom
174 dnl includes, compile alternative source files, etc.
175
176 dnl X11 might be installed on Mac OS X or cygwin/mingwin, we don't want
177 dnl to use it if it is.
178 case "${host}" in
179 *-apple-darwin* | *-*-cygwin* | *-*-mingw32*)
180     echo no fancy X11 check
181     ;;
182
183 *)
184     AC_PATH_XTRA
185     ;;
186
187 esac
188
189 dnl Checks for libraries.
190
191 dnl Thread related checks
192 AC_CHECK_HEADER(pthread.h)
193 AC_SEARCH_LIBS(pthread_exit, [pthread c_r])
194 if test "x$ac_cv_header_pthread_h" = "xyes"; then
195     CXXFLAGS="$CXXFLAGS -D_REENTRANT"
196     CFLAGS="$CFLAGS -D_REENTRANT"
197
198   if test "x$ac_cv_search_pthread_exit" = "x-lc_r"; then
199     CXXFLAGS="-pthread $CXXFLAGS"
200     CFLAGS="-pthread $CFLAGS"
201   fi
202 fi
203
204 AM_CONDITIONAL(HAVE_THREADS, test "x$ac_cv_header_pthread_h" = "xyes")
205
206 thread_LIBS="$LIBS"
207 LIBS=""
208
209 dnl search for network related libraries
210 AC_SEARCH_LIBS(inet_addr, xnet)
211 AC_SEARCH_LIBS(socket, socket)
212
213 network_LIBS="$LIBS"
214 LIBS=""
215
216 dnl check for some default libraries
217 AC_SEARCH_LIBS(cos, m)
218 AC_SEARCH_LIBS(clock_gettime, rt)
219
220 base_LIBS="$LIBS"
221
222 dnl check for OpenGL related libraries
223 case "${host}" in
224 *-*-cygwin* | *-*-mingw32*)
225     dnl CygWin under Windoze.
226
227     echo Win32 specific hacks...
228     AC_DEFINE([WIN32], 1, [Define for Win32 platforms])
229     AC_DEFINE([NOMINMAX], 1, [Define for Win32 platforms])
230
231     LIBS="$LIBS -lglu32 -lopengl32"
232     LIBS="$LIBS -luser32 -lgdi32 -lwinmm"
233
234     dnl add -lwsock32 for mingwin
235     case "${host}" in
236     *-*-mingw32*)
237         base_LIBS="$base_LIBS -lws2_32"
238         ;;
239     esac
240
241     echo "Will link apps with $LIBS"
242     ;;
243
244 *-apple-darwin*)
245     dnl Mac OS X
246
247     LIBS="$LIBS -framework OpenGL -framework Carbon -lobjc"
248     ;;
249
250 *)
251     dnl X-Windows based machines
252
253     AC_SEARCH_LIBS(XCreateWindow, X11)
254     AC_SEARCH_LIBS(XShmCreateImage, Xext)
255     AC_SEARCH_LIBS(XGetExtensionVersion, Xi)
256     AC_SEARCH_LIBS(IceOpenConnection, ICE)
257     AC_SEARCH_LIBS(SmcOpenConnection, SM)
258     AC_SEARCH_LIBS(XtMalloc, Xt)
259     AC_SEARCH_LIBS(XmuLookupStandardColormap, Xmu)
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     ;;
278
279 esac
280
281 AC_SEARCH_LIBS(glutGetModifiers, [ glut glut32 freeglut ], have_glut=yes, have_glut=no)
282 AM_CONDITIONAL(HAVE_GLUT, test "x$have_glut" = "xyes")
283
284 opengl_LIBS="$LIBS"
285 LIBS="$base_LIBS"
286
287 dnl check for OpenAL libraries
288 OPENAL_OK="no"
289 ALUT_OK="no"
290 case "${host}" in
291 *-*-cygwin* | *-*-mingw32*)
292     dnl CygWin under Windoze.
293     INCLUDES="$INCLUDES -I/usr/local/include/"
294     LIBS="$LIBS -L/usr/local/lib"
295     AC_SEARCH_LIBS(alGenBuffers, [ openal32 openal ] )
296     AC_SEARCH_LIBS(alutInit, [ openal32 ALut alut ] )
297     LIBS="$LIBS -lwinmm -ldsound -ldxguid -lole32"
298     openal_LIBS="$LIBS"
299     OPENAL_OK="$ac_cv_search_alGenBuffers"
300     ALUT_OK="$ac_cv_search_alutInit"
301     ;;
302
303 *-apple-darwin*)
304     dnl Mac OS X
305
306     LIBS="$LIBS -framework IOKit -framework OpenAL"
307     openal_LIBS="$LIBS"
308     # not sure how to test if OpenAL exists on MacOS (does it come by default?)
309     OPENAL_OK="yes"
310     ALUT_OK="yes"
311
312     dnl Thank you Christian Bauer from SheepSaver
313     dnl Modified by Tatsuhiro Nishioka for accepting a given framework path
314     dnl AC_CHECK_FRAMEWORK($1=NAME, $2=INCLUDES, $3=FRAMEWORK_PATH) ; $3 is optional
315     AC_DEFUN([AC_CHECK_FRAMEWORK], [
316     AS_VAR_PUSHDEF([ac_Framework], [ac_cv_framework_$1])dnl
317     AC_CACHE_CHECK([whether compiler supports framework $1],
318         ac_Framework, [
319         saved_LIBS="$LIBS"
320         FRAMEWORKS="$FRAMEWORKS -framework $1"
321         if test "$3" = ""; then
322             FRAMEWORKS="$FRAMEWORKS $ADD2LD"
323         elif test "`echo $FRAMEWORKS | grep -- -F$3`" = ""; then
324             FRAMEWORKS="$FRAMEWORKS -F$3"
325             CXXFLAGS="$CXXFLAGS -F$3"
326             CCFLAGS="$CCFLAGS -F$3"
327             dnl This is needed for AC_TRY_LINK when a framework path is specified
328             export DYLD_FRAMEWORK_PATH="${DYLD_FRAMEWORK_PATH}:$3"
329         fi
330         AC_TRY_LINK(
331         [$2], [],
332         [AS_VAR_SET(ac_Framework, yes)], [AS_VAR_SET(ac_Framework, no); LIBS="$saved_LIBS"]
333         )
334     ])
335     AS_IF([test AS_VAR_GET(ac_Framework) = yes],
336         [AC_DEFINE(AS_TR_CPP(HAVE_FRAMEWORK_$1), 1, [Define if framework $1 is available.])]
337     )
338     AS_VAR_POPDEF([ac_Framework])dnl
339     ])
340
341     ;;
342
343 *)
344     dnl default unix style machines
345
346     save_LIBS=$LIBS
347     LIBS="$LIBS $thread_LIBS"
348     AC_SEARCH_LIBS(alGenBuffers, openal)
349     AC_SEARCH_LIBS(alutInit, [ alut openal ] )
350     OPENAL_OK="$ac_cv_search_alGenBuffers"
351     ALUT_OK="$ac_cv_search_alutInit"
352     openal_LIBS="$LIBS"
353     LIBS=$save_LIBS
354     ;;
355
356 esac
357
358 if test "$OPENAL_OK" == "no"; then
359     echo
360     echo "You *must* have the openal library installed on your system to build"
361     echo "SimGear!"
362     echo
363     echo "Please see README.OpenAL for more details."
364     echo
365     echo "configure aborted."
366     exit
367 fi
368
369 if test "$ALUT_OK" == "no"; then
370     echo
371     echo "You *must* have the alut library installed on your system to build"
372     echo "SimGear!"
373     echo
374     echo "Please see README.OpenAL for more details."
375     echo
376     echo "configure aborted."
377     exit
378 fi
379
380
381
382 LIBS="$base_LIBS"
383
384 AC_SUBST(base_LIBS)
385 AC_SUBST(openal_LIBS)
386 AC_SUBST(opengl_LIBS)
387 AC_SUBST(thread_LIBS)
388 AC_SUBST(network_LIBS)
389
390 dnl Check for MS Windows environment
391 AC_CHECK_HEADER(windows.h)
392 AM_CONDITIONAL(EXTGL_NEEDED, test "x$ac_cv_header_windows_h" = "xyes")
393
394 # The following are C++ items that need to be tested for with the c++
395 # compiler
396
397 CXXCPP="g++ -E"
398 AC_LANG_PUSH(C++)
399
400 dnl Check for "plib" without which we cannot go on
401 case ${host} in 
402 *-apple-darwin*)
403     # Check PLIB framework availability when with-plib-framework is specified 
404     if test "x$with_plib_framework" != "x"; then
405         AC_CHECK_FRAMEWORK(PLIB, [#include <plib/ul.h>], $with_plib_framework)
406         plib_FRAMEWORK="$FRAMEWORKS"
407         FRAMEWORKS=""
408         AC_SUBST(plib_FRAMEWORK)
409     fi
410     ;;
411 esac
412 AM_CONDITIONAL(HAVE_FRAMEWORK_PLIB, test "x$ac_cv_framework_PLIB" != "x")
413
414 AC_CHECK_HEADER(plib/ul.h)
415 if test "x$ac_cv_header_plib_ul_h" != "xyes"; then
416     echo
417     echo "You *must* have the plib library installed on your system to build"
418     echo "SimGear!"
419     echo
420     echo "Please see README.plib for more details."
421     echo
422     echo "configure aborted."
423     exit
424 fi
425
426 AC_MSG_CHECKING([for plib 1.8.5 or newer])
427 AC_TRY_RUN([
428 #include <plib/ul.h>
429
430 #define MIN_PLIB_VERSION 185
431
432 int main() {
433     if ( PLIB_VERSION < MIN_PLIB_VERSION ) {
434          return -1;
435     }
436
437     return 0;
438 }
439
440 ],
441   AC_MSG_RESULT(yes),
442   [AC_MSG_RESULT(wrong version);
443    AC_MSG_ERROR([Install plib 1.8.5 or later first...])],
444   AC_MSG_RESULT(yes)
445 )
446
447 LIBS="$saved_LIBS"
448
449 # OpenSceneGraph
450 case "${host}" in
451 *-apple-darwin*)
452     if test "x$with_osg_framework" != "x"; then
453         AC_CHECK_FRAMEWORK(osgViewer, [#include <osgViewer/Version>], $with_osg_framework)
454         AC_CHECK_FRAMEWORK(osgGA, [#include <osgGA/Version>], $with_osg_framework)
455         AC_CHECK_FRAMEWORK(osgText, [#include <osgText/Version>], $with_osg_framework)
456         AC_CHECK_FRAMEWORK(osgFX, [#include <osgFX/AnisotropicLighting>], $with_osg_framework)
457         AC_CHECK_FRAMEWORK(osgUtil, [#include <osgUtil/Version>], $with_osg_framework)
458         AC_CHECK_FRAMEWORK(osgDB, [#include <osgDB/Version>], $with_osg_framework)
459         AC_CHECK_FRAMEWORK(osgSim, [#include <osgSim/Version>], $with_osg_framework)
460         AC_CHECK_FRAMEWORK(osgParticle, [#include <osgParticle/Version>], $with_osg_framework)
461         AC_CHECK_FRAMEWORK(osg, [#include <osg/Version>], $with_osg_framework)
462         osg_FRAMEWORKS="$FRAMEWORKS"
463         FRAMEWORKS=""
464         AC_SUBST(osg_FRAMEWORKS)
465         AC_CHECK_FRAMEWORK(OpenThreads, [#include <OpenThreads/Version>], $with_osg_framework)
466         openthreads_FRAMEWORK="$FRAMEWORKS"
467         FRAMEWORKS=""
468         AC_SUBST(openthreads_FRAMEWORK)
469     else
470         dnl
471         dnl This is needed when osg dynamic libs are specified 
472         dnl instead of OSG frameworks on Mac OS X
473         dnl
474         LDFLAGS="$LDFLAGS -L$with_osg"
475     fi
476     ;;
477 esac
478 AM_CONDITIONAL(HAVE_FRAMEWORK_OSG, test "x$ac_cv_framework_osg" != "x")
479
480 AC_CHECK_HEADER(osg/Version)
481 if test "x$ac_cv_header_osg_Version" != "xyes"; then
482   if test "x$ac_cv_framework_osg" != "xyes"; then
483     echo
484     echo "You *must* have the OpenSceneGraph support library installed on your system"
485     echo "to build this version of SimGear!"
486     echo
487     echo "Please see README.OSG for more details."
488     echo
489     echo "configure aborted."
490     exit
491   fi
492 fi
493
494 AC_CHECK_HEADER(boost/version.hpp)
495 if test "x$ac_cv_header_boost_version_hpp" != "xyes"; then
496     echo
497     echo "You *must* have the Boost library installed on your system"
498     echo "to build this version of SimGear!"
499     echo
500     echo "configure aborted."
501     exit
502 fi
503
504 AC_LANG_POP
505
506 dnl Check for system installed zlib
507 AC_CHECK_HEADER(zlib.h)
508 if test "x$ac_cv_header_zlib_h" != "xyes"; then
509     echo
510     echo "zlib library not found."
511     echo
512     echo "If your OS does not provide an installable package for zlib"
513     echo "you will have to compile and install it first yourself.  A copy"
514     echo "of zlib-1.1.4.tar.gz is included with SimGear.  You will"
515     echo "have to untar this source code, and follow its included instructions"
516     echo "to compile and install on your system."
517     echo
518     echo "configure aborted."
519     echo
520 fi
521
522 dnl Checks for header files.
523 AC_HEADER_STDC
524 AC_CHECK_HEADERS( \
525         fcntl.h getopt.h malloc.h memory.h stdint.h stdlib.h sys/param.h \
526         sys/stat.h sys/time.h sys/timeb.h unistd.h values.h )
527
528 if test "x$ac_cv_header_stdint_h" = "xyes"; then
529     AC_DEFINE([HAVE_STDINT_H], 1, [Define if stdint.h exists])
530 fi
531
532 dnl Checks for typedefs, structures, and compiler characteristics.
533 AC_C_CONST
534 AC_TYPE_SIZE_T
535 AC_TYPE_MODE_T
536 AC_HEADER_TIME
537 AC_STRUCT_TM
538
539 dnl Checks for library functions.
540 old_LIBS=$LIBS
541 LIBS="$base_LIBS $network_LIBS $opengl_LIBS"
542 AC_TYPE_SIGNAL
543 AC_FUNC_VPRINTF
544 AC_CHECK_FUNCS( [ \
545         ftime gettimeofday timegm memcpy bcopy mktime strstr rand \
546         random drand48 setitimer getitimer signal GetLocalTime rint getrusage ] )
547 LIBS=$old_LIBS
548
549 AM_CONFIG_HEADER(simgear/simgear_config.h)
550
551 AC_CONFIG_FILES([ \
552         Makefile \
553         SimGear.spec \
554         simgear/Makefile \
555         simgear/version.h \
556         simgear/compatibility/Makefile \
557         simgear/compatibility/MIPSpro721/Makefile \
558         simgear/compatibility/MIPSpro740/Makefile \
559         simgear/bucket/Makefile \
560         simgear/debug/Makefile \
561         simgear/ephemeris/Makefile \
562         simgear/io/Makefile \
563         simgear/magvar/Makefile \
564         simgear/math/Makefile \
565         simgear/environment/Makefile \
566         simgear/misc/Makefile \
567         simgear/nasal/Makefile \
568         simgear/props/Makefile \
569         simgear/route/Makefile \
570         simgear/scene/Makefile \
571         simgear/scene/bvh/Makefile \
572         simgear/scene/material/Makefile \
573         simgear/scene/model/Makefile \
574         simgear/scene/sky/Makefile \
575         simgear/scene/tgdb/Makefile \
576         simgear/scene/util/Makefile \
577         simgear/screen/Makefile \
578         simgear/serial/Makefile \
579         simgear/sound/Makefile \
580         simgear/structure/Makefile \
581         simgear/threads/Makefile \
582         simgear/timing/Makefile \
583         simgear/xml/Makefile \
584 ])
585 AC_OUTPUT
586
587
588 echo ""
589 echo "Configure Summary"
590 echo "================="
591
592 echo "Prefix: $prefix"
593
594 if test "x$with_logging" != "x"; then
595     echo "Debug messages: $with_logging"
596 else
597     echo "Debug messages: yes"
598 fi
599
600 echo -n "Automake version: "
601 automake --version | head -1
602
603 if test "x$with_jpeg_factory" = "xyes"; then
604    echo "With JPEG Factory support"
605 else
606    echo "Without JPEG Factory support"
607 fi
608
609 if test "x$ac_cv_header_pthread_h" = "xyes"; then
610    echo "Threads: pthread lib found."
611 else
612    echo "Threads: no threads (pthread lib not found.)"
613 fi
614