]> git.mxchange.org Git - simgear.git/blob - configure.ac
d4e635af38e442ac686ec1326118027eb1a5585a
[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.2)
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_CHECK_LIB(m, cos)
140
141 base_LIBS="$LIBS"
142
143 dnl Thread related checks
144 AC_CHECK_LIB(pthread, pthread_exit)
145 AC_CHECK_HEADER(pthread.h)
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 -lpthread
165         ac_cv_lib_pthread_pthread_exit="yes"
166     fi
167     LIBS=$save_LIBS
168 fi
169 AM_CONDITIONAL(HAVE_THREADS, test "x$ac_cv_lib_pthread_pthread_exit" = "xyes" -a "x$ac_cv_header_pthread_h" = "xyes")
170
171 AC_CHECK_LIB(socket, socket)
172
173 dnl check for glut location
174 AC_CHECK_HEADER(GL/glut.h)
175 if test "x$ac_cv_header_GL_glut_h" = "xyes"; then
176     AC_DEFINE([GLUT_H], "GL/glut.h", [Define as glut.h include location])
177 else
178     AC_CHECK_HEADER(GLUT/glut.h)
179     if test "x$ac_cv_header_GLUT_glut_h" = "xyes"; then
180         AC_DEFINE([GLUT_H], "GLUT/glut.h", [Define as glut.h include location])
181     else
182         echo "Neither GL/glut.h nor GLUT/glut.h found.  Cannot continue"
183         exit
184     fi
185 fi
186
187 dnl check for OpenGL related libraries
188 case "${host}" in
189 *-*-cygwin* | *-*-mingw32*)
190     dnl CygWin under Windoze.
191
192     echo Win32 specific hacks...
193     AC_DEFINE([WIN32], 1, [Define for Win32 platforms])
194     AC_DEFINE([NOMINMAX], 1, [Define for Win32 platforms])
195
196     LIBS="$LIBS -lglut32 -lglu32 -lopengl32"
197     LIBS="$LIBS -luser32 -lgdi32 -lwinmm"
198
199     dnl add -lwsock32 for mingwin
200     case "${host}" in
201     *-*-mingw32*)
202         base_LIBS="$base_LIBS -lws2_32"
203         ;;
204     esac
205
206     echo "Will link apps with $LIBS"
207     ;;
208
209 *-apple-darwin*)
210     dnl Mac OS X
211
212     LIBS="$LIBS -framework GLUT -framework OpenGL -framework Carbon -lobjc"
213     ;;
214
215 *)
216     dnl X-Windows based machines
217
218     AC_CHECK_LIB(X11, XCreateWindow)
219     AC_CHECK_LIB(Xext, XShmCreateImage)
220     AC_CHECK_LIB(Xi, XGetExtensionVersion)
221     AC_CHECK_LIB(ICE, IceOpenConnection)
222     AC_CHECK_LIB(SM, SmcOpenConnection)
223     AC_CHECK_LIB(Xt, XtMalloc)
224     AC_CHECK_LIB(Xmu, XmuLookupStandardColormap)
225     
226     AC_CHECK_LIB(GLcore, glNewList)
227     if test "x$ac_cv_lib_GLcore_glNewList" = "xno" ; then
228         dnl if no GLcore, check for GL
229         AC_CHECK_LIB(GL, glNewList)
230         if test "x$ac_cv_lib_GL_glNewList" = "xno" ; then
231             dnl if no GL, check for MesaGL
232             AC_CHECK_LIB(MesaGL, glNewList)
233         fi
234     else
235         dnl if GLcore found, then also check for GL
236         AC_CHECK_LIB(GL, glXCreateContext)
237     fi
238
239     dnl if using mesa, check for xmesa.h
240     if test "x$ac_cv_lib_MesaGL_glNewList" = "xyes" ; then
241         AC_CHECK_HEADER(GL/fxmesa.h)
242         if test "x$ac_cv_header_GL_fxmesa_h" = "xyes"; then
243             AC_DEFINE([XMESA], 1, [Define for fxmesa])
244             AC_DEFINE([FX], 1, [Define for fxmesa])
245         fi
246     fi
247
248     AC_CHECK_LIB(GLU, gluLookAt)
249     if test "x$ac_cv_lib_GLU_gluLookAt" = "xno" ; then
250         dnl if no GLU, check for MesaGLU
251         AC_CHECK_LIB(MesaGLU, gluLookAt)
252     fi
253
254     LIBS="$LIBS -lglut"
255     ;;
256
257 esac
258
259 opengl_LIBS="$LIBS"
260 LIBS="$base_LIBS"
261
262 AC_SUBST(base_LIBS)
263 AC_SUBST(opengl_LIBS)
264
265 dnl Check for MS Windows environment
266 AC_CHECK_HEADER(windows.h)
267 AM_CONDITIONAL(EXTGL_NEEDED, test "x$ac_cv_header_windows_h" = "xyes")
268
269 # The following are C++ items that need to be tested for with the c++
270 # compiler
271
272 AC_LANG_PUSH(C++)
273
274 dnl Check for "plib" without which we cannot go on
275 AC_CHECK_HEADER(plib/ul.h)
276 if test "x$ac_cv_header_plib_ul_h" != "xyes"; then
277     echo
278     echo "You *must* have the plib library installed on your system to build"
279     echo "SimGear!"
280     echo
281     echo "Please see README.plib for more details."
282     echo
283     echo "configure aborted."
284     exit
285 fi
286
287 AC_MSG_CHECKING([for plib 1.6.0 or newer])
288 AC_TRY_RUN([
289 #include <plib/ul.h>
290
291 #define MIN_PLIB_VERSION 160
292
293 int main() {
294     int major, minor, micro;
295
296     if ( PLIB_VERSION < MIN_PLIB_VERSION ) {
297          return -1;
298     }
299
300     return 0;
301 }
302
303 ],
304   AC_MSG_RESULT(yes),
305   [AC_MSG_RESULT(wrong version);
306    AC_MSG_ERROR([Install plib 1.6.0 or later first...])],
307   AC_MSG_RESULT(yes)
308 )
309
310 dnl Check for MetaKit
311 AC_CHECK_HEADER(mk4.h)
312 if test "x$ac_cv_header_mk4_h" != "xyes"; then
313     echo
314     echo "MetaKit library not found."
315     echo
316     echo "If your OS does not provide an installable package for MetaKit"
317     echo "you will have to compile and install it first yourself.  A copy"
318     echo "of metakit-$(VERSION).tar.gz is included with SimGear.  You will"
319     echo "have to untar this source code, and follow its included instructions"
320     echo "to compile and install on your system."
321     echo
322     echo "configure aborted."
323     exit
324 fi
325
326 AC_MSG_CHECKING([for metakit 2.4.3 or newer])
327 saved_LIBS="$LIBS"
328 LIBS="$saved_LIBS -lmk4"
329 AC_TRY_RUN([
330 #include <mk4.h>
331
332 #define MIN_MK4_VERSION 243
333
334 int main() {
335     int major, minor, micro;
336
337     if ( d4_MetaKitLibraryVersion < MIN_MK4_VERSION ) {
338          return -1;
339     }
340
341     return 0;
342 }
343
344 ],
345   AC_MSG_RESULT(yes),
346   [AC_MSG_RESULT(wrong version);
347    AC_MSG_ERROR([
348
349 Install metakit 2.4.3 or later first.
350
351 Or, the compiler may not be finding your libmk4.so library.
352 Please check the config.log file for specific details of the
353 failure if you believe you have the correct metakit version.
354 Also, look up this issue in the FlightGear FAQ.])],
355   AC_MSG_RESULT(yes)
356 )
357
358 LIBS="$saved_LIBS"
359
360 AC_LANG_POP
361
362 dnl Check for system installed zlib
363 AC_CHECK_HEADER(zlib.h)
364 if test "x$ac_cv_header_zlib_h" != "xyes"; then
365     echo
366     echo "zlib library not found."
367     echo
368     echo "If your OS does not provide an installable package for zlib"
369     echo "you will have to compile and install it first yourself.  A copy"
370     echo "of zlib-1.1.4.tar.gz is included with SimGear.  You will"
371     echo "have to untar this source code, and follow its included instructions"
372     echo "to compile and install on your system."
373     echo
374     echo "configure aborted."
375     echo
376 fi
377
378 dnl Checks for header files.
379 AC_HEADER_STDC
380 AC_CHECK_HEADERS( \
381         fcntl.h getopt.h malloc.h memory.h stdint.h stdlib.h sys/param.h \
382         sys/stat.h sys/time.h sys/timeb.h unistd.h values.h )
383
384 if test "x$ac_cv_header_stdint_h" = "xyes"; then
385     AC_DEFINE([HAVE_STDINT_H], 1, [Define if stdint.h exists])
386 fi
387
388 dnl Checks for typedefs, structures, and compiler characteristics.
389 AC_C_CONST
390 AC_TYPE_SIZE_T
391 AC_HEADER_TIME
392 AC_STRUCT_TM
393
394 dnl Checks for library functions.
395 AC_TYPE_SIGNAL
396 AC_FUNC_VPRINTF
397 AC_CHECK_FUNCS( \
398         ftime gettimeofday timegm memcpy bcopy mktime strstr rand \
399         random drand48 setitimer getitimer signal GetLocalTime rint getrusage )
400
401 AM_CONFIG_HEADER(simgear/simgear_config.h)
402
403 AC_CONFIG_FILES([ \
404         Makefile \
405         SimGear.spec \
406         src-libs/Makefile \
407         simgear/Makefile \
408         simgear/version.h \
409         simgear/compatibility/Makefile \
410         simgear/bucket/Makefile \
411         simgear/debug/Makefile \
412         simgear/ephemeris/Makefile \
413         simgear/io/Makefile \
414         simgear/magvar/Makefile \
415         simgear/math/Makefile \
416         simgear/metar/Makefile \
417         simgear/misc/Makefile \
418         simgear/props/Makefile \
419         simgear/route/Makefile \
420         simgear/scene/Makefile \
421         simgear/scene/material/Makefile \
422         simgear/scene/model/Makefile \
423         simgear/scene/sky/Makefile \
424         simgear/scene/sky/clouds3d/Makefile \
425         simgear/scene/tgdb/Makefile \
426         simgear/screen/Makefile \
427         simgear/serial/Makefile \
428         simgear/sound/Makefile \
429         simgear/threads/Makefile \
430         simgear/timing/Makefile \
431         simgear/xgl/Makefile \
432         simgear/xml/Makefile \
433 ])
434 AC_OUTPUT
435
436
437 echo ""
438 echo "Configure Summary"
439 echo "================="
440
441 echo "Prefix: $prefix"
442
443 if test "x$with_logging" != "x"; then
444     echo "Debug messages: $with_logging"
445 else
446     echo "Debug messages: yes"
447 fi
448
449 echo -n "Automake version: "
450 automake --version | head -1
451
452 if test "x$ac_cv_header_GL_glut_h" = "xyes"; then
453    echo "With GL/glut.h"
454 fi
455 if test "x$ac_cv_header_GLUT_glut_h" = "xyes"; then
456    echo "With GLUT/glut.h"
457 fi
458
459 if test "x$with_jpeg_factory" = "xyes"; then
460    echo "With JPEG Factory support"
461 else
462    echo "Without JPEG Factory support"
463 fi
464
465 if test "x$ac_cv_lib_pthread_pthread_exit" = "xyes" -a "x$ac_cv_header_pthread_h" = "xyes"; then
466    echo "Threads: pthread lib found."
467 else
468    echo "Threads: no threads (pthread lib not found.)"
469 fi
470