dnl $Id$ AC_PREREQ(2.59) AC_INIT([TMW Server], [0.0.1], [b_lindeijer@users.sourceforge.net], [tmwserv]) AC_CONFIG_HEADER([config.h]) AM_INIT_AUTOMAKE # Checks for programs. AC_PROG_CXX AC_PROG_CC AC_PROG_CPP AC_PROG_RANLIB AC_PROG_INSTALL # Checks for libraries. AC_CHECK_LIB([crypto], [EVP_md5], , AC_MSG_ERROR([ *** Unable to find libcrypto library])) AC_CHECK_LIB([physfs], [PHYSFS_init], , AC_MSG_ERROR([ *** Unable to find PhysFS library (icculus.org/physfs/)])) AC_CHECK_LIB([enet], [enet_initialize], , AC_MSG_ERROR([ *** Unable to find enet library (enet.bespin.org)])) PKG_CHECK_MODULES(XML2, [libxml-2.0 >= 2.4]) CXXFLAGS="$CXXFLAGS $XML2_CFLAGS" LIBS="$LIBS $XML2_LIBS" # Checks for header files. AC_HEADER_STDC AC_HEADER_TIME # Checks for typedefs, structures, and compiler characteristics. AC_HEADER_STDBOOL AC_C_CONST AC_TYPE_SIZE_T AC_STRUCT_TM # Checks for library functions. AC_FUNC_ALLOCA AC_FUNC_ERROR_AT_LINE AC_FUNC_SETVBUF_REVERSED AC_FUNC_VPRINTF AC_CHECK_FUNCS([atexit strrchr]) # Checks for the storage backend. AC_ARG_WITH( [storage-backend], AS_HELP_STRING( [--with-storage-backend=ARG], [use storage backend [[ARG=mysql,postgresql,sqlite]] [(default=sqlite)]] ), [if test "$withval" = "yes"; then # default is sqlite. with_storage_backend="sqlite" elif test "$withval" = "no"; then AC_MSG_ERROR([$PACKAGE_NAME cannot run without a storage backend.]) else with_storage_backend="$withval" fi], [with_storage_backend="sqlite"] ) if test "$with_storage_backend" = "mysql"; then # use mysql_config to check libmysqlclient. # MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LIBS are set by AC_CHECK_LIB_TMW. AC_CHECK_LIB_TMW([mysqlclient], [4.1.0], [mysql_config]) # update CXXFLAGS and LIBS. CXXFLAGS="$CXXFLAGS -DMYSQL_SUPPORT $MYSQLCLIENT_CFLAGS" LIBS="$LIBS $MYSQLCLIENT_LIBS" elif test "$with_storage_backend" = "postgresql"; then # use pg_config to check libpq. # PQ_CFLAGS and PQ_LIBS are set by AC_CHECK_LIB_TMW. # NOTE: PQ_LIBS not set correctly AC_CHECK_LIB_TMW([pq], [7.0.0], [pg_config]) # update CXXFLAGS and LIBS. CXXFLAGS="$CXXFLAGS -DPOSTGRESQL_SUPPORT $PQ_CFLAGS" PQ_LIBS="$PQ_LIBS -lpq" LIBS="$LIBS $PQ_LIBS" elif test "$with_storage_backend" = "sqlite"; then # use pkg-config to check libsqlite3. # SQLITE_CFLAGS and SQLITE_LIBS are set by PKG_CHECK_MODULES. PKG_CHECK_MODULES(SQLITE,[sqlite3 >= 3.0.6]) # update CXXFLAGS and LIBS. CXXFLAGS="$CXXFLAGS -DSQLITE_SUPPORT $SQLITE_CFLAGS" LIBS="$LIBS $SQLITE_LIBS" else # at the moment, we support only those three databases as backends. AC_MSG_ERROR([unknown storage backend: $with_storage_backend]) fi # Checks for the scripting engine. AC_ARG_WITH( [scripting-engine], AS_HELP_STRING( [--with-scripting-engine=ARG], [use scripting engine [[ARG=ruby,squirrel]] [(default=squirrel)]] ), [], [with_scripting_engine="no"] ) if test "$with_scripting_engine" = "ruby"; then # AC_MSG_ERROR([sorry, $with_scripting_engine is not supported yet]) AC_CHECK_LIB([ruby], [ruby_init]) AC_PATH_PROG(swig_path, swig, no) if test "$swig_path" = "no"; then AC_MSG_ERROR(Could not find swig in PATH) fi SWIG="$swig_path" SWIGFLAGS="-c++ -ruby -minherit" AC_SUBST(SWIG) AC_SUBST(SWIGFLAGS) CXXFLAGS="$CXXFLAGS -DSCRIPT_SUPPORT -DRUBY_SUPPORT -I/usr/lib/ruby/1.8/linux/" LIBS="$LIBS -lruby" elif test "$with_scripting_engine" = "squirrel"; then AC_CHECK_LIB([squirrel], [sq_open]) # update CXXFLAGS and LIBS CXXFLAGS="$CXXFLAGS -DSCRIPT_SUPPORT -DSQUIRREL_SUPPORT" # there is no need to append -lsquirrel as it is already done by # AC_CHECK_LIB LIBS="$LIBS -lsqstdlib" elif test "$with_scripting_engine" != "no"; then AC_MSG_ERROR([unknown scripting engine: $with_scripting_engine]) fi AM_CONDITIONAL(BUILD_MYSQL, test "$with_storage_backend" = "mysql") AM_CONDITIONAL(BUILD_POSTGRESQL, test "$with_storage_backend" = "postgresql") AM_CONDITIONAL(BUILD_SQLITE, test "$with_storage_backend" = "sqlite") AM_CONDITIONAL(BUILD_RUBY, test "$with_scripting_engine" = "ruby") AM_CONDITIONAL(BUILD_SQUIRREL, test "$with_scripting_engine" = "squirrel") AC_CONFIG_FILES([Makefile src/Makefile]) AC_OUTPUT echo echo "-------------------------------------------------------" echo " $PACKAGE_NAME will be compiled with these options: " echo echo " + storage backend : $with_storage_backend " echo " + scripting engine: $with_scripting_engine " echo " + with unit tests : $enable_unit_tests " echo "-------------------------------------------------------" echo