]> granicus.if.org Git - linux-pam/blob - configure.in
Relevant BUGIDs:
[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 MANMODE=644                     ; AC_SUBST(MANMODE)
43
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)
49
50 dnl Checks for programs.
51 AC_PROG_CC
52 dnl ### AC_PROG_CXX
53 AC_PROG_YACC
54 AC_PROG_LEX
55 AC_PROG_INSTALL
56 AC_PROG_LN_S
57 AC_PROG_MAKE_SET
58
59 dnl
60 dnl options and defaults
61 dnl
62
63 dnl lots of debugging information goes to /tmp/pam-debug.log
64 AC_ARG_ENABLE(debug,
65 [  --enable-debug           specify you are building with debugging on],
66         WITH_DEBUG=yes ; AC_DEFINE(DEBUG) , WITH_DEBUG=no)
67 AC_SUBST(WITH_DEBUG)
68
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)
73
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)
79
80 dnl packaging convenience
81 AC_ARG_ENABLE(fakeroot,
82 [  --enable-fakeroot=<path to packaging directory>], FAKEROOT=$enableval)
83 AC_SUBST(FAKEROOT)
84
85 AC_ARG_ENABLE(securedir,
86 [  --enable-securedir=<path to location of PAMs> [default \$libdir/security]],
87         SECUREDIR=$enableval, SECUREDIR=$libdir/security)
88 AC_SUBST(SECUREDIR)
89
90 AC_ARG_ENABLE(sconfigdir,
91 [  --enable-sconfigdir=<path to module conf files> [default \$sysconfdir/security]],
92         SCONFIGDIR=$enableval, SCONFIGDIR=$sysconfdir/security)
93 AC_SUBST(SCONFIGDIR)
94
95 AC_ARG_ENABLE(suplementedir,
96 [  --enable-suplementedir=<path to module helper binaries> [default \$sbindir]],
97         SUPLEMENTED=$enableval, SUPLEMENTED=$sbindir)
98 AC_SUBST(SUPLEMENTED)
99
100 AC_ARG_ENABLE(includedir,
101 [  --enable-includedir=<path to include location> - where to put <security>],
102         INCLUDEDIR=$enableval, INCLUDEDIR=/usr/include)
103 AC_SUBST(INCLUDEDIR)
104
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)
108 AC_SUBST(DOCDIR)
109
110 AC_ARG_ENABLE(mandir,
111 [  --enable-mandir=<path to store manuals in - /usr/share/man>],
112         MANDIR=$enableval, MANDIR=/usr/share/man)
113 AC_SUBST(MANDIR)
114
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)
119
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))
123
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)
128
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)
132
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)
137
138 DYNAMIC=-DPAM_DYNAMIC
139 AC_SUBST(DYNAMIC)
140
141 AC_ARG_ENABLE(static-modules,
142 [  --enable-static-modules  do not make the modules dynamically loadable],
143         STATIC=-DPAM_STATIC)
144 AC_SUBST(STATIC)
145
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)
150
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\""
158 else
159         AC_TRY_RUN([
160 #include <paths.h>
161 int main() {
162 #ifdef _PATH_MAILDIR
163 exit(0);
164 #else
165 exit(1);
166 #endif
167 }], pam_mail_spool="_PATH_MAILDIR",
168 pam_mail_spool="\"/var/spool/mail\"",
169 pam_mail_spool="\"/var/spool/mail\"")
170 fi
171 AC_DEFINE_UNQUOTED(PAM_PATH_MAILDIR, $pam_mail_spool)
172
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)
176
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)
180
181 dnl Checks for the existence of libdl - on BSD and Tru64 its part of libc
182 AC_CHECK_LIB(dl, dlopen, LIBDL=-ldl) 
183 AC_SUBST(LIBDL)
184
185 dnl
186 dnl At least on Solaris, the existing libcrack must be dynamic.
187 dnl Ought to introduce a check for this.
188 dnl
189 AC_CHECK_LIB(crack, FascistCheck, HAVE_LIBCRACK=yes ; AC_DEFINE(HAVE_LIBCRACK),
190         HAVE_LIBCRACK=no)
191 AC_SUBST(HAVE_LIBCRACK)
192
193 AC_CHECK_LIB(crypt, crypt, HAVE_LIBCRYPT=yes ; AC_DEFINE(HAVE_LIBCRYPT),
194         HAVE_LIBCRYPT=no)
195 AC_SUBST(HAVE_LIBCRYPT)
196 AC_CHECK_LIB(util, logwtmp, HAVE_LIBUTIL=yes ; AC_DEFINE(HAVE_LIBUTIL),
197         HAVE_LIBUTIL=no)
198 AC_SUBST(HAVE_LIBUTIL)
199 AC_CHECK_LIB(ndbm, dbm_store, HAVE_LIBNDBM=yes ; AC_DEFINE(HAVE_LIBNDBM),
200         HAVE_LIBNDBM=no)
201 AC_SUBST(HAVE_LIBNDBM)
202 AC_CHECK_LIB(db, dbm_store, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB),
203         HAVE_LIBDB=no)
204 if test x$HAVE_LIBDB != xyes ; then
205         AC_CHECK_LIB(db, db_create, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB),
206         HAVE_LIBDB=no)
207 fi
208 AC_SUBST(HAVE_LIBDB)
209 AC_CHECK_LIB(fl, yylex, yyterminate, HAVE_LIBFL=yes ; AC_DEFINE(HAVE_LIBFL),
210         HAVE_LIBFL=no)
211 AC_SUBST(HAVE_LIBFL)
212 AC_CHECK_LIB(nsl, yp_maplist, HAVE_LIBNSL=yes ; AC_DEFINE(HAVE_LIBNSL),
213         HAVE_LIBNSL=no)
214 AC_SUBST(HAVE_LIBNSL)
215 AC_CHECK_LIB(pwdb, pwdb_db_name, HAVE_LIBPWDB=yes ; AC_DEFINE(HAVE_LIBPWDB),
216         HAVE_LIBPWDB=no)
217 AC_SUBST(HAVE_LIBPWDB)
218 AC_CHECK_LIB(fl, yywrap, HAVE_LIBFLEX=yes ; AC_DEFINE(HAVE_LIBFLEX),
219         HAVE_LIBFLEX=no)
220 AC_SUBST(HAVE_LIBFLEX)
221 AC_CHECK_LIB(l, yywrap, HAVE_LIBLEX=yes ; AC_DEFINE(HAVE_LIBLEX),
222         HAVE_LIBLEX=no)
223 AC_SUBST(HAVE_LIBLEX)
224
225 dnl Checks for header files.
226 AC_HEADER_DIRENT
227 AC_HEADER_STDC
228 AC_HEADER_SYS_WAIT
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)
230
231 dnl Linux wants features.h in some of the source files.
232 AC_CHECK_HEADERS(features.h)
233
234 dnl For module/pam_cracklib
235 AC_CHECK_HEADERS(crypt.h)
236
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)
242
243 dnl For module/pam_lastlog
244 AC_CHECK_HEADERS(lastlog.h utmp.h utmpx.h)
245
246 dnl This following rule should be made conditional upon HAVE_LIBCRYPT
247 dnl being found.
248
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"
254 CRACKLIB_DICTPATH=""
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
259                       break 2
260               elif test -r $d/dict/$f.hwm ; then
261                       CRACKLIB_DICTPATH=$d/dict/$f
262                       break 2
263               fi
264       done
265 done
266 if test -z "$CRACKLIB_DICTPATH" ; then
267       AC_MSG_ERROR(none found)
268 else
269       AC_MSG_RESULT($CRACKLIB_DICTPATH)
270 fi
271 AC_SUBST(CRACKLIB_DICTPATH)
272
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
275 dnl
276 dnl If compiling with gcc, linking is also supposed to be done with gcc
277 dnl
278 dnl For the moment, gcc is enforced above at "CC=gcc".
279 dnl
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.
284
285 GCC_WARNINGS="-Wall -Wwrite-strings \
286         -Wpointer-arith -Wcast-qual -Wcast-align \
287         -Wstrict-prototypes -Wmissing-prototypes \
288         -Wnested-externs -Winline -Wshadow"
289
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.
294         case $OS in
295         linux)
296                 OS_CFLAGS="-ansi -D_POSIX_SOURCE -pedantic"
297                 LD_D="gcc -shared -Xlinker -x"
298                 WARNINGS="$GCC_WARNINGS"
299                 PIC="-fPIC"
300                 DYNTYPE=so
301                 LD=gcc
302                 LD_L="$LD -Xlinker -x -shared"
303                 RANLIB=ranlib
304                 STRIP=strip
305                 CC_STATIC="-Xlinker -export-dynamic"
306                 ;;
307         sunos)
308                 OS_CFLAGS="-ansi -pedantic"
309                 LD_D="gcc -shared -Xlinker -x"
310                 WARNINGS="$GCC_WARNINGS"
311                 PIC="-fPIC"
312                 DYNTYPE=so
313                 LD=ld                           
314                 LD_L="$LD -x -shared"
315                 RANLIB=ranlib
316                 STRIP=strip
317                 CC_STATIC="-Xlinker -export-dynamic"
318                 ;;
319         aix)
320                 OS_CFLAGS=""
321                 DYNTYPE=lo
322                 LD=ld                           
323                 LD_L=ld -bexpall -bM:SRE -bnoentry
324                 LD_D="$LD_L"
325                 RANLIB=ranlib
326                 STRIP=strip
327                 ;;
328         *)
329                 OS_CFLAGS=""
330                 ;;
331         esac
332 else
333 ###
334 ### Non-gcc needs attention on per-OS basis
335 ###
336         case "$OS" in
337         darwin)
338 # add some stuff here (see sourceforge bug 534205)
339 # DOCDIR=/System/Documentation/Administration/Libraries/PAM
340 # MANDIR=/usr/share/man
341                 ;;
342         solaris)
343             ### Support for Solaris-C
344             OS_CFLAGS=""
345             WARNINGS=""
346             PIC="-K pic"
347             LD=ld
348             LD_D="cc -z text -G -R."
349             LD_L="$LD_D"
350             RANLIB=ranlib
351             STRIP=strip
352             CC_STATIC=
353             ;;
354         irix*)
355             OSRELEASE=`uname -r`
356             if test "$OSRELEASE" = 6.5; then
357                 OS_CFLAGS=""
358                 WARNINGS="-fullwarn"
359                 PIC=                    #PIC code is default for IRIX
360                 LD="cc -shared"         # modules friendly approach
361                 LD_D="cc -shared"
362                 LD_L="ld -G -z redlocsym"
363                 RANLIB=echo
364                 STRIP=strip
365                 CC_STATIC=
366             else
367                 echo "IRIX prior to 6.5 not allowed for"
368                 exit
369             fi
370             ;;
371        *) echo "Native compiler on $OS is not yet supported"
372                exit
373             ;;
374        esac
375 fi
376
377 AC_SUBST(DYNTYPE)
378 AC_SUBST(OS_CFLAGS)
379 AC_SUBST(WARNINGS)
380 AC_SUBST(PIC)
381 AC_SUBST(LD)
382 AC_SUBST(LD_D)
383 AC_SUBST(LD_L)
384 AC_SUBST(RANLIB)
385 AC_SUBST(STRIP)
386 AC_SUBST(CC_STATIC)
387
388 dnl Checks for typedefs, structures, and compiler characteristics.
389 AC_C_BIGENDIAN
390 AC_C_CONST
391 AC_TYPE_UID_T
392 AC_TYPE_OFF_T
393 AC_TYPE_PID_T
394 AC_TYPE_SIZE_T
395 AC_HEADER_TIME
396 AC_STRUCT_TM
397
398 dnl Checks for library functions.
399 AC_TYPE_GETGROUPS
400 AC_PROG_GCC_TRADITIONAL
401 AC_FUNC_MEMCMP
402 AC_FUNC_VPRINTF
403 AC_CHECK_FUNCS(gethostname gettimeofday mkdir select strcspn strdup strerror strspn strstr strtol uname)
404
405 AC_CHECK_FUNCS(getpwnam_r getpwuid_r getgrnam_r getgrgid_r getspnam_r getgrouplist)
406
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"
414   else
415     PSER="sgml2latex -p"
416   fi
417   AC_CHECK_PROG(HAVE_PS2PDF, ps2pdf, yes, no)
418 else
419   AC_CHECK_PROG(HAVE_SGML2PS, sgml2ps, yes, no)
420   if test $HAVE_SGML2PS = yes ; then
421     PSER="sgml2ps"
422   fi
423 fi
424 AC_SUBST(PSER)
425 AC_SUBST(PS2PDF)
426
427 dnl Files to be created from when we run configure
428 AC_OUTPUT(Make.Rules)