dnl Process this file with autoconf to produce a configure script. dnl $Id$ AC_INIT(lib/mbselib.h) AM_CONFIG_HEADER(config.h) SUBDIRS="lib mbcico mbfido mbmon mbsebbs mbutils mbnntp mbtask mbsetup unix lang examples html script" AC_SUBST(SUBDIRS) dnl dnl General settings for MBSE BBS dnl After changeing the version number, run autoconf! dnl PACKAGE="mbsebbs" MAJOR="0" MINOR="71" REVISION="0" VERSION="$MAJOR.$MINOR.$REVISION" COPYRIGHT="Copyright (C) 1997-2004 Michiel Broek, All Rights Reserved" SHORTRIGHT="Copyright (C) 1997-2004 M. Broek" GROUP="bbs" OWNER="mbse" ROWNER="`id -un root`" RGROUP="`id -gn root`" AC_SUBST(PACKAGE) AC_SUBST(MAJOR) AC_SUBST(MINOR) AC_SUBST(REVISION) AC_SUBST(COPYRIGHT) AC_SUBST(GROUP) AC_SUBST(OWNER) AC_SUBST(ROWNER) AC_SUBST(RGROUP) AC_PREFIX_DEFAULT(/opt/mbse) AC_DEFINE_UNQUOTED(VERSION, "$VERSION") AC_DEFINE_UNQUOTED(VERSION_MAJOR, $MAJOR) AC_DEFINE_UNQUOTED(VERSION_MINOR, $MINOR) AC_DEFINE_UNQUOTED(VERSION_REVISION, $REVISION) AC_DEFINE_UNQUOTED(COPYRIGHT, "$COPYRIGHT") AC_DEFINE_UNQUOTED(SHORTRIGHT, "$SHORTRIGHT") AC_SUBST(VERSION) SYSTEM="`uname -s`" CPU="`uname -m`" dnl dnl Checks for programs. dnl Try to find GNU make dnl AC_CHECK_PROG(MAKE, gmake, gmake) AC_CHECK_PROG(MAKE, make, make) dnl Alternate awk check, I skip mawk because it doesn't work for MBSE. AC_CHECK_PROG(AWK, gawk, gawk) AC_CHECK_PROG(AWK, nawk, nawk) AC_CHECK_PROG(AWK, awk, awk) dnl Try to find GNU install AC_CHECK_PROG(INSTALL, ginstall, ginstall) AC_CHECK_PROG(INSTALL, install, install) AC_PROG_CC AC_PROG_MAKE_SET AC_PROG_RANLIB AC_PROG_LN_S AC_CHECK_PROG(TAR, tar, tar) AC_CHECK_PROG(ZIP, zip, zip) AC_PATH_PROG(CHOWN, chown, chown, /bin:/sbin:/usr/bin:/usr/sbin:) AC_C_BIGENDIAN dnl dnl Additional commandline switches dnl AC_ARG_ENABLE(experiment, [ --enable-experiment Compile experimental code], [ experiment=$enableval ], [ experiment=no ]) if test "$experiment" = "yes"; then AC_DEFINE(USE_EXPERIMENT) fi AC_ARG_ENABLE(debugging, [ --enable-debugging Compile for debugging], [ debugging=$enableval ], [ debugging=no ]) if test "$debugging" = "yes"; then CFLAGS="-O -g -Wall -Wshadow -Wwrite-strings -Wstrict-prototypes -D_REENTRANT" else CFLAGS="-O3 -fno-strict-aliasing -Wall -Wshadow -Wwrite-strings -Wstrict-prototypes -D_REENTRANT" fi AC_ARG_ENABLE(optimize, [ --enable-optimize Enable CPU optimize], [ optimize=$enableval ], [ optimize=no ]) if test "$optimize" = "yes"; then AC_MSG_CHECKING(for cpuflags) for cpuflagsbin in /usr/bin /usr/local/bin /usr/pkg/bin `pwd` NONE; do if test "$cpuflagsbin" = "NONE"; then AC_MSG_RESULT(unknown) elif test -x $cpuflagsbin/cpuflags; then CPUFLAGS=`$cpuflagsbin/cpuflags` AC_MSG_RESULT($CPUFLAGS) CFLAGS="$CPUFLAGS $CFLAGS" break fi done fi AC_ARG_ENABLE(newbinkp, [ --enable-newbinkp Compile Debugging Binkp code], [ newbinkp=$enableval ], [ newbinkp=no ]) if test "$newbinkp" = "yes"; then AC_DEFINE(USE_NEWBINKP) fi dnl dnl Enable full newsgate, this was default upto 0.50.0 dnl AC_ARG_ENABLE(newsgate, [ --enable-newsgate Compile with newsgate], [ newsgate=$enableval ], [ newsgate=no ]) if test "$newsgate" = "yes"; then AC_DEFINE(USE_NEWSGATE) NEWSGATE="Yes" else NEWSGATE="No" fi dnl dnl Checks for libraries and functions. dnl AC_CHECK_LIB(compat,re_comp,result=yes,result=no) if test "$result" = "yes"; then LIBS="$LIBS -lcompat" fi AC_CACHE_CHECK(for pw_age in struct passwd, ac_cv_struct_passwd_pw_age, AC_TRY_COMPILE([#include ], [ struct passwd pw; pw.pw_age = ""; ], ac_cv_struct_passwd_pw_age=yes, ac_cv_struct_passwd_pw_age=no)) if test "$ac_cv_struct_passwd_pw_age" = "yes"; then AC_DEFINE(ATT_AGE) fi AC_CACHE_CHECK(for pw_comment in struct passwd, ac_cv_struct_passwd_pw_comment, AC_TRY_COMPILE([#include ], [ struct passwd pw; pw.pw_comment = ""; ], ac_cv_struct_passwd_pw_comment=yes, ac_cv_struct_passwd_pw_comment=no)) if test "$ac_cv_struct_passwd_pw_comment" = "yes"; then AC_DEFINE(ATT_COMMENT) fi AC_CHECK_LIB(shadow,setspent,result=yes,result=no) if test "$result" = "yes"; then LIBS="$LIBS -lshadow" SHADOW_PASSWORD=1 LIBSHADOW=1 else AC_CHECK_LIB(shadow,getspnam,result=yes,result=no) if test "$result" = "yes"; then LIBS="$LIBS -lshadow" SHADOW_PASSWORD=1 LIBSHADOW=1 else dnl some libc's (glibc 2.x) keep shadow functions in -lc AC_CHECK_LIB(c,setspent,result=yes,result=no) if test "$result" = "yes"; then if test -f /etc/shadow; then SHADOW_PASSWORD=1 fi fi fi fi if test "$SHADOW_PASSWORD" = "1"; then if test "$ac_cv_func_fgetspent" != "yes"; then AC_CHECK_LIB(shadow,fgetspent,result=yes,result=no) if test "$result" = "yes"; then if test "$LIBSHADOW" != "1"; then LIBS="$LIBS -lshadow" fi fi fi AC_DEFINE(SHADOW_PASSWORD) fi AC_CHECK_LIB(crypt,crypt,result=yes,result=no) if test "$result" = "yes"; then LIBS="$LIBS -lcrypt" fi AC_CHECK_LIB(util,login,result=yes,result=no) if test "$result" = "yes"; then LIBS="$LIBS -lutil" AC_CHECK_HEADERS(util.h) AC_CHECK_HEADERS(libutil.h) AC_CHECK_HEADERS(sys/types.h) fi dnl dnl Support for zlib transfers compression dnl ZLIBSUP=No AC_CHECK_LIB(z,compress2,result=yes,result=no) if test "$result" = "yes"; then LIBS="$LIBS -lz" AC_CHECK_HEADERS(zlib.h,ZLIBSUP=Yes,ZLIBSUP=No) fi dnl dnl The last library to add, according to Sun the -lpthread must be the dnl very last library specified on the gcc command line. dnl dnl dnl On NetBSD we need to add the pkg dirs for posix threads dnl if test "$SYSTEM" = "NetBSD"; then CFLAGS="$CFLAGS `pthread-config --cflags`" LDFLAGS="$LDFLAGS `pthread-config --ldflags`" fi dnl dnl For FreeBSD we need -pthread for gcc and don't need libpthread dnl if test "$SYSTEM" = "FreeBSD"; then CFLAGS="-pthread $CFLAGS" else AC_CHECK_LIB(pthread,pthread_create,result=yes,result=no) if test "$result" = "yes"; then LIBS="$LIBS -lpthread" fi fi dnl dnl Checks for header files. dnl AC_HEADER_STDC AC_HEADER_DIRENT AC_HEADER_TIME AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(sys/time.h termios.h sys/vfs.h unistd.h netinet/in.h regex.h) AC_CHECK_HEADERS(sys/resource.h usersec.h gshadow.h shadow.h) AC_CHECK_HEADERS(limits.h utmp.h utmpx.h lastlog.h rpc/key_prot.h) AC_STRUCT_TIMEZONE dnl dnl Checks for typedefs, structures, and compiler characteristics. dnl AC_C_CONST AC_TYPE_UID_T AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_MODE_T AC_TYPE_SIZE_T AC_STRUCT_ST_BLKSIZE AC_HEADER_STAT AC_STRUCT_TM dnl dnl Checks for library functions. dnl AC_CHECK_FUNCS(c64i a64l fchmod fchown fdatasync fsync lckpwdf strcasestr putpwent) AC_PROG_GCC_TRADITIONAL AC_FUNC_MEMCMP AC_TYPE_SIGNAL AC_FUNC_UTIME_NULL AC_CHECK_FUNCS(gettimeofday re_comp select) AC_CHECK_FUNCS(getspnam initgroups updwtmp updwtmpx) dnl dnl Check for usefull external programs dnl AC_PATH_PROG(COMPRESS,compress,no-compress-found-during-configure) AC_PATH_PROG(GZIP,gzip,no-gzip-found-during-configure) AC_PATH_PROG(ARC,arc) AC_PATH_PROG(NOMARCH,nomarch) AC_PATH_PROG(ARJ,arj) AC_PATH_PROG(UNARJ,unarj) AC_PATH_PROG(LHA,lha) AC_PATH_PROG(RAR,rar) AC_PATH_PROG(UNRAR,unrar) AC_PATH_PROG(TAR,tar) AC_PATH_PROG(ZIP,zip) AC_PATH_PROG(UNZIP,unzip) AC_PATH_PROG(ZOO,zoo) AC_PATH_PROG(HA,ha) AC_PATH_PROG(ANTIVIR,antivir) AC_PATH_PROG(FPROT,f-prot) AC_PATH_PROG(UVSCAN,uvscan) AC_PATH_PROG(CLAMAV,clamscan) AC_PATH_PROG(RB,rb) AC_PATH_PROG(RB,lrb) AC_PATH_PROG(SB,sb) AC_PATH_PROG(SB,lsb) AC_PATH_PROG(RZ,rz) AC_PATH_PROG(RZ,lrz) AC_PATH_PROG(SZ,sz) AC_PATH_PROG(SZ,lsz) AC_PATH_PROG(GOLDEDBIN,golded) AC_PATH_PROG(GOLDEDBIN,gedlnx) AC_PATH_PROG(GOLDNODE,goldnode) AC_PATH_PROG(GOLDNODE,gnlnx) AC_PATH_PROG(CONVERT,convert) dnl AC_ARG_WITH(log-compress,[ --with-log-compress=METHOD Log compression method (default gzip)], LOG_COMPRESS=$with_log_compress, LOG_COMPRESS=gzip) case "$LOG_COMPRESS" in gzip) LOG_COMPRESS=$GZIP LOG_COMPRESSEXT=".gz" ;; compress) LOG_COMPRESS=$COMPRESS LOG_COMPRESSEXT=".Z" ;; *) LOG_COMPRESS=$LOG_COMPRESS LOG_COMPRESSEXT=".unknown" ;; esac AC_SUBST(LOG_COMPRESS) AC_SUBST(LOG_COMPRESSEXT) dnl AC_MSG_CHECKING(location of joe editor) for joebin in /usr/bin /usr/local/bin /usr/pkg/bin NONE; do if test "$joebin" = "NONE"; then AC_MSG_RESULT(not found) elif test -x $joebin/joe; then AC_SUBST(joebin) AC_MSG_RESULT($joebin) break fi done AC_MSG_CHECKING(location of joe rc files) for joelib in /etc/joe /usr/lib/joe /usr/local/etc /usr/local/etc/joe /usr/local/lib/joe /usr/local/lib /usr/pkg/lib /usr/pkg/etc NONE; do if test "$joelib" = "NONE"; then AC_MSG_RESULT(not found) elif test -f $joelib/joerc; then AC_SUBST(joelib) AC_MSG_RESULT($joelib) break fi done AC_MSG_CHECKING(location of utmp) for utmpdir in /var/run /var/adm /usr/adm /etc NONE; do if test "$utmpdir" = "NONE"; then AC_MSG_WARN(utmp file not found) elif test -f $utmpdir/utmp; then AC_DEFINE_UNQUOTED(_UTMP_FILE, "$utmpdir/utmp") AC_MSG_RESULT($utmpdir) break fi done AC_MSG_CHECKING(location of lastlog/wtmp) for logdir in /var/log /var/adm /usr/adm /etc; do if test -d $logdir; then AC_DEFINE_UNQUOTED(_WTMP_FILE, "$logdir/wtmp") AC_DEFINE_UNQUOTED(LASTLOG_FILE, "$logdir/lastlog") AC_MSG_RESULT($logdir) break fi done AC_MSG_CHECKING(location of vpopmail) for vpop in /var/qmail/vpopmail/bin NONE; do if test "$vpop" = "NONE"; then AC_MSG_RESULT(not found) elif test -x $vpop/vadduser; then AC_DEFINE_UNQUOTED(_VPOPMAIL_PATH, "$vpop") AC_MSG_RESULT($vpop) break fi done AC_OUTPUT( Makefile.global paths.h unix/login.defs INSTALL FILE_ID.DIZ script/editor html/index.htm html/basic.html html/upgrade.html ) #================================================================================= AC_MSG_RESULT([ -=-=-=-=-=-=-=-=-=-= Configuration Complete =-=-=-=-=-=-=-=-=-=- Configuration summary : Version : ..................... ${VERSION} Hydra/Binkp zlib compression : ${ZLIBSUP} Full newsgate : ............... ${NEWSGATE} ]) if test x$ac_cv_c_compiler_gnu = xyes ; then echo -e " Tools :\n" echo " Compiler is GCC : ............. ${ac_cv_c_compiler_gnu}" fi AC_MSG_RESULT([ Installation directories : Main directory : ........... ${prefix} Owner and group : ........... ${OWNER}.${GROUP} Now type 'make' and as root 'make install' ])