ember/configure.ac
2011-11-30 21:24:20 +01:00

646 lines
19 KiB
Text

## Process this file with autoconf to produce a configure script.
AC_INIT(Ember, 0.6.3, erik@ogenvik.org)
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR(src)
# Detect the canonical host and target build environment.
AC_CANONICAL_SYSTEM
#AM_INIT_AUTOMAKE([tar-ustar nostdinc dist-bzip2 check-news])
AM_INIT_AUTOMAKE([tar-ustar nostdinc dist-bzip2 color-tests parallel-tests])
AM_CONFIG_HEADER(src/config.h)
#AC_LIBTOOL_DLOPEN
AC_PREREQ(2.50)
AC_COPYRIGHT([This script is under the GPL and is owned by the people in AUTHORS])
#will disable verbose linking checks, which fail even if there is no problem.
lt_cv_deplibs_check_method=pass_all
LT_INIT
# Checks for Programs
AC_PROG_CXX
#AC_PROG_AWK
AC_PROG_CC
AC_PROG_OBJC
#AC_PROG_CPP
#AC_PROG_INSTALL
#AC_PROG_LN_S
#AC_PROG_MAKE_SET
AC_PROG_LIBTOOL
dnl AM_PROG_LEX
AC_PATH_PROG([XMLLINT], [xmllint], [true])
# Check for C libraries:
AC_LANG([C++])
AC_REQUIRE_CPP
AC_LANG_PUSH([C])
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(stdlib.h)
AC_CHECK_HEADERS(math.h)
dnl Test for <math.h> header file
AC_CHECK_HEADERS([signal.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_STRUCT_TM
# check sighandler_t in C++
AC_LANG_PUSH([C++])
AC_CHECK_TYPES([sighandler_t],[],[],[
#ifdef HAVE_SIGNAL_H
# include <signal.h>
#endif])
AC_LANG_POP([C++])
# Checks for library functions.
AC_FUNC_ERROR_AT_LINE
AC_FUNC_MALLOC
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([memset select])
#AC_CHECK_FUNC(lrintf,[
# AC_DEFINE(HAVE_LRINTF, 1, [whether lrintf() is available])
#])
#AC_CHECK_FUNC(lrint,[
# AC_DEFINE(HAVE_LRINT, 1, [whether lrint() is available])
#])
#taken from Sear
STATIC_LIBSTDCPP=
STATIC_LIBGCC=
AC_ARG_ENABLE(static_build,
[AS_HELP_STRING([--enable-static-build],[enable static link of some libs (default=no)])],
[
if test "$enableval" = "yes"; then
link_static="true"
STATIC_LIBSTDCPP=`$CXX -print-file-name=libstdc++.a`
STATIC_LIBGCC=`$CXX -print-file-name=libgcc.a`
else
link_static="false"
fi
],[
link_static="false"
]
)
AM_CONDITIONAL([BUILD_STATIC], [test x"$link_static" = xtrue])
AC_MSG_RESULT([
**************************************
* Checking for SDL Libraries
**************************************
])
AM_PATH_SDL([1.2.0],,
[
AC_MSG_ERROR(Couldn't find SDL or insufficent version found. Please goto http://www.libsdl.org/ and get at least version $SDL_VERSION)
])
#dnl don't add SDL flags yet, SDL_main confuses later checks
#We check for OpenGL only because we want to check whether indirect rendering is used or not. If the code is altered to not having to check with OpenGL direct (for example going through Ogre) this check can be removed.
WF_CHECK_GL_SINGLE_LIB
# OpenAL check
AC_MSG_RESULT([
**************************************
* Checking for C Libraries
**************************************
])
WIN32="false"
OSX="false"
case $build_os in
cygwin* | mingw* | cegcc*)
LIBS="$LIBS -lshlwapi"
AC_CHECK_TOOL(WINDRES, windres)
AC_MSG_RESULT([Building for windows.])
WIN32="true"
;;
darwin*)
AC_MSG_RESULT([Building for Mac OS X.])
OSX="true"
;;
esac
AM_CONDITIONAL([WIN32], [test x$WIN32 = xtrue])
AM_CONDITIONAL([OSX], [test x$OSX = xtrue])
AC_ARG_ENABLE(webember,
[AS_HELP_STRING([--enable-webember], [enable building of webember (default=no)])],
[
if test "$enableval" = "yes"; then
webember_enabled="true"
CXXFLAGS="$CXXFLAGS -DBUILD_WEBEMBER"
else
webember_enabled="false"
fi
],[
webember_enabled="false"
]
)
AM_CONDITIONAL([BUILD_WEBEMBER], [test x"$webember_enabled" = xtrue])
if test "$webember_enabled" = "true" -a "$WIN32" = "false" -a "$OSX" = "false" ; then
# needed for some autotools versions. This is needed on POSIX ELF shared libraries only.
CXXFLAGS="$CXXFLAGS -fPIC"
fi
# make sure binreloc funtionality is used
AM_BINRELOC
# Try to find system-wide installation of tinyxml
# If found, add define to config.h, set LIBS and add automake conditional
AC_CHECK_LIB(tinyxml, main,
[
AC_DEFINE(HAVE_LIBTINYXML, 1, [Define to 1 if you have the `tinyxml' library (-ltinyxml).])
LIBS="-ltinyxml $LIBS"
have_tinyxml=true
],
[
have_tinyxml=false
]
)
AM_CONDITIONAL(HAVE_LIBTINYXML, [test x$have_tinyxml = xtrue])
# Check for C++ libraries:
AC_LANG_POP([C])
AC_MSG_RESULT([
**************************************
* Checking for C++ Libraries
**************************************
])
#AC_CHECK_LIB(IL, ilInit,
# [
# CXXFLAGS="$CXXFLAGS $IL_CFLAGS"
# LIBS="$LIBS $IL_LIBS -lIL"
# ]
#,AC_MSG_ERROR([
#****************************************************************
#* You do not have DevIL installed. This is required to build. *
#* You may find it at http://openil.sourceforge.net/. *
#****************************************************************]))
#AC_CHECK_LIB(ILU, iluFlipImage,
# [
# CXXFLAGS="$CXXFLAGS $ILU_CFLAGS"
# LIBS="$LIBS $ILU_LIBS -lILU"
# ]
#,AC_MSG_ERROR([
#****************************************************************
#* You do not have DevIL installed. This is required to build. *
#* You may find it at http://openil.sourceforge.net/. *
#****************************************************************]))
#AC_DEFINE(LIBSIGC_DISABLE_DEPRECATED, 1, [Don't use deprecated sigc methods.])
AC_CHECK_HEADER(ext/hash_set, AC_DEFINE(EXT_HASH,1,"extension stl"), )
CEGUI_VERSION=0.7.2
PKG_CHECK_MODULES(CEGUI, CEGUI >= $CEGUI_VERSION,
[
CXXFLAGS="$CXXFLAGS $CEGUI_CFLAGS"
LIBS="$LIBS $CEGUI_LIBS"
],
[
AC_MSG_ERROR([Couldn't find CEGUI or tests failed:
$CEGUI_PKG_ERRORS
Please go to http://crayzedsgui.sourceforge.net to get the latest, or check
config.log to see why the tests failed, and fix it.])
])
case "x$target_os" in
*bsd* | *linux* )
PKG_CHECK_MODULES([X11], x11,
[
CXXFLAGS="$CXXFLAGS $X11_CFLAGS"
LIBS="$LIBS $X11_LIBS"
],
[
AC_MSG_ERROR([Couldn't find X11 development files.
$X11_PKG_ERRORS])
])
break;
;;
esac
# Check for OGRE
OGRE_VERSION=1.7.0
OGRE_MAX_VERSION=1.8.0
PKG_CHECK_MODULES(OGRE, [OGRE >= $OGRE_VERSION OGRE < $OGRE_MAX_VERSION],
[
CXXFLAGS="$CXXFLAGS $OGRE_CFLAGS"
LIBS="$LIBS $OGRE_LIBS"
AC_DEFINE_UNQUOTED([OGRE_PLUGINDIR], "`pkg-config --variable=plugindir OGRE`", [The Ogre plugin dir])
],
[
AC_MSG_ERROR([Couldn't find OGRE or tests failed:
$OGRE_PKG_ERRORS
Please goto http://www.ogre3d.org to get the latest, or check config.log to
see why the tests failed, and fix it.])
])
#Check that Ogre is built with FreeImage support. If not, no images can be loaded. Ogre can also be built with DevIL, but that's not thread safe, and will lead to crashes.
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <OgreConfig.h>
]],
[[
#if OGRE_NO_FREEIMAGE == 0
// OGRE is built with FreeImage
#else
# OGRE is not built with FreeImage
#endif
]])],
[], [AC_MSG_ERROR([[You must build Ogre with FreeImage support. You cannot use DevIL, as that's not thread safe.]])])
# Check for CEGUI-OGRE adapter
PKG_CHECK_MODULES(CEGUIOGRE, [CEGUI-OGRE >= $CEGUI_VERSION],
[
CXXFLAGS="$CXXFLAGS $CEGUIOGRE_CFLAGS"
LIBS="$LIBS $CEGUIOGRE_LIBS"
],
[
AC_MSG_ERROR([Couldn't find CEGUI-OGRE adapter. Make sure that you've compiled Ogre before compiling CEGUI, and that CEGUI found the Ogre libs so that the Ogre renderer is built.
$CEGUIOGRE_PKG_ERRORS])
])
#check for lua
PKG_CHECK_MODULES(LUA, lua5.1 >= 5.1,
[
CXXFLAGS="$CXXFLAGS $LUA_CFLAGS -DLUA51"
LIBS="$LIBS $LUA_LIBS"
AC_MSG_NOTICE([Lua version => 5.1, make sure that CEGUI also has been compiled for this version])
],
[
PKG_CHECK_MODULES(LUA, lua >= 5.1,
[
CXXFLAGS="$CXXFLAGS $LUA_CFLAGS -DLUA51"
LIBS="$LIBS $LUA_LIBS"
AC_MSG_NOTICE([Lua version => 5.1, make sure that CEGUI also has been compiled for this version])
],
[
AC_MSG_ERROR([Couldn't find Lua or tests failed. Error: $LUA_PKG_ERRORS. Please go to http://www.lua.org to get the latest, or check config.log to see why the tests failed, and fix it. Also make sure that CEGUI is built with Lua support.])
])
])
AC_ARG_ENABLE(cegui_toluapp,
[ AS_HELP_STRING([--enable-cegui-toluapp], [allow Ember to use the CEGUI provided tolua++ library. This requires that you've also had CEGUI build the tolua++ generator, and that generator by this build (see --with-tolua++) (default is disabled)])],
[
if test "$enableval" = "yes"; then
cegui_toluapp="true"
else
cegui_toluapp="false"
fi
],[
cegui_toluapp="false"
]
)
# Check for tolua++
AC_CHECK_LIB([CEGUItoluapp], [main],
[
if test "$cegui_toluapp" = "true"; then
LIBS="-lCEGUItoluapp $LIBS"
AC_MSG_NOTICE([Using CEGUI provided tolua++ implementation. Make sure that you're also using the CEGUI provided tolua++ generator (see --with-toluaxx)])
else
AC_MSG_ERROR([A CEGUI provided tolua++ implementation was found. By default this is not allowed. The reason is that CEGUI normally doesn't build the tolua++ generator needed by Ember, and there's a risk then that Ember will use a tolua++ generator installed by the system together with the tolua++ library provided by CEGUI. This will in most cases lead to strange compilation errors.
You have two options:
1) Make sure that there's a tolua++ (http://www.codenix.com/~tolua/) development package installed on the system, and recompile CEGUI so that it recognizes and uses this (make sure to uninstall CEGUI first).
2) If you're certain that you've told CEGUI to also compile the tolua++ code generator and want to have Ember use the CEGUI provided tolua++ implementation, use the --enable-cegui-toluapp to disable this check. Use --with-toluaxx to make sure that the CEGUI provided tolua++ generator is used.])
fi
],
[
AC_CHECK_LIB([tolua++], [main],
[
LIBS="-ltolua++ $LIBS"
],
[
#Debian based systems adds a "5.1" suffix to the library name
AC_CHECK_LIB([tolua++5.1], [main],
[
LIBS="-ltolua++5.1 $LIBS"
],
[
AC_MSG_ERROR([Couldn't find tolua++. Make sure that tolua++ (http://www.codenix.com/~tolua/) is installed and CEGUI is compiled with Lua scripting support.])
]
)
]
)
]
)
AM_CHECK_TOLUAXX
# We have lua and tolua++. Now, check for CEGUI lua module
AC_CHECK_LIB([CEGUILuaScriptModule], [main],
[
LIBS="-lCEGUILuaScriptModule $LIBS"
],
[
AC_MSG_ERROR([Couldn't find Lua CEGUI module. Make sure that CEGUI compiled with Lua scripting support.])
]
)
# Check for OpenAL
OPENAL_VERSION=0.0.8
PKG_CHECK_MODULES(OPENAL, openal >= $OPENAL_VERSION,
[
CXXFLAGS="$CXXFLAGS $OPENAL_CFLAGS"
LIBS="$LIBS $OPENAL_LIBS"
],
[
AC_MSG_ERROR([Couldn't find OpenAL or tests failed. Error: $OPENAL_PKG_ERRORS. Please go to http://www.openal.org to get the latest, or check config.log to see why the tests failed, and fix it.])
])
#check for libogg
#OGG_VERSION=1.1.3
#PKG_CHECK_MODULES(OGG, ogg >= $OGG_VERSION,
# [
# CXXFLAGS="$CXXFLAGS $OGG_CFLAGS"
# LIBS="$LIBS $OGG_LIBS"
# ],
# [
# AC_MSG_ERROR([Couldn't find libogg or tests failed. Error: $OGG_PKG_ERRORS. Please go to http://www.vorbis.com to get the latest, or check config.log to see why the tests failed, and fix it.])
# ])
#check for vorbis
#VORBIS_VERSION=1.2.0
#PKG_CHECK_MODULES(VORBIS, vorbis >= $VORBIS_VERSION,
# [
# CXXFLAGS="$CXXFLAGS $VORBIS_CFLAGS"
# LIBS="$LIBS $VORBIS_LIBS"
# ],
# [
# AC_MSG_ERROR([Couldn't find libvorbis or tests failed. Error: $VORBIS_PKG_ERRORS. Please go to http://www.vorbis.com to get the latest, or check config.log to see why the tests failed, and fix it.])
# ])
#check for vorbisfile
#VORBISF_VERSION=1.2.0
#PKG_CHECK_MODULES(VORBISF, vorbisfile >= $VORBISF_VERSION,
# [
# CXXFLAGS="$CXXFLAGS $VORBISF_CFLAGS"
# LIBS="$LIBS $VORBISF_LIBS"
# ],
# [
# AC_MSG_ERROR([Couldn't find vorbisfile tests failed. Error: $VORBISF_PKG_ERRORS. Please go to http://www.vorbis.com to get the latest, or check config.log to see why the tests failed, and fix it.])
# ])
# Check for FreeALUT
FREEALUT_VERSION=1.0.0
PKG_CHECK_MODULES(FREEALUT, freealut >= $FREEALUT_VERSION,
[
CXXFLAGS="$CXXFLAGS $FREEALUT_CFLAGS"
LIBS="$LIBS $FREEALUT_LIBS"
],
[
AC_MSG_ERROR([Couldn't find FreeALUT or tests failed. Error: $FREEALUT_PKG_ERRORS. Please go to http://www.openal.org to get the latest, or check config.log to see why the tests failed, and fix it.])
])
#CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
#SDL_VERSION=1.2.0
#AC_SUBST(SDL_VERSION)
# check for sigc++ separately from the WF checks
PKG_CHECK_MODULES(SIG, [sigc++-2.0 >= 2.0],
[
CXXFLAGS="$CXXFLAGS $SIG_CFLAGS"
LIBS="$LIBS $SIG_LIBS"
],
[
AC_MSG_ERROR([Couldn't find SIGC++2.0])
])
WF_CHECK_THREADING
# Check for the WorldForge libs
PKG_CHECK_MODULES(WF, [eris-1.3 >= 1.3.20 \
varconf-1.0 >= 0.6.7 mercator-0.3 >= 0.3.0 atlascpp-0.6 >= 0.6.2 wfmath-0.3 >= 0.3.11 libwfut-0.2 >= 0.2.2],
[
CXXFLAGS="$CXXFLAGS $WF_CFLAGS"
LIBS="$LIBS $WF_LIBS"
],
AC_MSG_ERROR([Couldn't find some of the required WorldForge libraries: $WF_PKG_ERRORS
Please visit http://worldforge.org/dev/eng/libraries to get the latest versions.])
)
# Cppunit check
AC_ARG_ENABLE(cppunit,[ --enable-cppunit enables cppunit tests [default=yes]],
[
if test x$enableval = xno; then
ac_use_cppunit="no"
else
ac_use_cppunit="yes"
fi
], [ac_use_cppunit="yes"])
found_cppunit=no
if test "$ac_use_cppunit" = "yes"; then
AM_PATH_CPPUNIT(1.8.0, [
AC_MSG_RESULT([
*** Found CppUnit
*** Setting up make check to run tests...])
CXXFLAGS="$CXXFLAGS -DUSE_CPP_UNIT"
LIBS="$LIBS $CPPUNIT_LIBS"
found_cppunit=yes
],
AC_MSG_RESULT([
*** Unable to find a recent enough CppUnit
*** Will not run unit testing!!
***
*** To get CppUnit see http://cppunit.sourceforge.net
]))
fi
AM_CONDITIONAL(USE_CPPUNIT, [test x$found_cppunit = xyes])
# debugging option
AC_ARG_ENABLE(debug,[ --enable-debug creates debugging code [default=no]],
[
if test x$enableval = xno; then
ac_use_debug_code="no"
else
ac_use_debug_code="yes"
fi
], [ac_use_debug_code="no"])
if test "$ac_use_debug_code" = "yes"; then
CFLAGS="$CFLAGS -DDEBUG"
CXXFLAGS="$CXXFLAGS -DDEBUG"
else
CFLAGS="$CFLAGS -DNDEBUG"
CXXFLAGS="$CXXFLAGS -DNDEBUG"
fi
# gprof debugging option
AC_ARG_ENABLE(gprof,[ --enable-gprof Add flags for gprof [default=no]],
[
if test x$enableval = xno; then
ac_use_gprof_code="no"
else
ac_use_gprof_code="yes"
fi
], [ac_use_gprof_code="no"])
if test "$ac_use_gprof_code" = "yes"; then
CFLAGS="$CFLAGS -pg -g"
CXXFLAGS="$CXXFLAGS -pg -g"
fi
#dnl add SDL flags here, now that we're done with the other tests
CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
LIBS="$LIBS $SDL_LIBS"
AC_MSG_RESULT([
**************************************
* Tests Passed, Creating Makefiles.
**************************************
])
AC_CONFIG_FILES([Makefile
src/Makefile
src/platform/Makefile
src/main/Makefile
src/components/Makefile
src/bindings/Makefile
src/bindings/lua/Makefile
src/framework/Makefile
src/framework/tasks/Makefile
src/framework/bindings/Makefile
src/framework/bindings/lua/Makefile
src/framework/bindings/lua/eris/Makefile
src/framework/bindings/lua/atlas/Makefile
src/framework/bindings/lua/varconf/Makefile
src/services/Makefile
src/services/config/Makefile
src/services/logging/Makefile
src/services/metaserver/Makefile
src/services/server/Makefile
src/services/scripting/Makefile
src/services/sound/Makefile
src/services/bindings/Makefile
src/services/bindings/lua/Makefile
src/services/wfut/Makefile
src/services/input/Makefile
src/services/serversettings/Makefile
ember.dox
ember
ember.spec
ember-media.spec
autopackage/default.apspec
src/extensions/Makefile
src/components/lua/Makefile
src/components/lua/bindings/Makefile
src/components/lua/bindings/lua/Makefile
src/components/ogre/scripting/Makefile
src/components/ogre/scripting/bindings/Makefile
src/components/ogre/scripting/bindings/lua/Makefile
src/components/ogre/scripting/bindings/lua/ogre/Makefile
src/components/ogre/scripting/bindings/lua/helpers/Makefile
src/components/ogre/Makefile
src/components/ogre/widgets/Makefile
src/components/ogre/widgets/adapters/Makefile
src/components/ogre/widgets/adapters/atlas/Makefile
src/components/ogre/widgets/adapters/atlas/bindings/Makefile
src/components/ogre/widgets/adapters/atlas/bindings/lua/Makefile
src/components/ogre/widgets/adapters/bindings/Makefile
src/components/ogre/widgets/adapters/bindings/lua/Makefile
src/components/ogre/widgets/representations/Makefile
src/components/ogre/widgets/representations/bindings/Makefile
src/components/ogre/widgets/representations/bindings/lua/Makefile
src/components/ogre/environment/caelum/Makefile
src/components/ogre/environment/pagedgeometry/Makefile
src/components/ogre/environment/meshtree/Makefile
src/components/ogre/environment/Makefile
src/components/ogre/modeldefinitions/Makefile
src/components/ogre/sounddefinitions/Makefile
src/components/ogre/authoring/Makefile
src/components/ogre/authoring/entityrecipes/Makefile
src/components/ogre/SceneManagers/Makefile
src/components/ogre/SceneManagers/EmberPagingSceneManager/Makefile
src/components/ogre/SceneManagers/EmberPagingSceneManager/src/Makefile
src/components/ogre/SceneManagers/EmberPagingSceneManager/include/Makefile
src/components/entitymapping/Makefile
src/components/cegui/Makefile
media/Makefile
media/packs/Makefile
test/Makefile
src/extensions/webember/Makefile
src/domain/Makefile
src/domain/bindings/Makefile
src/domain/bindings/lua/Makefile
])
AC_OUTPUT
AC_MSG_RESULT([
**************************************
* Finished. Run make to compile Ember.
* Note that you also need to install the media. This can be gotten in a couple of different ways.
* The easiest way is to use the rsync make target (which uses the rsync program to update the media.).
* If you're compiling from git and want to use the development version, do:
*
* make devmedia
*
* If you're using a release version, you should however instead do:
*
* make releasemediarsync
*
* Note that both of these make targets will just fetch and install the files directly, bypassing normal "make install" producures. They should therefore not be used if you don't want to pollute your installation directory, and shouldn't be used if you install to a system directory.
*
* A third way is to get the media tarball directly. This only works for release versions however.
* You can find these media tarballs at http://amber.worldforge.org/WFUT .
* The media should be installed to PREFIX/share/ember/media
* so that you get PREFIX/share/ember/media/user and PREFIX/share/ember/media/shared.
* More information can be found at the Ember page at http://www.worldforge.org
**************************************
])