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=78
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) - in the future
27 dnl the LOCALSRCDIR and LOCALOBJDIRs may be different
29 LOCALSRCDIR=`/bin/pwd` ; AC_SUBST(LOCALSRCDIR)
30 LOCALOBJDIR=`/bin/pwd` ; AC_SUBST(LOCALOBJDIR)
31 OS=`uname|sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
35 dnl Rules needed for the following (hardcoded Linux defaults for now)
38 CONF_CFLAGS= ; AC_SUBST(CONF_CFLAGS)
39 MKDIR="mkdir -p" ; AC_SUBST(MKDIR)
41 SHLIBMODE=755 ; AC_SUBST(SHLIBMODE)
43 dnl These are most likely platform specific - I think HPUX differs
44 USESONAME=yes ; AC_SUBST(USESONAME)
45 SOSWITCH='-Xlinker -soname -Xlinker ' ; AC_SUBST(SOSWITCH)
46 NEEDSONAME=no ; AC_SUBST(NEEDSONAME)
47 LDCONFIG=/sbin/ldconfig ; AC_SUBST(LDCONFIG)
49 dnl ### Should enable this INSTALL detection.
50 dnl ### Would need to distribute GNU's config.guess and config.sub
52 if test "$OS" = "aix"; then
53 INSTALL=/usr/ucb/install -c
55 INSTALL=/usr/bin/install
59 dnl Checks for programs.
69 dnl options and defaults
72 dnl lots of debugging information goes to /tmp/pam-debug.log
74 [ --enable-debug specify you are building with debugging on],
75 WITH_DEBUG=yes ; AC_DEFINE(DEBUG) , WITH_DEBUG=no)
78 AC_ARG_ENABLE(memory-debug,
79 [ --enable-memory-debug specify you want every malloc etc. call tracked],
80 WITH_MEMORY_DEBUG=yes ; AC_DEFINE(MEMORY_DEBUG) , WITH_MEMORY_DEBUG=no)
81 AC_SUBST(WITH_MEMORY_DEBUG)
83 dnl build specially named libraries (for debugging purposes)
84 AC_ARG_ENABLE(libdebug,
85 [ --enable-libdebug specify you are building debugging libraries],
86 WITH_LIBDEBUG=yes ; AC_DEFINE(WITH_LIBDEBUG) , WITH_LIBDEBUG=no)
87 AC_SUBST(WITH_LIBDEBUG)
89 dnl packaging convenience
90 AC_ARG_ENABLE(fakeroot,
91 [ --enable-fakeroot=<path to packaging directory>], FAKEROOT=$enableval)
94 AC_ARG_ENABLE(securedir,
95 [ --enable-securedir=<path to location of PAMs> [default \$libdir/security]],
96 SECUREDIR=$enableval, SECUREDIR=$libdir/security)
99 AC_ARG_ENABLE(sconfigdir,
100 [ --enable-sconfigdir=<path to module conf files> [default \$sysconfdir/security]],
101 SCONFIGDIR=$enableval, SCONFIGDIR=$sysconfdir/security)
104 AC_ARG_ENABLE(suplementedir,
105 [ --enable-suplementedir=<path to module helper binaries> [default \$sbindir]],
106 SUPLEMENTED=$enableval, SUPLEMENTED=$sbindir)
107 AC_SUBST(SUPLEMENTED)
109 AC_ARG_ENABLE(includedir,
110 [ --enable-includedir=<path to include location> - where to put <security>],
111 INCLUDEDIR=$enableval, INCLUDEDIR=/usr/include)
114 AC_ARG_ENABLE(docdir,
115 [ --enable-docdir=<path to store documentation in - /usr/share/doc/pam>],
116 DOCDIR=$enableval, DOCDIR=/usr/share/doc/pam)
119 AC_ARG_ENABLE(mandir,
120 [ --enable-mandir=<path to store manuals in - /usr/share/man>],
121 MANDIR=$enableval, MANDIR=/usr/share/man)
124 AC_ARG_ENABLE(pamlocking,
125 [ --enable-pamlocking configure libpam to observe a global authentication lock],
126 WITH_PAMLOCKING=yes ; AC_DEFINE(PAM_LOCKING) , WITH_PAMLOCKING=no)
127 AC_SUBST(WITH_PAMLOCKING)
129 AC_ARG_ENABLE(uglyhack,
130 [ --enable-uglyhack configure libpam to try to honor old pam_strerror syntax],
131 AC_DEFINE(UGLY_HACK_FOR_PRIOR_BEHAVIOR_SUPPORT))
133 AC_ARG_ENABLE(read-both-confs,
134 [ --enable-read-both-confs read both /etc/pam.d and /etc/pam.conf files],
135 AC_DEFINE(PAM_READ_BOTH_CONFS))
136 AC_SUBST(PAM_READ_BOTH_CONFS)
138 AC_ARG_ENABLE(static-libpam, [ --enable-static-libpam build a libpam.a library],
139 STATIC_LIBPAM=yes , STATIC_LIBPAM=no)
140 AC_SUBST(STATIC_LIBPAM)
142 AC_ARG_ENABLE(dynamic-libpam,
143 [ --disable-dynamic-libpam do not build a shared libpam library],
144 DYNAMIC_LIBPAM=no, DYNAMIC_LIBPAM=yes)
145 AC_SUBST(DYNAMIC_LIBPAM)
147 DYNAMIC=-DPAM_DYNAMIC
150 AC_ARG_ENABLE(static-modules,
151 [ --enable-static-modules do not make the modules dynamically loadable],
155 AC_ARG_ENABLE(lckpwdf,
156 [ --disable-lckpwdf do not use the lckpwdf function],
157 WITH_LCKPWDF=no, WITH_LCKPWDF=yes)
158 AC_SUBST(WITH_LCKPWDF)
160 AC_CHECK_HEADERS(paths.h)
161 AC_ARG_WITH(mailspool,
162 [ --with-mailspool path to mail spool directory
163 [default _PATH_MAILDIR if defined in paths.h, otherwise /var/spool/mail]],
164 with_mailspool=${withval})
165 if test x$with_mailspool != x ; then
166 pam_mail_spool="\"$with_mailspool\""
176 }], pam_mail_spool="_PATH_MAILDIR",
177 pam_mail_spool="\"/var/spool/mail\"",
178 pam_mail_spool="\"/var/spool/mail\"")
180 AC_DEFINE_UNQUOTED(PAM_PATH_MAILDIR, $pam_mail_spool)
182 dnl Checks for libraries.
183 AC_CHECK_LIB(c, __libc_sched_setscheduler, PAM_NEEDS_LIBC=, PAM_NEEDS_LIBC=-lc)
184 AC_SUBST(PAM_NEEDS_LIBC)
186 dnl Checks for the existence of lckpwdf in libc
187 AC_CHECK_LIB(c, lckpwdf, HAVE_LCKPWDF=yes, HAVE_LCKPWDF=no)
188 AC_SUBST(HAVE_LCKPWDF)
190 dnl Checks for the existence of libdl - on BSD and Tru64 its part of libc
191 AC_CHECK_LIB(dl, dlopen, LIBDL=-ldl)
195 dnl At least on Solaris, the existing libcrack must be dynamic.
196 dnl Ought to introduce a check for this.
198 AC_CHECK_LIB(crack, FascistCheck, HAVE_LIBCRACK=yes ; AC_DEFINE(HAVE_LIBCRACK),
200 AC_SUBST(HAVE_LIBCRACK)
202 AC_CHECK_LIB(crypt, fcrypt, HAVE_LIBCRYPT=yes ; AC_DEFINE(HAVE_LIBCRYPT),
204 AC_SUBST(HAVE_LIBCRYPT)
205 AC_CHECK_LIB(util, logwtmp, HAVE_LIBUTIL=yes ; AC_DEFINE(HAVE_LIBUTIL),
207 AC_SUBST(HAVE_LIBUTIL)
208 AC_CHECK_LIB(ndbm, dbm_store, HAVE_LIBNDBM=yes ; AC_DEFINE(HAVE_LIBNDBM),
210 AC_SUBST(HAVE_LIBNDBM)
211 AC_CHECK_LIB(db, dbm_store, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB),
213 if test x$HAVE_LIBDB != xyes ; then
214 AC_CHECK_LIB(db, db_create, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB),
218 AC_CHECK_LIB(fl, yylex, yyterminate, HAVE_LIBFL=yes ; AC_DEFINE(HAVE_LIBFL),
221 AC_CHECK_LIB(nsl, yp_maplist, HAVE_LIBNSL=yes ; AC_DEFINE(HAVE_LIBNSL),
223 AC_SUBST(HAVE_LIBNSL)
224 AC_CHECK_LIB(pwdb, pwdb_db_name, HAVE_LIBPWDB=yes ; AC_DEFINE(HAVE_LIBPWDB),
226 AC_SUBST(HAVE_LIBPWDB)
227 AC_CHECK_LIB(fl, yywrap, HAVE_LIBFLEX=yes ; AC_DEFINE(HAVE_LIBFLEX),
229 AC_SUBST(HAVE_LIBFLEX)
230 AC_CHECK_LIB(l, yywrap, HAVE_LIBLEX=yes ; AC_DEFINE(HAVE_LIBLEX),
232 AC_SUBST(HAVE_LIBLEX)
234 dnl Checks for header files.
238 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)
240 dnl Linux wants features.h in some of the source files.
241 AC_CHECK_HEADERS(features.h)
243 dnl For module/pam_cracklib
244 AC_CHECK_HEADERS(crypt.h)
246 dnl For module/pam_userdb
247 AC_CHECK_HEADERS(ndbm.h db.h)
248 dnl I suspect the following two lines are a hack.
249 HAVE_NDBM_H=$ac_cv_header_ndbm_h
250 AC_SUBST(HAVE_NDBM_H)
252 dnl For module/pam_lastlog
253 AC_CHECK_HEADERS(lastlog.h utmp.h utmpx.h)
255 dnl This following rule should be made conditional upon HAVE_LIBCRYPT
258 dnl Look for cracklib dictionary
259 AC_MSG_CHECKING(path to cracklib dictionary)
260 DICT_DIR_CANDIDATES="/usr/lib /usr/share/dict /usr/share/lib \
261 /usr/local/lib /usr/local/share/lib"
262 DICT_FILE_CANDIDATES="pw_dict cracklib_dict"
264 for d in $DICT_DIR_CANDIDATES ; do
265 for f in $DICT_FILE_CANDIDATES ; do
266 if test -r $d/$f.hwm ; then
267 CRACKLIB_DICTPATH=$d/$f
269 elif test -r $d/dict/$f.hwm ; then
270 CRACKLIB_DICTPATH=$d/dict/$f
275 if test -z "$CRACKLIB_DICTPATH" ; then
276 AC_MSG_RESULT(none found)
278 AC_MSG_RESULT($CRACKLIB_DICTPATH)
280 AC_SUBST(CRACKLIB_DICTPATH)
282 dnl Set FLAGS, linker options etc. depending on C compiler.
283 dnl gcc is tested and much preferred; others less so, if at all
285 dnl If compiling with gcc, linking is also supposed to be done with gcc
287 dnl For the moment, gcc is enforced above at "CC=gcc".
289 dnl There is an issue over _POSIX_SOURCE _BSD_SOURCE and _GNU_SOURCE .
290 dnl The original "Linux-PAM" had blanket inclusion. But portability
291 dnl requires their default absence: if particular OSes require them,
292 dnl this should be done selectively.
294 GCC_WARNINGS="-Wall -Wwrite-strings \
295 -Wpointer-arith -Wcast-qual -Wcast-align \
296 -Wstrict-prototypes -Wmissing-prototypes \
297 -Wnested-externs -Winline -Wshadow"
299 if test "$GCC" = yes; then
300 CC=gcc ; AC_SUBST(CC)
301 ### May need per-OS attention
302 ### Example: -D_POSIX_SOURCE: needed on Linux but harms Solaris.
305 OS_CFLAGS="-ansi -D_POSIX_SOURCE -pedantic"
306 LD_D="gcc -shared -Xlinker -x"
307 WARNINGS="$GCC_WARNINGS"
311 LD_L="$LD -Xlinker -x -shared"
314 CC_STATIC="-Xlinker -export-dynamic"
317 OS_CFLAGS="-ansi -pedantic"
318 LD_D="gcc -shared -Xlinker -x"
319 WARNINGS="$GCC_WARNINGS"
323 LD_L="$LD -x -shared"
326 CC_STATIC="-Xlinker -export-dynamic"
332 LD_L=ld -bexpall -bM:SRE -bnoentry
343 ### Non-gcc needs attention on per-OS basis
347 # add some stuff here (see sourceforge bug 534205)
348 # DOCDIR=/System/Documentation/Administration/Libraries/PAM
349 # MANDIR=/usr/share/man
352 ### Support for Solaris-C
357 LD_D="cc -z text -G -R."
365 if test "$OSRELEASE" = 6.5; then
368 PIC= #PIC code is default for IRIX
369 LD="cc -shared" # modules friendly approach
371 LD_L="ld -G -z redlocsym"
376 echo "IRIX prior to 6.5 not allowed for"
380 *) echo "Native compiler on $OS is not yet supported"
397 dnl Checks for typedefs, structures, and compiler characteristics.
407 dnl Checks for library functions.
409 AC_PROG_GCC_TRADITIONAL
412 AC_CHECK_FUNCS(gethostname gettimeofday mkdir select strcspn strdup strerror strspn strstr strtol uname)
414 AC_CHECK_FUNCS(getpwnam_r getgrnam_r)
416 dnl Checks for programs/utilities
417 AC_CHECK_PROG(HAVE_SGML2TXT, sgml2txt, yes, no)
418 AC_CHECK_PROG(HAVE_SGML2HTML, sgml2html, yes, no)
419 AC_CHECK_PROG(HAVE_SGML2LATEX, sgml2latex, yes, no)
420 if test $HAVE_SGML2LATEX = "yes" ; then
421 if sgml2latex -h | grep -e --paper | grep ' -p ' > /dev/null ; then
422 PSER="sgml2latex -o ps"
426 AC_CHECK_PROG(HAVE_PS2PDF, ps2pdf, yes, no)
428 AC_CHECK_PROG(HAVE_SGML2PS, sgml2ps, yes, no)
429 if test $HAVE_SGML2PS = yes ; then
436 dnl Files to be created from when we run configure
437 AC_OUTPUT(Make.Rules)