dnl Process this file with autogen.sh to produce a configure script. AC_INIT AC_CONFIG_SRCDIR([src/main.cpp]) dnl Require at least automake 2.59 AC_PREREQ(2.59) dnl ================================================ dnl Initialize the automake stuff dnl set the $host variable based on local machine/os dnl ================================================ AC_CANONICAL_TARGET AM_INIT_AUTOMAKE(supertuxkart, 0.3SVN) dnl =================== dnl Check for compilers dnl =================== AC_PROG_CC AC_PROG_CPP AC_PROG_CXX dnl ================== dnl Set compiler flags dnl ================== CFLAGS="$CFLAGS -Wall -Wstrict-prototypes -Wmissing-prototypes" CXXFLAGS="$CXXFLAGS -Wall" dnl =================== dnl Checks for programs. dnl =================== AC_PROG_MAKE_SET AC_PROG_RANLIB AC_PROG_INSTALL dnl =============================== dnl Check for MS Windows environment dnl ================================ AC_CHECK_HEADER(windows.h) dnl ================================================ dnl Add special compiler flags for certain platforms dnl ================================================ case "${host}" in *darwin*|*macosx*) AC_CHECK_PROGS(have_pkg_config,[pkg-config],"no") if test x$have_pkg_config != xno; then LDFLAGS="$LDFLAGS `pkg-config --libs freealut`" fi esac dnl ================================== dnl check for OpenGL related libraries dnl ================================== dnl We check for openal headers here, too - since otherwise dnl the test further down is even more complicated. This test dnl depends on the platform, since Macs are using OpenAL/al.h dnl instead of AL/al.h. case "${host}" in *darwin*|*macosx*) opengl_LIBS="$LIBS -framework Carbon -framework OpenGL -framework IOKit -framework AGL" ;; *-*-cygwin* | *-*-mingw32*) dnl CygWin under Windoze. echo Win32 specific hacks... AC_DEFINE([WIN32], 1, [Define for Win32 platforms]) AC_DEFINE([NOMINMAX], 1, [Define for Win32 platforms]) opengl_LIBS="-lglut32 -lglu32 -lopengl32 -luser32 -lgdi32 -lm -lwinmm" joystick_LIBS="$joystick_LIBS -lwinmm" echo "Will link apps with $LIBS" ;; *) dnl X-Windows based machines save_LIBS=$LIBS AC_SEARCH_LIBS(glNewList, [ GL GLcore MesaGL ]) opengl_LIBS="$LIBS" LIBS=$save_LIBS if test "x$ac_cv_search_glNewList" = "x-lGLcore"; then dnl if GLcore found, then also check for GL AC_SEARCH_LIBS(glXCreateContext, GL) fi ;; esac dnl ======================================== dnl check for OpenAL (al and alut) libraries dnl ======================================== dnl FIXME: this all appears too complicated, doing unnecesary dnl tests etc --> needs cleanup dnl The check for OpenAL headers depends on the OS, since dnl Apple has the headers in OpenAL/al.h instead of AL/al.h AC_SEARCH_LIBS(alGenBuffers, [openal alut], have_al_lib=yes) dnl as well as mikmod, since mikmod is only used (but then dnl it's necessary) when openal is used. We also check for dnl ogg vorbis support now. dnl we have 4 sound libraries to check, first we check for OpenAL if test x$have_al_lib = xyes; then case "${host}" in *darwin*|*macosx*) AC_CHECK_HEADER(OpenAL/al.h, have_al_hdr=yes) ;; *) AC_CHECK_HEADER(AL/al.h, have_al_hdr=yes) ;; esac fi SUMMARY="\nSummary of optional components:\n===============================" case "${host}" in *) dnl default unix style machines dnl check for libraries save_LIBS=$LIBS dnl AL/al.h is checked before, since Macs need a different path dnl check for freealut AC_SEARCH_LIBS(alutInit, alut, have_alut_lib=yes) if test x$have_alut_lib = xyes; then AC_CHECK_HEADER(AL/alut.h, have_alut_hdr=yes) if test x$have_alut_hdr = xyes; then AC_MSG_CHECKING([for alut version 1.0.0 or later ]) dnl check for right version of alut, must be at least 1.0 AC_RUN_IFELSE([ # include # define MIN_ALUT_VERSION 1 int main() { if(alutGetMajorVersion() # define MIN_PLIB_VERSION 184 int main() { if ( PLIB_VERSION < MIN_PLIB_VERSION ) { return -1; } return 0; } ], AC_MSG_RESULT(yes), [ AC_MSG_RESULT(wrong version); AC_MSG_ERROR([Install plib 1.8.4 or later first...])], AC_MSG_RESULT(yes) ) dnl ======================= dnl check for SDL libraries dnl ======================= dnl Potentially sdl-config could be used, but apparently that might not dnl exist on all platforms, so doing the 'classical' test is safer :( case "${host}" in *) dnl default unix style machines dnl check for libraries save_LIBS=$LIBS AC_SEARCH_LIBS(SDL_Init, SDL, have_SDL_lib=yes) sdl_LIBS="$LIBS" LIBS=$save_LIBS dnl check for header files AC_CHECK_HEADER(SDL/SDL.h, have_SDL_hdr=yes) if test x$have_SDL_hdr != xyes -o x$have_SDL_lib != xyes; then AC_MSG_ERROR([Install SDL first...]) fi AC_TRY_RUN([ # include int main() { if ( SDL_VERSION_ATLEAST(1,2,10)) { return 0; } return -1; } ], :, AC_MSG_WARN([Your SDL version uses deprecated headers update to version 1.2.10 or higher if possible. Currently this doesn't affects the game at all.]) ) esac dnl ======================================================= dnl Add special compiler flags for SDL on certain platforms dnl ======================================================= case "${host}" in *darwin*|*macosx*) dnl SDL on Macs needs to link in SDLmain, since it includes the dnl actual main program (on Macs #include "SDL/SDL.h" renames dnl main into SDL_main, which then gets called from the new dnl main program included in SDLmain. This is necessary to dnl install a proper framework for SDL). dnl This can't be done earlier, since all SDL tests program dnl from configure do NOT include SDL/SDL.h, therefore the dnl main program gets not replaced, and then getting an linking dnl error about main defined twice :(( LDFLAGGS="$LDFLAGS -framework OpenAL" AC_CHECK_PROGS(have_sdl_config,[sdl-config],"no") if test x$have_sdl_config != xno; then LDFLAGS="$LDFLAGS `sdl-config --libs`" CXXFLAGS="$CXXFLAGS `sdl-config --cflags`" fi esac dnl ====================================================== dnl Try to supply the SVN revision number for the compiler dnl ====================================================== AC_CHECK_PROGS(have_svnversion,[svnversion],"no") if test x$have_svnversion != xno; then SVNVERSION="`svnversion .`" AC_DEFINE_UNQUOTED([SVNVERSION],"$SVNVERSION",["SVN revision number"]) fi # ========================= # subst bars in Makefile.am # ========================= AC_SUBST(opengl_LIBS) AC_SUBST(openal_LIBS) AC_SUBST(mikmod_LIBS) AC_SUBST(sdl_LIBS) AC_MSG_CHECKING([for gcc -fno-regmove option ]) dnl ========================= dnl test regmove compiler bug dnl ========================= dnl Test if -fno-regmove is supported, since -fregmove (which is part of -O2 on dnl g++) triggers an optimisation problem with static_ssg: ORIGCXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-regmove" AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT(yes); NOREGMOVE=-fno-regmove, AC_MSG_RESULT(no); NOREGMOVE="") CXXFLAGS="$ORIGCXXFLAGS" AC_SUBST(NOREGMOVE) dnl ======================================= dnl Bullet physics - currently experimental dnl ======================================= dnl Check for bullet physics. Currently, this is optional and needs dnl a '--enable-bullet' during configure to be used. AC_MSG_CHECKING(for bullet physics) AC_ARG_ENABLE(bullet, AC_HELP_STRING([--enable-bullet], [enable bullet physics]), [enable_bullet="$enableval"], [enable_bullet="no"]) if test "x${enable_bullet}" != "xno"; then AC_DEFINE([BULLET], [], [Use the bullet physics engine]) AC_MSG_RESULT([enabled]) CXXFLAGS="$CXXFLAGS -I../bullet/src" LIBS="$LIBS -L ../bullet/out/*/*/libs -lbulletopenglsupport -lbulletdynamics -lbulletcollision -lbulletmath -lglut" else AC_MSG_RESULT([disabled]) fi dnl ================ dnl Create makefiles dnl ================ AC_CONFIG_FILES([ \ Makefile \ data/Makefile \ fonts/Makefile \ images/Makefile \ models/Makefile \ mods/Makefile \ src/Makefile \ wavs/Makefile \ wavs/radio/Makefile \ wavs/tintagel/Makefile \ models/herrings/Makefile ]) AC_OUTPUT echo -e $SUMMARY