]> granicus.if.org Git - linux-pam/blob - configure.in
Relevant BUGIDs: 840327
[linux-pam] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 AC_INIT(conf/pam_conv1/pam_conv.y)
3
4 dnl The configuration header file
5 AC_CONFIG_HEADER(_pam_aconf.h)
6
7 dnl
8 dnl Release specific
9 dnl
10
11 LIBPAM_VERSION_MAJOR=0
12 LIBPAM_VERSION_MINOR=78
13
14 AC_SUBST(LIBPAM_VERSION_MAJOR)
15 AC_SUBST(LIBPAM_VERSION_MINOR)
16 AC_DEFINE(LIBPAM_VERSION_MAJOR)
17 AC_DEFINE(LIBPAM_VERSION_MINOR)
18
19 dnl
20 dnl By default, everything under PAM is installed under the root fs.
21 dnl
22
23 AC_PREFIX_DEFAULT()
24
25 dnl
26 dnl Useful info (believed to be portable) - in the future
27 dnl the LOCALSRCDIR and LOCALOBJDIRs may be different
28 dnl
29 LOCALSRCDIR=`/bin/pwd`         ; AC_SUBST(LOCALSRCDIR)
30 LOCALOBJDIR=`/bin/pwd`         ; AC_SUBST(LOCALOBJDIR)
31 OS=`uname|sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
32 AC_SUBST(OS)
33
34 dnl
35 dnl Rules needed for the following (hardcoded Linux defaults for now)
36 dnl
37
38 CONF_CFLAGS=                    ; AC_SUBST(CONF_CFLAGS)
39 MKDIR="mkdir -p"                ; AC_SUBST(MKDIR)
40
41 SHLIBMODE=755                   ; AC_SUBST(SHLIBMODE)
42
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)
48
49 dnl ### Should enable this INSTALL detection.
50 dnl ### Would need to distribute GNU's config.guess and config.sub
51 dnl AC_PROG_INSTALL
52 if test "$OS" = "aix"; then
53   INSTALL=/usr/ucb/install -c
54 else
55   INSTALL=/usr/bin/install
56 fi
57 AC_SUBST(INSTALL)
58
59 dnl Checks for programs.
60 AC_PROG_CC
61 dnl ### AC_PROG_CXX
62 AC_PROG_YACC
63 AC_PROG_LEX
64 dnl AC_PROG_INSTALL
65 AC_PROG_LN_S
66 AC_PROG_MAKE_SET
67
68 dnl
69 dnl options and defaults
70 dnl
71
72 dnl lots of debugging information goes to /tmp/pam-debug.log
73 AC_ARG_ENABLE(debug,
74 [  --enable-debug           specify you are building with debugging on],
75         WITH_DEBUG=yes ; AC_DEFINE(DEBUG) , WITH_DEBUG=no)
76 AC_SUBST(WITH_DEBUG)
77
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)
82
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)
88
89 dnl packaging convenience
90 AC_ARG_ENABLE(fakeroot,
91 [  --enable-fakeroot=<path to packaging directory>], FAKEROOT=$enableval)
92 AC_SUBST(FAKEROOT)
93
94 AC_ARG_ENABLE(securedir,
95 [  --enable-securedir=<path to location of PAMs> [default \$libdir/security]],
96         SECUREDIR=$enableval, SECUREDIR=$libdir/security)
97 AC_SUBST(SECUREDIR)
98
99 AC_ARG_ENABLE(sconfigdir,
100 [  --enable-sconfigdir=<path to module conf files> [default \$sysconfdir/security]],
101         SCONFIGDIR=$enableval, SCONFIGDIR=$sysconfdir/security)
102 AC_SUBST(SCONFIGDIR)
103
104 AC_ARG_ENABLE(suplementedir,
105 [  --enable-suplementedir=<path to module helper binaries> [default \$sbindir]],
106         SUPLEMENTED=$enableval, SUPLEMENTED=$sbindir)
107 AC_SUBST(SUPLEMENTED)
108
109 AC_ARG_ENABLE(includedir,
110 [  --enable-includedir=<path to include location> - where to put <security>],
111         INCLUDEDIR=$enableval, INCLUDEDIR=/usr/include)
112 AC_SUBST(INCLUDEDIR)
113
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)
117 AC_SUBST(DOCDIR)
118
119 AC_ARG_ENABLE(mandir,
120 [  --enable-mandir=<path to store manuals in - /usr/share/man>],
121         MANDIR=$enableval, MANDIR=/usr/share/man)
122 AC_SUBST(MANDIR)
123
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)
128
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))
132
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)
137
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)
141
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)
146
147 DYNAMIC=-DPAM_DYNAMIC
148 AC_SUBST(DYNAMIC)
149
150 AC_ARG_ENABLE(static-modules,
151 [  --enable-static-modules  do not make the modules dynamically loadable],
152         STATIC=-DPAM_STATIC)
153 AC_SUBST(STATIC)
154
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)
159
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\""
167 else
168         AC_TRY_RUN([
169 #include <paths.h>
170 int main() {
171 #ifdef _PATH_MAILDIR
172 exit(0);
173 #else
174 exit(1);
175 #endif
176 }], pam_mail_spool="_PATH_MAILDIR",
177 pam_mail_spool="\"/var/spool/mail\"",
178 pam_mail_spool="\"/var/spool/mail\"")
179 fi
180 AC_DEFINE_UNQUOTED(PAM_PATH_MAILDIR, $pam_mail_spool)
181
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)
185
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)
189
190 dnl Checks for the existence of libdl - on BSD and Tru64 its part of libc
191 AC_CHECK_LIB(dl, dlopen, LIBDL=-ldl) 
192 AC_SUBST(LIBDL)
193
194 dnl
195 dnl At least on Solaris, the existing libcrack must be dynamic.
196 dnl Ought to introduce a check for this.
197 dnl
198 AC_CHECK_LIB(crack, FascistCheck, HAVE_LIBCRACK=yes ; AC_DEFINE(HAVE_LIBCRACK),
199         HAVE_LIBCRACK=no)
200 AC_SUBST(HAVE_LIBCRACK)
201
202 AC_CHECK_LIB(crypt, fcrypt, HAVE_LIBCRYPT=yes ; AC_DEFINE(HAVE_LIBCRYPT),
203         HAVE_LIBCRYPT=no)
204 AC_SUBST(HAVE_LIBCRYPT)
205 AC_CHECK_LIB(util, logwtmp, HAVE_LIBUTIL=yes ; AC_DEFINE(HAVE_LIBUTIL),
206         HAVE_LIBUTIL=no)
207 AC_SUBST(HAVE_LIBUTIL)
208 AC_CHECK_LIB(ndbm, dbm_store, HAVE_LIBNDBM=yes ; AC_DEFINE(HAVE_LIBNDBM),
209         HAVE_LIBNDBM=no)
210 AC_SUBST(HAVE_LIBNDBM)
211 AC_CHECK_LIB(db, dbm_store, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB),
212         HAVE_LIBDB=no)
213 if test x$HAVE_LIBDB != xyes ; then
214         AC_CHECK_LIB(db, db_create, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB),
215         HAVE_LIBDB=no)
216 fi
217 AC_SUBST(HAVE_LIBDB)
218 AC_CHECK_LIB(fl, yylex, yyterminate, HAVE_LIBFL=yes ; AC_DEFINE(HAVE_LIBFL),
219         HAVE_LIBFL=no)
220 AC_SUBST(HAVE_LIBFL)
221 AC_CHECK_LIB(nsl, yp_maplist, HAVE_LIBNSL=yes ; AC_DEFINE(HAVE_LIBNSL),
222         HAVE_LIBNSL=no)
223 AC_SUBST(HAVE_LIBNSL)
224 AC_CHECK_LIB(pwdb, pwdb_db_name, HAVE_LIBPWDB=yes ; AC_DEFINE(HAVE_LIBPWDB),
225         HAVE_LIBPWDB=no)
226 AC_SUBST(HAVE_LIBPWDB)
227 AC_CHECK_LIB(fl, yywrap, HAVE_LIBFLEX=yes ; AC_DEFINE(HAVE_LIBFLEX),
228         HAVE_LIBFLEX=no)
229 AC_SUBST(HAVE_LIBFLEX)
230 AC_CHECK_LIB(l, yywrap, HAVE_LIBLEX=yes ; AC_DEFINE(HAVE_LIBLEX),
231         HAVE_LIBLEX=no)
232 AC_SUBST(HAVE_LIBLEX)
233
234 dnl Checks for header files.
235 AC_HEADER_DIRENT
236 AC_HEADER_STDC
237 AC_HEADER_SYS_WAIT
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)
239
240 dnl Linux wants features.h in some of the source files.
241 AC_CHECK_HEADERS(features.h)
242
243 dnl For module/pam_cracklib
244 AC_CHECK_HEADERS(crypt.h)
245
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)
251
252 dnl For module/pam_lastlog
253 AC_CHECK_HEADERS(lastlog.h utmp.h utmpx.h)
254
255 dnl This following rule should be made conditional upon HAVE_LIBCRYPT
256 dnl being found.
257
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"
263 CRACKLIB_DICTPATH=""
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
268                       break 2
269               elif test -r $d/dict/$f.hwm ; then
270                       CRACKLIB_DICTPATH=$d/dict/$f
271                       break 2
272               fi
273       done
274 done
275 if test -z "$CRACKLIB_DICTPATH" ; then
276       AC_MSG_RESULT(none found)
277 else
278       AC_MSG_RESULT($CRACKLIB_DICTPATH)
279 fi
280 AC_SUBST(CRACKLIB_DICTPATH)
281
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
284 dnl
285 dnl If compiling with gcc, linking is also supposed to be done with gcc
286 dnl
287 dnl For the moment, gcc is enforced above at "CC=gcc".
288 dnl
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.
293
294 GCC_WARNINGS="-Wall -Wwrite-strings \
295         -Wpointer-arith -Wcast-qual -Wcast-align \
296         -Wstrict-prototypes -Wmissing-prototypes \
297         -Wnested-externs -Winline -Wshadow"
298
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.
303         case $OS in
304         linux)
305                 OS_CFLAGS="-ansi -D_POSIX_SOURCE -pedantic"
306                 LD_D="gcc -shared -Xlinker -x"
307                 WARNINGS="$GCC_WARNINGS"
308                 PIC="-fPIC"
309                 DYNTYPE=so
310                 LD=gcc
311                 LD_L="$LD -Xlinker -x -shared"
312                 RANLIB=ranlib
313                 STRIP=strip
314                 CC_STATIC="-Xlinker -export-dynamic"
315                 ;;
316         sunos)
317                 OS_CFLAGS="-ansi -pedantic"
318                 LD_D="gcc -shared -Xlinker -x"
319                 WARNINGS="$GCC_WARNINGS"
320                 PIC="-fPIC"
321                 DYNTYPE=so
322                 LD=ld                           
323                 LD_L="$LD -x -shared"
324                 RANLIB=ranlib
325                 STRIP=strip
326                 CC_STATIC="-Xlinker -export-dynamic"
327                 ;;
328         aix)
329                 OS_CFLAGS=""
330                 DYNTYPE=lo
331                 LD=ld                           
332                 LD_L=ld -bexpall -bM:SRE -bnoentry
333                 LD_D="$LD_L"
334                 RANLIB=ranlib
335                 STRIP=strip
336                 ;;
337         *)
338                 OS_CFLAGS=""
339                 ;;
340         esac
341 else
342 ###
343 ### Non-gcc needs attention on per-OS basis
344 ###
345         case "$OS" in
346         darwin)
347 # add some stuff here (see sourceforge bug 534205)
348 # DOCDIR=/System/Documentation/Administration/Libraries/PAM
349 # MANDIR=/usr/share/man
350                 ;;
351         solaris)
352             ### Support for Solaris-C
353             OS_CFLAGS=""
354             WARNINGS=""
355             PIC="-K pic"
356             LD=ld
357             LD_D="cc -z text -G -R."
358             LD_L="$LD_D"
359             RANLIB=ranlib
360             STRIP=strip
361             CC_STATIC=
362             ;;
363         irix*)
364             OSRELEASE=`uname -r`
365             if test "$OSRELEASE" = 6.5; then
366                 OS_CFLAGS=""
367                 WARNINGS="-fullwarn"
368                 PIC=                    #PIC code is default for IRIX
369                 LD="cc -shared"         # modules friendly approach
370                 LD_D="cc -shared"
371                 LD_L="ld -G -z redlocsym"
372                 RANLIB=echo
373                 STRIP=strip
374                 CC_STATIC=
375             else
376                 echo "IRIX prior to 6.5 not allowed for"
377                 exit
378             fi
379             ;;
380        *) echo "Native compiler on $OS is not yet supported"
381                exit
382             ;;
383        esac
384 fi
385
386 AC_SUBST(DYNTYPE)
387 AC_SUBST(OS_CFLAGS)
388 AC_SUBST(WARNINGS)
389 AC_SUBST(PIC)
390 AC_SUBST(LD)
391 AC_SUBST(LD_D)
392 AC_SUBST(LD_L)
393 AC_SUBST(RANLIB)
394 AC_SUBST(STRIP)
395 AC_SUBST(CC_STATIC)
396
397 dnl Checks for typedefs, structures, and compiler characteristics.
398 AC_C_BIGENDIAN
399 AC_C_CONST
400 AC_TYPE_UID_T
401 AC_TYPE_OFF_T
402 AC_TYPE_PID_T
403 AC_TYPE_SIZE_T
404 AC_HEADER_TIME
405 AC_STRUCT_TM
406
407 dnl Checks for library functions.
408 AC_TYPE_GETGROUPS
409 AC_PROG_GCC_TRADITIONAL
410 AC_FUNC_MEMCMP
411 AC_FUNC_VPRINTF
412 AC_CHECK_FUNCS(gethostname gettimeofday mkdir select strcspn strdup strerror strspn strstr strtol uname)
413
414 AC_CHECK_FUNCS(getpwnam_r getgrnam_r)
415
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"
423   else
424     PSER="sgml2latex -p"
425   fi
426   AC_CHECK_PROG(HAVE_PS2PDF, ps2pdf, yes, no)
427 else
428   AC_CHECK_PROG(HAVE_SGML2PS, sgml2ps, yes, no)
429   if test $HAVE_SGML2PS = yes ; then
430     PSER="sgml2ps"
431   fi
432 fi
433 AC_SUBST(PSER)
434 AC_SUBST(PS2PDF)
435
436 dnl Files to be created from when we run configure
437 AC_OUTPUT(Make.Rules)