]> git.mxchange.org Git - simgear.git/blob - configure.ac
f2b7cedc22c013ea30b74adb76b10a801398e7b2
[simgear.git] / configure.ac
1 dnl Process this file with aclocal ; automake -a ; autoconf to produce a 
2 dnl working configure script.
3 dnl
4 dnl $Id$
5
6 AC_INIT
7 AC_CONFIG_SRCDIR([simgear/bucket/newbucket.cxx])
8
9 # 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
42 # Used on the Irix platform
43 AR="ar"
44 ARFLAGS="cru"
45 OS=`uname -s`
46 if test "$OS" = "IRIX" -o "$OS" = "IRIX64"; then
47     if test "$CXX" = "CC"; then
48         AR="CC -ar"
49         ARFLAGS="-o"
50     fi
51 fi
52 AC_SUBST(AR)
53 AC_SUBST(ARFLAGS)
54
55
56 if echo $includedir | egrep "simgear$" > /dev/null; then
57     echo "includedir is" $includedir "libdir is" $libdir
58 else
59     includedir="${includedir}/simgear"
60     echo "includedir changed to" $includedir "libdir is" $libdir
61 fi
62          
63 # set logging default value
64 # with_logging=yes
65 AC_ARG_WITH(logging, [  --with-logging          Include logging output (default)])
66 if test "x$with_logging" = "xno" ; then
67     AC_DEFINE([FG_NDEBUG], 1, [Define for no logging output])
68 fi
69
70 # Specify if we want to build with Norman's jpeg image server support.
71 # This requires libjpeg to be installed and available.
72 # Default to with_jpeg_server=no
73 JPEGLIB=''
74 AC_ARG_WITH(jpeg_factory, [  --with-jpeg-factory     Include Norman's jpeg image factory support code])
75 if test "x$with_jpeg_factory" = "xyes" ; then
76     echo "Building with Norman's jpeg image factory support"
77     AC_CHECK_LIB(jpeg, jpeg_start_compress)
78     if test "x$ac_cv_lib_jpeg_jpeg_start_compress" != "xyes" ; then
79         echo
80         echo "In order to build the jpeg factory code you need libjpeg installed."
81         echo "otherwise please configure with the --with-jpeg-sever=no option"
82         echo
83         echo "libjpeg is available at :"
84         echo "  ftp://ftp.uu.net in the directory graphics/jpeg"
85         exit 1
86     fi
87 else
88     echo "Building without Norman's jpeg image server support"
89 fi
90 AM_CONDITIONAL(ENABLE_JPEG_SERVER, test "x$with_jpeg_factory" = "xyes")
91
92
93 dnl Check for MS Windows environment
94 AC_CHECK_HEADER(windows.h)
95
96 AC_EGREP_CPP(yes,
97 [#ifdef __MINGW32__
98  yes
99  #endif
100 ],is_mingw=yes, is_mingw=no)
101
102 echo "IS_MINGW = $is_mingw"
103 AM_CONDITIONAL(IS_MINGW, test "x$is_mingw" = "xyes")
104
105 AC_EGREP_CPP(yes,
106 [#ifdef __CYGWIN__
107  yes
108  #endif
109 ],is_cygwin=yes, is_cygwin=no)
110
111 echo "IS_CYGWIN = $is_cygwin"
112 AM_CONDITIONAL(IS_CYGWIN, test "x$is_cygwin" = "xyes")
113
114 if test "x$HOSTTYPE" != "xmacintosh" -a "x$is_mingw" != "xyes"; then
115     dnl extra library and include directories
116     EXTRA_DIRS="/usr/X11R6"
117
118     if test -d /opt/X11R6 ; then
119         EXTRA_DIRS="$EXTRA_DIRS /opt/X11R6"
120     fi
121 fi
122
123 wi_EXTRA_DIRS(no, ${EXTRA_DIRS})
124
125 dnl Using AM_CONDITIONAL is a step out of the protected little 
126 dnl automake fold so it is potentially dangerous.  But, we are
127 dnl beginning to run into cases where the standard checks are not
128 dnl enough.  AM_CONDITIONALS are then referenced to conditionally
129 dnl build a Makefile.in from a Makefile.am which lets us define custom
130 dnl includes, compile alternative source files, etc.
131
132 dnl X11 might be installed on Mac OS X, don't want to use it if it is.
133 if test "x$HOSTTYPE" != "xmacintosh" ; then
134     dnl Check for X11 (fancy)
135     AC_PATH_XTRA
136 fi
137
138 dnl Checks for libraries.
139
140 null_LIBS="$LIBS"
141
142 AC_CHECK_LIB(m, cos)
143
144 base_LIBS="$LIBS"
145
146 dnl Thread related checks
147 AC_CHECK_LIB(pthread, pthread_exit)
148 AC_CHECK_HEADER(pthread.h)
149 if test "x$ac_cv_lib_pthread_pthread_exit" = "xyes" -a "x$ac_cv_header_pthread_h" = "xyes"; then
150     CXXFLAGS="$CXXFLAGS -D_REENTRANT"
151     CFLAGS="$CFLAGS -D_REENTRANT"
152 fi
153 AM_CONDITIONAL(HAVE_THREADS, test "x$ac_cv_lib_pthread_pthread_exit" = "xyes" -a "x$ac_cv_header_pthread_h" = "xyes")
154
155 AC_CHECK_LIB(socket, socket)
156
157 dnl X11 might be installed, but we don't want to use it for OSX -dw-
158 if test "x$HOSTTYPE" != "xmacintosh" ; then
159     AC_CHECK_LIB(X11, XCreateWindow)
160     AC_CHECK_LIB(Xext, XShmCreateImage)
161     AC_CHECK_LIB(Xi, XGetExtensionVersion)
162     AC_CHECK_LIB(ICE, IceOpenConnection)
163     AC_CHECK_LIB(SM, SmcOpenConnection)
164     AC_CHECK_LIB(Xt, XtMalloc)
165     AC_CHECK_LIB(Xmu, XmuLookupStandardColormap)
166 fi
167
168 dnl check for OpenGL related libraries
169
170 AM_CONDITIONAL(EXTGL_NEEDED, test "x$ac_cv_header_windows_h" = "xyes")
171
172 if test "x$HOSTTYPE" = "xmacintosh" ; then
173     dnl Macintosh OSX
174     LIBS="$LIBS -framework OpenGL -framework GLUT"
175 elif test "x$ac_cv_header_windows_h" != "xyes" ; then
176     dnl Reasonable stuff for X-Windows based machines
177
178     AC_CHECK_LIB(GLcore, glNewList)
179     if test "x$ac_cv_lib_GLcore_glNewList" = "xno" ; then
180         dnl if no GLcore, check for GL
181         AC_CHECK_LIB(GL, glNewList)
182         if test "x$ac_cv_lib_GL_glNewList" = "xno" ; then
183             dnl if no GL, check for MesaGL
184             AC_CHECK_LIB(MesaGL, glNewList)
185         fi
186     else
187         dnl if GLcore found, then also check for GL
188         AC_CHECK_LIB(GL, glXCreateContext)
189     fi
190
191     dnl if using mesa, check for xmesa.h
192     if test "x$ac_cv_lib_MesaGL_glNewList" = "xyes" ; then
193         AC_CHECK_HEADER(GL/fxmesa.h)
194         if test "x$ac_cv_header_GL_fxmesa_h" = "xyes"; then
195             AC_DEFINE([XMESA], 1, [Define for fxmesa])
196             AC_DEFINE([FX], 1, [Define for fxmesa])
197         fi
198     fi
199
200     AC_CHECK_LIB(GLU, gluLookAt)
201     if test "x$ac_cv_lib_GLU_gluLookAt" = "xno" ; then
202         dnl if no GLU, check for MesaGLU
203         AC_CHECK_LIB(MesaGLU, gluLookAt)
204     fi
205
206     dnl check for glut
207     AC_CHECK_LIB(glut, glutGetModifiers)
208
209     dnl test for glutGameModeString, but avoid adding glut a second time into
210     dnl the list of libraries
211     save_LIBS="$LIBS"
212     AC_CHECK_LIB(glut, glutGameModeString)
213     LIBS="$save_LIBS"
214 else
215     dnl Win32 libs
216
217     echo Win32 specific hacks...
218     AC_DEFINE([WIN32], 1, [Define for Win32 platforms])
219     AC_DEFINE([NOMINMAX], 1, [Define for Win32 platforms])
220
221     dnl just define these to true and hope for the best
222     ac_cv_lib_glut_glutGetModifiers="yes"
223     ac_cv_lib_glut_glutGameModeString="yes"
224
225     if test "x$with_sgi_opengl" = "xyes" ; then
226         echo "Building with glut.dll, glu.dll, and opengl.dll"
227         WIN32_GLUT=glut
228         WIN32_GLU=glu
229         WIN32_OPENGL=opengl
230     else 
231         echo "Building with glut32.dll, glu32.dll, and opengl32.dll"
232         WIN32_GLUT=glut32
233         WIN32_GLU=glu32
234         WIN32_OPENGL=opengl32
235     fi
236
237     LIBS="$LIBS -l${WIN32_GLUT} -l${WIN32_GLU} -l${WIN32_OPENGL}"
238     LIBS="$LIBS -luser32 -lgdi32"
239     if test "x$is_mingw" = "xyes" ; then
240         EXTRA_DIRS="${EXTRA_DIRS}"
241     fi
242     echo "Will link apps with $LIBS"
243 fi
244
245 if test "x$ac_cv_lib_glut_glutGetModifiers" = "xno"; then
246     echo 
247     echo "Unable to find the necessary OpenGL or GLUT libraries."
248     echo "See config.log for automated test details and results ..."
249     exit 1
250 fi
251
252 if test "x$ac_cv_lib_glut_glutGameModeString" = "xno"; then
253     echo
254     echo "Your version of glut doesn't support game mode."
255     echo "You need to install the latest version of glut.  If your"
256     echo "distribution doesn't provide a newer version, you can get the source"
257     echo "code from:"
258     echo
259     echo "    http://reality.sgi.com/opengl/glut3/glut3.html"
260     exit 1
261 fi
262
263 opengl_LIBS="$LIBS"
264 LIBS="$base_LIBS"
265
266 AC_SUBST(base_LIBS)
267 AC_SUBST(opengl_LIBS)
268
269 AM_CONDITIONAL(HAVE_XWINDOWS, test "x$ac_cv_lib_X11_XCreateWindow" = "xyes" )
270
271 # The following are C++ items that need to be tested for with the c++
272 # compiler
273
274 AC_LANG_PUSH(C++)
275
276 dnl Check for "plib" without which we cannot go on
277 AC_CHECK_HEADER(plib/ul.h)
278 if test "x$ac_cv_header_plib_ul_h" != "xyes"; then
279     echo
280     echo "You *must* have the plib library installed on your system to build"
281     echo "SimGear!"
282     echo
283     echo "Please see README.plib for more details."
284     echo
285     echo "configure aborted."
286     exit
287 fi
288
289 AC_MSG_CHECKING([for plib 1.6.0 or newer])
290 AC_TRY_RUN([
291 #include <plib/ul.h>
292
293 #define MIN_PLIB_VERSION 160
294
295 int main() {
296     int major, minor, micro;
297
298     if ( PLIB_VERSION < MIN_PLIB_VERSION ) {
299          return -1;
300     }
301
302     return 0;
303 }
304
305 ],
306   AC_MSG_RESULT(yes),
307   [AC_MSG_RESULT(wrong version);
308    AC_MSG_ERROR([Install plib 1.6.0 or later first...])],
309   AC_MSG_RESULT(yes)
310 )
311
312 dnl Check for system installed metakit
313 AC_CHECK_HEADER(mk4.h)
314 if test "x$ac_cv_header_mk4_h" != "xyes"; then
315     echo 
316     echo "Metakit not found, you will need to install this first."
317     echo "Please read the README.metakit for more information."
318     exit
319 fi
320
321 AC_LANG_POP
322
323 dnl Specify if we want logging (testing build) or not (release build)
324
325 dnl Check for system installed zlib
326 AC_CHECK_HEADER(zlib.h)
327 if test "x$ac_cv_header_zlib_h" != "xyes"; then
328     echo 
329     echo "zlib not found, you will need to install this first."
330     echo "Please read the README.zlib for more information."
331     exit
332 fi
333
334 dnl Checks for header files.
335 AC_HEADER_STDC
336 AC_CHECK_HEADERS( \
337         fcntl.h getopt.h malloc.h memory.h stdint.h stdlib.h sys/param.h \
338         sys/stat.h sys/time.h sys/timeb.h unistd.h windows.h winbase.h values.h )
339
340 if test "x$ac_cv_header_stdint_h" = "xyes"; then
341     AC_DEFINE([HAVE_STDINT_H], 1, [Define if stdint.h exists])
342 fi
343
344 dnl Checks for typedefs, structures, and compiler characteristics.
345 AC_C_CONST
346 AC_TYPE_SIZE_T
347 AC_HEADER_TIME
348 AC_STRUCT_TM
349
350 dnl Checks for library functions.
351 AC_TYPE_SIGNAL
352 AC_FUNC_VPRINTF
353 AC_CHECK_FUNCS( ftime gettimeofday timegm memcpy bcopy mktime strstr rand \
354         random drand48 setitimer getitimer signal GetLocalTime rint getrusage )
355
356 AM_CONFIG_HEADER(simgear/simgear_config.h)
357
358 AC_CONFIG_FILES([ \
359         Makefile \
360         SimGear.spec \
361         src-libs/Makefile \
362         simgear/Makefile \
363         simgear/version.h \
364         simgear/bucket/Makefile \
365         simgear/debug/Makefile \
366         simgear/ephemeris/Makefile \
367         simgear/io/Makefile \
368         simgear/magvar/Makefile \
369         simgear/math/Makefile \
370         simgear/metar/Makefile \
371         simgear/misc/Makefile \
372         simgear/route/Makefile \
373         simgear/screen/Makefile \
374         simgear/serial/Makefile \
375         simgear/sky/Makefile \
376         simgear/sky/clouds3d/Makefile \
377         simgear/threads/Makefile \
378         simgear/timing/Makefile \
379         simgear/xgl/Makefile \
380         simgear/xml/Makefile \
381 ])
382 AC_OUTPUT
383
384
385 echo ""
386 echo "Configure Summary"
387 echo "================="
388
389 echo "Prefix: $prefix"
390
391 if test "x$with_logging" != "x"; then
392     echo "Debug messages: $with_logging"
393 else
394     echo "Debug messages: yes"
395 fi
396
397 echo -n "Automake version: ($AUTO_MAKE_VERSION) "
398 automake --version | head -1
399
400 if test "x$with_jpeg_factory" = "xyes"; then
401    echo "With JPEG Factory support"
402 else
403    echo "Without JPEG Factory support"
404 fi
405
406 if test "x$ac_cv_lib_pthread_pthread_exit" = "xyes" -a "x$ac_cv_header_pthread_h" = "xyes"; then
407    echo "Threads: pthread lib found."
408 else
409    echo "Threads: no threads (pthread lib not found.)"
410 fi