############################################################################## # Process this file with autoconf2.53+ to produce a configure script. # ############################################################################## AC_PREREQ(2.53) AC_INIT(1stMud, 4.5.3, bugs@firstmud.com, firstmud-4.5.3.tar.gz) AC_COPYRIGHT([2004 Markanth markanth@firstmud.com]) AC_CONFIG_HEADERS([../h/config.h:config.h.in]) AC_CONFIG_SRCDIR([../comm.c]) AC_PROG_CXX AC_PROG_INSTALL AC_GNU_SOURCE ############################################################################## # Check types. # ############################################################################## AC_C_CONST AC_C_INLINE AC_C_PROTOTYPES AC_C_VOLATILE AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_UID_T AC_TYPE_SIGNAL AC_HEADER_TIME AC_STRUCT_TM AC_STRUCT_TIMEZONE AC_CHECK_TYPES([socklen_t, int64_t, bool, _Bool]) ############################################################################## # Check some sizes. # ############################################################################## AC_CHECK_SIZEOF(char, 0) AC_CHECK_SIZEOF(short, 0) AC_CHECK_SIZEOF(int, 0) AC_CHECK_SIZEOF(long, 0) AC_CHECK_SIZEOF(long long, 0) ############################################################################## # Check need ilbraries. # ############################################################################## AC_CHECK_LIB(crypt, crypt) AC_CHECK_LIB(z, deflate) AC_CHECK_LIB(socket, socket) AC_CHECK_LIB(nsl, gethostbyname) AC_CHECK_LIB(resolv, inet_aton) AC_CHECK_LIB(mysqlclient, mysql_query) ############################################################################## # Check for needed header files. # ############################################################################## AC_HEADER_DIRENT AC_HEADER_STDC AC_HEADER_STAT AC_HEADER_SYS_WAIT AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h stdbool.h netdb.h ]) AC_CHECK_HEADERS([netinet/in.h sys/socket.h crypt.h zlib.h]) AC_CHECK_HEADERS([sys/utsname.h sys/param.h sys/resource.h mysql.h]) ############################################################################## # Custom code to make sure we have socklen_t. # ############################################################################## if test "${have_socklen_t}" = ""; then AC_MSG_CHECKING([compile of socklen_t variable]) AC_COMPILE_IFELSE( AC_LANG_PROGRAM([ #include <stdio.h> #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif #ifdef HAVE_NETINET_IN_H #include <netinet/in.h> #endif #ifdef HAVE_SYS_SOCKET_H #include <sys/socket.h> #elif defined HAVE_SOCKET_H #include <socket.h> #endif], [socklen_t sz = 100; sz--; exit(0);]), [AC_DEFINE(HAVE_SOCKLEN_T, 1, [Define if socklen_t was found.]) AC_MSG_RESULT(yes)], [AC_DEFINE(socklen_t, int, [Define if socklen_t was NOT found.])]) fi ############################################################################## # Seems sometimes printfing a time_t var is different on some systems. # ############################################################################## format_time_t=\"%d\" AC_MSG_CHECKING([if time_t is an not a long]) AC_COMPILE_IFELSE( AC_LANG_PROGRAM([ #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif #include <stdio.h> #include <stdarg.h>], [#ifndef __attribute__ #define __atribute__(x) #endif time_t tm = 60 * 10; int printf(const char *, ...) __attribute__((format(printf, 1, 2))) printf(stdout, "%d", tm); exit(0);]), [AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no) format_time_t=\"%ld\"]) AC_DEFINE_UNQUOTED(TIME_T_FMT, ${format_time_t}, [Defined for time_t variables when printing.]) ############################################################################## # Check for structure members. # ############################################################################## AC_CHECK_MEMBERS([struct tm.tm_gmtoff]) ############################################################################## # Check if 'timezone' is a variable or a function. # ############################################################################## AC_MSG_CHECKING([timezone variable]) AC_COMPILE_IFELSE( AC_LANG_PROGRAM([ #ifdef TIME_WITH_SYS_TIME #include <sys/time.h> #include <time.h> #else #ifdef HAVE_SYS_TIME_H #include <sys/time.h> #else #include <time.h> #endif #endif], [timezone += 1; exit (0);]), [AC_DEFINE(HAVE_TIMEZONE_VAR, 1, [Define if system has extern timezone variable.]) AC_MSG_RESULT(yes)], AC_MSG_RESULT(no)) ############################################################################## # Check for some functions. # ############################################################################## AC_FUNC_FORK AC_FUNC_MEMCMP AC_FUNC_MALLOC AC_FUNC_MEMCMP AC_FUNC_MKTIME AC_FUNC_STAT AC_FUNC_STRFTIME AC_FUNC_STRNLEN AC_FUNC_VPRINTF AC_FUNC_FNMATCH AC_CHECK_FUNCS([atexit crypt gettimeofday inet_aton strrev strerror]) AC_CHECK_FUNCS([psignal strsignal setrlimit setitimer getuid]) AC_CHECK_FUNCS([getpwuid scandir]) ############################################################################## # Setup and check for arguments passed to the configure script. # ############################################################################## AC_ARG_ENABLE(web, AC_HELP_STRING([--disable-web], [disables the integrated web server.]), [if test "${enable_web}" = "no"; then AC_DEFINE(DISABLE_WEBSRV, 1, [Disables the integrated web server.]) fi]) AC_ARG_ENABLE(i3, AC_HELP_STRING([--disable-i3], [disables intermud 3 network.]), [if test "${enable_i3}" = "no"; then AC_DEFINE(DISABLE_I3, 1, [Disables the InterMud 3 Network.]) fi]) AC_ARG_ENABLE(sendstat, AC_HELP_STRING([--disable-sendstat], [disables sending stats back to firstmud.com.]), [if test "${enable_sendstat}" = "no"; then AC_DEFINE(DISABLE_SENDSTAT, 1, [Disables sending stats back to firstmud.com.]) fi]) AC_ARG_ENABLE(oldrand, AC_HELP_STRING([--enable-oldrand], [uses the old random number system.]), [if test "${enable_oldrand}" = "yes"; then AC_DEFINE(OLD_RAND, 1, [Use the old random number system.]) fi]) if test -n "${have_libz}"; then AC_ARG_ENABLE(mccp, AC_HELP_STRING([--disable-mccp], [disables mud client compression protocol.]), [if test "${enable_mccp}" = "no"; then AC_DEFINE(DISABLE_MCCP, 1, [Disables Mud Client Compression Protocol.]) fi]) fi if test -n "${have_libcrypt}"; then AC_ARG_ENABLE(crypt, AC_HELP_STRING([--disable-crypt], [disables password encryption.]), [if test "${enable_crypt}" = "no"; then AC_DEFINE(DISABLE_CRYPT, 1, [Define to use encrypted passwords.]) fi]) fi AC_ARG_ENABLE(alphapfiles, AC_HELP_STRING([--enable-alphapfiles], [prefixes player files with an initial directory.]), [if test "${enable_alphapfiles}" = "yes"; then AC_DEFINE(INITIAL_ALPHA_PFILEDIRS, 1, [Define to prefix player files with an alpha letter.]) fi]) AC_ARG_ENABLE(mysql, AC_HELP_STRING([--enable-mysql[=INC_PATH]], [enables using MySQL to store data.]), [if test -n "${have_libmysqlclient}"; then case ${enable_mysql} in no) AC_DEFINE(DISABLE_MYSQL, 1, [Define to enable MySQL support.]) ;; yes) ;; *) MYSQL_INC=${enable_mysql} ;; esac fi], AC_DEFINE(DISABLE_MYSQL, 1)) AC_SUBST(MYSQL_INC) AC_ARG_ENABLE(hostname, AC_HELP_STRING(--enable-hostname=HOST, [specify a server hostname.]), [case ${enable_hostname} in no | yes) AC_MSG_ERROR([You must specify a HOST.]) ;; *) AC_DEFINE(SERVER_HOST, ${enable_hostname}, [Defines a specific server hostname.]) ;; esac]) ############################################################################## # Check for system programs. # ############################################################################## AC_CHECK_PROGS(MAKEDEP_PROG,[makedepend mkdep],error) AC_CHECK_PROGS(INDENT_PROG,[indent astyle],error) AC_CHECK_PROGS(CTAGS_PROG,[ctags etags],error) AC_CHECK_PROG(TOUCH_PROG,[touch],touch,error) AC_CHECK_PROG(LINT_PROG,[lint],lint,error) AC_CHECK_PROG(GDB_PROG,[gdb],gdb,error) AC_CHECK_PROG(MAIL_PROG,[sendmail],sendmail,error) AC_CHECK_PROG(CVS_PROG,[cvs],cvs,error) # AC_CHECK_PROG(MAKE_PROG,[gmake make],error) if test "${GDB_PROG}" != "error"; then AC_DEFINE(HAVE_GDB, 1, [Have the gdb program.]) AC_CONFIG_FILES([${HOME}/.gdbinit:gdbinit.in]) fi if test "${MAIL_PROG}" != "error"; then AC_DEFINE(HAVE_SENDMAIL, 1, [Have the sendmail program.]) fi if test "${INDENT_PROG}" = "indent"; then AC_CONFIG_FILES([${HOME}/.indent.pro:indent.pro.in]) fi ############################################################################## # Add configuration only dependencies to the Makefile. # ############################################################################## CONFIG_DEPEND=config.depend AC_SUBST_FILE(CONFIG_DEPEND) ############################################################################## # Create the Makefile and other files. # ############################################################################## AC_CONFIG_COMMANDS([stamp-h], [date >stamp-h]) AC_CONFIG_COMMANDS([.depend], [echo >../.depend]) AC_OUTPUT([../Makefile:Makefile.in]) ############################################################################## # The End. Markanth (markanth@firstmud.com) # ##############################################################################