dnl Process this file with autoconf to produce a configure script. AC_INIT(conf/pam_conv1/pam_conv.y) dnl The configuration header file AC_CONFIG_HEADER(_pam_aconf.h) dnl dnl Release specific dnl LIBPAM_VERSION_MAJOR=0 LIBPAM_VERSION_MINOR=77 AC_SUBST(LIBPAM_VERSION_MAJOR) AC_SUBST(LIBPAM_VERSION_MINOR) AC_DEFINE(LIBPAM_VERSION_MAJOR) AC_DEFINE(LIBPAM_VERSION_MINOR) dnl dnl By default, everything under PAM is installed under the root fs. dnl AC_PREFIX_DEFAULT() dnl dnl Useful info (believed to be portable) - in the future dnl the LOCALSRCDIR and LOCALOBJDIRs may be different dnl LOCALSRCDIR=`/bin/pwd` ; AC_SUBST(LOCALSRCDIR) LOCALOBJDIR=`/bin/pwd` ; AC_SUBST(LOCALOBJDIR) OS=`uname|sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` AC_SUBST(OS) dnl dnl Rules needed for the following (hardcoded Linux defaults for now) dnl CONF_CFLAGS= ; AC_SUBST(CONF_CFLAGS) MKDIR="mkdir -p" ; AC_SUBST(MKDIR) SHLIBMODE=755 ; AC_SUBST(SHLIBMODE) dnl These are most likely platform specific - I think HPUX differs USESONAME=yes ; AC_SUBST(USESONAME) SOSWITCH=-soname ; AC_SUBST(SOSWITCH) NEEDSONAME=no ; AC_SUBST(NEEDSONAME) LDCONFIG=/sbin/ldconfig ; AC_SUBST(LDCONFIG) dnl ### Should enable this INSTALL detection. dnl ### Would need to distribute GNU's config.guess and config.sub dnl AC_PROG_INSTALL if test "$OS" = "aix"; then INSTALL=/usr/ucb/install -c else INSTALL=/usr/bin/install fi AC_SUBST(INSTALL) dnl Checks for programs. AC_PROG_CC dnl ### AC_PROG_CXX AC_PROG_YACC AC_PROG_LEX dnl AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET dnl dnl options and defaults dnl dnl lots of debugging information goes to /tmp/pam-debug.log AC_ARG_ENABLE(debug, [ --enable-debug specify you are building with debugging on], WITH_DEBUG=yes ; AC_DEFINE(DEBUG) , WITH_DEBUG=no) AC_SUBST(WITH_DEBUG) AC_ARG_ENABLE(memory-debug, [ --enable-memory-debug specify you want every malloc etc. call tracked], WITH_MEMORY_DEBUG=yes ; AC_DEFINE(MEMORY_DEBUG) , WITH_MEMORY_DEBUG=no) AC_SUBST(WITH_MEMORY_DEBUG) dnl build specially named libraries (for debugging purposes) AC_ARG_ENABLE(libdebug, [ --enable-libdebug specify you are building debugging libraries], WITH_LIBDEBUG=yes ; AC_DEFINE(WITH_LIBDEBUG) , WITH_LIBDEBUG=no) AC_SUBST(WITH_LIBDEBUG) dnl packaging convenience AC_ARG_ENABLE(fakeroot, [ --enable-fakeroot=], FAKEROOT=$enableval) AC_SUBST(FAKEROOT) AC_ARG_ENABLE(securedir, [ --enable-securedir= [default \$libdir/security]], SECUREDIR=$enableval, SECUREDIR=$libdir/security) AC_SUBST(SECUREDIR) AC_ARG_ENABLE(sconfigdir, [ --enable-sconfigdir= [default \$sysconfdir/security]], SCONFIGDIR=$enableval, SCONFIGDIR=$sysconfdir/security) AC_SUBST(SCONFIGDIR) AC_ARG_ENABLE(suplementedir, [ --enable-suplementedir= [default \$sbindir]], SUPLEMENTED=$enableval, SUPLEMENTED=$sbindir) AC_SUBST(SUPLEMENTED) AC_ARG_ENABLE(includedir, [ --enable-includedir= - where to put ], INCLUDEDIR=$enableval, INCLUDEDIR=/usr/include) AC_SUBST(INCLUDEDIR) AC_ARG_ENABLE(docdir, [ --enable-docdir=], DOCDIR=$enableval, DOCDIR=/usr/share/doc/pam) AC_SUBST(DOCDIR) AC_ARG_ENABLE(mandir, [ --enable-mandir=], MANDIR=$enableval, MANDIR=/usr/share/man) AC_SUBST(MANDIR) AC_ARG_ENABLE(pamlocking, [ --enable-pamlocking configure libpam to observe a global authentication lock], WITH_PAMLOCKING=yes ; AC_DEFINE(PAM_LOCKING) , WITH_PAMLOCKING=no) AC_SUBST(WITH_PAMLOCKING) AC_ARG_ENABLE(uglyhack, [ --enable-uglyhack configure libpam to try to honor old pam_strerror syntax], AC_DEFINE(UGLY_HACK_FOR_PRIOR_BEHAVIOR_SUPPORT)) AC_ARG_ENABLE(read-both-confs, [ --enable-read-both-confs read both /etc/pam.d and /etc/pam.conf files], AC_DEFINE(PAM_READ_BOTH_CONFS)) AC_SUBST(PAM_READ_BOTH_CONFS) AC_ARG_ENABLE(static-libpam, [ --enable-static-libpam build a libpam.a library], STATIC_LIBPAM=yes , STATIC_LIBPAM=no) AC_SUBST(STATIC_LIBPAM) AC_ARG_ENABLE(dynamic-libpam, [ --disable-dynamic-libpam do not build a shared libpam library], DYNAMIC_LIBPAM=no, DYNAMIC_LIBPAM=yes) AC_SUBST(DYNAMIC_LIBPAM) DYNAMIC=-DPAM_DYNAMIC AC_SUBST(DYNAMIC) AC_ARG_ENABLE(static-modules, [ --enable-static-modules do not make the modules dynamically loadable], STATIC=-DPAM_STATIC) AC_SUBST(STATIC) AC_ARG_ENABLE(lckpwdf, [ --disable-lckpwdf do not use the lckpwdf function], WITH_LCKPWDF=no, WITH_LCKPWDF=yes) AC_SUBST(WITH_LCKPWDF) AC_CHECK_HEADERS(paths.h) AC_ARG_WITH(mailspool, [ --with-mailspool path to mail spool directory [default _PATH_MAILDIR if defined in paths.h, otherwise /var/spool/mail]], with_mailspool=${withval}) if test x$with_mailspool != x ; then pam_mail_spool="\"$with_mailspool\"" else AC_TRY_RUN([ #include int main() { #ifdef _PATH_MAILDIR exit(0); #else exit(1); #endif }], pam_mail_spool="_PATH_MAILDIR", pam_mail_spool="\"/var/spool/mail\"", pam_mail_spool="\"/var/spool/mail\"") fi AC_DEFINE_UNQUOTED(PAM_PATH_MAILDIR, $pam_mail_spool) dnl Checks for libraries. AC_CHECK_LIB(c, __libc_sched_setscheduler, PAM_NEEDS_LIBC=, PAM_NEEDS_LIBC=-lc) AC_SUBST(PAM_NEEDS_LIBC) dnl Checks for the existence of lckpwdf in libc AC_CHECK_LIB(c, lckpwdf, HAVE_LCKPWDF=yes, HAVE_LCKPWDF=no) AC_SUBST(HAVE_LCKPWDF) dnl Checks for the existence of libdl - on BSD and Tru64 its part of libc AC_CHECK_LIB(dl, dlopen, LIBDL=-ldl) AC_SUBST(LIBDL) dnl dnl At least on Solaris, the existing libcrack must be dynamic. dnl Ought to introduce a check for this. dnl AC_CHECK_LIB(crack, FascistCheck, HAVE_LIBCRACK=yes ; AC_DEFINE(HAVE_LIBCRACK), HAVE_LIBCRACK=no) AC_SUBST(HAVE_LIBCRACK) AC_CHECK_LIB(crypt, fcrypt, HAVE_LIBCRYPT=yes ; AC_DEFINE(HAVE_LIBCRYPT), HAVE_LIBCRYPT=no) AC_SUBST(HAVE_LIBCRYPT) AC_CHECK_LIB(util, logwtmp, HAVE_LIBUTIL=yes ; AC_DEFINE(HAVE_LIBUTIL), HAVE_LIBUTIL=no) AC_SUBST(HAVE_LIBUTIL) AC_CHECK_LIB(ndbm, dbm_store, HAVE_LIBNDBM=yes ; AC_DEFINE(HAVE_LIBNDBM), HAVE_LIBNDBM=no) AC_SUBST(HAVE_LIBNDBM) AC_CHECK_LIB(db, dbm_store, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB), HAVE_LIBDB=no) if test x$HAVE_LIBDB != xyes ; then AC_CHECK_LIB(db, db_create, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB), HAVE_LIBDB=no) fi AC_SUBST(HAVE_LIBDB) AC_CHECK_LIB(fl, yylex, yyterminate, HAVE_LIBFL=yes ; AC_DEFINE(HAVE_LIBFL), HAVE_LIBFL=no) AC_SUBST(HAVE_LIBFL) AC_CHECK_LIB(nsl, yp_maplist, HAVE_LIBNSL=yes ; AC_DEFINE(HAVE_LIBNSL), HAVE_LIBNSL=no) AC_SUBST(HAVE_LIBNSL) AC_CHECK_LIB(pwdb, pwdb_db_name, HAVE_LIBPWDB=yes ; AC_DEFINE(HAVE_LIBPWDB), HAVE_LIBPWDB=no) AC_SUBST(HAVE_LIBPWDB) AC_CHECK_LIB(fl, yywrap, HAVE_LIBFLEX=yes ; AC_DEFINE(HAVE_LIBFLEX), HAVE_LIBFLEX=no) AC_SUBST(HAVE_LIBFLEX) AC_CHECK_LIB(l, yywrap, HAVE_LIBLEX=yes ; AC_DEFINE(HAVE_LIBLEX), HAVE_LIBLEX=no) AC_SUBST(HAVE_LIBLEX) dnl Checks for header files. AC_HEADER_DIRENT AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/file.h sys/ioctl.h sys/time.h syslog.h termio.h unistd.h sys/fsuid.h) dnl Linux wants features.h in some of the source files. AC_CHECK_HEADERS(features.h) dnl For module/pam_cracklib AC_CHECK_HEADERS(crypt.h) dnl For module/pam_userdb AC_CHECK_HEADERS(ndbm.h db.h) dnl I suspect the following two lines are a hack. HAVE_NDBM_H=$ac_cv_header_ndbm_h AC_SUBST(HAVE_NDBM_H) dnl For module/pam_lastlog AC_CHECK_HEADERS(lastlog.h utmp.h utmpx.h) dnl This following rule should be made conditional upon HAVE_LIBCRYPT dnl being found. dnl Look for cracklib dictionary AC_MSG_CHECKING(path to cracklib dictionary) DICT_DIR_CANDIDATES="/usr/lib /usr/share/dict /usr/share/lib \ /usr/local/lib /usr/local/share/lib" DICT_FILE_CANDIDATES="pw_dict cracklib_dict" CRACKLIB_DICTPATH="" for d in $DICT_DIR_CANDIDATES ; do for f in $DICT_FILE_CANDIDATES ; do if test -r $d/$f.hwm ; then CRACKLIB_DICTPATH=$d/$f break 2 elif test -r $d/dict/$f.hwm ; then CRACKLIB_DICTPATH=$d/dict/$f break 2 fi done done if test -z "$CRACKLIB_DICTPATH" ; then AC_MSG_RESULT(none found) else AC_MSG_RESULT($CRACKLIB_DICTPATH) fi AC_SUBST(CRACKLIB_DICTPATH) dnl Set FLAGS, linker options etc. depending on C compiler. dnl gcc is tested and much preferred; others less so, if at all dnl dnl If compiling with gcc, linking is also supposed to be done with gcc; dnl since we use linker-specific arguments, we may not gain anything by dnl switching LD_L over, but I think we can use LD_D as-is. dnl dnl For the moment, gcc is enforced above at "CC=gcc". dnl dnl There is an issue over _POSIX_SOURCE _BSD_SOURCE and _GNU_SOURCE . dnl The original "Linux-PAM" had blanket inclusion. But portability dnl requires their default absence: if particular OSes require them, dnl this should be done selectively. GCC_WARNINGS="-Wall -Wwrite-strings \ -Wpointer-arith -Wcast-qual -Wcast-align \ -Wstrict-prototypes -Wmissing-prototypes \ -Wnested-externs -Winline -Wshadow" if test "$GCC" = yes; then CC=gcc ; AC_SUBST(CC) ### May need per-OS attention ### Example: -D_POSIX_SOURCE: needed on Linux but harms Solaris. case $OS in linux) OS_CFLAGS="-ansi -D_POSIX_SOURCE -pedantic" LD_D="gcc -shared -Xlinker -x" WARNINGS="$GCC_WARNINGS" PIC="-fPIC" DYNTYPE=so LD=ld LD_L="$LD -x -shared" RANLIB=ranlib STRIP=strip CC_STATIC="-Xlinker -export-dynamic" ;; sunos) OS_CFLAGS="-ansi -pedantic" LD_D="gcc -shared -Xlinker -x" WARNINGS="$GCC_WARNINGS" PIC="-fPIC" DYNTYPE=so LD=ld LD_L="$LD -x -shared" RANLIB=ranlib STRIP=strip CC_STATIC="-Xlinker -export-dynamic" ;; aix) OS_CFLAGS="" DYNTYPE=lo LD=ld LD_L=ld -bexpall -bM:SRE -bnoentry LD_D="$LD_L" RANLIB=ranlib STRIP=strip ;; *) OS_CFLAGS="" ;; esac else ### ### Non-gcc needs attention on per-OS basis ### case "$OS" in darwin) # add some stuff here (see sourceforge bug 534205) # DOCDIR=/System/Documentation/Administration/Libraries/PAM # MANDIR=/usr/share/man ;; solaris) ### Support for Solaris-C OS_CFLAGS="" WARNINGS="" PIC="-K pic" LD=ld LD_D="cc -z text -G -R." LD_L="$LD_D" RANLIB=ranlib STRIP=strip CC_STATIC= ;; irix*) OSRELEASE=`uname -r` if test "$OSRELEASE" = 6.5; then OS_CFLAGS="" WARNINGS="-fullwarn" PIC= #PIC code is default for IRIX LD="cc -shared" # modules friendly approach LD_D="cc -shared" LD_L="ld -G -z redlocsym" RANLIB=echo STRIP=strip CC_STATIC= else echo "IRIX prior to 6.5 not allowed for" exit fi ;; *) echo "Native compiler on $OS is not yet supported" exit ;; esac fi AC_SUBST(DYNTYPE) AC_SUBST(OS_CFLAGS) AC_SUBST(WARNINGS) AC_SUBST(PIC) AC_SUBST(LD) AC_SUBST(LD_D) AC_SUBST(LD_L) AC_SUBST(RANLIB) AC_SUBST(STRIP) AC_SUBST(CC_STATIC) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_BIGENDIAN AC_C_CONST AC_TYPE_UID_T AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_HEADER_TIME AC_STRUCT_TM dnl Checks for library functions. AC_TYPE_GETGROUPS AC_PROG_GCC_TRADITIONAL AC_FUNC_MEMCMP AC_FUNC_VPRINTF AC_CHECK_FUNCS(gethostname gettimeofday mkdir select strcspn strdup strerror strspn strstr strtol uname) AC_CHECK_FUNCS(getpwnam_r getgrnam_r) dnl Checks for programs/utilities AC_CHECK_PROG(HAVE_SGML2TXT, sgml2txt, yes, no) AC_CHECK_PROG(HAVE_SGML2HTML, sgml2html, yes, no) AC_CHECK_PROG(HAVE_SGML2LATEX, sgml2latex, yes, no) if test $HAVE_SGML2LATEX = "yes" ; then if sgml2latex -h | grep -e --paper | grep ' -p ' > /dev/null ; then PSER="sgml2latex -o ps" else PSER="sgml2latex -p" fi AC_CHECK_PROG(HAVE_PS2PDF, ps2pdf, yes, no) else AC_CHECK_PROG(HAVE_SGML2PS, sgml2ps, yes, no) if test $HAVE_SGML2PS = yes ; then PSER="sgml2ps" fi fi AC_SUBST(PSER) AC_SUBST(PS2PDF) dnl Files to be created from when we run configure AC_OUTPUT(Make.Rules)