2 # Process this file with autoconf to produce a configure script.
5 AC_INIT([naev], [0.4.2], [bobbens@gmail.com])
6 AC_CONFIG_SRCDIR([src/naev.c])
7 AC_CONFIG_HEADERS([src/config.h])
8 AC_CONFIG_MACRO_DIR([m4])
9 AC_CONFIG_AUX_DIR([build])
11 AM_INIT_AUTOMAKE([foreign])
13 # M4 defines __unix__ to be the empty string on UNIX-like systems. This
14 # causes AC_DEFINE to fail if it is used to define __unix__. This seems to
16 ifdef([__unix__], define([__unix__], [[__unix__]]))
22 # If A='$B' and B='hello', then "expand_variable A" will cause A='hello'
28 echo "$value" | grep -qE '(^|[^\\])\$' || break
32 # Temporarily changes the value of a variable, until it is restored later.
33 # $1: name of variable
40 # Restores the saved variable.
41 # $1: name of variable
42 define([VAR_RESTORE], [
47 # Checks for variables
51 AS_IF([test "$prefix" = "NONE"], [
52 prefix="$ac_default_prefix"
54 AS_IF([test "$exec_prefix" = "NONE"], [
58 # Check if we have custom CFLAGS
59 AS_IF([test -n "$CFLAGS"], [have_custom_cflags=yes], [have_custom_cflags=no])
62 # Checks for programs.
69 AC_CHECK_PROG([CUT], [cut], [cut])
70 AS_IF([test -z "$CUT"],[
71 AC_ERROR([cut not found])
74 AC_CHECK_PROG([DOXYGEN], [doxygen], [doxygen])
75 AC_CHECK_PROG([LUADOC], [luadoc], [luadoc])
76 AC_CHECK_PROG([GIT], [git], [git])
79 # Checks for build environment
81 AC_MSG_CHECKING([whether we are building utils])
82 AS_IF([test -d "$srcdir/utils"], [
87 AC_MSG_RESULT([$have_utils])
89 AC_MSG_CHECKING([whether we have docs])
90 AS_IF([test -d "$srcdir/docs"], [
95 AC_MSG_RESULT([$have_docs])
102 AC_MSG_CHECKING([[if we need a __unix__ define]])
105 # if defined __APPLE__ /* add other known platforms here */
106 # error should have __unix__ but don't
109 ], [AC_MSG_RESULT([no])],
112 AC_DEFINE([__unix__], 1,
113 [Define to 1 if running on a UNIX-like system where __unix__ is missing])
117 # Checks for command-line arguments
121 AC_MSG_CHECKING([whether to enable debug mode])
122 AC_ARG_ENABLE([debug],
123 AC_HELP_STRING([--enable-debug=@<:@no|yes|paranoid@:>@],
124 [enable debug mode (default: yes)]), [
130 enable_debug=paranoid
139 AC_MSG_RESULT([$enable_debug])
141 AS_IF([test "$enable_debug" != "no"], [
142 AS_IF([test "$have_custom_cflags" = "no"], [
143 # Undo the default CFLAGS set by autoconf
144 AS_IF([test "$ac_cv_prog_cc_g" = "yes"], [
145 CFLAGS="-g -W -Wall -Wextra -Wunused -Wshadow -Wpointer-arith -Wmissing-prototypes -Winline -Wcast-align -Wmissing-declarations"
152 AC_CHECK_LIB([bfd], [bfd_init], [
153 AC_CHECK_HEADERS([bfd.h], [], [
154 AC_WARN([debug mode is enabled but bfd.h is missing; disabling])
158 AC_WARN([debug mode is enabled but libbfd is missing; disabling])
166 AC_MSG_CHECKING([whether to use OpenAL])
167 AC_ARG_WITH([openal],
168 AC_HELP_STRING([--with-openal],
169 [use the OpenAL sound backend (default: yes)]), [
170 AS_IF([test "$withval" = "yes"], [
178 AC_MSG_RESULT([$with_openal])
181 AC_MSG_CHECKING([whether to use SDL_mixer])
182 AC_ARG_WITH([sdlmixer],
183 AC_HELP_STRING([--with-sdlmixer],
184 [use the SDL_mixer sound backend (default: yes)]), [
185 AS_IF([test "$withval" = "yes"], [
193 AC_MSG_RESULT([$with_sdlmixer])
196 ndata_path="$datadir/$PACKAGE_NAME/ndata"
197 expand_variable ndata_path
199 AC_MSG_CHECKING([for path to ndata])
200 AC_ARG_WITH([ndata-path],
201 AC_HELP_STRING([--with-ndata-path=PATH], [path to the ndata file]),
202 [ndata_path="$withval"], [])
203 AC_MSG_RESULT([$ndata_path])
204 AS_IF([test -z "$ndata_path" || test "$ndata_path" = "yes"], [
205 AC_ERROR([The data path must be explicitly specified])
207 AC_SUBST([ndata_path])
210 # Checks for libraries.
215 AS_IF([test -z "$SDL_CFLAGS" && test -z "$SDL_LIBS"], [
216 AC_ERROR([SDL not found])
220 PKG_CHECK_MODULES([XML], [libxml-2.0], [], [
221 AC_ERROR([libxml-2.0 not found])
225 PKG_CHECK_MODULES([FREETYPE], [freetype2], [], [
226 AC_ERROR([freetype2 not found])
230 PKG_CHECK_MODULES([VORBISFILE], [vorbisfile], [], [
231 AC_ERROR([vorbisfile not found])
235 PKG_CHECK_MODULES([PNG], [libpng], [], [
236 AC_ERROR([libpng not found])
240 AS_IF([test "$with_openal" = "yes"], [
241 AM_PATH_OPENAL([have_openal=yes], [have_openal=no])
245 AS_IF([test "$with_sdlmixer" = "yes"], [
247 AC_SEARCH_LIBS([Mix_OpenAudio], [SDL_mixer],
248 [have_sdlmixer=yes], [have_sdlmixer=no])
249 AS_IF([test "$have_sdlmixer" = "yes"], [
251 SDLMIXER_LIBS="$LIBS"
263 AC_SEARCH_LIBS([IMG_Load], [SDL_image], [], [
264 AC_ERROR([SDL_image not found])
267 SDLIMAGE_LIBS="$LIBS"
269 AC_SUBST([SDLIMAGE_CFLAGS])
270 AC_SUBST([SDLIMAGE_LIBS])
274 AC_MSG_ERROR([OpenGL not found])
282 GLOBAL_CFLAGS="-include \"\$(top_builddir)/src/config.h\""
283 GLOBAL_CFLAGS="$GLOBAL_CFLAGS -I\"\$(top_srcdir)/src\""
286 AS_IF([test "$enable_debug" != "no"], [
287 GLOBAL_CFLAGS="$GLOBAL_CFLAGS -DLUA_USE_APICHECK"
292 GLOBAL_LIBS="$NAEV_LIBS -lwsock32"
296 AC_SUBST([GLOBAL_CFLAGS])
297 AC_SUBST([GLOBAL_LIBS])
300 WIDGET_LIBS="\$(top_builddir)/src/tk/widget/libwidget.a"
302 CSPARSE_CFLAGS="-I\"\$(top_srcdir)/lib/csparse\""
303 CSPARSE_LIBS="\$(top_builddir)/lib/csparse/libcsparse.a"
305 LUA_CFLAGS="-I\"\$(top_srcdir)/lib/lua\""
306 LUA_LIBS="\$(top_builddir)/lib/lua/liblua.a"
308 NAEV_CFLAGS="$GLOBAL_CFLAGS"
309 NAEV_LIBS="$GLOBAL_LIBS $WIDGET_LIBS"
311 AS_IF([test "$enable_debug" != "no"], [
312 AC_DEFINE([DEBUGGING], 1, [Define to 1 to enable debug code])
313 AC_DEFINE([DEBUG], 1, [Define to 1 to enable debug code])
316 NAEV_LIBS="$NAEV_LIBS -lbfd -rdynamic"
320 AS_IF([test "$enable_debug" = "paranoid"], [
321 AC_DEFINE([DEBUG_PARANOID], 1, [Define to 1 to enable paranoid debug code])
324 NAEV_CFLAGS="$NAEV_CFLAGS $CSPARSE_CFLAGS $SDL_CFLAGS"
325 NAEV_CFLAGS="$NAEV_CFLAGS $XML_CFLAGS $FREETYPE_CFLAGS $LUA_CFLAGS"
326 NAEV_CFLAGS="$NAEV_CFLAGS $VORBISFILE_CFLAGS $OPENGL_CFLAGS $PNG_CFLAGS"
327 NAEV_CFLAGS="$NAEV_CFLAGS $SDLIMAGE_CFLAGS"
329 NAEV_LIBS="$NAEV_LIBS $CSPARSE_LIBS $SDL_LIBS $XML_LIBS"
330 NAEV_LIBS="$NAEV_LIBS $FREETYPE_LIBS $LUA_LIBS"
331 NAEV_LIBS="$NAEV_LIBS $VORBISFILE_LIBS $OPENGL_LIBS $PNG_LIBS"
332 NAEV_LIBS="$NAEV_LIBS $SDLIMAGE_LIBS"
334 AS_IF([test "$have_openal" = "yes"], [
335 NAEV_CFLAGS="$NAEV_CFLAGS $OPENAL_CFLAGS"
336 NAEV_LIBS="$NAEV_LIBS $OPENAL_LIBS"
339 AS_IF([test "$have_sdlmixer" = "yes"], [
340 NAEV_CFLAGS="$NAEV_CFLAGS $SDLMIXER_CFLAGS"
341 NAEV_LIBS="$NAEV_LIBS $SDLMIXER_LIBS"
346 NAEV_LIBS="$NAEV_LIBS -mwindows"
350 # This is a list of in-tree static libs that naev depends on. It is used by
351 # automake to detect when the binary needs recompiling after a library has been
353 NAEV_DEPENDENCIES="$WIDGET_LIBS $LUA_LIBS $CSPARSE_LIBS"
355 AC_SUBST([NAEV_CFLAGS])
356 AC_SUBST([NAEV_LIBS])
357 AC_SUBST([NAEV_DEPENDENCIES])
360 LIBLUA_CFLAGS="$GLOBAL_CFLAGS"
364 LIBLUA_CFLAGS="$LIBLUA_CFLAGS -DLUA_ANSI"
367 LIBLUA_CFLAGS="$LIBLUA_CFLAGS -DLUA_USE_POSIX"
371 AC_SUBST([LIBLUA_CFLAGS])
374 PACK_CFLAGS="$GLOBAL_CFLAGS $SDL_CFLAGS $SDLIMAGE_CFLAGS"
375 PACK_LIBS="$GLOBAL_LIBS $SDL_LIBS $SDLIMAGE_LIBS"
377 AC_SUBST([PACK_CFLAGS])
378 AC_SUBST([PACK_LIBS])
383 AC_CHECK_HEADERS([fenv.h])
386 # Checks for typedefs, structures, and compiler characteristics.
397 # Checks for functions
399 VAR_SAVE([LIBS], ["-lm"])
400 AC_CHECK_FUNCS([feenableexcept])
403 VAR_SAVE([CFLAGS], ["$VORBISFILE_CFLAGS"])
404 VAR_SAVE([LIBS], ["$VORBISFILE_LIBS"])
405 AC_CHECK_FUNCS([ov_read_filter])
406 VAR_RESTORE([CFLAGS])
412 AC_MSG_CHECKING([for the current Git commit identifier])
413 AS_IF([test -n "$GIT" && test -d "$srcdir/.git"], [
414 GIT_COMMIT=$(cd "$srcdir" && "$GIT" describe --always --tags)
415 AC_MSG_RESULT([$GIT_COMMIT])
418 AC_MSG_RESULT([unknown])
422 # Defines in config.h
426 VMAJOR=$(echo "$VERSION" | cut -d. -f1)
427 VMINOR=$(echo "$VERSION" | cut -d. -f2)
428 VREV=$(echo "$VERSION" | cut -d. -f3)
430 AC_DEFINE_UNQUOTED([VMAJOR], [$VMAJOR], [Define to the major version component])
431 AC_DEFINE_UNQUOTED([VMINOR], [$VMINOR], [Define to the minor version component])
432 AC_DEFINE_UNQUOTED([VREV], [$VREV], [Define to the revision version component])
435 AS_IF([test "$have_openal" = "yes"], [
436 AC_DEFINE([USE_OPENAL], 1, [Define to 1 if using OpenAL])
440 AS_IF([test "$have_sdlmixer" = "yes"], [
441 AC_DEFINE([USE_SDLMIX], 1, [Define to 1 if using SDL_mixer])
447 AC_DEFINE([LINUX], 1, [Define to 1 if running on Linux])
450 AC_DEFINE([FREEBSD], 1, [Define to 1 if running on FreeBSD])
453 AC_DEFINE([WIN32], 1, [Define to 1 if running on Windows])
456 AC_DEFINE([MACOSX], 1, [Define to 1 if running on Mac OS X])
461 AC_DEFINE_UNQUOTED([NDATA_DEF], ["$ndata_path"],
462 [Define to the path to the data file])
465 AS_IF([test -n "$GIT_COMMIT"], [
466 AC_DEFINE_UNQUOTED([GIT_COMMIT], ["$GIT_COMMIT"],
467 [Define to the current Git commit identifier])
471 # Automake conditionals
474 AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"])
475 AM_CONDITIONAL([HAVE_LUADOC], [test -n "$LUADOC"])
476 AM_CONDITIONAL([HAVE_UTILS], [test "$have_utils" = "yes"])
477 AM_CONDITIONAL([HAVE_DOCS], [test "$have_docs" = "yes"])
482 SHAVE_INIT([build], [enable])
483 AC_CONFIG_FILES([Makefile
489 src/tk/widget/Makefile
491 AS_IF([test "$have_utils" = "yes"], [
492 AC_CONFIG_FILES([utils/Makefile
493 utils/pack/Makefile])
495 AS_IF([test "$have_docs" = "yes"], [
496 AC_CONFIG_FILES([docs/Makefile])
502 AC_MSG_NOTICE([prefix: $prefix])
503 AC_MSG_NOTICE([ndata: $ndata_path])
505 AC_MSG_NOTICE([sound backends:])
506 AC_MSG_NOTICE([ OpenAL: $have_openal])
507 AC_MSG_NOTICE([ SDL_mixer: $have_sdlmixer])
509 AC_MSG_NOTICE([debug mode: $enable_debug])