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