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)
42 MANMODE=644 ; AC_SUBST(MANMODE)
44 dnl These are most likely platform specific - I think HPUX differs
45 USESONAME=yes ; AC_SUBST(USESONAME)
46 SOSWITCH='-Xlinker -soname -Xlinker ' ; AC_SUBST(SOSWITCH)
47 NEEDSONAME=no ; AC_SUBST(NEEDSONAME)
48 LDCONFIG=/sbin/ldconfig ; AC_SUBST(LDCONFIG)
50 dnl Checks for programs.
60 dnl options and defaults
63 dnl lots of debugging information goes to /tmp/pam-debug.log
65 [ --enable-debug specify you are building with debugging on],
66 WITH_DEBUG=yes ; AC_DEFINE(DEBUG) , WITH_DEBUG=no)
69 AC_ARG_ENABLE(memory-debug,
70 [ --enable-memory-debug specify you want every malloc etc. call tracked],
71 WITH_MEMORY_DEBUG=yes ; AC_DEFINE(MEMORY_DEBUG) , WITH_MEMORY_DEBUG=no)
72 AC_SUBST(WITH_MEMORY_DEBUG)
74 dnl build specially named libraries (for debugging purposes)
75 AC_ARG_ENABLE(libdebug,
76 [ --enable-libdebug specify you are building debugging libraries],
77 WITH_LIBDEBUG=yes ; AC_DEFINE(WITH_LIBDEBUG) , WITH_LIBDEBUG=no)
78 AC_SUBST(WITH_LIBDEBUG)
80 dnl packaging convenience
81 AC_ARG_ENABLE(fakeroot,
82 [ --enable-fakeroot=<path to packaging directory>], FAKEROOT=$enableval)
85 AC_ARG_ENABLE(securedir,
86 [ --enable-securedir=<path to location of PAMs> [default \$libdir/security]],
87 SECUREDIR=$enableval, SECUREDIR=$libdir/security)
90 AC_ARG_ENABLE(sconfigdir,
91 [ --enable-sconfigdir=<path to module conf files> [default \$sysconfdir/security]],
92 SCONFIGDIR=$enableval, SCONFIGDIR=$sysconfdir/security)
95 AC_ARG_ENABLE(suplementedir,
96 [ --enable-suplementedir=<path to module helper binaries> [default \$sbindir]],
97 SUPLEMENTED=$enableval, SUPLEMENTED=$sbindir)
100 AC_ARG_ENABLE(includedir,
101 [ --enable-includedir=<path to include location> - where to put <security>],
102 INCLUDEDIR=$enableval, INCLUDEDIR=/usr/include)
105 AC_ARG_ENABLE(docdir,
106 [ --enable-docdir=<path to store documentation in - /usr/share/doc/pam>],
107 DOCDIR=$enableval, DOCDIR=/usr/share/doc/pam)
110 AC_ARG_ENABLE(mandir,
111 [ --enable-mandir=<path to store manuals in - /usr/share/man>],
112 MANDIR=$enableval, MANDIR=/usr/share/man)
115 AC_ARG_ENABLE(pamlocking,
116 [ --enable-pamlocking configure libpam to observe a global authentication lock],
117 WITH_PAMLOCKING=yes ; AC_DEFINE(PAM_LOCKING) , WITH_PAMLOCKING=no)
118 AC_SUBST(WITH_PAMLOCKING)
120 AC_ARG_ENABLE(uglyhack,
121 [ --enable-uglyhack configure libpam to try to honor old pam_strerror syntax],
122 AC_DEFINE(UGLY_HACK_FOR_PRIOR_BEHAVIOR_SUPPORT))
124 AC_ARG_ENABLE(read-both-confs,
125 [ --enable-read-both-confs read both /etc/pam.d and /etc/pam.conf files],
126 AC_DEFINE(PAM_READ_BOTH_CONFS))
127 AC_SUBST(PAM_READ_BOTH_CONFS)
129 AC_ARG_ENABLE(static-libpam, [ --enable-static-libpam build a libpam.a library],
130 STATIC_LIBPAM=yes , STATIC_LIBPAM=no)
131 AC_SUBST(STATIC_LIBPAM)
133 AC_ARG_ENABLE(dynamic-libpam,
134 [ --disable-dynamic-libpam do not build a shared libpam library],
135 DYNAMIC_LIBPAM=no, DYNAMIC_LIBPAM=yes)
136 AC_SUBST(DYNAMIC_LIBPAM)
138 DYNAMIC=-DPAM_DYNAMIC
141 AC_ARG_ENABLE(static-modules,
142 [ --enable-static-modules do not make the modules dynamically loadable],
146 AC_ARG_ENABLE(lckpwdf,
147 [ --disable-lckpwdf do not use the lckpwdf function],
148 WITH_LCKPWDF=no, WITH_LCKPWDF=yes)
149 AC_SUBST(WITH_LCKPWDF)
151 AC_CHECK_HEADERS(paths.h)
152 AC_ARG_WITH(mailspool,
153 [ --with-mailspool path to mail spool directory
154 [default _PATH_MAILDIR if defined in paths.h, otherwise /var/spool/mail]],
155 with_mailspool=${withval})
156 if test x$with_mailspool != x ; then
157 pam_mail_spool="\"$with_mailspool\""
167 }], pam_mail_spool="_PATH_MAILDIR",
168 pam_mail_spool="\"/var/spool/mail\"",
169 pam_mail_spool="\"/var/spool/mail\"")
171 AC_DEFINE_UNQUOTED(PAM_PATH_MAILDIR, $pam_mail_spool)
173 dnl Checks for libraries.
174 AC_CHECK_LIB(c, __libc_sched_setscheduler, PAM_NEEDS_LIBC=, PAM_NEEDS_LIBC=-lc)
175 AC_SUBST(PAM_NEEDS_LIBC)
177 dnl Checks for the existence of lckpwdf in libc
178 AC_CHECK_LIB(c, lckpwdf, HAVE_LCKPWDF=yes, HAVE_LCKPWDF=no)
179 AC_SUBST(HAVE_LCKPWDF)
181 dnl Checks for the existence of libdl - on BSD and Tru64 its part of libc
182 AC_CHECK_LIB(dl, dlopen, LIBDL=-ldl)
186 dnl At least on Solaris, the existing libcrack must be dynamic.
187 dnl Ought to introduce a check for this.
189 AC_CHECK_LIB(crack, FascistCheck, HAVE_LIBCRACK=yes ; AC_DEFINE(HAVE_LIBCRACK),
191 AC_SUBST(HAVE_LIBCRACK)
193 AC_CHECK_LIB(crypt, crypt, HAVE_LIBCRYPT=yes ; AC_DEFINE(HAVE_LIBCRYPT),
195 AC_SUBST(HAVE_LIBCRYPT)
196 AC_CHECK_LIB(util, logwtmp, HAVE_LIBUTIL=yes ; AC_DEFINE(HAVE_LIBUTIL),
198 AC_SUBST(HAVE_LIBUTIL)
199 AC_CHECK_LIB(ndbm, dbm_store, HAVE_LIBNDBM=yes ; AC_DEFINE(HAVE_LIBNDBM),
201 AC_SUBST(HAVE_LIBNDBM)
202 AC_CHECK_LIB(db, dbm_store, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB),
204 if test x$HAVE_LIBDB != xyes ; then
205 AC_CHECK_LIB(db, db_create, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB),
209 AC_CHECK_LIB(fl, yylex, yyterminate, HAVE_LIBFL=yes ; AC_DEFINE(HAVE_LIBFL),
212 AC_CHECK_LIB(nsl, yp_maplist, HAVE_LIBNSL=yes ; AC_DEFINE(HAVE_LIBNSL),
214 AC_SUBST(HAVE_LIBNSL)
215 AC_CHECK_LIB(pwdb, pwdb_db_name, HAVE_LIBPWDB=yes ; AC_DEFINE(HAVE_LIBPWDB),
217 AC_SUBST(HAVE_LIBPWDB)
218 AC_CHECK_LIB(fl, yywrap, HAVE_LIBFLEX=yes ; AC_DEFINE(HAVE_LIBFLEX),
220 AC_SUBST(HAVE_LIBFLEX)
221 AC_CHECK_LIB(l, yywrap, HAVE_LIBLEX=yes ; AC_DEFINE(HAVE_LIBLEX),
223 AC_SUBST(HAVE_LIBLEX)
225 dnl Checks for header files.
229 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)
231 dnl Linux wants features.h in some of the source files.
232 AC_CHECK_HEADERS(features.h)
234 dnl For module/pam_cracklib
235 AC_CHECK_HEADERS(crypt.h)
237 dnl For module/pam_userdb
238 AC_CHECK_HEADERS(ndbm.h db.h)
239 dnl I suspect the following two lines are a hack.
240 HAVE_NDBM_H=$ac_cv_header_ndbm_h
241 AC_SUBST(HAVE_NDBM_H)
243 dnl For module/pam_lastlog
244 AC_CHECK_HEADERS(lastlog.h utmp.h utmpx.h)
246 dnl This following rule should be made conditional upon HAVE_LIBCRYPT
249 dnl Look for cracklib dictionary
250 AC_MSG_CHECKING(path to cracklib dictionary)
251 DICT_DIR_CANDIDATES="/usr/lib /usr/share/dict /usr/share/lib \
252 /usr/local/lib /usr/local/share/lib"
253 DICT_FILE_CANDIDATES="pw_dict cracklib_dict"
255 for d in $DICT_DIR_CANDIDATES ; do
256 for f in $DICT_FILE_CANDIDATES ; do
257 if test -r $d/$f.hwm ; then
258 CRACKLIB_DICTPATH=$d/$f
260 elif test -r $d/dict/$f.hwm ; then
261 CRACKLIB_DICTPATH=$d/dict/$f
266 if test -z "$CRACKLIB_DICTPATH" ; then
267 AC_MSG_ERROR(none found)
269 AC_MSG_RESULT($CRACKLIB_DICTPATH)
271 AC_SUBST(CRACKLIB_DICTPATH)
273 dnl Set FLAGS, linker options etc. depending on C compiler.
274 dnl gcc is tested and much preferred; others less so, if at all
276 dnl If compiling with gcc, linking is also supposed to be done with gcc
278 dnl For the moment, gcc is enforced above at "CC=gcc".
280 dnl There is an issue over _POSIX_SOURCE _BSD_SOURCE and _GNU_SOURCE .
281 dnl The original "Linux-PAM" had blanket inclusion. But portability
282 dnl requires their default absence: if particular OSes require them,
283 dnl this should be done selectively.
285 GCC_WARNINGS="-Wall -Wwrite-strings \
286 -Wpointer-arith -Wcast-qual -Wcast-align \
287 -Wstrict-prototypes -Wmissing-prototypes \
288 -Wnested-externs -Winline -Wshadow"
290 if test "$GCC" = yes; then
291 CC=gcc ; AC_SUBST(CC)
292 ### May need per-OS attention
293 ### Example: -D_POSIX_SOURCE: needed on Linux but harms Solaris.
296 OS_CFLAGS="-ansi -D_POSIX_SOURCE -pedantic"
297 LD_D="gcc -shared -Xlinker -x"
298 WARNINGS="$GCC_WARNINGS"
302 LD_L="$LD -Xlinker -x -shared"
305 CC_STATIC="-Xlinker -export-dynamic"
308 OS_CFLAGS="-ansi -pedantic"
309 LD_D="gcc -shared -Xlinker -x"
310 WARNINGS="$GCC_WARNINGS"
314 LD_L="$LD -x -shared"
317 CC_STATIC="-Xlinker -export-dynamic"
323 LD_L=ld -bexpall -bM:SRE -bnoentry
334 ### Non-gcc needs attention on per-OS basis
338 # add some stuff here (see sourceforge bug 534205)
339 # DOCDIR=/System/Documentation/Administration/Libraries/PAM
340 # MANDIR=/usr/share/man
343 ### Support for Solaris-C
348 LD_D="cc -z text -G -R."
356 if test "$OSRELEASE" = 6.5; then
359 PIC= #PIC code is default for IRIX
360 LD="cc -shared" # modules friendly approach
362 LD_L="ld -G -z redlocsym"
367 echo "IRIX prior to 6.5 not allowed for"
371 *) echo "Native compiler on $OS is not yet supported"
388 dnl Checks for typedefs, structures, and compiler characteristics.
398 dnl Checks for library functions.
400 AC_PROG_GCC_TRADITIONAL
403 AC_CHECK_FUNCS(gethostname gettimeofday mkdir select strcspn strdup strerror strspn strstr strtol uname)
405 AC_CHECK_FUNCS(getpwnam_r getpwuid_r getgrnam_r getgrgid_r getspnam_r getgrouplist)
407 dnl Checks for programs/utilities
408 AC_CHECK_PROG(HAVE_SGML2TXT, sgml2txt, yes, no)
409 AC_CHECK_PROG(HAVE_SGML2HTML, sgml2html, yes, no)
410 AC_CHECK_PROG(HAVE_SGML2LATEX, sgml2latex, yes, no)
411 if test $HAVE_SGML2LATEX = "yes" ; then
412 if sgml2latex -h | grep -e --paper | grep ' -p ' > /dev/null ; then
413 PSER="sgml2latex -o ps"
417 AC_CHECK_PROG(HAVE_PS2PDF, ps2pdf, yes, no)
419 AC_CHECK_PROG(HAVE_SGML2PS, sgml2ps, yes, no)
420 if test $HAVE_SGML2PS = yes ; then
427 dnl Files to be created from when we run configure
428 AC_OUTPUT(Make.Rules)