]> git.mxchange.org Git - simgear.git/blob - configure.ac
Norman's most recent 3d clouds code tweaks.
[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.0)
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
220     dnl just define these to true and hope for the best
221     ac_cv_lib_glut_glutGetModifiers="yes"
222     ac_cv_lib_glut_glutGameModeString="yes"
223
224     if test "x$with_sgi_opengl" = "xyes" ; then
225         echo "Building with glut.dll, glu.dll, and opengl.dll"
226         WIN32_GLUT=glut
227         WIN32_GLU=glu
228         WIN32_OPENGL=opengl
229     else 
230         echo "Building with glut32.dll, glu32.dll, and opengl32.dll"
231         WIN32_GLUT=glut32
232         WIN32_GLU=glu32
233         WIN32_OPENGL=opengl32
234     fi
235
236     LIBS="$LIBS -l${WIN32_GLUT} -l${WIN32_GLU} -l${WIN32_OPENGL}"
237     LIBS="$LIBS -luser32 -lgdi32"
238     if test "x$is_mingw" = "xyes" ; then
239         EXTRA_DIRS="${EXTRA_DIRS}"
240     fi
241     echo "Will link apps with $LIBS"
242 fi
243
244 if test "x$ac_cv_lib_glut_glutGetModifiers" = "xno"; then
245     echo 
246     echo "Unable to find the necessary OpenGL or GLUT libraries."
247     echo "See config.log for automated test details and results ..."
248     exit 1
249 fi
250
251 if test "x$ac_cv_lib_glut_glutGameModeString" = "xno"; then
252     echo
253     echo "Your version of glut doesn't support game mode."
254     echo "You need to install the latest version of glut.  If your"
255     echo "distribution doesn't provide a newer version, you can get the source"
256     echo "code from:"
257     echo
258     echo "    http://reality.sgi.com/opengl/glut3/glut3.html"
259     exit 1
260 fi
261
262 opengl_LIBS="$LIBS"
263 LIBS="$base_LIBS"
264
265 AC_SUBST(base_LIBS)
266 AC_SUBST(opengl_LIBS)
267
268 AM_CONDITIONAL(HAVE_XWINDOWS, test "x$ac_cv_lib_X11_XCreateWindow" = "xyes" )
269
270 # The following are C++ items that need to be tested for with the c++
271 # compiler
272
273 AC_LANG_PUSH(C++)
274
275 dnl Check for "plib" without which we cannot go on
276 AC_CHECK_HEADER(plib/ul.h)
277 if test "x$ac_cv_header_plib_ul_h" != "xyes"; then
278     echo
279     echo "You *must* have the plib library installed on your system to build"
280     echo "SimGear!"
281     echo
282     echo "Please see README.plib for more details."
283     echo
284     echo "configure aborted."
285     exit
286 fi
287
288 AC_MSG_CHECKING([for plib 1.6.0 or newer])
289 AC_TRY_RUN([
290 #include <plib/ul.h>
291
292 #define MIN_PLIB_VERSION 160
293
294 int main() {
295     int major, minor, micro;
296
297     if ( PLIB_VERSION < MIN_PLIB_VERSION ) {
298          return -1;
299     }
300
301     return 0;
302 }
303
304 ],
305   AC_MSG_RESULT(yes),
306   [AC_MSG_RESULT(wrong version);
307    AC_MSG_ERROR([Install plib 1.6.0 or later first...])],
308   AC_MSG_RESULT(yes)
309 )
310
311 dnl Check for system installed metakit
312 AC_CHECK_HEADER(mk4.h)
313 if test "x$ac_cv_header_mk4_h" != "xyes"; then
314     echo 
315     echo "Metakit not found, you will need to install this first."
316     echo "Please read the README.metakit for more information."
317     exit
318 fi
319
320 AC_LANG_POP
321
322 dnl Specify if we want logging (testing build) or not (release build)
323
324 dnl Check for system installed zlib
325 AC_CHECK_HEADER(zlib.h)
326 if test "x$ac_cv_header_zlib_h" != "xyes"; then
327     echo 
328     echo "zlib not found, you will need to install this first."
329     echo "Please read the README.zlib for more information."
330     exit
331 fi
332
333 dnl Checks for header files.
334 AC_HEADER_STDC
335 AC_CHECK_HEADERS( \
336         fcntl.h getopt.h malloc.h memory.h stdint.h stdlib.h sys/param.h \
337         sys/stat.h sys/time.h sys/timeb.h unistd.h windows.h winbase.h values.h )
338
339 if test "x$ac_cv_header_stdint_h" = "xyes"; then
340     AC_DEFINE([HAVE_STDINT_H], 1, [Define if stdint.h exists])
341 fi
342
343 dnl Checks for typedefs, structures, and compiler characteristics.
344 AC_C_CONST
345 AC_TYPE_SIZE_T
346 AC_HEADER_TIME
347 AC_STRUCT_TM
348
349 dnl Checks for library functions.
350 AC_TYPE_SIGNAL
351 AC_FUNC_VPRINTF
352 AC_CHECK_FUNCS( ftime gettimeofday timegm memcpy bcopy mktime strstr rand \
353         random drand48 setitimer getitimer signal GetLocalTime rint getrusage )
354
355 AM_CONFIG_HEADER(simgear/simgear_config.h)
356
357 AC_CONFIG_FILES([ \
358         Makefile \
359         SimGear.spec \
360         src-libs/Makefile \
361         simgear/Makefile \
362         simgear/version.h \
363         simgear/bucket/Makefile \
364         simgear/debug/Makefile \
365         simgear/ephemeris/Makefile \
366         simgear/interpreter/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