]> granicus.if.org Git - linux-pam/blob - configure.in
Relevant BUGIDs: 476934
[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)
27 dnl
28 LOCALSRCDIR=`/bin/pwd`         ; AC_SUBST(LOCALSRCDIR)
29 OS=`uname|sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
30 AC_SUBST(OS)
31
32 dnl
33 dnl Rules needed for the following (hardcoded Linux defaults for now)
34 dnl
35
36 CONF_CFLAGS=                    ; AC_SUBST(CONF_CFLAGS)
37 MKDIR="mkdir -p"                ; AC_SUBST(MKDIR)
38
39 SHLIBMODE=755                   ; AC_SUBST(SHLIBMODE)
40
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)
46
47 dnl ### Should enable this INSTALL detection.
48 dnl ### Would need to distribute GNU's config.guess and config.sub
49 dnl AC_PROG_INSTALL
50 if test "$OS" = "aix"; then
51   INSTALL=/usr/ucb/install -c
52 else
53   INSTALL=/usr/bin/install
54 fi
55 AC_SUBST(INSTALL)
56
57 dnl Checks for programs.
58 AC_PROG_CC
59 dnl ### AC_PROG_CXX
60 AC_PROG_YACC
61 AC_PROG_LEX
62 dnl AC_PROG_INSTALL
63 AC_PROG_LN_S
64 AC_PROG_MAKE_SET
65
66 dnl
67 dnl options and defaults
68 dnl
69
70 dnl lots of debugging information goes to /tmp/pam-debug.log
71 AC_ARG_ENABLE(debug,
72 [  --enable-debug           specify you are building with debugging on],
73         WITH_DEBUG=yes ; AC_DEFINE(DEBUG) , WITH_DEBUG=no)
74 AC_SUBST(WITH_DEBUG)
75
76 AC_ARG_ENABLE(memory-debug,
77 [  --enable-memory-debug    specify you want every malloc etc. call tracked],
78         WITH_MEMORY_DEBUG=yes ; AC_DEFINE(MEMORY_DEBUG) , WITH_MEMORY_DEBUG=no)
79 AC_SUBST(WITH_MEMORY_DEBUG)
80
81 dnl build specially named libraries (for debugging purposes)
82 AC_ARG_ENABLE(libdebug,
83 [  --enable-libdebug        specify you are building debugging libraries],
84         WITH_LIBDEBUG=yes ; AC_DEFINE(WITH_LIBDEBUG) , WITH_LIBDEBUG=no)
85 AC_SUBST(WITH_LIBDEBUG)
86
87 dnl packaging convenience
88 AC_ARG_ENABLE(fakeroot,
89 [  --enable-fakeroot=<path to packaging directory>], FAKEROOT=$enableval)
90 AC_SUBST(FAKEROOT)
91
92 AC_ARG_ENABLE(securedir,
93 [  --enable-securedir=<path to location of PAMs> [default \$libdir/security]],
94         SECUREDIR=$enableval, SECUREDIR=$libdir/security)
95 AC_SUBST(SECUREDIR)
96
97 AC_ARG_ENABLE(sconfigdir,
98 [  --enable-sconfigdir=<path to module conf files> [default \$sysconfdir/security]],
99         SCONFIGDIR=$enableval, SCONFIGDIR=$sysconfdir/security)
100 AC_SUBST(SCONFIGDIR)
101
102 AC_ARG_ENABLE(suplementedir,
103 [  --enable-suplementedir=<path to module helper binaries> [default \$sbindir]],
104         SUPLEMENTED=$enableval, SUPLEMENTED=$sbindir)
105 AC_SUBST(SUPLEMENTED)
106
107 AC_ARG_ENABLE(includedir,
108 [  --enable-includedir=<path to include location> - where to put <security>],
109         INCLUDEDIR=$enableval, INCLUDEDIR=/usr/include)
110 AC_SUBST(INCLUDEDIR)
111
112 AC_ARG_ENABLE(docdir,
113 [  --enable-docdir=<path to store documentation in - /usr/share/doc/pam>],
114         DOCDIR=$enableval, DOCDIR=/usr/share/doc/pam)
115 AC_SUBST(DOCDIR)
116
117 AC_ARG_ENABLE(mandir,
118 [  --enable-mandir=<path to store manuals in - /usr/share/man>],
119         MANDIR=$enableval, MANDIR=/usr/share/man)
120 AC_SUBST(MANDIR)
121
122 AC_ARG_ENABLE(pamlocking,
123 [  --enable-pamlocking      configure libpam to observe a global authentication lock],
124         WITH_PAMLOCKING=yes ; AC_DEFINE(PAM_LOCKING) , WITH_PAMLOCKING=no)
125 AC_SUBST(WITH_PAMLOCKING)
126
127 AC_ARG_ENABLE(uglyhack,
128 [  --enable-uglyhack        configure libpam to try to honor old pam_strerror syntax],
129         AC_DEFINE(UGLY_HACK_FOR_PRIOR_BEHAVIOR_SUPPORT))
130
131 AC_ARG_ENABLE(read-both-confs,
132 [  --enable-read-both-confs  read both /etc/pam.d and /etc/pam.conf files],
133         AC_DEFINE(PAM_READ_BOTH_CONFS))
134 AC_SUBST(PAM_READ_BOTH_CONFS)
135
136 AC_ARG_ENABLE(static-libpam, [  --enable-static-libpam   build a libpam.a library],
137         STATIC_LIBPAM=yes , STATIC_LIBPAM=no)
138 AC_SUBST(STATIC_LIBPAM)
139
140 AC_ARG_ENABLE(dynamic-libpam,
141 [  --disable-dynamic-libpam do not build a shared libpam library],
142         DYNAMIC_LIBPAM=no, DYNAMIC_LIBPAM=yes)
143 AC_SUBST(DYNAMIC_LIBPAM)
144
145 DYNAMIC=-DPAM_DYNAMIC
146 AC_SUBST(DYNAMIC)
147
148 AC_ARG_ENABLE(static-modules,
149 [  --enable-static-modules  do not make the modules dynamically loadable],
150         STATIC=-DPAM_STATIC)
151 AC_SUBST(STATIC)
152
153 AC_ARG_ENABLE(lckpwdf,
154 [  --disable-lckpwdf do not use the lckpwdf function],
155         WITH_LCKPWDF=no, WITH_LCKPWDF=yes)
156 AC_SUBST(WITH_LCKPWDF)
157
158 AC_CHECK_HEADERS(paths.h)
159 AC_ARG_WITH(mailspool,
160 [  --with-mailspool         path to mail spool directory
161                            [default _PATH_MAILDIR if defined in paths.h, otherwise /var/spool/mail]],
162 with_mailspool=${withval})
163 if test x$with_mailspool != x ; then
164         pam_mail_spool="\"$with_mailspool\""
165 else
166         AC_TRY_RUN([
167 #include <paths.h>
168 int main() {
169 #ifdef _PATH_MAILDIR
170 exit(0);
171 #else
172 exit(1);
173 #endif
174 }], pam_mail_spool="_PATH_MAILDIR",
175 pam_mail_spool="\"/var/spool/mail\"",
176 pam_mail_spool="\"/var/spool/mail\"")
177 fi
178 AC_DEFINE_UNQUOTED(PAM_PATH_MAILDIR, $pam_mail_spool)
179
180 dnl Checks for libraries.
181 AC_CHECK_LIB(c, __libc_sched_setscheduler, PAM_NEEDS_LIBC=, PAM_NEEDS_LIBC=-lc)
182 AC_SUBST(PAM_NEEDS_LIBC)
183
184 dnl Checks for the existence of lckpwdf in libc
185 AC_CHECK_LIB(c, lckpwdf, HAVE_LCKPWDF=yes, HAVE_LCKPWDF=no)
186 AC_SUBST(HAVE_LCKPWDF)
187
188 dnl Checks for the existence of libdl - on BSD its part of libc
189 AC_CHECK_LIB(dl, dlopen, LIBDL=-ldl) 
190 AC_SUBST(LIBDL)
191
192 dnl
193 dnl At least on Solaris, the existing libcrack must be dynamic.
194 dnl Ought to introduce a check for this.
195 dnl
196 AC_CHECK_LIB(crack, FascistCheck, HAVE_LIBCRACK=yes ; AC_DEFINE(HAVE_LIBCRACK),
197         HAVE_LIBCRACK=no)
198 AC_SUBST(HAVE_LIBCRACK)
199
200 AC_CHECK_LIB(crypt, fcrypt, HAVE_LIBCRYPT=yes ; AC_DEFINE(HAVE_LIBCRYPT),
201         HAVE_LIBCRYPT=no)
202 AC_SUBST(HAVE_LIBCRYPT)
203 AC_CHECK_LIB(util, logwtmp, HAVE_LIBUTIL=yes ; AC_DEFINE(HAVE_LIBUTIL),
204         HAVE_LIBUTIL=no)
205 AC_SUBST(HAVE_LIBUTIL)
206 AC_CHECK_LIB(ndbm, dbm_store, HAVE_LIBNDBM=yes ; AC_DEFINE(HAVE_LIBNDBM),
207         HAVE_LIBNDBM=no)
208 AC_SUBST(HAVE_LIBNDBM)
209 AC_CHECK_LIB(db, dbm_store, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB),
210         HAVE_LIBDB=no)
211 if test x$HAVE_LIBDB != xyes ; then
212         AC_CHECK_LIB(db, db_create, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB),
213         HAVE_LIBDB=no)
214 fi
215 AC_SUBST(HAVE_LIBDB)
216 AC_CHECK_LIB(fl, yylex, yyterminate, HAVE_LIBFL=yes ; AC_DEFINE(HAVE_LIBFL),
217         HAVE_LIBFL=no)
218 AC_SUBST(HAVE_LIBFL)
219 AC_CHECK_LIB(nsl, yp_maplist, HAVE_LIBNSL=yes ; AC_DEFINE(HAVE_LIBNSL),
220         HAVE_LIBNSL=no)
221 AC_SUBST(HAVE_LIBNSL)
222 AC_CHECK_LIB(pwdb, pwdb_db_name, HAVE_LIBPWDB=yes ; AC_DEFINE(HAVE_LIBPWDB),
223         HAVE_LIBPWDB=no)
224 AC_SUBST(HAVE_LIBPWDB)
225
226 dnl Checks for header files.
227 AC_HEADER_DIRENT
228 AC_HEADER_STDC
229 AC_HEADER_SYS_WAIT
230 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
232 dnl Linux wants features.h in some of the source files.
233 AC_CHECK_HEADERS(features.h)
234
235 dnl For module/pam_cracklib
236 AC_CHECK_HEADERS(crypt.h)
237
238 dnl For module/pam_userdb
239 AC_CHECK_HEADERS(ndbm.h db.h)
240 dnl I suspect the following two lines are a hack.
241 HAVE_NDBM_H=$ac_cv_header_ndbm_h
242 AC_SUBST(HAVE_NDBM_H)
243
244 dnl For module/pam_lastlog
245 AC_CHECK_HEADERS(lastlog.h utmp.h utmpx.h)
246
247 dnl This following rule should be made conditional upon HAVE_LIBCRYPT
248 dnl being found.
249
250 dnl Look for cracklib dictionary
251 AC_MSG_CHECKING(path to cracklib dictionary)
252 DICT_DIR_CANDIDATES="/usr/lib /usr/share/dict /usr/share/lib \
253   /usr/local/lib /usr/local/share/lib"
254 DICT_FILE_CANDIDATES="pw_dict cracklib_dict"
255 CRACKLIB_DICTPATH=""
256 for d in $DICT_DIR_CANDIDATES ; do
257       for f in $DICT_FILE_CANDIDATES ; do
258               if test -r $d/$f.hwm ; then
259                       CRACKLIB_DICTPATH=$d/$f
260                       break 2
261               elif test -r $d/dict/$f.hwm ; then
262                       CRACKLIB_DICTPATH=$d/dict/$f
263                       break 2
264               fi
265       done
266 done
267 if test -z "$CRACKLIB_DICTPATH" ; then
268       AC_MSG_RESULT(none found)
269 else
270       AC_MSG_RESULT($CRACKLIB_DICTPATH)
271 fi
272 AC_SUBST(CRACKLIB_DICTPATH)
273
274 dnl Set FLAGS, linker options etc. depending on C compiler.
275 dnl gcc is tested and much preferred; others less so, if at all
276 dnl
277 dnl If compiling with gcc, linking is also supposed to be done with gcc;
278 dnl since we use linker-specific arguments, we may not gain anything by
279 dnl switching LD_L over, but I think we can use LD_D as-is.
280 dnl
281 dnl For the moment, gcc is enforced above at "CC=gcc".
282 dnl
283 dnl There is an issue over _POSIX_SOURCE _BSD_SOURCE and _GNU_SOURCE .
284 dnl The original "Linux-PAM" had blanket inclusion.  But portability
285 dnl requires their default absence: if particular OSes require them,
286 dnl this should be done selectively.
287
288 GCC_WARNINGS="-Wall -Wwrite-strings \
289         -Wpointer-arith -Wcast-qual -Wcast-align \
290         -Wstrict-prototypes -Wmissing-prototypes \
291         -Wnested-externs -Winline -Wshadow"
292
293 if test "$GCC" = yes; then
294         CC=gcc                          ; AC_SUBST(CC)
295 ### May need per-OS attention
296 ### Example: -D_POSIX_SOURCE: needed on Linux but harms Solaris.
297         case $OS in
298         linux)
299                 OS_CFLAGS="-ansi -D_POSIX_SOURCE -pedantic"
300                 LD_D="gcc -shared -Xlinker -x"
301                 WARNINGS="$GCC_WARNINGS"
302                 PIC="-fPIC"
303                 DYNTYPE=so
304                 LD=ld                           
305                 LD_L="$LD -x -shared"
306                 RANLIB=ranlib
307                 STRIP=strip
308                 CC_STATIC="-Xlinker -export-dynamic"
309                 ;;
310         sunos)
311                 OS_CFLAGS="-ansi -pedantic"
312                 LD_D="gcc -shared -Xlinker -x"
313                 WARNINGS="$GCC_WARNINGS"
314                 PIC="-fPIC"
315                 DYNTYPE=so
316                 LD=ld                           
317                 LD_L="$LD -x -shared"
318                 RANLIB=ranlib
319                 STRIP=strip
320                 CC_STATIC="-Xlinker -export-dynamic"
321                 ;;
322         aix)
323                 OS_CFLAGS=""
324                 DYNTYPE=lo
325                 LD=ld                           
326                 LD_L=ld -bexpall -bM:SRE -bnoentry
327                 LD_D="$LD_L"
328                 RANLIB=ranlib
329                 STRIP=strip
330                 ;;
331         *)
332                 OS_CFLAGS=""
333                 ;;
334         esac
335 else
336 ###
337 ### Non-gcc needs attention on per-OS basis
338 ###
339         case "$OS" in
340         solaris)
341             ### Support for Solaris-C
342             OS_CFLAGS=""
343             WARNINGS=""
344             PIC="-K pic"
345             LD=ld
346             LD_D="cc -z text -G -R."
347             LD_L="$LD_D"
348             RANLIB=ranlib
349             STRIP=strip
350             CC_STATIC=
351             ;;
352         irix*)
353             OSRELEASE=`uname -r`
354             if test "$OSRELEASE" = 6.5; then
355                 OS_CFLAGS=""
356                 WARNINGS="-fullwarn"
357                 PIC=                    #PIC code is default for IRIX
358                 LD="cc -shared"         # modules friendly approach
359                 LD_D="cc -shared"
360                 LD_L="ld -G -z redlocsym"
361                 RANLIB=echo
362                 STRIP=strip
363                 CC_STATIC=
364             else
365                 echo "IRIX prior to 6.5 not allowed for"
366                 exit
367             fi
368             ;;
369        *) echo "Native compiler on $OS is not yet supported"
370                exit
371             ;;
372        esac
373 fi
374
375 AC_SUBST(DYNTYPE)
376 AC_SUBST(OS_CFLAGS)
377 AC_SUBST(WARNINGS)
378 AC_SUBST(PIC)
379 AC_SUBST(LD)
380 AC_SUBST(LD_D)
381 AC_SUBST(LD_L)
382 AC_SUBST(RANLIB)
383 AC_SUBST(STRIP)
384 AC_SUBST(CC_STATIC)
385
386 dnl Checks for typedefs, structures, and compiler characteristics.
387 AC_C_BIGENDIAN
388 AC_C_CONST
389 AC_TYPE_UID_T
390 AC_TYPE_OFF_T
391 AC_TYPE_PID_T
392 AC_TYPE_SIZE_T
393 AC_HEADER_TIME
394 AC_STRUCT_TM
395
396 dnl Checks for library functions.
397 AC_TYPE_GETGROUPS
398 AC_PROG_GCC_TRADITIONAL
399 AC_FUNC_MEMCMP
400 AC_FUNC_VPRINTF
401 AC_CHECK_FUNCS(gethostname gettimeofday mkdir select strcspn strdup strerror strspn strstr strtol uname)
402
403 AC_CHECK_FUNCS(getpwnam_r getgrnam_r)
404
405 dnl Checks for programs/utilities
406 AC_CHECK_PROG(HAVE_SGML2TXT, sgml2txt, yes, no)
407 AC_CHECK_PROG(HAVE_SGML2HTML, sgml2html, yes, no)
408 AC_CHECK_PROG(HAVE_SGML2LATEX, sgml2latex, yes, no)
409 if test $HAVE_SGML2LATEX = "yes" ; then
410   if sgml2latex -h | grep -e --paper | grep  ' -p ' > /dev/null ; then
411     PSER="sgml2latex -o ps"
412   else
413     PSER="sgml2latex -p"
414   fi
415 else
416   AC_CHECK_PROG(HAVE_SGML2PS, sgml2ps, yes, no)
417   if test $HAVE_SGML2PS = yes ; then
418     PSER="sgml2ps"
419   fi
420 fi
421 AC_SUBST(PSER)
422
423 dnl Files to be created from when we run configure
424 AC_OUTPUT(Make.Rules)