]> granicus.if.org Git - linux-pam/blob - configure.in
Relevant BUGIDs: 565470
[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=76
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=-soname                ; 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 since we use linker-specific arguments, we may not gain anything by
287 dnl switching LD_L over, but I think we can use LD_D as-is.
288 dnl
289 dnl For the moment, gcc is enforced above at "CC=gcc".
290 dnl
291 dnl There is an issue over _POSIX_SOURCE _BSD_SOURCE and _GNU_SOURCE .
292 dnl The original "Linux-PAM" had blanket inclusion.  But portability
293 dnl requires their default absence: if particular OSes require them,
294 dnl this should be done selectively.
295
296 GCC_WARNINGS="-Wall -Wwrite-strings \
297         -Wpointer-arith -Wcast-qual -Wcast-align \
298         -Wstrict-prototypes -Wmissing-prototypes \
299         -Wnested-externs -Winline -Wshadow"
300
301 if test "$GCC" = yes; then
302         CC=gcc                          ; AC_SUBST(CC)
303 ### May need per-OS attention
304 ### Example: -D_POSIX_SOURCE: needed on Linux but harms Solaris.
305         case $OS in
306         linux)
307                 OS_CFLAGS="-ansi -D_POSIX_SOURCE -pedantic"
308                 LD_D="gcc -shared -Xlinker -x"
309                 WARNINGS="$GCC_WARNINGS"
310                 PIC="-fPIC"
311                 DYNTYPE=so
312                 LD=ld                           
313                 LD_L="$LD -x -shared"
314                 RANLIB=ranlib
315                 STRIP=strip
316                 CC_STATIC="-Xlinker -export-dynamic"
317                 ;;
318         sunos)
319                 OS_CFLAGS="-ansi -pedantic"
320                 LD_D="gcc -shared -Xlinker -x"
321                 WARNINGS="$GCC_WARNINGS"
322                 PIC="-fPIC"
323                 DYNTYPE=so
324                 LD=ld                           
325                 LD_L="$LD -x -shared"
326                 RANLIB=ranlib
327                 STRIP=strip
328                 CC_STATIC="-Xlinker -export-dynamic"
329                 ;;
330         aix)
331                 OS_CFLAGS=""
332                 DYNTYPE=lo
333                 LD=ld                           
334                 LD_L=ld -bexpall -bM:SRE -bnoentry
335                 LD_D="$LD_L"
336                 RANLIB=ranlib
337                 STRIP=strip
338                 ;;
339         *)
340                 OS_CFLAGS=""
341                 ;;
342         esac
343 else
344 ###
345 ### Non-gcc needs attention on per-OS basis
346 ###
347         case "$OS" in
348         darwin)
349 # add some stuff here (see sourceforge bug 534205)
350 # DOCDIR=/System/Documentation/Administration/Libraries/PAM
351 # MANDIR=/usr/share/man
352                 ;;
353         solaris)
354             ### Support for Solaris-C
355             OS_CFLAGS=""
356             WARNINGS=""
357             PIC="-K pic"
358             LD=ld
359             LD_D="cc -z text -G -R."
360             LD_L="$LD_D"
361             RANLIB=ranlib
362             STRIP=strip
363             CC_STATIC=
364             ;;
365         irix*)
366             OSRELEASE=`uname -r`
367             if test "$OSRELEASE" = 6.5; then
368                 OS_CFLAGS=""
369                 WARNINGS="-fullwarn"
370                 PIC=                    #PIC code is default for IRIX
371                 LD="cc -shared"         # modules friendly approach
372                 LD_D="cc -shared"
373                 LD_L="ld -G -z redlocsym"
374                 RANLIB=echo
375                 STRIP=strip
376                 CC_STATIC=
377             else
378                 echo "IRIX prior to 6.5 not allowed for"
379                 exit
380             fi
381             ;;
382        *) echo "Native compiler on $OS is not yet supported"
383                exit
384             ;;
385        esac
386 fi
387
388 AC_SUBST(DYNTYPE)
389 AC_SUBST(OS_CFLAGS)
390 AC_SUBST(WARNINGS)
391 AC_SUBST(PIC)
392 AC_SUBST(LD)
393 AC_SUBST(LD_D)
394 AC_SUBST(LD_L)
395 AC_SUBST(RANLIB)
396 AC_SUBST(STRIP)
397 AC_SUBST(CC_STATIC)
398
399 dnl Checks for typedefs, structures, and compiler characteristics.
400 AC_C_BIGENDIAN
401 AC_C_CONST
402 AC_TYPE_UID_T
403 AC_TYPE_OFF_T
404 AC_TYPE_PID_T
405 AC_TYPE_SIZE_T
406 AC_HEADER_TIME
407 AC_STRUCT_TM
408
409 dnl Checks for library functions.
410 AC_TYPE_GETGROUPS
411 AC_PROG_GCC_TRADITIONAL
412 AC_FUNC_MEMCMP
413 AC_FUNC_VPRINTF
414 AC_CHECK_FUNCS(gethostname gettimeofday mkdir select strcspn strdup strerror strspn strstr strtol uname)
415
416 AC_CHECK_FUNCS(getpwnam_r getgrnam_r)
417
418 dnl Checks for programs/utilities
419 AC_CHECK_PROG(HAVE_SGML2TXT, sgml2txt, yes, no)
420 AC_CHECK_PROG(HAVE_SGML2HTML, sgml2html, yes, no)
421 AC_CHECK_PROG(HAVE_SGML2LATEX, sgml2latex, yes, no)
422 if test $HAVE_SGML2LATEX = "yes" ; then
423   if sgml2latex -h | grep -e --paper | grep  ' -p ' > /dev/null ; then
424     PSER="sgml2latex -o ps"
425   else
426     PSER="sgml2latex -p"
427   fi
428   AC_CHECK_PROG(HAVE_PS2PDF, ps2pdf, yes, no)
429 else
430   AC_CHECK_PROG(HAVE_SGML2PS, sgml2ps, yes, no)
431   if test $HAVE_SGML2PS = yes ; then
432     PSER="sgml2ps"
433   fi
434 fi
435 AC_SUBST(PSER)
436 AC_SUBST(PS2PDF)
437
438 dnl Files to be created from when we run configure
439 AC_OUTPUT(Make.Rules)