# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_REVISION($Id: configure.ac 11579 2009-02-24 17:46:24Z lalo $) AC_INIT([crossfire], [1.12-gamma], [crossfire-devel@listserv.real-time.com]) AC_CONFIG_AUX_DIR([utils]) AC_CONFIG_SRCDIR([server/main.c]) AM_INIT_AUTOMAKE AC_CONFIG_HEADERS([include/autoconf.h]) AC_PREFIX_DEFAULT(/usr/games/crossfire) # we want a config.h file instead of -D options. # Checks for programs. AC_PROG_LIBTOOL AC_PROG_CC case "$target" in alpha-dec-osf*) # If we are not using gcc, we want the ansi version of cc. if test -z "$GCC"; then # CFLAGS="$CFLAGS -std1 -warnprotos" # Not yet ready for warnprotos... CFLAGS="$CFLAGS -std1" fi ;; *) ;; esac AC_PROG_CPP AM_PROG_LEX AM_PROG_CC_C_O AC_PROG_AWK AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Use the dmalloc library if available, may prevent plugins from working])],, enable_dmalloc=no) AC_ARG_WITH(python, [AS_HELP_STRING([--with-python=dir], [Directory to look for python headers/library (default=standard system location)])], PYTHON_HOME="$withval") # check for some other programs AC_PATH_PROG(LATEX, latex) AC_PATH_PROG(GZIP, gzip) AC_PATH_PROG(GUNZIP, gunzip) AC_PATH_PROG(TAR, tar) AC_PATH_PROG(PERL, perl) AC_PATH_PROG(BASENAME, basename) if test -n "$GZIP" -a -z "$GUNZIP" ; then echo "Found gzip, but not gunzip - setting GUNZIP to gzip -c"; GUNZIP="$GZIP -c" fi; if test -z "$COMPRESS" ; then AC_PATH_PROG(COMPRESS, compress) AC_PATH_PROG(UNCOMPRESS, uncompress) fi AC_PATH_PROG(BZIP, bzip2) AC_PATH_PROG(BUNZIP, bunzip2) if test -n "$BZIP" -a -z "$BUNZIP" ; then echo "Found bzip2, but not bunzip2 - setting BUNZIP to bzip2 -c"; BUNZIP="$BZIP -c" fi; if test -z "$COMPRESS" -a -z "$GZIP" -a -z "$BZIP" ; then echo "Unable to find either compress, bzip2, or gzip - hope you don't plan on compressing"; echo "any files."; fi; # Check if svnversion is avaliable to get the rev number AC_PATH_PROG(SVNVERSION, svnversion) # Check for some library functions AC_SEARCH_LIBS([gethostbyname], [nsl]) AC_SEARCH_LIBS([pow], [m]) AC_SEARCH_LIBS([sqrt], [m]) # Misc libraries. AC_SEARCH_LIBS([crypt], [crypt]) AC_CHECK_LIB(des, des_crypt) AC_CHECK_LIB(z, compress) AC_CHECK_LIB(pthread, pthread_create) LIBCURL_CHECK_CONFIG() LIBS="$LIBS $LIBCURL" CPPFLAGS="$CPPFLAGS $LIBCURL_CPPFLAGS" # Gros - Changed this to support some external programs that do not like dmalloc (like Python). # If you really need to make some memory debugging, uncomment the dmalloc line and comment out the dmalloclp one. if eval "test x$enable_dmalloc = xyes"; then AC_CHECK_LIB(dmalloc, main) else AC_CHECK_LIB(dmalloclp, main) fi # Checks for header files. AC_HEADER_DIRENT AC_HEADER_STDC AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h malloc.h stddef.h stdlib.h strings.h sys/file.h sys/ioctl.h sys/time.h time.h unistd.h sys/ttycom.h sys/termios.h crypt.h des.h zlib.h pthread.h curl/curl.h]) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE AC_TYPE_INT16_T AC_TYPE_INT32_T AC_TYPE_INT8_T AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_HEADER_TIME AC_STRUCT_TM AC_HEADER_STDBOOL AC_TYPE_UINT16_T AC_TYPE_UINT32_T AC_TYPE_UINT8_T AC_TYPE_UID_T AC_CHECK_SIZEOF(long) AC_CHECK_SIZEOF(long long) # Checks for library functions. AC_PROG_GCC_TRADITIONAL AC_FUNC_MEMCMP AC_FUNC_SETPGRP AC_TYPE_SIGNAL AC_FUNC_STRERROR_R AC_FUNC_STRFTIME AC_FUNC_VPRINTF AC_CHECK_FUNCS([getdtablesize gettimeofday mkdir mktime rmdir select socket strcasecmp strcspn strerror strncasecmp strspn strstr strtol snprintf setsid srandom srand48 srand sysconf scandir]) # alphasort can not be added to AC_CHECK_FUNCS because AC_MSG_CHECKING(checking if alphasort is defined) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[alphasort;]])],[ac_cv_func_alphasort=yes],[ac_cv_func_alphasort=no]) if test "$ac_cv_func_alphasort" = yes; then AC_DEFINE(HAVE_ALPHASORT, 1, [Define if you have the alphasort() function declaration.]) AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi AC_MSG_CHECKING(how many args gettimeofday uses) AC_CACHE_VAL(ac_cv_gettimeofday_args, [AC_TRY_COMPILE([#include #include ], [struct timeval tv; struct timezone tzp; gettimeofday(&tv, &tzp);], [ac_gettimeofday_args=2], [AC_TRY_COMPILE([#include #include ], [struct timeval tv; gettimeofday(&tv, NULL);], [ac_gettimeofday_args=2], [AC_TRY_COMPILE([#include #include ], [struct timeval tv; gettimeofday(&tv);], [ac_gettimeofday_args=1], [ac_gettimeofday_args=0])])]) ac_cv_gettimeofday_args=$ac_gettimeofday_args]) ac_gettimeofday_args=$ac_cv_gettimeofday_args if test $ac_gettimeofday_args = 1 ; then AC_DEFINE(HAVE_GETTIMEOFDAY,[],[Define if gettimeofday is available]) AC_MSG_RESULT(one argument) elif test $ac_gettimeofday_args = 2 ; then AC_DEFINE(HAVE_GETTIMEOFDAY,[],[Define if gettimeofday is available]) AC_DEFINE(GETTIMEOFDAY_TWO_ARGS,[],[Define if gettimeofday takes two arguments]) AC_MSG_RESULT(two arguments) else AC_MSG_RESULT(unknown) fi AC_SUBST(PERL) AC_SUBST(BASENAME) AC_SUBST(pkgstatedir,$localstatedir/$PACKAGE) AC_SUBST(pkgconfdir,$sysconfdir/$PACKAGE) AC_DEFINE_UNQUOTED(COMPRESS,"${COMPRESS}",[Path to the compress binary]) AC_DEFINE_UNQUOTED(UNCOMPRESS,"${UNCOMPRESS}",[Path to the uncompress binary]) AC_DEFINE_UNQUOTED(GZIP,"${GZIP}",[Path to the gzip binary]) AC_DEFINE_UNQUOTED(GUNZIP,"${GUNZIP}",[Path to the gunzip binary]) AC_DEFINE_UNQUOTED(BZIP,"${BZIP}",[Path to the bzip binary]) AC_DEFINE_UNQUOTED(BUNZIP,"${BUNZIP}",[Path to the bunzip binary]) ############################################# # Plugin configuration AC_CHECK_LIB(dl, dlopen,[ cf_have_libdl=yes ]) AM_CONDITIONAL(HAVE_LIBDL,test "x$cf_have_libdl" = "xyes") if test "x$cf_have_libdl" = "xyes" ; then ############### # Python plugin CF_CHECK_PYTHON( [PLUGIN_PYTHON="cfpython.la"] [cf_will_build_python="yes"], [cf_will_build_python="no"] [AC_MSG_NOTICE([No Python found. Python plugin will not be built.])] ) # *** Put other plugins configuration code here *** else AC_MSG_NOTICE([No dl library found. Plugins will not be supported.]) fi AM_CONDITIONAL(PYTHON_PLUGIN,test "x$PLUGIN_PYTHON" != "x") AC_SUBST(PLUGIN_PYTHON) ######################## # CFLogger and CFNewsPaper configuration AC_ARG_ENABLE(logger, [AS_HELP_STRING([--disable-logger], [Disable the logger compilation])],, enable_logger=yes) AC_ARG_ENABLE(newspaper, [AS_HELP_STRING([--disable-newspaper], [Disable the newspaper plugin compilation])],, enable_newspaper=yes) AC_CHECK_LIB(sqlite3, sqlite3_open,[ cf_have_libsqlite=yes ]) AM_CONDITIONAL(HAVE_CFLOGGER, [test x"$cf_have_libsqlite" = "xyes" -a x"$enable_logger" = "xyes"]) AM_CONDITIONAL(HAVE_CFNEWSPAPER, [test x"$cf_have_libsqlite" = "xyes" -a x"$enable_newspaper" = "xyes"]) ######################## # Unit test configuration AC_ARG_ENABLE(check, [AS_HELP_STRING([--disable-check], [Disable the unit tests even if check is available])],, enable_check=yes) AM_PATH_CHECK(,[have_check="yes"], AC_MSG_WARN([Check not found; cannot run unit tests!]) [have_check="no"]) AM_CONDITIONAL(HAVE_CHECK, test x"$have_check" = "xyes" -a x"$enable_check" = "xyes") CF_CHECK_XSLT(xsltengine) AM_CONDITIONAL(PROCESS_XSLT,[test x"$have_check" = "xyes" -a x"$enable_check" = "xyes" -a x"$xsltengine" != x]) AC_SUBST(XSLTENGINE,[$xsltengine]) ######################## # Generate output AC_CONFIG_FILES([Makefile doc/Makefile doc/Developers/Makefile doc/playbook/Makefile doc/playbook-html/Makefile doc/scripts/Makefile doc/spell-docs/Makefile doc/spoiler/Makefile doc/spoiler-html/Makefile common/Makefile devel/Makefile include/Makefile lib/Makefile random_maps/Makefile server/Makefile socket/Makefile types/Makefile utils/Makefile lib/checkarch.pl lib/collect.pl utils/add_throw.perl utils/metaserver.pl utils/scores.pl utils/player_dl.pl utils/crossloop.tmpl utils/crossloop.pl.tmpl utils/crossloop.web plugins/Makefile plugins/cfanim/Makefile plugins/cfanim/include/Makefile plugins/cflogger/Makefile plugins/cfnewspaper/Makefile plugins/cfpython/Makefile plugins/cfpython/include/Makefile plugins/cfrhg/Makefile plugins/citylife/Makefile plugins/common/Makefile plugins/common/include/Makefile test/Makefile test/bugs/Makefile test/bugs/bugtrack/Makefile test/include/Makefile test/templates/Makefile test/toolkit/Makefile test/unit/Makefile test/unit/common/Makefile test/unit/random_maps/Makefile test/unit/server/Makefile test/unit/socket/Makefile]) AC_OUTPUT AC_MSG_NOTICE([]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([Configuration summary....]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Paths]) AC_MSG_NOTICE([ prefix default value ${prefix}]) AC_MSG_NOTICE([ exec_prefix default value ${exec_prefix}]) AC_MSG_NOTICE([ Will put executables in $bindir]) AC_MSG_NOTICE([ Will put resources in $datadir]) AC_MSG_NOTICE([ Will put config in $sysconfdir]) AC_MSG_NOTICE([ Will put server runtime datas in: $localstatedir]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Build options]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Will build metaserver2 support? $ac_cv_header_curl_curl_h]) AC_MSG_NOTICE([ Will build plugins? $cf_have_libdl]) if test x"$cf_have_libsqlite" = "xyes" ; then AC_MSG_NOTICE([ Will build cflogger? $enable_logger]) AC_MSG_NOTICE([ Will build cfnewspaper? $enable_newspaper]) fi if test "x$cf_have_libdl" = "xyes" ; then AC_MSG_NOTICE([ Will build python plugin? $cf_will_build_python]) fi if test x"$xsltengine" != "x" ; then check_complement=["(will generate report)"] fi if test "x$have_check" = "xyes" -a x"$enable_check" = "xyes" ; then AC_MSG_NOTICE([ Will process unit testing? yes $check_complement]) AC_MSG_NOTICE([ (run make; make -k check)]) else AC_MSG_NOTICE([ Will process unit testing? no]) AC_MSG_NOTICE([ If you are a developer, you MUST install the check framework]) AC_MSG_NOTICE([ and write automated tests for all your add-ons!]) fi