]> git.mxchange.org Git - simgear.git/blob - configure.ac
Clean up, and make more flexible and prevent unnessecary library includes
[simgear.git] / configure.ac
1 dnl Process this file with autoget.sh to produce a working configure
2 dnl script.
3 dnl
4 dnl $Id$
5
6 AC_INIT
7 AC_CONFIG_SRCDIR([simgear/bucket/newbucket.cxx])
8
9 dnl Require at least automake 2.52
10 AC_PREREQ(2.52)
11
12 dnl Initialize the automake stuff
13 AM_INIT_AUTOMAKE(SimGear, 0.3.3)
14
15 dnl Specify KAI C++ compiler and flags.
16 dnl Borrowed with slight modification from blitz distribution.
17 AC_ARG_WITH(cxx,
18   [  --with-cxx=COMPILER[:name-flags] set options for COMPILER (KCC)],
19   [case "$withval" in
20     KCC*)    # KAI C++ http://www.kai.com/
21       echo "Configuring for KAI C++"
22       AC_SG_SET_COMPILER($withval,"KCC","--restrict --strict_warnings")
23       CXX_OPTIMIZE_FLAGS=="+K3 -O3"
24       CXX_DEBUG_FLAGS="-g +K0"
25     ;;
26   esac
27 ])
28
29 echo CXX = $CXX
30 echo CC = $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
41 dnl set the $host variable based on local machine/os
42 AC_CANONICAL_HOST
43
44 dnl Used on the Irix platform
45 AR="ar"
46 ARFLAGS="cru"
47 case "${host}" in
48 *-*-irix*)
49     if test "$CXX" = "CC"; then
50         AR="CC -ar"
51         ARFLAGS="-o"
52         CXXFLAGS="$CXXFLAGS -I$(top_srcdir)/simgear/compatibility"
53     fi
54     ;;
55 esac
56 AC_SUBST(AR)
57 AC_SUBST(ARFLAGS)
58
59 if echo $includedir | egrep "simgear$" > /dev/null; then
60     echo "includedir is" $includedir "libdir is" $libdir
61 else
62     includedir="${includedir}/simgear"
63     echo "includedir changed to" $includedir "libdir is" $libdir
64 fi
65          
66 dnl set logging; default value of with_logging=yes
67 AC_ARG_WITH(logging, [  --with-logging          Include logging output (default)])
68 if test "x$with_logging" = "xno" ; then
69     AC_DEFINE([FG_NDEBUG], 1, [Define for no logging output])
70 fi
71
72 # Specify if we want to build with Norman's jpeg image server support.
73 # This requires libjpeg to be installed and available.
74 # Default to with_jpeg_server=no
75 JPEGLIB=''
76 AC_ARG_WITH(jpeg_factory, [  --with-jpeg-factory     Include Norman's jpeg image factory support code])
77 if test "x$with_jpeg_factory" = "xyes" ; then
78     echo "Building with Norman's jpeg image factory support"
79     AC_CHECK_LIB(jpeg, jpeg_start_compress)
80     if test "x$ac_cv_lib_jpeg_jpeg_start_compress" != "xyes" ; then
81         echo
82         echo "In order to build the jpeg factory code you need libjpeg installed."
83         echo "otherwise please configure with the --with-jpeg-sever=no option"
84         echo
85         echo "libjpeg is available at :"
86         echo "  ftp://ftp.uu.net in the directory graphics/jpeg"
87         exit 1
88     fi
89 else
90     echo "Building without Norman's jpeg image server support"
91 fi
92 AM_CONDITIONAL(ENABLE_JPEG_SERVER, test "x$with_jpeg_factory" = "xyes")
93
94
95 dnl Determine an extra directories to add to include/lib search paths
96 case "${host}" in
97 *-apple-darwin* | *-*-mingw32*)
98     echo no EXTRA_DIRS for $host
99     ;;
100
101 *)
102     if test -d /usr/X11R6 ; then
103         EXTRA_DIR1="/usr/X11R6"
104     fi
105     if test -d /opt/X11R6 ; then
106         EXTRA_DIR2="/opt/X11R6"
107     fi
108     EXTRA_DIRS="$EXTRA_DIR1 $EXTRA_DIR2"
109     ;;
110
111 esac
112 wi_EXTRA_DIRS(no, ${EXTRA_DIRS})
113
114
115 dnl Using AM_CONDITIONAL is a step out of the protected little 
116 dnl automake fold so it is potentially dangerous.  But, we are
117 dnl beginning to run into cases where the standard checks are not
118 dnl enough.  AM_CONDITIONALS are then referenced to conditionally
119 dnl build a Makefile.in from a Makefile.am which lets us define custom
120 dnl includes, compile alternative source files, etc.
121
122 dnl X11 might be installed on Mac OS X or cygwin/mingwin, we don't want
123 dnl to use it if it is.
124 case "${host}" in
125 *-apple-darwin* | *-*-cygwin* | *-*-mingw32*)
126     echo no fancy X11 check
127     ;;
128
129 *)
130     AC_PATH_XTRA
131     ;;
132
133 esac
134
135 dnl Checks for libraries.
136
137 null_LIBS="$LIBS"
138
139 AC_SEARCH_LIBS(cos, m)
140
141 base_LIBS="$LIBS"
142
143 dnl Thread related checks
144 AC_CHECK_HEADER(pthread.h)
145 AC_CHECK_LIB(pthread, pthread_exit)
146 if test "x$ac_cv_lib_pthread_pthread_exit" = "xyes" -a "x$ac_cv_header_pthread_h" = "xyes"; then
147     CXXFLAGS="$CXXFLAGS -D_REENTRANT"
148     CFLAGS="$CFLAGS -D_REENTRANT"
149 fi
150 if test "x$ac_cv_lib_pthread_pthread_exit" != "xyes" -a "x$ac_cv_header_pthread_h" = "xyes"; then
151     dnl FreeBSD: System has pthread.h, but -lpthread library check
152     dnl fails.  See if we need -pthread instead of -lpthread and look
153     dnl for the functions in libc_r.
154     save_CXXFLAGS="$CXXFLAGS"
155     save_CFLAGS="$CFLAGS"
156     CXXFLAGS="-pthread $CXXFLAGS"
157     CFLAGS="-pthread $FLAGS"
158     save_LIBS=$LIBS
159     AC_CHECK_LIB(c_r, pthread_exit)
160     if test "x$ac_cv_lib_c_r_pthread_exit" != "xyes"; then
161         CXXFLAGS=$save_CXXFLAGS
162         CFLAGS=$save_CFLAGS
163     else
164         dnl This is cheating a bit. pthread_exit comes with using -pthread, not
165 -lpthread
166         ac_cv_lib_pthread_pthread_exit="yes"
167     fi
168     LIBS=$save_LIBS
169 fi
170
171 AM_CONDITIONAL(HAVE_THREADS, test "x$enable_threads" = "xyes" -a "x$ac_cv_header_pthread_h" = "xyes")
172
173
174 AC_SEARCH_LIBS(inet_addr, xnet)
175 AC_SEARCH_LIBS(socket, socket)
176
177 dnl check for glut location
178 AC_CHECK_HEADER(GL/glut.h)
179 if test "x$ac_cv_header_GL_glut_h" = "xyes"; then
180     AC_DEFINE([GLUT_H], "GL/glut.h", [Define as glut.h include location])
181 else
182     AC_CHECK_HEADER(GLUT/glut.h)
183     if test "x$ac_cv_header_GLUT_glut_h" = "xyes"; then
184         AC_DEFINE([GLUT_H], "GLUT/glut.h", [Define as glut.h include location])
185     else
186         echo "Neither GL/glut.h nor GLUT/glut.h found.  Cannot continue"
187         exit
188     fi
189 fi
190
191 dnl check for OpenGL related libraries
192 case "${host}" in
193 *-*-cygwin* | *-*-mingw32*)
194     dnl CygWin under Windoze.
195
196     echo Win32 specific hacks...
197     AC_DEFINE([WIN32], 1, [Define for Win32 platforms])
198     AC_DEFINE([NOMINMAX], 1, [Define for Win32 platforms])
199
200     LIBS="$LIBS -lglut32 -lglu32 -lopengl32"
201     LIBS="$LIBS -luser32 -lgdi32 -lwinmm"
202
203     dnl add -lwsock32 for mingwin
204     case "${host}" in
205     *-*-mingw32*)
206         base_LIBS="$base_LIBS -lws2_32"
207         ;;
208     esac
209
210     echo "Will link apps with $LIBS"
211     ;;
212
213 *-apple-darwin*)
214     dnl Mac OS X
215
216     LIBS="$LIBS -framework GLUT -framework OpenGL -framework Carbon -lobjc"
217     ;;
218
219 *)
220     dnl X-Windows based machines
221
222     AC_SEARCH_LIBS(XCreateWindow, X11)
223     AC_SEARCH_LIBS(XShmCreateImage, Xext)
224     AC_SEARCH_LIBS(XGetExtensionVersion, Xi)
225     AC_SEARCH_LIBS(IceOpenConnection, ICE)
226     AC_SEARCH_LIBS(SmcOpenConnection, SM)
227     AC_SEARCH_LIBS(XtMalloc, Xt)
228     AC_SEARCH_LIBS(XmuLookupStandardColormap, Xmu)
229     
230     AC_SEARCH_LIBS(glNewList, [ GL GLcore MesaGL ])
231     if test "x$ac_cv_search_glNewList" = "x-lGLcore"; then
232         dnl if GLcore found, then also check for GL
233         AC_SEARCH_LIBS(glXCreateContext, GL)
234     fi
235
236     dnl if using mesa, check for xmesa.h
237     if test "x$ac_cv_search_glNewList" = "x-lMesaGL"; then
238         AC_CHECK_HEADER(GL/fxmesa.h)
239         if test "x$ac_cv_header_GL_fxmesa_h" = "xyes"; then
240             AC_DEFINE([XMESA], 1, [Define for fxmesa])
241             AC_DEFINE([FX], 1, [Define for fxmesa])
242         fi
243     fi
244
245     AC_SEARCH_LIBS(gluLookAt, [ GLU MesaGLU ])
246     AC_SEARCH_LIBS(glutGetModifiers, [ glut freeglut ])
247     ;;
248
249 esac
250
251 opengl_LIBS="$LIBS"
252 LIBS="$base_LIBS"
253
254 AC_SUBST(base_LIBS)
255 AC_SUBST(opengl_LIBS)
256
257 dnl Check for MS Windows environment
258 AC_CHECK_HEADER(windows.h)
259 AM_CONDITIONAL(EXTGL_NEEDED, test "x$ac_cv_header_windows_h" = "xyes")
260
261 # The following are C++ items that need to be tested for with the c++
262 # compiler
263
264 AC_LANG_PUSH(C++)
265
266 dnl Check for "plib" without which we cannot go on
267 AC_CHECK_HEADER(plib/ul.h)
268 if test "x$ac_cv_header_plib_ul_h" != "xyes"; then
269     echo
270     echo "You *must* have the plib library installed on your system to build"
271     echo "SimGear!"
272     echo
273     echo "Please see README.plib for more details."
274     echo
275     echo "configure aborted."
276     exit
277 fi
278
279 AC_MSG_CHECKING([for plib 1.6.0 or newer])
280 AC_TRY_RUN([
281 #include <plib/ul.h>
282
283 #define MIN_PLIB_VERSION 160
284
285 int main() {
286     int major, minor, micro;
287
288     if ( PLIB_VERSION < MIN_PLIB_VERSION ) {
289          return -1;
290     }
291
292     return 0;
293 }
294
295 ],
296   AC_MSG_RESULT(yes),
297   [AC_MSG_RESULT(wrong version);
298    AC_MSG_ERROR([Install plib 1.6.0 or later first...])],
299   AC_MSG_RESULT(yes)
300 )
301
302 dnl Check for MetaKit
303 AC_CHECK_HEADER(mk4.h)
304 if test "x$ac_cv_header_mk4_h" != "xyes"; then
305     echo
306     echo "MetaKit library not found."
307     echo
308     echo "If your OS does not provide an installable package for MetaKit"
309     echo "you will have to compile and install it first yourself.  A copy"
310     echo "of metakit-$(VERSION).tar.gz is included with SimGear.  You will"
311     echo "have to untar this source code, and follow its included instructions"
312     echo "to compile and install on your system."
313     echo
314     echo "configure aborted."
315     exit
316 fi
317
318 AC_MSG_CHECKING([for metakit 2.4.3 or newer])
319 saved_LIBS="$LIBS"
320 LIBS="$saved_LIBS -lmk4"
321 AC_TRY_RUN([
322 #include <mk4.h>
323
324 #define MIN_MK4_VERSION 243
325
326 int main() {
327     int major, minor, micro;
328
329     if ( d4_MetaKitLibraryVersion < MIN_MK4_VERSION ) {
330          return -1;
331     }
332
333     return 0;
334 }
335
336 ],
337   AC_MSG_RESULT(yes),
338   [AC_MSG_RESULT(wrong version);
339    AC_MSG_ERROR([
340
341 Install metakit 2.4.3 or later first.
342
343 Or, the compiler may not be finding your libmk4.so library.
344 Please check the config.log file for specific details of the
345 failure if you believe you have the correct metakit version.
346 Also, look up this issue in the FlightGear FAQ.])],
347   AC_MSG_RESULT(yes)
348 )
349
350 LIBS="$saved_LIBS"
351
352 AC_LANG_POP
353
354 dnl Check for system installed zlib
355 AC_CHECK_HEADER(zlib.h)
356 if test "x$ac_cv_header_zlib_h" != "xyes"; then
357     echo
358     echo "zlib library not found."
359     echo
360     echo "If your OS does not provide an installable package for zlib"
361     echo "you will have to compile and install it first yourself.  A copy"
362     echo "of zlib-1.1.4.tar.gz is included with SimGear.  You will"
363     echo "have to untar this source code, and follow its included instructions"
364     echo "to compile and install on your system."
365     echo
366     echo "configure aborted."
367     echo
368 fi
369
370 dnl Checks for header files.
371 AC_HEADER_STDC
372 AC_CHECK_HEADERS( \
373         fcntl.h getopt.h malloc.h memory.h stdint.h stdlib.h sys/param.h \
374         sys/stat.h sys/time.h sys/timeb.h unistd.h values.h )
375
376 if test "x$ac_cv_header_stdint_h" = "xyes"; then
377     AC_DEFINE([HAVE_STDINT_H], 1, [Define if stdint.h exists])
378 fi
379
380 dnl Checks for typedefs, structures, and compiler characteristics.
381 AC_C_CONST
382 AC_TYPE_SIZE_T
383 AC_HEADER_TIME
384 AC_STRUCT_TM
385
386 dnl Checks for library functions.
387 AC_TYPE_SIGNAL
388 AC_FUNC_VPRINTF
389 AC_CHECK_FUNCS( \
390         ftime gettimeofday timegm memcpy bcopy mktime strstr rand \
391         random drand48 setitimer getitimer signal GetLocalTime rint getrusage )
392
393 AM_CONFIG_HEADER(simgear/simgear_config.h)
394
395 AC_CONFIG_FILES([ \
396         Makefile \
397         SimGear.spec \
398         src-libs/Makefile \
399         simgear/Makefile \
400         simgear/version.h \
401         simgear/compatibility/Makefile \
402         simgear/bucket/Makefile \
403         simgear/debug/Makefile \
404         simgear/ephemeris/Makefile \
405         simgear/io/Makefile \
406         simgear/magvar/Makefile \
407         simgear/math/Makefile \
408         simgear/metar/Makefile \
409         simgear/misc/Makefile \
410         simgear/props/Makefile \
411         simgear/route/Makefile \
412         simgear/scene/Makefile \
413         simgear/scene/material/Makefile \
414         simgear/scene/model/Makefile \
415         simgear/scene/sky/Makefile \
416         simgear/scene/tgdb/Makefile \
417         simgear/screen/Makefile \
418         simgear/serial/Makefile \
419         simgear/sound/Makefile \
420         simgear/threads/Makefile \
421         simgear/timing/Makefile \
422         simgear/xgl/Makefile \
423         simgear/xml/Makefile \
424 ])
425 AC_OUTPUT
426
427
428 echo ""
429 echo "Configure Summary"
430 echo "================="
431
432 echo "Prefix: $prefix"
433
434 if test "x$with_logging" != "x"; then
435     echo "Debug messages: $with_logging"
436 else
437     echo "Debug messages: yes"
438 fi
439
440 echo -n "Automake version: "
441 automake --version | head -1
442
443 if test "x$ac_cv_header_GL_glut_h" = "xyes"; then
444    echo "With GL/glut.h"
445 fi
446 if test "x$ac_cv_header_GLUT_glut_h" = "xyes"; then
447    echo "With GLUT/glut.h"
448 fi
449
450 if test "x$with_jpeg_factory" = "xyes"; then
451    echo "With JPEG Factory support"
452 else
453    echo "Without JPEG Factory support"
454 fi
455
456 if test "x$ac_cv_lib_pthread_pthread_exit" = "xyes" -a "x$ac_cv_header_pthread_h" = "xyes"; then
457    echo "Threads: pthread lib found."
458 else
459    echo "Threads: no threads (pthread lib not found.)"
460 fi
461