dnl Process this file with autoconf to produce a configure script. AC_INIT(mudconf.h) AC_CONFIG_HEADER(autoconf.h) AC_MSG_CHECKING(whether to enable Reality Levels) AC_ARG_ENABLE( [realitylvls], AC_HELP_STRING([--enable-realitylvls], [enable Reality Levels (default is NO)]), [ if test "x$enableval" = "xno"; then AC_MSG_RESULT(no) else REALITY_LVLS="-DREALITY_LVLS" LIBS="-lstdc++" REALITY_SRC="levels.cpp" REALITY_OBJ="levels.o" AC_MSG_RESULT(yes) fi ], [ AC_MSG_RESULT(no) ]) AC_SUBST(REALITY_LVLS) AC_SUBST(LIBS) AC_SUBST(REALITY_SRC) AC_SUBST(REALITY_OBJ) AC_MSG_CHECKING(whether to enable WOD Realms) AC_ARG_ENABLE( [wodrealms], AC_HELP_STRING([--enable-wodrealms], [enable WOD Realms (default is NO)]), [ if test "x$enableval" = "xno"; then AC_MSG_RESULT(no) else WOD_REALMS="-DWOD_REALMS" AC_MSG_RESULT(yes) fi ], [ AC_MSG_RESULT(no) ]) AC_SUBST(WOD_REALMS) AC_MSG_CHECKING(whether to enable Memory-Based Database) AC_ARG_ENABLE( [memorybased], AC_HELP_STRING([--enable-memorybased], [enable Memory-Based Database (default is NO)]), [ if test "x$enableval" = "xno"; then AC_MSG_RESULT(no) else MEMORY_BASED="-DMEMORY_BASED" AC_MSG_RESULT(yes) fi ], [ AC_MSG_RESULT(no) ]) AC_SUBST(MEMORY_BASED) AC_MSG_CHECKING(whether to enable Query Slave) AC_ARG_ENABLE( [queryslave], AC_HELP_STRING([--enable-queryslave], [enable Query Slave (default is NO)]), [ if test "x$enableval" = "xno"; then AC_MSG_RESULT(no) else QUERY_SLAVE="-DQUERY_SLAVE" SQLSLAVE="sqlslave" AC_MSG_RESULT(yes) fi ], [ AC_MSG_RESULT(no) ]) AC_SUBST(QUERY_SLAVE) AC_SUBST(SQLSLAVE) AC_MSG_CHECKING(whether to enable deprecated features) AC_ARG_ENABLE( [deprecated], AC_HELP_STRING([--enable-deprecated], [enable deprecated features (default is NO)]), [ if test "x$enableval" = "xno"; then AC_MSG_RESULT(no) else DEPRECATED="-DDEPRECATED" AC_MSG_RESULT(yes) fi ], [ AC_MSG_RESULT(no) ]) AC_SUBST(DEPRECATED) AC_CANONICAL_HOST AC_PROG_CC AC_PROG_CXX AC_PROG_CXXCPP AC_PROG_CPP case "$host" in *irix*) LIBS="-lm" ;; esac AC_ISC_POSIX AC_AIX AC_MINIX AC_HEADER_DIRENT AC_HEADER_STDC AC_HEADER_TIME AC_CHECK_HEADERS(unistd.h memory.h string.h errno.h malloc.h sys/select.h) AC_CHECK_HEADERS(fcntl.h limits.h sys/file.h sys/ioctl.h sys/time.h sys/stat.h) AC_CHECK_HEADERS(fpu_control.h ieeefp.h fenv.h) AC_CHECK_HEADERS([netinet/in.h]) AC_CHECKING(for sys_errlist decl) if test $ac_cv_header_errno_h = no; then AC_DEFINE(NEED_SYS_ERRLIST_DCL) else AC_EGREP_HEADER(sys_errlist,errno.h, ,AC_EGREP_HEADER(sys_errlist,stdio.h,,AC_DEFINE(NEED_SYS_ERRLIST_DCL))) fi AC_CHECK_LIB(crypt, main) AC_FUNC_STRFTIME AC_FUNC_VPRINTF AC_CHECK_FUNCS(setrlimit getrusage srandom) AC_CHECK_FUNCS(getdtablesize socket gethostbyaddr) AC_CHECK_FUNCS(gettimeofday select socket localtime_r) AC_CHECK_FUNCS(getpagesize usleep nanosleep setitimer crypt) AC_EGREP_HEADER(getpagesize,unistd.h,,AC_DEFINE(NEED_GETPAGESIZE_DCL)) if test $ac_cv_header_ieeefp_h = yes; then AC_TRY_COMPILE([ #include <ieeefp.h> ],[ int main(int argc, char *argv[]) { fp_prec_t a = fpgetprec(); fpsetprec(FP_PD); return 0; } ],AC_DEFINE(IEEEFP_H_USEABLE)) fi if test $ac_cv_header_fenv_h = yes; then AC_EGREP_HEADER(fesetprec,fenv.h,AC_DEFINE(HAVE_FESETPREC)) AC_EGREP_HEADER(fegetprec,fenv.h,AC_DEFINE(HAVE_FEGETPREC)) fi AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIGNAL AC_TRY_COMPILE([#include <signal.h>],[struct sigcontext scp;],AC_DEFINE(HAVE_STRUCT_SIGCONTEXT)) AC_HEADER_SYS_WAIT AC_STRUCT_TM AC_STRUCT_TIMEZONE AC_CHECKING(for extended string dcls) AC_EGREP_HEADER(rindex,string.h, ,AC_DEFINE(NEED_INDEX_DCL)) AC_CHECKING(for malloc dcl) querymalloc=no AC_EGREP_HEADER(realloc,stdlib.h,AC_DEFINE(MALLOC_IN_STDLIB_H),querymalloc=yes) if test $ac_cv_header_malloc_h = no && test $querymalloc = yes; then AC_DEFINE(NEED_MALLOC_DCL) else AC_EGREP_HEADER(realloc,malloc.h, ,AC_DEFINE(NEED_MALLOC_DCL)) fi AC_CHECKING(for vsprintf dcl) AC_EGREP_HEADER(vsprintf,stdio.h, ,AC_DEFINE(NEED_VSPRINTF_DCL)) AC_CHECKING(for sprintf dcl) AC_EGREP_HEADER(\<sprintf|\<*sprintf,stdio.h, ,AC_DEFINE(NEED_SPRINTF_DCL)) AC_CHECKING(for extended stdio dcls) AC_EGREP_HEADER(fread,stdio.h,AC_DEFINE(EXTENDED_STDIO_DCLS)) AC_CHECKING(for extended socket dcls) AC_EGREP_HEADER(setsockopt,sys/socket.h,AC_DEFINE(EXTENDED_SOCKET_DCLS)) AC_CHECKING(for socklen_t dcls) AC_EGREP_HEADER(socklen_t,sys/socket.h,AC_DEFINE(SOCKLEN_T_DCL)) AC_CHECKING(for gettimeofday dcl) if test $ac_cv_header_time = yes && test $ac_cv_header_sys_time_h = yes ; then AC_EGREP_HEADER(gettimeofday,[time.h> #include <sys/time.h], ,AC_DEFINE(NEED_GETTIMEOFDAY_DCL)) elif test $ac_cv_header_sys_time_h = yes ; then AC_EGREP_HEADER(gettimeofday,sys/time.h, ,AC_DEFINE(NEED_GETTIMEOFDAY_DCL)) else AC_EGREP_HEADER(gettimeofday,time.h, ,AC_DEFINE(NEED_GETTIMEOFDAY_DCL)) fi AC_CHECKING(for signal SIGCHLD braindamage) AC_TRY_RUN([ #include <signal.h> #ifndef SIGCHLD #define SIGCHLD SIGCLD #endif int rlev; RETSIGTYPE sighand(int sig, int code) { int stat; if (rlev++ > 2) exit(1); signal(SIGCHLD, sighand); wait(&stat); return; } int main(int argc, char *argv[]) { rlev = 0; signal(SIGCHLD, sighand); if (fork()) { sleep(10); } else { sleep(2); exit(1); } exit(0); } ], ,AC_DEFINE(SIGNAL_SIGCHLD_BRAINDAMAGE),AC_DEFINE(SIGNAL_SIGCHLD_BRAINDAMAGE)) AC_DECL_SYS_SIGLIST AC_MSG_CHECKING(for sys_signame decl) AC_EGREP_HEADER(sys_signame,signal.h,AC_DEFINE(HAVE_SYS_SIGNAME) AC_MSG_RESULT(yes),AC_MSG_RESULT(no)) AC_CHECKING(for IEEE floating-point format) AC_TRY_RUN([ double rZero = 0.0; int main(int argc, char *argv[]) { double r = -1e-125; long long i64; *(double *)&i64 = r; if (i64 == 0xA5FB13AC9AAF4C0Full) { return 0; } return 1; } ],AC_DEFINE(HAVE_IEEE_FP_FORMAT),AC_DEFINE(NO_IEEE_FP_FORMAT),AC_DEFINE(NO_IEEE_FP_FORMAT)) AC_CHECKING(for IEEE floating-point exception handling) AC_TRY_RUN([ #include <signal.h> double rZero = 0.0; int main(int argc, char *argv[]) { double r; long long i64; signal(SIGFPE, SIG_IGN); r = 1.0/rZero; *(double *)&i64 = r; if (i64 == 0x7FF0000000000000ull) { return 0; } return 1; } ],AC_DEFINE(HAVE_IEEE_FP_SNAN),AC_DEFINE(NO_IEEE_FP_SNAN),AC_DEFINE(NO_IEEE_FP_SNAN)) AC_CHECKING(for how division/moduli of negative quotients are handled) AC_TRY_RUN([ int main(int argc, char *argv[]) { int top = -9; int bot = 5; int quotient = top/bot; if (quotient == -1) { return 0; } return 1; } ],AC_DEFINE(SMALLEST_INT_GTE_NEG_QUOTIENT),AC_DEFINE(LARGEST_INT_LTE_NEG_QUOTIENT),AC_DEFINE(LARGEST_INT_LTE_NEG_QUOTIENT)) AC_CHECKING(for getrusage dcl) AC_EGREP_HEADER(getrusage,sys/resource.h, ,AC_DEFINE(NEED_GETRUSAGE_DCL)) AC_CHECKING(for getrlimit dcl) AC_EGREP_HEADER(getrlimit,sys/resource.h, ,AC_DEFINE(NEED_GETRLIMIT_DCL)) AC_C_CONST AC_C_INLINE AC_C_BIGENDIAN(AC_DEFINE(WORDS_BIGENDIAN),AC_DEFINE(WORDS_LITTLEENDIAN),AC_DEFINE(WORDS_UNKNOWN)) AC_CHECK_SIZEOF(short,2) AC_CHECK_SIZEOF(unsigned short,2) AC_CHECK_SIZEOF(int,4) AC_CHECK_SIZEOF(unsigned int,4) AC_CHECK_SIZEOF(long,4) AC_CHECK_SIZEOF(unsigned long,4) AC_CHECKING(whether unaligned 'short' access is permitted) AC_TRY_RUN([ int main(int argc, char *argv[]) { char foo[sizeof(short)+1]; short *ps = (short *)(foo+1); *ps = 0; return 0; } ],AC_DEFINE(CAN_UNALIGN_SHORT)) AC_CHECKING(whether unaligned 'int' access is permitted) AC_TRY_RUN([ int main(int argc, char *argv[]) { char foo[sizeof(int)+1]; int *pi = (int *)(foo+1); *pi = 0; return 0; } ],AC_DEFINE(CAN_UNALIGN_INT)) AC_CHECKING(whether unaligned 'long' access is permitted) AC_TRY_RUN([ int main(int argc, char *argv[]) { char foo[sizeof(long)+1]; long *pl = (long *)(foo+1); *pl = 0; return 0; } ],AC_DEFINE(CAN_UNALIGN_LONG)) AC_CHECKING(whether unaligned 'long long' access is permitted) AC_TRY_RUN([ int main(int argc, char *argv[]) { char foo[sizeof(long long)+1]; long long *pll = (long long *)(foo+1); *pll = 0; return 0; } ],AC_DEFINE(CAN_UNALIGN_LONGLONG)) AC_CHECKING(for pread and pwrite) AC_TRY_RUN([ #include <sys/types.h> #include <sys/uio.h> #include <unistd.h> main() { pwrite(0, "abc", 3, 0); exit(0); }], pwrite_works=yes, pwrite_works=no,) if test $pwrite_works = yes; then AC_DEFINE(HAVE_PREAD) AC_DEFINE(HAVE_PWRITE) fi AC_TRY_COMPILE([#include <sys/types.h> #include <sys/socket.h>], [struct linger ling; ling.l_onoff = 1;], AC_DEFINE(HAVE_LINGER)) AC_CHECK_LIB(resolv, main) AC_CHECK_LIB(sun, getpwnam) AC_CHECK_LIB(seq, main) AC_CHECK_LIB(intl, main) AC_CHECK_LIB(nsl, main) if test $ac_cv_func_gethostbyaddr = no; then AC_CHECK_LIB(inet, main) fi if test $ac_cv_func_socket = no; then AC_CHECK_LIB(socket, main) fi AC_CHECK_LIB(m, main) AC_CHECKING(for /dev/urandom) if test -c /dev/urandom; then AC_DEFINE(HAVE_DEV_URANDOM) fi AC_MSG_CHECKING([for in_addr_t]) AC_TRY_COMPILE([#include <sys/types.h> #if STDC_HEADERS #include <stdlib.h> #include <stddef.h> #endif #if HAVE_NETINET_IN_H #include <netinet/in.h> #endif], [in_addr_t foo;], [AC_DEFINE([HAVE_IN_ADDR_T]) AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)]) AC_SUBST(def_force_c_compiler) AC_OUTPUT(Makefile)