AC_ARG_ENABLE(autologin, [ --disable-autologin disable autologin (default is enabled if possible)])
AC_ARG_ENABLE(chkpwd, [ --disable-chkpwd don't build 'chkpwd'])
+
+AC_ARG_ENABLE(icq, [ --enable-icq include server ICQ support], [
+ if test "x$enableval" = xyes; then
+ SERV_ICQ='modules/serv_icq$(SO)'
+ fi])
+AC_ARG_ENABLE(threaded-client, [ --disable-threaded-client
+ disable multithreaded client])
+
AC_ARG_WITH(pam, [ --with-pam use PAM if present (see PAM.txt before you try this)])
AC_ARG_WITH(kthread, [ --with-kthread use kernel threads (on FreeBSD) (not recommended yet)])
alpha*-dec-osf*)
test -z "$CC" && CC=cc
PTHREAD_DEFS=-pthread
- SERVER_LDFLAGS=-pthread
+ PTHREAD_LIBS=-pthread
check_pthread=no
;;
dnl FreeBSD is similar to Digital UNIX:
*-*-freebsd*)
if test "$with_kthread" = yes; then
- SERVER_LDFLAGS=-kthread
+ PTHREAD_LIBS=-kthread
else
- SERVER_LDFLAGS=-pthread
+ PTHREAD_LIBS=-pthread
fi
check_pthread=no
PTHREAD_DEFS=-D_THREAD_SAFE
;;
*-*-openbsd*)
- SERVER_LDFLAGS=-pthread
+ PTHREAD_LIBS=-pthread
check_pthread=no
PTHREAD_DEFS=-pthread
LINK_SHARED="ld -x -Bshareable"
;;
+ *-*-solaris*)
+ PTHREAD_DEFS="-D_REENTRANT -D_PTHREADS"
+ ;;
esac
dnl Checks for programs.
dnl Set up system-dependent compiler flags.
if test "$GCC" = yes; then
- CFLAGS="$CFLAGS -Wall -Wstrict-prototypes"
case "$host" in
*-*-bsdi[123]*)
+ CFLAGS="$CFLAGS -Wall -Wstrict-prototypes"
;;
mips*-sgi-irix*)
+ CFLAGS="$CFLAGS -Wall -Wstrict-prototypes"
+ PICFLAGS=-fPIC
+ ;;
+ *-*-solaris*)
+ CFLAGS="$CFLAGS -Wall -Wno-char-subscripts"
PICFLAGS=-fPIC
;;
*)
+ CFLAGS="$CFLAGS -Wall -Wstrict-prototypes"
SERVER_LDFLAGS="$SERVER_LDFLAGS -rdynamic"
PICFLAGS=-fPIC
;;
fi
AC_PROG_RANLIB
AC_PROG_INSTALL
+AC_PROG_YACC
missing_dir=`cd $ac_aux_dir && pwd`
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
if test "$ac_cv_func_dlopen" = no; then
AC_CHECK_LIB(dl, dlopen, [LIBS="-ldl $LIBS"
- chkpwd_LIBS=-ldl])
+ test "$with_pam" = yes && chkpwd_LIBS="-ldl $chkpwd_LIBS"])
fi
dnl Determine the system's authentication capabilities, if autologin is
test "$enable_chkpwd" != no && LIBS=$save_LIBS
fi
if test "$ac_cv_func_pam_start" = no -o "$with_pam" != yes; then
- AC_CHECK_LIB(shadow, getspnam)
+ save_LIBS=$LIBS
+ AC_SEARCH_LIBS(getspnam, shadow, [
+ if test "$ac_cv_search_getspnam" = -lshadow; then
+ chkpwd_LIBS="-lshadow $chkpwd_LIBS"
+ fi])
+ test "$enable_chkpwd" != no && LIBS=$save_LIBS
if test "$ac_cv_func_crypt" = no; then
- AC_CHECK_LIB(crypt, crypt, [chkpwd_LIBS=-lcrypt
+ AC_CHECK_LIB(crypt, crypt, [
+ chkpwd_LIBS="-lcrypt $chkpwd_LIBS"
test "$enable_chkpwd" = no && \
LIBS="-lcrypt $LIBS"])
fi
fi
test -f /usr/local/lib/libgdbm.a && LDFLAGS="$LDFLAGS -L/usr/local/lib"
-AC_CHECK_LIB(gdbm, gdbm_open)
+AC_CHECK_LIB(gdbm, gdbm_open, GDBM="$GDBM -lgdbm")
+
+test -f /usr/local/lib/libresolv.a && LDFLAGS="$LDFLAGS -L/usr/local/lib"
+AC_CHECK_LIB(resolv, res_query, RESOLV="$RESOLV -lresolv")
save_LIBS=$LIBS
-AC_CHECK_LIB(termcap, tgetent, [LIBS="$LIBS -ltermcap"
- CURSES=-ltermcap])
-AC_CHECK_LIB(curses, initscr, CURSES="-lcurses $CURSES", [
- AC_CHECK_LIB(ncurses, initscr, CURSES="-lncurses")])
+LIBS=$CURSES
+AC_SEARCH_LIBS(tgetent, [curses termcap])
+AC_SEARCH_LIBS(initscr, [curses ncurses])
+CURSES=$LIBS
LIBS=$save_LIBS
dnl Check for libpthread(s) if we're not using Digital UNIX or FreeBSD. (On
dnl which the -pthread flag takes care of this.)
if test "$check_pthread" != no; then
- AC_CHECK_LIB(pthread, pthread_create)
- AC_CHECK_LIB(pthreads, pthread_create)
+ AC_CHECK_LIB(pthread, pthread_create,
+ PTHREAD_LIBS="-lpthread $PTHREAD_LIBS")
+ AC_CHECK_LIB(pthreads, pthread_create,
+ PTHREAD_LIBS="-lpthreads $PTHREAD_LIBS")
fi
dnl Checks for header files.
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
test -f /usr/local/include/gdbm.h && CPPFLAGS="$CPPFLAGS -I/usr/local/include"
-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 gdbm.h utmp.h paths.h)
+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 gdbm.h utmp.h utmpx.h paths.h)
dnl some systems require -pthread, -D_REENTRANT, etc to be passed to cc if we
dnl include pthread.h:
AC_STRUCT_TM
AC_CACHE_CHECK([for ut_type in struct utmp], ac_cv_struct_ut_type,
-[AC_TRY_COMPILE([#include <utmp.h>], [struct utmp ut; ut.ut_type;],
+[AC_TRY_COMPILE([#include <sys/types.h>
+#include <utmp.h>], [struct utmp ut; ut.ut_type;],
ac_cv_struct_ut_type=yes, ac_cv_struct_ut_type=no)])
if test $ac_cv_struct_ut_type = yes; then
AC_DEFINE(HAVE_UT_TYPE)
fi
AC_CACHE_CHECK([for ut_host in struct utmp], ac_cv_struct_ut_host,
-[AC_TRY_COMPILE([#include <utmp.h>], [struct utmp ut; ut.ut_host;],
+[AC_TRY_COMPILE([#include <sys/types.h>
+#include <utmp.h>], [struct utmp ut; ut.ut_host;],
ac_cv_struct_ut_host=yes, ac_cv_struct_ut_host=no)])
if test $ac_cv_struct_ut_host = yes; then
AC_DEFINE(HAVE_UT_HOST)
AC_PROG_GCC_TRADITIONAL
AC_TYPE_SIGNAL
AC_FUNC_VPRINTF
-AC_CHECK_FUNCS(getspnam mkdir mkfifo mktime rmdir select socket strerror)
+AC_CHECK_FUNCS(getspnam getutxline mkdir mkfifo mktime rmdir select socket strerror)
dnl Now check for pthreads -- set up variables so that the compiler will be run
dnl with proper flags for pthread programs
save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS $SERVER_LDFLAGS"
+save_LIBS=$LIBS
+LIBS="$PTHREAD_LIBS $LIBS"
dnl On some platforms, AC_CHECK_FUNC[S] doesn't work for pthreads programs;
dnl we need to include pthread.h
ac_cv_func_pthread_create=yes, ac_cv_func_pthread_create=no)])
if test "$ac_cv_func_pthread_create" = yes; then
TARGETS="client server utils serv_modules"
+ if test "x$enable_threaded_client" != xno; then
+ AC_DEFINE(THREADED_CLIENT)
+ CLIENT_PTLIBS=$PTHREAD_LIBS
+ CL_LIBOBJS='$(LIBOBJS:.o=.ro)'
+ CX=.ro
+ fi
+fi
+
+if test "x$CX" != x.ro; then
+ CL_LIBOBJS='$(LIBOBJS)'
+ CX=.o
fi
dnl Now restore the old ldflags so we don't pass the wrong stuff to makefile
LDFLAGS=$save_LDFLAGS
+LIBS=$save_LIBS
AC_REPLACE_FUNCS(snprintf getutline)
AC_SUBST(SO)
AC_SUBST(CHKPWD)
AC_SUBST(CURSES)
+AC_SUBST(GDBM)
+AC_SUBST(RESOLV)
AC_SUBST(NETLIBS)
AC_SUBST(chkpwd_LIBS)
AC_SUBST(TARGETS)
AC_SUBST(SERVER_LDFLAGS)
+AC_SUBST(SERV_ICQ)
AC_SUBST(PICFLAGS)
AC_SUBST(LINK_SHARED)
AC_SUBST(PTHREAD_DEFS)
+AC_SUBST(PTHREAD_LIBS)
+AC_SUBST(CLIENT_PTLIBS)
+AC_SUBST(CL_LIBOBJS)
+AC_SUBST(CX)
AC_CONFIG_HEADER(sysdep.h)
AC_OUTPUT(Makefile weekly)