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=76
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 Useful info (believed to be portable)
28 LOCALSRCDIR=`/bin/pwd` ; AC_SUBST(LOCALSRCDIR)
29 OS=`uname|sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
33 dnl Rules needed for the following (hardcoded Linux defaults for now)
36 CONF_CFLAGS= ; AC_SUBST(CONF_CFLAGS)
37 MKDIR="mkdir -p" ; AC_SUBST(MKDIR)
39 SHLIBMODE=755 ; AC_SUBST(SHLIBMODE)
41 dnl These are most likely platform specific - I think HPUX differs
42 USESONAME=yes ; AC_SUBST(USESONAME)
43 SOSWITCH=-soname ; AC_SUBST(SOSWITCH)
44 NEEDSONAME=no ; AC_SUBST(NEEDSONAME)
45 LDCONFIG=/sbin/ldconfig ; AC_SUBST(LDCONFIG)
47 dnl ### Should enable this INSTALL detection.
48 dnl ### Would need to distribute GNU's config.guess and config.sub
50 if test "$OS" = "aix"; then
51 INSTALL=/usr/ucb/install -c
53 INSTALL=/usr/bin/install
57 dnl Checks for programs.
67 dnl options and defaults
70 dnl lots of debugging information goes to /tmp/pam-debug.log
72 [ --enable-debug qspecify you are building with debugging on],
73 WITH_DEBUG=yes ; AC_DEFINE(DEBUG) , WITH_DEBUG=no)
76 dnl build specially named libraries (for debugging purposes)
77 AC_ARG_ENABLE(libdebug,
78 [ --enable-libdebug specify you are building debugging libraries],
79 WITH_LIBDEBUG=yes ; AC_DEFINE(WITH_LIBDEBUG) , WITH_LIBDEBUG=no)
80 AC_SUBST(WITH_LIBDEBUG)
82 dnl packaging convenience
83 AC_ARG_ENABLE(fakeroot,
84 [ --enable-fakeroot=<path to packaging directory>], FAKEROOT=$enableval)
87 AC_ARG_ENABLE(securedir,
88 [ --enable-securedir=<path to location of PAMs> [default \$libdir/security]],
89 SECUREDIR=$enableval, SECUREDIR=$libdir/security)
92 AC_ARG_ENABLE(sconfigdir,
93 [ --enable-sconfigdir=<path to module conf files> [default \$sysconfdir/security]],
94 SCONFIGDIR=$enableval, SCONFIGDIR=$sysconfdir/security)
97 AC_ARG_ENABLE(suplementedir,
98 [ --enable-suplementedir=<path to module helper binaries> [default \$sbindir]],
99 SUPLEMENTED=$enableval, SUPLEMENTED=$sbindir)
100 AC_SUBST(SUPLEMENTED)
102 AC_ARG_ENABLE(includedir,
103 [ --enable-includedir=<path to include location> - where to put <security>],
104 INCLUDEDIR=$enableval, INCLUDEDIR=/usr/include)
107 AC_ARG_ENABLE(docdir,
108 [ --enable-docdir=<path to store documentation in - /usr/share/doc/pam>],
109 DOCDIR=$enableval, DOCDIR=/usr/share/doc/pam)
112 AC_ARG_ENABLE(mandir,
113 [ --enable-mandir=<path to store manuals in - /usr/share/man>],
114 MANDIR=$enableval, MANDIR=/usr/share/man)
117 AC_ARG_ENABLE(pamlocking,
118 [ --enable-pamlocking configure libpam to observe a global authentication lock],
119 WITH_PAMLOCKING=yes ; AC_DEFINE(PAM_LOCKING) , WITH_PAMLOCKING=no)
120 AC_SUBST(WITH_PAMLOCKING)
122 AC_ARG_ENABLE(uglyhack,
123 [ --enable-uglyhack configure libpam to try to honor old pam_strerror syntax],
124 AC_DEFINE(UGLY_HACK_FOR_PRIOR_BEHAVIOR_SUPPORT))
126 AC_ARG_ENABLE(read-both-confs,
127 [ --enable-read-both-confs read both /etc/pam.d and /etc/pam.conf files],
128 AC_DEFINE(PAM_READ_BOTH_CONFS))
129 AC_SUBST(PAM_READ_BOTH_CONFS)
131 AC_ARG_ENABLE(static-libpam, [ --enable-static-libpam build a libpam.a library],
132 STATIC_LIBPAM=yes , STATIC_LIBPAM=no)
133 AC_SUBST(STATIC_LIBPAM)
135 AC_ARG_ENABLE(dynamic-libpam,
136 [ --disable-dynamic-libpam do not build a shared libpam library],
137 DYNAMIC_LIBPAM=no, DYNAMIC_LIBPAM=yes)
138 AC_SUBST(DYNAMIC_LIBPAM)
140 DYNAMIC=-DPAM_DYNAMIC
143 AC_ARG_ENABLE(static-modules,
144 [ --enable-static-modules do not make the modules dynamically loadable],
148 AC_ARG_ENABLE(lckpwdf,
149 [ --disable-lckpwdf do not use the lckpwdf function],
150 WITH_LCKPWDF=no, WITH_LCKPWDF=yes)
151 AC_SUBST(WITH_LCKPWDF)
153 AC_CHECK_HEADERS(paths.h)
154 AC_ARG_WITH(mailspool,
155 [ --with-mailspool path to mail spool directory
156 [default _PATH_MAILDIR if defined in paths.h, otherwise /var/spool/mail]],
157 with_mailspool=${withval})
158 if test x$with_mailspool != x ; then
159 pam_mail_spool="\"$with_mailspool\""
169 }], pam_mail_spool="_PATH_MAILDIR",
170 pam_mail_spool="\"/var/spool/mail\"",
171 pam_mail_spool="\"/var/spool/mail\"")
173 AC_DEFINE_UNQUOTED(PAM_PATH_MAILDIR, $pam_mail_spool)
175 dnl Checks for libraries.
176 AC_CHECK_LIB(c, __libc_sched_setscheduler, PAM_NEEDS_LIBC=, PAM_NEEDS_LIBC=-lc)
177 AC_SUBST(PAM_NEEDS_LIBC)
179 dnl Checks for the existence of lckpwdf in libc
180 AC_CHECK_LIB(c, lckpwdf, HAVE_LCKPWDF=yes, HAVE_LCKPWDF=no)
181 AC_SUBST(HAVE_LCKPWDF)
183 dnl Checks for the existence of libdl - on BSD its part of libc
184 AC_CHECK_LIB(dl, dlopen, LIBDL=-ldl)
188 dnl At least on Solaris, the existing libcrack must be dynamic.
189 dnl Ought to introduce a check for this.
191 AC_CHECK_LIB(crack, FascistCheck, HAVE_LIBCRACK=yes ; AC_DEFINE(HAVE_LIBCRACK),
193 AC_SUBST(HAVE_LIBCRACK)
195 AC_CHECK_LIB(crypt, fcrypt, HAVE_LIBCRYPT=yes ; AC_DEFINE(HAVE_LIBCRYPT),
197 AC_SUBST(HAVE_LIBCRYPT)
198 AC_CHECK_LIB(util, logwtmp, HAVE_LIBUTIL=yes ; AC_DEFINE(HAVE_LIBUTIL),
200 AC_SUBST(HAVE_LIBUTIL)
201 AC_CHECK_LIB(ndbm, dbm_store, HAVE_LIBNDBM=yes ; AC_DEFINE(HAVE_LIBNDBM),
203 AC_SUBST(HAVE_LIBNDBM)
204 AC_CHECK_LIB(db, dbm_store, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB),
206 if test x$HAVE_LIBDB != xyes ; then
207 AC_CHECK_LIB(db, db_create, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB),
211 AC_CHECK_LIB(fl, yylex, yyterminate, HAVE_LIBFL=yes ; AC_DEFINE(HAVE_LIBFL),
214 AC_CHECK_LIB(nsl, yp_maplist, HAVE_LIBNSL=yes ; AC_DEFINE(HAVE_LIBNSL),
216 AC_SUBST(HAVE_LIBNSL)
217 AC_CHECK_LIB(pwdb, pwdb_db_name, HAVE_LIBPWDB=yes ; AC_DEFINE(HAVE_LIBPWDB),
219 AC_SUBST(HAVE_LIBPWDB)
221 dnl Checks for header files.
225 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)
227 dnl Linux wants features.h in some of the source files.
228 AC_CHECK_HEADERS(features.h)
230 dnl For module/pam_cracklib
231 AC_CHECK_HEADERS(crypt.h)
233 dnl For module/pam_userdb
234 AC_CHECK_HEADERS(ndbm.h db.h)
235 dnl I suspect the following two lines are a hack.
236 HAVE_NDBM_H=$ac_cv_header_ndbm_h
237 AC_SUBST(HAVE_NDBM_H)
239 dnl For module/pam_lastlog
240 AC_CHECK_HEADERS(lastlog.h utmp.h utmpx.h)
242 dnl This following rule should be made conditional upon HAVE_LIBCRYPT
245 dnl Look for cracklib dictionary
246 AC_MSG_CHECKING(path to cracklib dictionary)
247 DICT_DIR_CANDIDATES="/usr/lib /usr/share/dict /usr/share/lib \
248 /usr/local/lib /usr/local/share/lib"
249 DICT_FILE_CANDIDATES="pw_dict cracklib_dict"
251 for d in $DICT_DIR_CANDIDATES ; do
252 for f in $DICT_FILE_CANDIDATES ; do
253 if test -r $d/$f.hwm ; then
254 CRACKLIB_DICTPATH=$d/$f
256 elif test -r $d/dict/$f.hwm ; then
257 CRACKLIB_DICTPATH=$d/dict/$f
262 if test -z "$CRACKLIB_DICTPATH" ; then
263 AC_MSG_RESULT(none found)
265 AC_MSG_RESULT($CRACKLIB_DICTPATH)
267 AC_SUBST(CRACKLIB_DICTPATH)
269 dnl Set FLAGS, linker options etc. depending on C compiler.
270 dnl gcc is tested and much preferred; others less so, if at all
272 dnl If compiling with gcc, linking is also supposed to be done with gcc;
273 dnl since we use linker-specific arguments, we may not gain anything by
274 dnl switching LD_L over, but I think we can use LD_D as-is.
276 dnl For the moment, gcc is enforced above at "CC=gcc".
278 dnl There is an issue over _POSIX_SOURCE _BSD_SOURCE and _GNU_SOURCE .
279 dnl The original "Linux-PAM" had blanket inclusion. But portability
280 dnl requires their default absence: if particular OSes require them,
281 dnl this should be done selectively.
283 GCC_WARNINGS="-Wall -Wwrite-strings \
284 -Wpointer-arith -Wcast-qual -Wcast-align \
285 -Wstrict-prototypes -Wmissing-prototypes \
286 -Wnested-externs -Winline -Wshadow"
288 if test "$GCC" = yes; then
289 CC=gcc ; AC_SUBST(CC)
290 ### May need per-OS attention
291 ### Example: -D_POSIX_SOURCE: needed on Linux but harms Solaris.
294 OS_CFLAGS="-ansi -D_POSIX_SOURCE -pedantic"
295 LD_D="gcc -shared -Xlinker -x"
296 WARNINGS="$GCC_WARNINGS"
300 LD_L="$LD -x -shared"
303 CC_STATIC="-Xlinker -export-dynamic"
306 OS_CFLAGS="-ansi -pedantic"
307 LD_D="gcc -shared -Xlinker -x"
308 WARNINGS="$GCC_WARNINGS"
312 LD_L="$LD -x -shared"
315 CC_STATIC="-Xlinker -export-dynamic"
321 LD_L=ld -bexpall -bM:SRE -bnoentry
332 ### Non-gcc needs attention on per-OS basis
336 ### Support for Solaris-C
341 LD_D="cc -z text -G -R."
349 if test "$OSRELEASE" = 6.5; then
352 PIC= #PIC code is default for IRIX
353 LD="cc -shared" # modules friendly approach
355 LD_L="ld -G -z redlocsym"
360 echo "IRIX prior to 6.5 not allowed for"
364 *) echo "Native compiler on $OS is not yet supported"
381 dnl Checks for typedefs, structures, and compiler characteristics.
391 dnl Checks for library functions.
393 AC_PROG_GCC_TRADITIONAL
396 AC_CHECK_FUNCS(gethostname gettimeofday mkdir select strcspn strdup strerror strspn strstr strtol uname)
398 AC_CHECK_FUNCS(getpwnam_r getgrnam_r)
400 dnl Checks for programs/utilities
401 AC_CHECK_PROG(HAVE_SGML2TXT, sgml2txt, yes, no)
402 AC_CHECK_PROG(HAVE_SGML2HTML, sgml2html, yes, no)
403 AC_CHECK_PROG(HAVE_SGML2LATEX, sgml2latex, yes, no)
404 if test $HAVE_SGML2LATEX = "yes" ; then
405 if sgml2latex -h | grep -e --paper | grep ' -p ' > /dev/null ; then
406 PSER="sgml2latex -o ps"
411 AC_CHECK_PROG(HAVE_SGML2PS, sgml2ps, yes, no)
412 if test $HAVE_SGML2PS = yes ; then
418 dnl Files to be created from when we run configure
419 AC_OUTPUT(Make.Rules)