1 dnl Process this file with autoconf to produce a configure script.
2 AC_INIT(conf/pam_conv1/pam_conv.y)
4 dnl The configuration header file
5 AC_CONFIG_HEADER(_pam_aconf.h)
11 LIBPAM_VERSION_MAJOR=0
12 LIBPAM_VERSION_MINOR=73
14 AC_SUBST(LIBPAM_VERSION_MAJOR)
15 AC_SUBST(LIBPAM_VERSION_MINOR)
16 AC_DEFINE(LIBPAM_VERSION_MAJOR)
17 AC_DEFINE(LIBPAM_VERSION_MINOR)
20 dnl By default, everything under PAM is installed under the root fs.
26 dnl Rules needed for the following (hardcoded Linux defaults for now)
30 CONF_CFLAGS= ; AC_SUBST(CONF_CFLAGS)
31 MKDIR="mkdir -p" ; AC_SUBST(MKDIR)
32 LOCALSRCDIR=`/bin/pwd` ; AC_SUBST(LOCALSRCDIR)
33 OS=`uname|sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXWZ/abcdefghijklmonpqrstuvwxyz/'`
36 dnl These are most likely platform specific - I think HPUX differs
37 DYNTYPE=so ; AC_SUBST(DYNTYPE)
38 LIBDL=-ldl ; AC_SUBST(LIBDL)
39 USESONAME=yes ; AC_SUBST(USESONAME)
40 NEEDSONAME=yes ; AC_SUBST(NEEDSONAME)
41 SHLIBMODE=755 ; AC_SUBST(SHLIBMODE)
43 dnl ### Should enable this INSTALL detection.
44 dnl ### Would need to distribute GNU's config.guess and config.sub
46 INSTALL=/usr/bin/install ; AC_SUBST(INSTALL)
49 dnl options and defaults
52 dnl lots of debugging information goes to /tmp/pam-debug.log
54 [ --enable-debug qspecify you are building with debugging on],
55 WITH_DEBUG=yes ; AC_DEFINE(DEBUG) , WITH_DEBUG=no)
58 dnl build specially named libraries (for debugging purposes)
59 AC_ARG_ENABLE(libdebug,
60 [ --enable-libdebug specify you are building debugging libraries],
61 WITH_LIBDEBUG=yes ; AC_DEFINE(WITH_LIBDEBUG) , WITH_LIBDEBUG=no)
62 AC_SUBST(WITH_LIBDEBUG)
64 dnl packaging convenience
65 AC_ARG_ENABLE(fakeroot,
66 [ --enable-fakeroot=<path to packaging directory>], FAKEROOT=$enableval)
69 AC_ARG_ENABLE(securedir,
70 [ --enable-securedir=<path to location of PAMs> [default \$libdir/security]],
71 SECUREDIR=$enableval, SECUREDIR=$libdir/security)
74 AC_ARG_ENABLE(sconfigdir,
75 [ --enable-sconfigdir=<path to module conf files> [default \$sysconfdir/security]],
76 SCONFIGDIR=$enableval, SCONFIGDIR=$sysconfdir/security)
79 AC_ARG_ENABLE(suplementedir,
80 [ --enable-suplementedir=<path to module helper binaries> [default \$sbindir]],
81 SUPLEMENTED=$enableval, SUPLEMENTED=$sbindir)
84 AC_ARG_ENABLE(includedir,
85 [ --enable-includedir=<path to include location> - where to put <security>],
86 INCLUDEDIR=$enableval, INCLUDEDIR=/usr/include)
89 AC_ARG_ENABLE(pamlocking,
90 [ --enable-pamlocking configure libpam to observe a global authentication lock],
91 WITH_PAMLOCKING=yes ; AC_DEFINE(PAM_LOCKING) , WITH_PAMLOCKING=no)
92 AC_SUBST(WITH_PAMLOCKING)
94 AC_ARG_ENABLE(uglyhack,
95 [ --enable-uglyhack configure libpam to try to honor old pam_strerror syntax],
96 AC_DEFINE(UGLY_HACK_FOR_PRIOR_BEHAVIOR_SUPPORT))
98 AC_ARG_ENABLE(read-both-confs,
99 [ --enable-read-both-confs read both /etc/pam.d and /etc/pam.conf files],
100 AC_DEFINE(PAM_READ_BOTH_CONFS))
101 AC_SUBST(PAM_READ_BOTH_CONFS)
103 AC_ARG_ENABLE(static-libpam, [ --enable-static-libpam build a libpam.a library],
104 STATIC_LIBPAM=yes , STATIC_LIBPAM=no)
105 AC_SUBST(STATIC_LIBPAM)
107 AC_ARG_ENABLE(dynamic-libpam,
108 [ --disable-dynamic-libpam do not build a shared libpam library],
109 DYNAMIC_LIBPAM=no, DYNAMIC_LIBPAM=yes)
110 AC_SUBST(DYNAMIC_LIBPAM)
112 DYNAMIC=-DPAM_DYNAMIC
115 AC_ARG_ENABLE(static-modules,
116 [ --enable-static-modules do not make the modules dynamically loadable],
120 AC_ARG_ENABLE(lckpwdf,
121 [ --disable-lckpwdf do not use the lckpwdf function],
122 WITH_LCKPWDF=no, WITH_LCKPWDF=yes)
123 AC_SUBST(WITH_LCKPWDF)
125 dnl Checks for programs.
134 dnl Checks for libraries.
135 AC_CHECK_LIB(c, __libc_sched_setscheduler, PAM_NEEDS_LIBC=, PAM_NEEDS_LIBC=-lc)
136 AC_SUBST(PAM_NEEDS_LIBC)
138 dnl Checks for the existence of lckpwdf in libc
139 AC_CHECK_LIB(c, lckpwdf, HAVE_LCKPWDF=yes, HAVE_LCKPWDF=no)
140 AC_SUBST(HAVE_LCKPWDF)
143 dnl At least on Solaris, the existing libcrack must be dynamic.
144 dnl Ought to introduce a check for this.
146 AC_CHECK_LIB(crack, FascistCheck, HAVE_LIBCRACK=yes ; AC_DEFINE(HAVE_LIBCRACK),
148 AC_SUBST(HAVE_LIBCRACK)
150 AC_CHECK_LIB(crypt, fcrypt, HAVE_LIBCRYPT=yes ; AC_DEFINE(HAVE_LIBCRYPT),
152 AC_SUBST(HAVE_LIBCRYPT)
153 AC_CHECK_LIB(ndbm, dbm_store, HAVE_LIBNDBM=yes ; AC_DEFINE(HAVE_LIBNDBM),
155 AC_SUBST(HAVE_LIBNDBM)
156 AC_CHECK_LIB(db, dbm_store, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB),
159 AC_CHECK_LIB(fl, yylex, yyterminate, HAVE_LIBFL=yes ; AC_DEFINE(HAVE_LIBFL),
162 AC_CHECK_LIB(nsl, yp_maplist, HAVE_LIBNSL=yes ; AC_DEFINE(HAVE_LIBNSL),
164 AC_SUBST(HAVE_LIBNSL)
165 AC_CHECK_LIB(pwdb, pwdb_db_name, HAVE_LIBPWDB=yes ; AC_DEFINE(HAVE_LIBPWDB),
167 AC_SUBST(HAVE_LIBPWDB)
169 dnl Checks for header files.
173 AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/file.h sys/ioctl.h sys/time.h syslog.h termio.h unistd.h)
175 dnl Linux wants features.h in some of the source files.
176 AC_CHECK_HEADERS(features.h)
178 dnl For module/pam_cracklib
179 AC_CHECK_HEADERS(crypt.h)
181 dnl For module/pam_lastlog
182 AC_CHECK_HEADERS(lastlog.h utmp.h utmpx.h)
184 dnl This following rule should be made conditional upon HAVE_LIBCRYPT
187 dnl Look for cracklib dictionary
188 AC_MSG_CHECKING(path to cracklib dictionary)
189 DICT_DIR_CANDIDATES="/usr/lib /usr/share/dict /usr/share/lib \
190 /usr/local/lib /usr/local/share/lib"
191 DICT_FILE_CANDIDATES="pw_dict cracklib_dict"
193 for d in $DICT_DIR_CANDIDATES ; do
194 for f in $DICT_FILE_CANDIDATES ; do
195 if test -r $d/$f.hwm ; then
196 CRACKLIB_DICTPATH=$d/$f
198 elif test -r $d/dict/$f.hwm ; then
199 CRACKLIB_DICTPATH=$d/dict/$f
204 if test -z $CRACKLIB_DICTPATH ; then
205 AC_MSG_RESULT(none found)
207 AC_MSG_RESULT($CRACKLIB_DICTPATH)
209 AC_SUBST(CRACKLIB_DICTPATH)
211 dnl Set FLAGS, linker options etc. depending on C compiler.
212 dnl gcc is tested and much preferred; others less so, if at all
214 dnl If compiling with gcc, linking is also supposed to be done with gcc;
215 dnl since we use linker-specific arguments, we may not gain anything by
216 dnl switching LD_L over, but I think we can use LD_D as-is.
218 dnl For the moment, gcc is enforced above at "CC=gcc".
220 dnl There is an issue over _POSIX_SOURCE _BSD_SOURCE and _GNU_SOURCE .
221 dnl The original "Linux-PAM" had blanket inclusion. But portability
222 dnl requires their default absence: if particular OSes require them,
223 dnl this should be done selectively.
225 GCC_WARNINGS="-Wall -Wwrite-strings \
226 -Wpointer-arith -Wcast-qual -Wcast-align \
227 -Wtraditional -Wstrict-prototypes -Wmissing-prototypes \
228 -Wnested-externs -Winline -Wshadow"
230 if test "$GCC" = yes; then
232 ### Non-Linux needs attention on per-OS basis
233 OS_CFLAGS="-ansi -D_POSIX_SOURCE -pedantic"
234 WARNINGS="$GCC_WARNINGS"
236 #can/should we use LD=gcc ???
238 LD_D="gcc -shared -Xlinker -x"
239 LD_L="$LD -x -shared"
243 ### Non-gcc needs attention on per-OS basis
245 ### [These are Solaris-C specific...]
250 LD_D="cc -z text -G -R."
263 dnl Checks for typedefs, structures, and compiler characteristics.
273 dnl Checks for library functions.
275 AC_PROG_GCC_TRADITIONAL
278 AC_CHECK_FUNCS(gethostname gettimeofday mkdir select strcspn strdup strerror strspn strstr strtol uname)
280 dnl Checks for programs/utilities
281 AC_CHECK_PROG(HAVE_SGML2TXT, sgml2txt, yes, no)
282 AC_CHECK_PROG(HAVE_SGML2HTML, sgml2html, yes, no)
283 AC_CHECK_PROG(HAVE_SGML2LATEX, sgml2latex, yes, no)
284 if test $HAVE_SGML2LATEX = "yes" ; then
285 if sgml2latex -h | grep -e --paper | grep ' -p ' > /dev/null ; then
286 PSER="sgml2latex -o ps"
291 AC_CHECK_PROG(HAVE_SGML2PS, sgml2ps, yes, no)
292 if test $HAVE_SGML2PS = yes ; then
298 dnl Files to be created from when we run configure
299 AC_OUTPUT(Make.Rules)