X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fconfigure.in;h=61f80d1823385b3c70a9c4709048bab6552f854e;hb=cea771722e07808fbbb1858cc71030218e44ea26;hp=d90ad95eba3bc49ca03ff296f83848ba95caab14;hpb=fe2998e23e2d37cc0d9b007f3c6bdf38e4edc117;p=citadel.git diff --git a/citadel/configure.in b/citadel/configure.in index d90ad95eb..61f80d182 100644 --- a/citadel/configure.in +++ b/citadel/configure.in @@ -11,6 +11,14 @@ fi 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)]) @@ -26,37 +34,40 @@ case "$host" in dnl BSDI 3.0 wants relocatable object modules instead of shared libs dnl for dlopen(), and has a wrapper script to link with shared libs. dnl Also has stupid non-reentrant gethostbyaddr() and friends. - i?86-*-bsdi*) + *-*-bsdi[123]*) test -z "$CC" -a -x /usr/bin/shlicc2 && CC=shlicc2 SO=.mo AC_DEFINE(HAVE_NONREENTRANT_NETDB) ;; + *-*-bsdi*) + AC_DEFINE(HAVE_NONREENTRANT_NETDB) + ;; dnl Digital Unix has an odd way to build for pthreads, and we can't dnl build pthreads programs with gcc due to header problems. 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" ;; - *-*-cygwin32) - SUFFIX=.exe + *-*-solaris*) + PTHREAD_DEFS="-D_REENTRANT -D_PTHREADS" ;; esac @@ -65,14 +76,20 @@ AC_PROG_CC dnl Set up system-dependent compiler flags. if test "$GCC" = yes; then - CFLAGS="$CFLAGS -Wall -Wstrict-prototypes" case "$host" in - i?86-*-bsdi*) + *-*-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 ;; @@ -83,6 +100,9 @@ AC_PROG_INSTALL missing_dir=`cd $ac_aux_dir && pwd` AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) +dnl Checks for system services. +AC_EXEEXT + dnl Checks for libraries. dnl libdl, libgdbm, and libcrypt are only used in the server, so the @@ -90,13 +110,22 @@ 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 want to test for crypt() and dlopen() in libc before checking for -dnl -lcrypt and -ldl, because some systems (like Irix) have both. -AC_CHECK_FUNCS(crypt dlopen) +dnl We want to test for the following in libc before checking for their +dnl respective libraries, because some systems (like Irix) have both, and the +dnl non-libc versions may be broken. +AC_CHECK_FUNCS(crypt dlopen gethostbyname connect) + +if test "$ac_cv_func_gethostbyname" = no; then + AC_CHECK_LIB(nsl, gethostbyname, NETLIBS="-lnsl $NETLIBS") +fi + +if test "$ac_cv_func_connect" = no; then + AC_CHECK_LIB(socket, connect, NETLIBS="-lsocket $NETLIBS",, $NETLIBS) +fi 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 @@ -111,9 +140,15 @@ if test "$enable_autologin" != no; then 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 @@ -130,20 +165,25 @@ if test "$enable_autologin" != no; then 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. @@ -151,7 +191,7 @@ AC_HEADER_DIRENT 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: @@ -168,14 +208,16 @@ AC_HEADER_TIME AC_STRUCT_TM AC_CACHE_CHECK([for ut_type in struct utmp], ac_cv_struct_ut_type, -[AC_TRY_COMPILE([#include ], [struct utmp ut; ut.ut_type;], +[AC_TRY_COMPILE([#include +#include ], [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 ], [struct utmp ut; ut.ut_host;], +[AC_TRY_COMPILE([#include +#include ], [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) @@ -186,12 +228,14 @@ AC_FUNC_GETPGRP 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 @@ -229,10 +273,22 @@ AC_CACHE_CHECK([for pthread_create], ac_cv_func_pthread_create, 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) @@ -241,12 +297,19 @@ AC_SUBST(AUTH) 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(SUFFIX) 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)