]> granicus.if.org Git - linux-pam/blobdiff - configure.in
Relevant BUGIDs:
[linux-pam] / configure.in
index 2c98dbcbb59d0d649978512a387e2fdd92c295b9..a7a298c719a5913f8c639369804acf79c8f5816b 100644 (file)
@@ -9,7 +9,7 @@ dnl Release specific
 dnl
 
 LIBPAM_VERSION_MAJOR=0
-LIBPAM_VERSION_MINOR=74
+LIBPAM_VERSION_MINOR=78
 
 AC_SUBST(LIBPAM_VERSION_MAJOR)
 AC_SUBST(LIBPAM_VERSION_MINOR)
@@ -22,28 +22,48 @@ 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
 
-CC=gcc                         ; AC_SUBST(CC)
 CONF_CFLAGS=                   ; AC_SUBST(CONF_CFLAGS)
 MKDIR="mkdir -p"               ; AC_SUBST(MKDIR)
-LOCALSRCDIR=`/bin/pwd`         ; AC_SUBST(LOCALSRCDIR)
-OS=`uname|sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXWZ/abcdefghijklmonpqrstuvwxyz/'`
-AC_SUBST(OS)
+
+SHLIBMODE=755                  ; AC_SUBST(SHLIBMODE)
 
 dnl These are most likely platform specific - I think HPUX differs
-DYNTYPE=so                     ; AC_SUBST(DYNTYPE)
-LIBDL=-ldl                     ; AC_SUBST(LIBDL)
 USESONAME=yes                  ; AC_SUBST(USESONAME)
-NEEDSONAME=yes                 ; AC_SUBST(NEEDSONAME)
-SHLIBMODE=755                  ; AC_SUBST(SHLIBMODE)
+SOSWITCH='-Xlinker -soname     -Xlinker '      ; 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
-INSTALL=/usr/bin/install       ; AC_SUBST(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
@@ -51,10 +71,15 @@ dnl
 
 dnl lots of debugging information goes to /tmp/pam-debug.log
 AC_ARG_ENABLE(debug,
-[  --enable-debug           qspecify you are building with debugging on],
+[  --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],
@@ -86,6 +111,16 @@ AC_ARG_ENABLE(includedir,
        INCLUDEDIR=$enableval, INCLUDEDIR=/usr/include)
 AC_SUBST(INCLUDEDIR)
 
+AC_ARG_ENABLE(docdir,
+[  --enable-docdir=<path to store documentation in - /usr/share/doc/pam>],
+       DOCDIR=$enableval, DOCDIR=/usr/share/doc/pam)
+AC_SUBST(DOCDIR)
+
+AC_ARG_ENABLE(mandir,
+[  --enable-mandir=<path to store manuals in - /usr/share/man>],
+       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)
@@ -144,15 +179,6 @@ pam_mail_spool="\"/var/spool/mail\"")
 fi
 AC_DEFINE_UNQUOTED(PAM_PATH_MAILDIR, $pam_mail_spool)
 
-dnl Checks for programs.
-AC_PROG_CXX
-AC_PROG_YACC
-AC_PROG_LEX
-AC_PROG_CC
-dnl AC_PROG_INSTALL
-AC_PROG_LN_S
-AC_PROG_MAKE_SET
-
 dnl Checks for libraries.
 AC_CHECK_LIB(c, __libc_sched_setscheduler, PAM_NEEDS_LIBC=, PAM_NEEDS_LIBC=-lc)
 AC_SUBST(PAM_NEEDS_LIBC)
@@ -161,6 +187,10 @@ 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.
@@ -172,11 +202,18 @@ 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)
@@ -187,12 +224,18 @@ 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)
+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)
@@ -229,7 +272,7 @@ for d in $DICT_DIR_CANDIDATES ; do
               fi
       done
 done
-if test -z $CRACKLIB_DICTPATH ; then
+if test -z "$CRACKLIB_DICTPATH" ; then
       AC_MSG_RESULT(none found)
 else
       AC_MSG_RESULT($CRACKLIB_DICTPATH)
@@ -239,9 +282,7 @@ 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 If compiling with gcc, linking is also supposed to be done with gcc
 dnl
 dnl For the moment, gcc is enforced above at "CC=gcc".
 dnl
@@ -252,41 +293,106 @@ dnl this should be done selectively.
 
 GCC_WARNINGS="-Wall -Wwrite-strings \
        -Wpointer-arith -Wcast-qual -Wcast-align \
-       -Wtraditional -Wstrict-prototypes -Wmissing-prototypes \
+       -Wstrict-prototypes -Wmissing-prototypes \
        -Wnested-externs -Winline -Wshadow"
 
 if test "$GCC" = yes; then
-###
-### Non-Linux needs attention on per-OS basis
-       OS_CFLAGS="-ansi -D_POSIX_SOURCE -pedantic"
-       WARNINGS="$GCC_WARNINGS"
-       PIC="-fPIC"
-#can/should we use LD=gcc ???
-       LD=ld                           
-       LD_D="gcc -shared -Xlinker -x"
-       LD_L="$LD -x -shared"
-       STRIP=strip
+       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=gcc
+               LD_L="$LD -Xlinker -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
 ###
-### [These are Solaris-C specific...]
-       OS_CFLAGS=""
-       WARNINGS=""
-       PIC="-K pic"
-       LD=ld
-       LD_D="cc -z text -G -R."
-       LD_L="$LD_D"
-       STRIP=strip
+       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
@@ -305,6 +411,8 @@ 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)
@@ -315,6 +423,7 @@ if test $HAVE_SGML2LATEX = "yes" ; then
   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
@@ -322,6 +431,7 @@ else
   fi
 fi
 AC_SUBST(PSER)
+AC_SUBST(PS2PDF)
 
 dnl Files to be created from when we run configure
 AC_OUTPUT(Make.Rules)