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