dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.12) AC_INIT(citserver.c) AC_PREFIX_DEFAULT(/usr/local/citadel) if test "$prefix" = NONE; then AC_DEFINE_UNQUOTED(BBSDIR, "$ac_default_prefix") else AC_DEFINE_UNQUOTED(BBSDIR, "$prefix") fi AC_ARG_ENABLE(autologin, [ --disable-autologin disable autologin (default is enabled if possible)]) AC_ARG_ENABLE(ansi-color, [ --enable-ansi-color enable ANSI color (default is disabled)],[if test "$enableval" = yes; then AC_DEFINE(ANSI_COLOR) fi]) dnl By default, we only build the client (citadel and whobbs) unless we can dnl figure out how to build with POSIX threads. TARGETS=client dnl Check for Digital Unix: it has a different way of building for pthreads, dnl and we can't build pthreads programs with gcc due to header problems. AC_CANONICAL_HOST case "$host" in alpha*-dec-osf*) if test -z "$CC"; then CC=cc fi SERVER_LDFLAGS=-pthread TARGETS="client server utils serv_modules" ;; esac dnl Checks for programs. AC_PROG_CC if test "$GCC" = yes; then CFLAGS="$CFLAGS -Wall -Wstrict-prototypes" dnl pass -rdynamic to the linker to enable dlopen() modules to dnl refer to symbols in the main executable (applies to citserver) SERVER_LDFLAGS=-rdynamic PICFLAGS=-fPIC fi AC_PROG_RANLIB AC_PROG_INSTALL missing_dir=`cd $ac_aux_dir && pwd` AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) dnl Checks for libraries. dnl libdl, libgdbm, and libcrypt are only used in the server, so the dnl Makefile only passes $(LIBS) to that target. If other programs start dnl requiring additional libraries, we'll have to use other variables, as is dnl done with curses. dnl We only need crypt() if we're using autologin. FIXME: implement shadow dnl passwords and/or PAM... if test "$enable_autologin" != no; then AC_CHECK_LIB(crypt, crypt) fi AC_CHECK_LIB(dl, dlopen) AC_CHECK_LIB(gdbm, gdbm_open) AC_CHECK_LIB(curses, initscr, CURSES=-lcurses) dnl Check for libpthread(s) if we're not using Digital UNIX. (On which the dnl -pthread flag takes care of this.) If we find one of the libraries, then dnl set up the TARGETS variable to build the server as well as the client. if test "$SERVER_LDFLAGS" != -pthread; then AC_CHECK_LIB(pthread, pthread_create, [LIBS="$LIBS -lpthread" TARGETS="client server utils serv_modules"]) AC_CHECK_LIB(pthreads, pthread_create, [LIBS="$LIBS -lpthreads" TARGETS="client server utils serv_modules"]) fi dnl Checks for header files. AC_HEADER_DIRENT AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(curses.h fcntl.h limits.h termios.h strings.h sys/ioctl.h sys/select.h sys/time.h syslog.h unistd.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_PID_T AC_TYPE_SIZE_T AC_HEADER_TIME AC_STRUCT_TM dnl Checks for library functions. AC_FUNC_GETPGRP AC_PROG_GCC_TRADITIONAL AC_TYPE_SIGNAL AC_FUNC_VPRINTF AC_CHECK_FUNCS(snprintf mkdir mktime rmdir select socket strerror) dnl Enable autologin if the feature is requested (which is the default) and dnl a crypt() function is available. if test "$enable_autologin" != no; then AC_CHECK_FUNC(crypt, AC_DEFINE(ENABLE_AUTOLOGIN)) fi dnl Tell the Makefile whether we need to use our snprintf() replacement. if test "$ac_cv_func_snprintf" = no; then SNPRINTF=snprintf.o fi dnl Done! Now write the Makefile and sysdep.h AC_SUBST(CURSES) AC_SUBST(TARGETS) AC_SUBST(SERVER_LDFLAGS) AC_SUBST(SNPRINTF) AC_SUBST(PICFLAGS) AC_CONFIG_HEADER(sysdep.h) AC_OUTPUT(Makefile)