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