Annotation of embedaddon/sudo/configure.in, revision 1.1.1.3
1.1 misho 1: dnl
2: dnl Process this file with GNU autoconf to produce a configure script.
3: dnl
1.1.1.2 misho 4: dnl Copyright (c) 1994-1996,1998-2012 Todd C. Miller <Todd.Miller@courtesan.com>
1.1 misho 5: dnl
1.1.1.3 ! misho 6: AC_INIT([sudo], [1.8.6p3], [http://www.sudo.ws/bugs/], [sudo])
1.1 misho 7: AC_CONFIG_HEADER([config.h pathnames.h])
8: dnl
9: dnl Note: this must come after AC_INIT
10: dnl
11: AC_MSG_NOTICE([Configuring Sudo version $PACKAGE_VERSION])
12: dnl
13: dnl Variables that get substituted in the Makefile and man pages
14: dnl
15: AC_SUBST([HAVE_BSM_AUDIT])
16: AC_SUBST([SHELL])
17: AC_SUBST([LIBTOOL])
18: AC_SUBST([CFLAGS])
19: AC_SUBST([PROGS])
20: AC_SUBST([CPPFLAGS])
21: AC_SUBST([LDFLAGS])
22: AC_SUBST([SUDOERS_LDFLAGS])
1.1.1.3 ! misho 23: AC_SUBST([LT_LDFLAGS])
! 24: AC_SUBST([LT_LDMAP])
! 25: AC_SUBST([LT_LDOPT])
! 26: AC_SUBST([LT_LDDEP])
! 27: AC_SUBST([LT_LDEXPORTS])
1.1 misho 28: AC_SUBST([COMMON_OBJS])
29: AC_SUBST([SUDOERS_OBJS])
30: AC_SUBST([SUDO_OBJS])
31: AC_SUBST([LIBS])
32: AC_SUBST([SUDO_LIBS])
33: AC_SUBST([SUDOERS_LIBS])
34: AC_SUBST([NET_LIBS])
35: AC_SUBST([AFS_LIBS])
36: AC_SUBST([REPLAY_LIBS])
37: AC_SUBST([GETGROUPS_LIB])
38: AC_SUBST([OSDEFS])
39: AC_SUBST([AUTH_OBJS])
40: AC_SUBST([MANTYPE])
1.1.1.3 ! misho 41: AC_SUBST([MANDIRTYPE])
! 42: AC_SUBST([MANCOMPRESS])
! 43: AC_SUBST([MANCOMPRESSEXT])
! 44: AC_SUBST([SHLIB_MODE])
1.1 misho 45: AC_SUBST([SUDOERS_MODE])
46: AC_SUBST([SUDOERS_UID])
47: AC_SUBST([SUDOERS_GID])
1.1.1.2 misho 48: AC_SUBST([DEVEL])
1.1 misho 49: AC_SUBST([BAMAN])
50: AC_SUBST([LCMAN])
1.1.1.3 ! misho 51: AC_SUBST([PSMAN])
1.1 misho 52: AC_SUBST([SEMAN])
53: AC_SUBST([devdir])
54: AC_SUBST([mansectsu])
55: AC_SUBST([mansectform])
56: AC_SUBST([mansrcdir])
57: AC_SUBST([NOEXECFILE])
58: AC_SUBST([NOEXECDIR])
59: AC_SUBST([PLUGINDIR])
60: AC_SUBST([SOEXT])
61: AC_SUBST([noexec_file])
62: AC_SUBST([INSTALL_NOEXEC])
63: AC_SUBST([DONT_LEAK_PATH_INFO])
64: AC_SUBST([BSDAUTH_USAGE])
65: AC_SUBST([SELINUX_USAGE])
66: AC_SUBST([LDAP])
67: AC_SUBST([LOGINCAP_USAGE])
68: AC_SUBST([ZLIB])
69: AC_SUBST([ZLIB_SRC])
70: AC_SUBST([LIBTOOL_DEPS])
71: AC_SUBST([ac_config_libobj_dir])
72: AC_SUBST([CONFIGURE_ARGS])
73: AC_SUBST([LIBDL])
74: AC_SUBST([LT_STATIC])
75: AC_SUBST([LIBINTL])
76: AC_SUBST([SUDO_NLS])
1.1.1.2 misho 77: AC_SUBST([COMPAT_TEST_PROGS])
1.1.1.3 ! misho 78: AC_SUBST([CROSS_COMPILING])
! 79: AC_SUBST([PIE_LDFLAGS])
! 80: AC_SUBST([PIE_CFLAGS])
! 81: AC_SUBST([NO_VIZ])
1.1 misho 82: dnl
83: dnl Variables that get substituted in docs (not overridden by environment)
84: dnl
85: AC_SUBST([iolog_dir])dnl real initial value from SUDO_IO_LOGDIR
86: AC_SUBST([timedir])dnl real initial value from SUDO_TIMEDIR
87: AC_SUBST([timeout])
88: AC_SUBST([password_timeout])
89: AC_SUBST([sudo_umask])
90: AC_SUBST([umask_override])
91: AC_SUBST([passprompt])
92: AC_SUBST([long_otp_prompt])
93: AC_SUBST([lecture])
94: AC_SUBST([logfac])
95: AC_SUBST([goodpri])
96: AC_SUBST([badpri])
97: AC_SUBST([loglen])
98: AC_SUBST([ignore_dot])
99: AC_SUBST([mail_no_user])
100: AC_SUBST([mail_no_host])
101: AC_SUBST([mail_no_perms])
102: AC_SUBST([mailto])
103: AC_SUBST([mailsub])
104: AC_SUBST([badpass_message])
105: AC_SUBST([fqdn])
106: AC_SUBST([runas_default])
107: AC_SUBST([env_editor])
108: AC_SUBST([env_reset])
109: AC_SUBST([passwd_tries])
110: AC_SUBST([tty_tickets])
111: AC_SUBST([insults])
112: AC_SUBST([root_sudo])
113: AC_SUBST([path_info])
114: AC_SUBST([ldap_conf])
115: AC_SUBST([ldap_secret])
1.1.1.3 ! misho 116: AC_SUBST([sssd_lib])
1.1 misho 117: AC_SUBST([nsswitch_conf])
118: AC_SUBST([netsvc_conf])
119: AC_SUBST([secure_path])
120: AC_SUBST([editor])
121: #
122: # Begin initial values for man page substitution
123: #
124: iolog_dir=/var/log/sudo-io
125: timedir=/var/adm/sudo
126: timeout=5
127: password_timeout=5
128: sudo_umask=0022
129: umask_override=off
130: passprompt="Password:"
131: long_otp_prompt=off
132: lecture=once
133: logfac=auth
134: goodpri=notice
135: badpri=alert
136: loglen=80
137: ignore_dot=off
138: mail_no_user=on
139: mail_no_host=off
140: mail_no_perms=off
141: mailto=root
142: mailsub="*** SECURITY information for %h ***"
143: badpass_message="Sorry, try again."
144: fqdn=off
145: runas_default=root
146: env_editor=off
147: env_reset=on
148: editor=vi
149: passwd_tries=3
150: tty_tickets=on
151: insults=off
152: root_sudo=on
153: path_info=on
154: ldap_conf=/etc/ldap.conf
155: ldap_secret=/etc/ldap.secret
156: netsvc_conf=/etc/netsvc.conf
157: noexec_file=/usr/local/libexec/sudo_noexec.so
158: nsswitch_conf=/etc/nsswitch.conf
159: secure_path="not set"
160: #
161: # End initial values for man page substitution
162: #
163: dnl
164: dnl Initial values for Makefile variables listed above
165: dnl May be overridden by environment variables..
166: dnl
167: INSTALL_NOEXEC=
168: devdir='$(srcdir)'
169: PROGS="sudo"
1.1.1.3 ! misho 170: : ${MANDIRTYPE='man'}
1.1 misho 171: : ${mansrcdir='.'}
1.1.1.3 ! misho 172: : ${SHLIB_MODE='0644'}
1.1 misho 173: : ${SUDOERS_MODE='0440'}
174: : ${SUDOERS_UID='0'}
175: : ${SUDOERS_GID='0'}
1.1.1.2 misho 176: DEVEL=
1.1 misho 177: LDAP="#"
178: BAMAN=0
179: LCMAN=0
1.1.1.3 ! misho 180: PSMAN=0
1.1 misho 181: SEMAN=0
182: LIBINTL=
183: ZLIB=
184: ZLIB_SRC=
185: AUTH_OBJS=
186: AUTH_REG=
187: AUTH_EXCL=
188: AUTH_EXCL_DEF=
189: AUTH_DEF=passwd
190: SUDO_NLS=disabled
1.1.1.3 ! misho 191: LT_LDEXPORTS="-export-symbols \$(shlib_exp)"
! 192: LT_LDDEP="\$(shlib_exp)"
! 193: NO_VIZ=
1.1 misho 194:
195: dnl
196: dnl Other vaiables
197: dnl
198: CHECKSHADOW=true
199: shadow_defs=
200: shadow_funcs=
201: shadow_libs=
202: shadow_libs_optional=
203: CONFIGURE_ARGS="$@"
204:
205: dnl
1.1.1.2 misho 206: dnl LD_PRELOAD equivalents
207: dnl
208: RTLD_PRELOAD_VAR="LD_PRELOAD"
209: RTLD_PRELOAD_ENABLE_VAR=
210: RTLD_PRELOAD_DELIM=":"
211: RTLD_PRELOAD_DEFAULT=
212:
213: dnl
1.1 misho 214: dnl libc replacement functions live in compat
215: dnl
216: AC_CONFIG_LIBOBJ_DIR(compat)
217:
218: dnl
219: dnl Deprecated --with options (these all warn or generate an error)
220: dnl
221:
222: AC_ARG_WITH(otp-only, [AS_HELP_STRING([--with-otp-only], [deprecated])],
223: [case $with_otp_only in
224: yes) with_passwd="no"
225: AC_MSG_NOTICE([--with-otp-only option deprecated, treating as --without-passwd])
226: ;;
227: esac])
228:
229: AC_ARG_WITH(alertmail, [AS_HELP_STRING([--with-alertmail], [deprecated])],
230: [case $with_alertmail in
231: *) with_mailto="$with_alertmail"
232: AC_MSG_NOTICE([--with-alertmail option deprecated, treating as --mailto])
233: ;;
234: esac])
235:
236: dnl
237: dnl Options for --with
238: dnl
239:
240: AC_ARG_WITH(devel, [AS_HELP_STRING([--with-devel], [add development options])],
241: [case $with_devel in
242: yes) AC_MSG_NOTICE([Setting up for development: -Wall, flex, yacc])
243: OSDEFS="${OSDEFS} -DSUDO_DEVEL"
1.1.1.2 misho 244: DEVEL="true"
1.1 misho 245: devdir=.
246: ;;
247: no) ;;
248: *) AC_MSG_WARN([Ignoring unknown argument to --with-devel: $with_devel])
249: ;;
250: esac])
251:
252: AC_ARG_WITH(CC, [AS_HELP_STRING([--with-CC], [C compiler to use])],
253: [case $with_CC in
254: *) AC_MSG_ERROR([the --with-CC option is no longer supported, please set the CC environment variable instead.])
255: ;;
256: esac])
257:
258: AC_ARG_WITH(rpath, [AS_HELP_STRING([--with-rpath], [pass -R flag in addition to -L for lib paths])],
259: [case $with_rpath in
260: yes|no) ;;
261: *) AC_MSG_ERROR(["--with-rpath does not take an argument."])
262: ;;
263: esac])
264:
265: AC_ARG_WITH(blibpath, [AS_HELP_STRING([--with-blibpath[=PATH]], [pass -blibpath flag to ld for additional lib paths])],
266: [case $with_blibpath in
267: yes|no) ;;
268: *) AC_MSG_NOTICE([will pass -blibpath:${with_blibpath} to the loader.])
269: ;;
270: esac])
271:
272: dnl
273: dnl Handle BSM auditing support.
274: dnl
275: AC_ARG_WITH(bsm-audit, [AS_HELP_STRING([--with-bsm-audit], [enable BSM audit support])],
276: [case $with_bsm_audit in
277: yes) AC_DEFINE(HAVE_BSM_AUDIT)
278: SUDOERS_LIBS="${SUDOERS_LIBS} -lbsm"
279: SUDOERS_OBJS="${SUDOERS_OBJS} bsm_audit.lo"
280: ;;
281: no) ;;
282: *) AC_MSG_ERROR(["--with-bsm-audit does not take an argument."])
283: ;;
284: esac])
285:
286: dnl
287: dnl Handle Linux auditing support.
288: dnl
289: AC_ARG_WITH(linux-audit, [AS_HELP_STRING([--with-linux-audit], [enable Linux audit support])],
290: [case $with_linux_audit in
291: yes) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libaudit.h>]], [[int i = AUDIT_USER_CMD; (void)i;]])], [
292: AC_DEFINE(HAVE_LINUX_AUDIT)
293: SUDO_LIBS="${SUDO_LIBS} -laudit"
294: SUDOERS_LIBS="${SUDO_LIBS} -laudit"
295: SUDOERS_OBJS="${SUDOERS_OBJS} linux_audit.lo"
296: ], [
297: AC_MSG_ERROR([unable to find AUDIT_USER_CMD in libaudit.h for --with-linux-audit])
298: ])
299: ;;
300: no) ;;
301: *) AC_MSG_ERROR(["--with-linux-audit does not take an argument."])
302: ;;
303: esac])
304:
1.1.1.3 ! misho 305: dnl
! 306: dnl Handle SSSD support.
! 307: dnl
! 308: AC_ARG_WITH(sssd, [AS_HELP_STRING([--with-sssd], [enable SSSD support])],
! 309: [case $with_sssd in
! 310: yes) SUDOERS_OBJS="${SUDOERS_OBJS} sssd.lo"
! 311: AC_DEFINE(HAVE_SSSD)
! 312: ;;
! 313: no) ;;
! 314: *) AC_MSG_ERROR(["--with-sssd does not take an argument."])
! 315: ;;
! 316: esac])
! 317:
! 318: AC_ARG_WITH(sssd-lib, [AS_HELP_STRING([--with-sssd-lib], [path to the SSSD library])])
! 319: sssd_lib="\"LIBDIR\""
! 320: test -n "$with_sssd_lib" && sssd_lib="$with_sssd_lib"
! 321: SUDO_DEFINE_UNQUOTED(_PATH_SSSD_LIB, "$sssd_lib", [Path to the SSSD library])
! 322:
1.1 misho 323: AC_ARG_WITH(incpath, [AS_HELP_STRING([--with-incpath], [additional places to look for include files])],
324: [case $with_incpath in
325: yes) AC_MSG_ERROR(["must give --with-incpath an argument."])
326: ;;
327: no) AC_MSG_ERROR(["--without-incpath not supported."])
328: ;;
329: *) AC_MSG_NOTICE([Adding ${with_incpath} to CPPFLAGS])
330: for i in ${with_incpath}; do
331: CPPFLAGS="${CPPFLAGS} -I${i}"
332: done
333: ;;
334: esac])
335:
336: AC_ARG_WITH(libpath, [AS_HELP_STRING([--with-libpath], [additional places to look for libraries])],
337: [case $with_libpath in
338: yes) AC_MSG_ERROR(["must give --with-libpath an argument."])
339: ;;
340: no) AC_MSG_ERROR(["--without-libpath not supported."])
341: ;;
342: *) AC_MSG_NOTICE([Adding ${with_libpath} to LDFLAGS])
343: ;;
344: esac])
345:
346: AC_ARG_WITH(libraries, [AS_HELP_STRING([--with-libraries], [additional libraries to link with])],
347: [case $with_libraries in
348: yes) AC_MSG_ERROR(["must give --with-libraries an argument."])
349: ;;
350: no) AC_MSG_ERROR(["--without-libraries not supported."])
351: ;;
352: *) AC_MSG_NOTICE([Adding ${with_libraries} to LIBS])
353: ;;
354: esac])
355:
356: AC_ARG_WITH(efence, [AS_HELP_STRING([--with-efence], [link with -lefence for malloc() debugging])],
357: [case $with_efence in
358: yes) AC_MSG_NOTICE([Sudo will link with -lefence (Electric Fence)])
359: LIBS="${LIBS} -lefence"
360: if test -f /usr/local/lib/libefence.a; then
361: with_libpath="${with_libpath} /usr/local/lib"
362: fi
363: ;;
364: no) ;;
365: *) AC_MSG_WARN([Ignoring unknown argument to --with-efence: $with_efence])
366: ;;
367: esac])
368:
369: AC_ARG_WITH(csops, [AS_HELP_STRING([--with-csops], [add CSOps standard options])],
370: [case $with_csops in
371: yes) AC_MSG_NOTICE([Adding CSOps standard options])
372: CHECKSIA=false
373: with_ignore_dot=yes
374: insults=on
375: with_classic_insults=yes
376: with_csops_insults=yes
377: with_env_editor=yes
378: : ${mansectsu='8'}
379: : ${mansectform='5'}
380: ;;
381: no) ;;
382: *) AC_MSG_WARN([Ignoring unknown argument to --with-csops: $with_csops])
383: ;;
384: esac])
385:
386: AC_ARG_WITH(passwd, [AS_HELP_STRING([--without-passwd], [don't use passwd/shadow file for authentication])],
387: [case $with_passwd in
388: yes|no) AC_MSG_CHECKING(whether to use shadow/passwd file authentication)
389: AC_MSG_RESULT($with_passwd)
390: AUTH_DEF=""
391: test "$with_passwd" = "yes" && AUTH_REG="$AUTH_REG passwd"
392: ;;
393: *) AC_MSG_ERROR(["Sorry, --with-passwd does not take an argument."])
394: ;;
395: esac])
396:
397: AC_ARG_WITH(skey, [AS_HELP_STRING([--with-skey[=DIR]], [enable S/Key support ])],
398: [case $with_skey in
399: no) ;;
400: *) AC_DEFINE(HAVE_SKEY)
401: AC_MSG_CHECKING(whether to try S/Key authentication)
402: AC_MSG_RESULT(yes)
403: AUTH_REG="$AUTH_REG S/Key"
404: ;;
405: esac])
406:
407: AC_ARG_WITH(opie, [AS_HELP_STRING([--with-opie[=DIR]], [enable OPIE support ])],
408: [case $with_opie in
409: no) ;;
410: *) AC_DEFINE(HAVE_OPIE)
411: AC_MSG_CHECKING(whether to try NRL OPIE authentication)
412: AC_MSG_RESULT(yes)
413: AUTH_REG="$AUTH_REG NRL_OPIE"
414: ;;
415: esac])
416:
417: AC_ARG_WITH(long-otp-prompt, [AS_HELP_STRING([--with-long-otp-prompt], [use a two line OTP (skey/opie) prompt])],
418: [case $with_long_otp_prompt in
419: yes) AC_DEFINE(LONG_OTP_PROMPT)
420: AC_MSG_CHECKING(whether to use a two line prompt for OTP authentication)
421: AC_MSG_RESULT(yes)
422: long_otp_prompt=on
423: ;;
424: no) long_otp_prompt=off
425: ;;
426: *) AC_MSG_ERROR(["--with-long-otp-prompt does not take an argument."])
427: ;;
428: esac])
429:
430: AC_ARG_WITH(SecurID, [AS_HELP_STRING([--with-SecurID[[=DIR]]], [enable SecurID support])],
431: [case $with_SecurID in
432: no) ;;
433: *) AC_DEFINE(HAVE_SECURID)
434: AC_MSG_CHECKING(whether to use SecurID for authentication)
435: AC_MSG_RESULT(yes)
436: AUTH_EXCL="$AUTH_EXCL SecurID"
437: ;;
438: esac])
439:
440: AC_ARG_WITH(fwtk, [AS_HELP_STRING([--with-fwtk[[=DIR]]], [enable FWTK AuthSRV support])],
441: [case $with_fwtk in
442: no) ;;
443: *) AC_DEFINE(HAVE_FWTK)
444: AC_MSG_CHECKING(whether to use FWTK AuthSRV for authentication)
445: AC_MSG_RESULT(yes)
446: AUTH_EXCL="$AUTH_EXCL FWTK"
447: ;;
448: esac])
449:
450: AC_ARG_WITH(kerb5, [AS_HELP_STRING([--with-kerb5[[=DIR]]], [enable Kerberos V support])],
451: [case $with_kerb5 in
452: no) ;;
453: *) AC_MSG_CHECKING(whether to try Kerberos V authentication)
454: AC_MSG_RESULT(yes)
455: AUTH_REG="$AUTH_REG kerb5"
456: ;;
457: esac])
458:
459: AC_ARG_WITH(aixauth, [AS_HELP_STRING([--with-aixauth], [enable AIX general authentication support])],
460: [case $with_aixauth in
461: yes) AUTH_EXCL="$AUTH_EXCL AIX_AUTH";;
462: no) ;;
463: *) AC_MSG_ERROR(["--with-aixauth does not take an argument."])
464: ;;
465: esac])
466:
467: AC_ARG_WITH(pam, [AS_HELP_STRING([--with-pam], [enable PAM support])],
468: [case $with_pam in
469: yes) AUTH_EXCL="$AUTH_EXCL PAM";;
470: no) ;;
471: *) AC_MSG_ERROR(["--with-pam does not take an argument."])
472: ;;
473: esac])
474:
475: AC_ARG_WITH(AFS, [AS_HELP_STRING([--with-AFS], [enable AFS support])],
476: [case $with_AFS in
477: yes) AC_DEFINE(HAVE_AFS)
478: AC_MSG_CHECKING(whether to try AFS (kerberos) authentication)
479: AC_MSG_RESULT(yes)
480: AUTH_REG="$AUTH_REG AFS"
481: ;;
482: no) ;;
483: *) AC_MSG_ERROR(["--with-AFS does not take an argument."])
484: ;;
485: esac])
486:
487: AC_ARG_WITH(DCE, [AS_HELP_STRING([--with-DCE], [enable DCE support])],
488: [case $with_DCE in
489: yes) AC_DEFINE(HAVE_DCE)
490: AC_MSG_CHECKING(whether to try DCE (kerberos) authentication)
491: AC_MSG_RESULT(yes)
492: AUTH_REG="$AUTH_REG DCE"
493: ;;
494: no) ;;
495: *) AC_MSG_ERROR(["--with-DCE does not take an argument."])
496: ;;
497: esac])
498:
499: AC_ARG_WITH(logincap, [AS_HELP_STRING([--with-logincap], [enable BSD login class support])],
500: [case $with_logincap in
501: yes|no) ;;
502: *) AC_MSG_ERROR(["--with-logincap does not take an argument."])
503: ;;
504: esac])
505:
506: AC_ARG_WITH(bsdauth, [AS_HELP_STRING([--with-bsdauth], [enable BSD authentication support])],
507: [case $with_bsdauth in
508: yes) AUTH_EXCL="$AUTH_EXCL BSD_AUTH";;
509: no) ;;
510: *) AC_MSG_ERROR(["--with-bsdauth does not take an argument."])
511: ;;
512: esac])
513:
514: AC_ARG_WITH(project, [AS_HELP_STRING([--with-project], [enable Solaris project support])],
515: [case $with_project in
516: yes|no) ;;
517: no) ;;
518: *) AC_MSG_ERROR(["--with-project does not take an argument."])
519: ;;
520: esac])
521:
522: AC_MSG_CHECKING(whether to lecture users the first time they run sudo)
523: AC_ARG_WITH(lecture, [AS_HELP_STRING([--without-lecture], [don't print lecture for first-time sudoer])],
524: [case $with_lecture in
525: yes|short|always) lecture=once
526: ;;
527: no|none|never) lecture=never
528: ;;
529: *) AC_MSG_ERROR(["unknown argument to --with-lecture: $with_lecture"])
530: ;;
531: esac])
532: if test "$lecture" = "once"; then
533: AC_MSG_RESULT(yes)
534: else
535: AC_DEFINE(NO_LECTURE)
536: AC_MSG_RESULT(no)
537: fi
538:
539: AC_MSG_CHECKING(whether sudo should log via syslog or to a file by default)
540: AC_ARG_WITH(logging, [AS_HELP_STRING([--with-logging], [log via syslog, file, or both])],
541: [case $with_logging in
542: yes) AC_MSG_ERROR(["must give --with-logging an argument."])
543: ;;
544: no) AC_MSG_ERROR(["--without-logging not supported."])
545: ;;
546: syslog) AC_DEFINE(LOGGING, SLOG_SYSLOG)
547: AC_MSG_RESULT(syslog)
548: ;;
549: file) AC_DEFINE(LOGGING, SLOG_FILE)
550: AC_MSG_RESULT(file)
551: ;;
552: both) AC_DEFINE(LOGGING, SLOG_BOTH)
553: AC_MSG_RESULT(both)
554: ;;
555: *) AC_MSG_ERROR(["unknown argument to --with-logging: $with_logging"])
556: ;;
557: esac], [AC_DEFINE(LOGGING, SLOG_SYSLOG) AC_MSG_RESULT(syslog)])
558:
559: AC_ARG_WITH(logfac, [AS_HELP_STRING([--with-logfac], [syslog facility to log with (default is "auth")])],
560: [case $with_logfac in
561: yes) AC_MSG_ERROR(["must give --with-logfac an argument."])
562: ;;
563: no) AC_MSG_ERROR(["--without-logfac not supported."])
564: ;;
565: authpriv|auth|daemon|user|local0|local1|local2|local3|local4|local5|local6|local7) logfac=$with_logfac
566: ;;
567: *) AC_MSG_ERROR(["$with_logfac is not a supported syslog facility."])
568: ;;
569: esac])
570:
571: AC_MSG_CHECKING(at which syslog priority to log commands)
572: AC_ARG_WITH(goodpri, [AS_HELP_STRING([--with-goodpri], [syslog priority for commands (def is "notice")])],
573: [case $with_goodpri in
574: yes) AC_MSG_ERROR(["must give --with-goodpri an argument."])
575: ;;
576: no) AC_MSG_ERROR(["--without-goodpri not supported."])
577: ;;
578: alert|crit|debug|emerg|err|info|notice|warning)
579: goodpri=$with_goodpri
580: ;;
581: *) AC_MSG_ERROR(["$with_goodpri is not a supported syslog priority."])
582: ;;
583: esac])
584: AC_DEFINE_UNQUOTED(PRI_SUCCESS, "$goodpri", [The syslog priority sudo will use for successful attempts.])
585: AC_MSG_RESULT($goodpri)
586:
587: AC_MSG_CHECKING(at which syslog priority to log failures)
588: AC_ARG_WITH(badpri, [AS_HELP_STRING([--with-badpri], [syslog priority for failures (def is "alert")])],
589: [case $with_badpri in
590: yes) AC_MSG_ERROR(["must give --with-badpri an argument."])
591: ;;
592: no) AC_MSG_ERROR(["--without-badpri not supported."])
593: ;;
594: alert|crit|debug|emerg|err|info|notice|warning)
595: badpri=$with_badpri
596: ;;
597: *) AC_MSG_ERROR([$with_badpri is not a supported syslog priority.])
598: ;;
599: esac])
600: AC_DEFINE_UNQUOTED(PRI_FAILURE, "$badpri", [The syslog priority sudo will use for unsuccessful attempts/errors.])
601: AC_MSG_RESULT($badpri)
602:
603: AC_ARG_WITH(logpath, [AS_HELP_STRING([--with-logpath], [path to the sudo log file])],
604: [case $with_logpath in
605: yes) AC_MSG_ERROR(["must give --with-logpath an argument."])
606: ;;
607: no) AC_MSG_ERROR(["--without-logpath not supported."])
608: ;;
609: esac])
610:
611: AC_MSG_CHECKING(how long a line in the log file should be)
612: AC_ARG_WITH(loglen, [AS_HELP_STRING([--with-loglen], [maximum length of a log file line (default is 80)])],
613: [case $with_loglen in
614: yes) AC_MSG_ERROR(["must give --with-loglen an argument."])
615: ;;
616: no) AC_MSG_ERROR(["--without-loglen not supported."])
617: ;;
618: [[0-9]]*) loglen=$with_loglen
619: ;;
620: *) AC_MSG_ERROR(["you must enter a number, not $with_loglen"])
621: ;;
622: esac])
623: AC_DEFINE_UNQUOTED(MAXLOGFILELEN, $loglen, [The max number of chars per log file line (for line wrapping).])
624: AC_MSG_RESULT($loglen)
625:
626: AC_MSG_CHECKING(whether sudo should ignore '.' or '' in \$PATH)
627: AC_ARG_WITH(ignore-dot, [AS_HELP_STRING([--with-ignore-dot], [ignore '.' in the PATH])],
628: [case $with_ignore_dot in
629: yes) ignore_dot=on
630: ;;
631: no) ignore_dot=off
632: ;;
633: *) AC_MSG_ERROR(["--with-ignore-dot does not take an argument."])
634: ;;
635: esac])
636: if test "$ignore_dot" = "on"; then
637: AC_DEFINE(IGNORE_DOT_PATH)
638: AC_MSG_RESULT(yes)
639: else
640: AC_MSG_RESULT(no)
641: fi
642:
643: AC_MSG_CHECKING(whether to send mail when a user is not in sudoers)
644: AC_ARG_WITH(mail-if-no-user, [AS_HELP_STRING([--without-mail-if-no-user], [do not send mail if user not in sudoers])],
645: [case $with_mail_if_no_user in
646: yes) mail_no_user=on
647: ;;
648: no) mail_no_user=off
649: ;;
650: *) AC_MSG_ERROR(["--with-mail-if-no-user does not take an argument."])
651: ;;
652: esac])
653: if test "$mail_no_user" = "on"; then
654: AC_DEFINE(SEND_MAIL_WHEN_NO_USER)
655: AC_MSG_RESULT(yes)
656: else
657: AC_MSG_RESULT(no)
658: fi
659:
660: AC_MSG_CHECKING(whether to send mail when user listed but not for this host)
661: AC_ARG_WITH(mail-if-no-host, [AS_HELP_STRING([--with-mail-if-no-host], [send mail if user in sudoers but not for this host])],
662: [case $with_mail_if_no_host in
663: yes) mail_no_host=on
664: ;;
665: no) mail_no_host=off
666: ;;
667: *) AC_MSG_ERROR(["--with-mail-if-no-host does not take an argument."])
668: ;;
669: esac])
670: if test "$mail_no_host" = "on"; then
671: AC_DEFINE(SEND_MAIL_WHEN_NO_HOST)
672: AC_MSG_RESULT(yes)
673: else
674: AC_MSG_RESULT(no)
675: fi
676:
677: AC_MSG_CHECKING(whether to send mail when a user tries a disallowed command)
678: AC_ARG_WITH(mail-if-noperms, [AS_HELP_STRING([--with-mail-if-noperms], [send mail if user not allowed to run command])],
679: [case $with_mail_if_noperms in
680: yes) mail_noperms=on
681: ;;
682: no) mail_noperms=off
683: ;;
684: *) AC_MSG_ERROR(["--with-mail-if-noperms does not take an argument."])
685: ;;
686: esac])
687: if test "$mail_noperms" = "on"; then
688: AC_DEFINE(SEND_MAIL_WHEN_NOT_OK)
689: AC_MSG_RESULT(yes)
690: else
691: AC_MSG_RESULT(no)
692: fi
693:
694: AC_MSG_CHECKING(who should get the mail that sudo sends)
695: AC_ARG_WITH(mailto, [AS_HELP_STRING([--with-mailto], [who should get sudo mail (default is "root")])],
696: [case $with_mailto in
697: yes) AC_MSG_ERROR(["must give --with-mailto an argument."])
698: ;;
699: no) AC_MSG_ERROR(["--without-mailto not supported."])
700: ;;
701: *) mailto=$with_mailto
702: ;;
703: esac])
704: AC_DEFINE_UNQUOTED(MAILTO, "$mailto", [The user or email address that sudo mail is sent to.])
705: AC_MSG_RESULT([$mailto])
706:
707: AC_ARG_WITH(mailsubject, [AS_HELP_STRING([--with-mailsubject], [subject of sudo mail])],
708: [case $with_mailsubject in
709: yes) AC_MSG_ERROR(["must give --with-mailsubject an argument."])
710: ;;
711: no) AC_MSG_WARN([Sorry, --without-mailsubject not supported.])
712: ;;
713: *) mailsub="$with_mailsubject"
714: AC_MSG_CHECKING(sudo mail subject)
715: AC_MSG_RESULT([Using alert mail subject: $mailsub])
716: ;;
717: esac])
718: AC_DEFINE_UNQUOTED(MAILSUBJECT, "$mailsub", [The subject of the mail sent by sudo to the MAILTO user/address.])
719:
720: AC_MSG_CHECKING(for bad password prompt)
721: AC_ARG_WITH(passprompt, [AS_HELP_STRING([--with-passprompt], [default password prompt])],
722: [case $with_passprompt in
723: yes) AC_MSG_ERROR(["must give --with-passprompt an argument."])
724: ;;
725: no) AC_MSG_WARN([Sorry, --without-passprompt not supported.])
726: ;;
727: *) passprompt="$with_passprompt"
728: esac])
729: AC_MSG_RESULT($passprompt)
730: AC_DEFINE_UNQUOTED(PASSPROMPT, "$passprompt", [The default password prompt.])
731:
732: AC_MSG_CHECKING(for bad password message)
733: AC_ARG_WITH(badpass-message, [AS_HELP_STRING([--with-badpass-message], [message the user sees when the password is wrong])],
734: [case $with_badpass_message in
735: yes) AC_MSG_ERROR(["Must give --with-badpass-message an argument."])
736: ;;
737: no) AC_MSG_WARN([Sorry, --without-badpass-message not supported.])
738: ;;
739: *) badpass_message="$with_badpass_message"
740: ;;
741: esac])
742: AC_DEFINE_UNQUOTED(INCORRECT_PASSWORD, "$badpass_message", [The message given when a bad password is entered.])
743: AC_MSG_RESULT([$badpass_message])
744:
745: AC_MSG_CHECKING(whether to expect fully qualified hosts in sudoers)
746: AC_ARG_WITH(fqdn, [AS_HELP_STRING([--with-fqdn], [expect fully qualified hosts in sudoers])],
747: [case $with_fqdn in
748: yes) fqdn=on
749: ;;
750: no) fqdn=off
751: ;;
752: *) AC_MSG_ERROR(["--with-fqdn does not take an argument."])
753: ;;
754: esac])
755: if test "$fqdn" = "on"; then
756: AC_DEFINE(FQDN)
757: AC_MSG_RESULT(yes)
758: else
759: AC_MSG_RESULT(no)
760: fi
761:
762: AC_ARG_WITH(timedir, [AS_HELP_STRING([--with-timedir], [path to the sudo timestamp dir])],
763: [case $with_timedir in
764: yes) AC_MSG_ERROR(["must give --with-timedir an argument."])
765: ;;
766: no) AC_MSG_ERROR(["--without-timedir not supported."])
767: ;;
768: esac])
769:
770: AC_ARG_WITH(iologdir, [AS_HELP_STRING([--with-iologdir=DIR], [directory to store sudo I/O log files in])],
771: [case $with_iologdir in
772: yes) ;;
773: no) AC_MSG_ERROR(["--without-iologdir not supported."])
774: ;;
775: esac])
776:
777: AC_ARG_WITH(sendmail, [AS_HELP_STRING([--with-sendmail], [set path to sendmail])
778: AS_HELP_STRING([--without-sendmail], [do not send mail at all])],
779: [case $with_sendmail in
780: yes) with_sendmail=""
781: ;;
782: no) ;;
783: *) SUDO_DEFINE_UNQUOTED(_PATH_SUDO_SENDMAIL, "$with_sendmail")
784: ;;
785: esac])
786:
787: AC_ARG_WITH(sudoers-mode, [AS_HELP_STRING([--with-sudoers-mode], [mode of sudoers file (defaults to 0440)])],
788: [case $with_sudoers_mode in
789: yes) AC_MSG_ERROR(["must give --with-sudoers-mode an argument."])
790: ;;
791: no) AC_MSG_ERROR(["--without-sudoers-mode not supported."])
792: ;;
793: [[1-9]]*) SUDOERS_MODE=0${with_sudoers_mode}
794: ;;
795: 0*) SUDOERS_MODE=$with_sudoers_mode
796: ;;
797: *) AC_MSG_ERROR(["you must use an octal mode, not a name."])
798: ;;
799: esac])
800:
801: AC_ARG_WITH(sudoers-uid, [AS_HELP_STRING([--with-sudoers-uid], [uid that owns sudoers file (defaults to 0)])],
802: [case $with_sudoers_uid in
803: yes) AC_MSG_ERROR(["must give --with-sudoers-uid an argument."])
804: ;;
805: no) AC_MSG_ERROR(["--without-sudoers-uid not supported."])
806: ;;
807: [[0-9]]*) SUDOERS_UID=$with_sudoers_uid
808: ;;
809: *) AC_MSG_ERROR(["you must use an unsigned numeric uid, not a name."])
810: ;;
811: esac])
812:
813: AC_ARG_WITH(sudoers-gid, [AS_HELP_STRING([--with-sudoers-gid], [gid that owns sudoers file (defaults to 0)])],
814: [case $with_sudoers_gid in
815: yes) AC_MSG_ERROR(["must give --with-sudoers-gid an argument."])
816: ;;
817: no) AC_MSG_ERROR(["--without-sudoers-gid not supported."])
818: ;;
819: [[0-9]]*) SUDOERS_GID=$with_sudoers_gid
820: ;;
821: *) AC_MSG_ERROR(["you must use an unsigned numeric gid, not a name."])
822: ;;
823: esac])
824:
825: AC_MSG_CHECKING(for umask programs should be run with)
826: AC_ARG_WITH(umask, [AS_HELP_STRING([--with-umask], [umask with which the prog should run (default is 022)])
827: AS_HELP_STRING([--without-umask], [Preserves the umask of the user invoking sudo.])],
828: [case $with_umask in
829: yes) AC_MSG_ERROR(["must give --with-umask an argument."])
830: ;;
831: no) sudo_umask=0777
832: ;;
833: [[0-9]]*) sudo_umask=$with_umask
834: ;;
835: *) AC_MSG_ERROR(["you must enter a numeric mask."])
836: ;;
837: esac])
838: AC_DEFINE_UNQUOTED(SUDO_UMASK, $sudo_umask, [The umask that the sudo-run prog should use.])
839: if test "$sudo_umask" = "0777"; then
840: AC_MSG_RESULT(user)
841: else
842: AC_MSG_RESULT($sudo_umask)
843: fi
844:
845: AC_ARG_WITH(umask-override, [AS_HELP_STRING([--with-umask-override], [Use the umask specified in sudoers even if it is less restrictive than the user's.])],
846: [case $with_umask_override in
847: yes) AC_DEFINE(UMASK_OVERRIDE)
848: umask_override=on
849: ;;
850: no) umask_override=off
851: ;;
852: *) AC_MSG_ERROR(["--with-umask-override does not take an argument."])
853: ;;
854: esac])
855:
856: AC_MSG_CHECKING(for default user to run commands as)
857: AC_ARG_WITH(runas-default, [AS_HELP_STRING([--with-runas-default], [User to run commands as (default is "root")])],
858: [case $with_runas_default in
859: yes) AC_MSG_ERROR(["must give --with-runas-default an argument."])
860: ;;
861: no) AC_MSG_ERROR(["--without-runas-default not supported."])
862: ;;
863: *) runas_default="$with_runas_default"
864: ;;
865: esac])
866: AC_DEFINE_UNQUOTED(RUNAS_DEFAULT, "$runas_default", [The user sudo should run commands as by default.])
867: AC_MSG_RESULT([$runas_default])
868:
869: AC_ARG_WITH(exempt, [AS_HELP_STRING([--with-exempt=group], [no passwd needed for users in this group])],
870: [case $with_exempt in
871: yes) AC_MSG_ERROR(["must give --with-exempt an argument."])
872: ;;
873: no) AC_MSG_ERROR(["--without-exempt not supported."])
874: ;;
875: *) AC_DEFINE_UNQUOTED(EXEMPTGROUP, "$with_exempt", [If defined, users in this group need not enter a passwd (ie "sudo").])
876: AC_MSG_CHECKING(for group to be exempt from password)
877: AC_MSG_RESULT([$with_exempt])
878: ;;
879: esac])
880:
881: AC_MSG_CHECKING(for editor that visudo should use)
882: AC_ARG_WITH(editor, [AS_HELP_STRING([--with-editor=path], [Default editor for visudo (defaults to vi)])],
883: [case $with_editor in
884: yes) AC_MSG_ERROR(["must give --with-editor an argument."])
885: ;;
886: no) AC_MSG_ERROR(["--without-editor not supported."])
887: ;;
888: *) AC_DEFINE_UNQUOTED(EDITOR, "$with_editor", [A colon-separated list of pathnames to be used as the editor for visudo.])
889: AC_MSG_RESULT([$with_editor])
890: editor="$with_editor"
891: ;;
892: esac], [AC_DEFINE(EDITOR, _PATH_VI) AC_MSG_RESULT(vi)])
893:
894: AC_MSG_CHECKING(whether to obey EDITOR and VISUAL environment variables)
895: AC_ARG_WITH(env-editor, [AS_HELP_STRING([--with-env-editor], [Use the environment variable EDITOR for visudo])],
896: [case $with_env_editor in
897: yes) env_editor=on
898: ;;
899: no) env_editor=off
900: ;;
901: *) AC_MSG_ERROR(["--with-env-editor does not take an argument."])
902: ;;
903: esac])
904: if test "$env_editor" = "on"; then
905: AC_DEFINE(ENV_EDITOR)
906: AC_MSG_RESULT(yes)
907: else
908: AC_MSG_RESULT(no)
909: fi
910:
911: AC_MSG_CHECKING(number of tries a user gets to enter their password)
912: AC_ARG_WITH(passwd-tries, [AS_HELP_STRING([--with-passwd-tries], [number of tries to enter password (default is 3)])],
913: [case $with_passwd_tries in
914: yes) ;;
915: no) AC_MSG_ERROR(["--without-editor not supported."])
916: ;;
917: [[1-9]]*) passwd_tries=$with_passwd_tries
918: ;;
919: *) AC_MSG_ERROR(["you must enter the numer of tries, > 0"])
920: ;;
921: esac])
922: AC_DEFINE_UNQUOTED(TRIES_FOR_PASSWORD, $passwd_tries, [The number of tries a user gets to enter their password.])
923: AC_MSG_RESULT($passwd_tries)
924:
925: AC_MSG_CHECKING(time in minutes after which sudo will ask for a password again)
926: AC_ARG_WITH(timeout, [AS_HELP_STRING([--with-timeout], [minutes before sudo asks for passwd again (def is 5 minutes)])],
927: [case $with_timeout in
928: yes) ;;
929: no) timeout=0
930: ;;
931: [[0-9]]*) timeout=$with_timeout
932: ;;
933: *) AC_MSG_ERROR(["you must enter the numer of minutes."])
934: ;;
935: esac])
936: AC_DEFINE_UNQUOTED(TIMEOUT, $timeout, [The number of minutes before sudo asks for a password again.])
937: AC_MSG_RESULT($timeout)
938:
939: AC_MSG_CHECKING(time in minutes after the password prompt will time out)
940: AC_ARG_WITH(password-timeout, [AS_HELP_STRING([--with-password-timeout], [passwd prompt timeout in minutes (default is 5 minutes)])],
941: [case $with_password_timeout in
942: yes) ;;
943: no) password_timeout=0
944: ;;
945: [[0-9]]*) password_timeout=$with_password_timeout
946: ;;
947: *) AC_MSG_ERROR(["you must enter the numer of minutes."])
948: ;;
949: esac])
950: AC_DEFINE_UNQUOTED(PASSWORD_TIMEOUT, $password_timeout, [The passwd prompt timeout (in minutes).])
951: AC_MSG_RESULT($password_timeout)
952:
953: AC_MSG_CHECKING(whether to use per-tty ticket files)
954: AC_ARG_WITH(tty-tickets, [AS_HELP_STRING([--with-tty-tickets], [use a different ticket file for each tty])],
955: [case $with_tty_tickets in
956: yes) tty_tickets=on
957: ;;
958: no) tty_tickets=off
959: ;;
960: *) AC_MSG_ERROR(["--with-tty-tickets does not take an argument."])
961: ;;
962: esac])
963: if test "$tty_tickets" = "off"; then
964: AC_DEFINE(NO_TTY_TICKETS)
965: AC_MSG_RESULT(no)
966: else
967: AC_MSG_RESULT(yes)
968: fi
969:
970: AC_MSG_CHECKING(whether to include insults)
971: AC_ARG_WITH(insults, [AS_HELP_STRING([--with-insults], [insult the user for entering an incorrect password])],
972: [case $with_insults in
973: yes) insults=on
974: with_classic_insults=yes
975: with_csops_insults=yes
976: ;;
977: disabled) insults=off
978: with_classic_insults=yes
979: with_csops_insults=yes
980: ;;
981: no) insults=off
982: ;;
983: *) AC_MSG_ERROR(["--with-insults does not take an argument."])
984: ;;
985: esac])
986: if test "$insults" = "on"; then
987: AC_DEFINE(USE_INSULTS)
988: AC_MSG_RESULT(yes)
989: else
990: AC_MSG_RESULT(no)
991: fi
992:
993: AC_ARG_WITH(all-insults, [AS_HELP_STRING([--with-all-insults], [include all the sudo insult sets])],
994: [case $with_all_insults in
995: yes) with_classic_insults=yes
996: with_csops_insults=yes
997: with_hal_insults=yes
998: with_goons_insults=yes
999: ;;
1000: no) ;;
1001: *) AC_MSG_ERROR(["--with-all-insults does not take an argument."])
1002: ;;
1003: esac])
1004:
1005: AC_ARG_WITH(classic-insults, [AS_HELP_STRING([--with-classic-insults], [include the insults from the "classic" sudo])],
1006: [case $with_classic_insults in
1007: yes) AC_DEFINE(CLASSIC_INSULTS)
1008: ;;
1009: no) ;;
1010: *) AC_MSG_ERROR(["--with-classic-insults does not take an argument."])
1011: ;;
1012: esac])
1013:
1014: AC_ARG_WITH(csops-insults, [AS_HELP_STRING([--with-csops-insults], [include CSOps insults])],
1015: [case $with_csops_insults in
1016: yes) AC_DEFINE(CSOPS_INSULTS)
1017: ;;
1018: no) ;;
1019: *) AC_MSG_ERROR(["--with-csops-insults does not take an argument."])
1020: ;;
1021: esac])
1022:
1023: AC_ARG_WITH(hal-insults, [AS_HELP_STRING([--with-hal-insults], [include 2001-like insults])],
1024: [case $with_hal_insults in
1025: yes) AC_DEFINE(HAL_INSULTS)
1026: ;;
1027: no) ;;
1028: *) AC_MSG_ERROR(["--with-hal-insults does not take an argument."])
1029: ;;
1030: esac])
1031:
1032: AC_ARG_WITH(goons-insults, [AS_HELP_STRING([--with-goons-insults], [include the insults from the "Goon Show"])],
1033: [case $with_goons_insults in
1034: yes) AC_DEFINE(GOONS_INSULTS)
1035: ;;
1036: no) ;;
1037: *) AC_MSG_ERROR(["--with-goons-insults does not take an argument."])
1038: ;;
1039: esac])
1040:
1041: AC_ARG_WITH(nsswitch, [AS_HELP_STRING([--with-nsswitch[[=PATH]]], [path to nsswitch.conf])],
1042: [case $with_nsswitch in
1043: no) ;;
1044: yes) with_nsswitch="/etc/nsswitch.conf"
1045: ;;
1046: *) ;;
1047: esac])
1048:
1049: AC_ARG_WITH(ldap, [AS_HELP_STRING([--with-ldap[[=DIR]]], [enable LDAP support])],
1050: [case $with_ldap in
1051: no) ;;
1052: *) AC_DEFINE(HAVE_LDAP)
1053: AC_MSG_CHECKING(whether to use sudoers from LDAP)
1054: AC_MSG_RESULT(yes)
1055: ;;
1056: esac])
1057:
1058: AC_ARG_WITH(ldap-conf-file, [AS_HELP_STRING([--with-ldap-conf-file], [path to LDAP configuration file])])
1059: test -n "$with_ldap_conf_file" && ldap_conf="$with_ldap_conf_file"
1060: SUDO_DEFINE_UNQUOTED(_PATH_LDAP_CONF, "$ldap_conf", [Path to the ldap.conf file])
1061:
1062: AC_ARG_WITH(ldap-secret-file, [AS_HELP_STRING([--with-ldap-secret-file], [path to LDAP secret password file])])
1063: test -n "$with_ldap_secret_file" && ldap_secret="$with_ldap_secret_file"
1064: SUDO_DEFINE_UNQUOTED(_PATH_LDAP_SECRET, "$ldap_secret", [Path to the ldap.secret file])
1065:
1066: AC_ARG_WITH(pc-insults, [AS_HELP_STRING([--with-pc-insults], [replace politically incorrect insults with less offensive ones])],
1067: [case $with_pc_insults in
1068: yes) AC_DEFINE(PC_INSULTS)
1069: ;;
1070: no) ;;
1071: *) AC_MSG_ERROR(["--with-pc-insults does not take an argument."])
1072: ;;
1073: esac])
1074:
1075: dnl include all insult sets on one line
1076: if test "$insults" = "on"; then
1077: AC_MSG_CHECKING(which insult sets to include)
1078: i=""
1079: test "$with_goons_insults" = "yes" && i="goons ${i}"
1080: test "$with_hal_insults" = "yes" && i="hal ${i}"
1081: test "$with_csops_insults" = "yes" && i="csops ${i}"
1082: test "$with_classic_insults" = "yes" && i="classic ${i}"
1083: AC_MSG_RESULT([$i])
1084: fi
1085:
1086: AC_MSG_CHECKING(whether to override the user's path)
1087: AC_ARG_WITH(secure-path, [AS_HELP_STRING([--with-secure-path], [override the user's path with a built-in one])],
1088: [case $with_secure_path in
1089: yes) with_secure_path="/bin:/usr/ucb:/usr/bin:/usr/sbin:/sbin:/usr/etc:/etc"
1090: AC_DEFINE_UNQUOTED(SECURE_PATH, "$with_secure_path")
1091: AC_MSG_RESULT([$with_secure_path])
1092: secure_path="set to $with_secure_path"
1093: ;;
1094: no) AC_MSG_RESULT(no)
1095: ;;
1096: *) AC_DEFINE_UNQUOTED(SECURE_PATH, "$with_secure_path")
1097: AC_MSG_RESULT([$with_secure_path])
1098: secure_path="set to F<$with_secure_path>"
1099: ;;
1100: esac], AC_MSG_RESULT(no))
1101:
1102: AC_MSG_CHECKING(whether to get ip addresses from the network interfaces)
1103: AC_ARG_WITH(interfaces, [AS_HELP_STRING([--without-interfaces], [don't try to read the ip addr of ether interfaces])],
1104: [case $with_interfaces in
1105: yes) AC_MSG_RESULT(yes)
1106: ;;
1107: no) AC_DEFINE(STUB_LOAD_INTERFACES)
1108: AC_MSG_RESULT(no)
1109: ;;
1110: *) AC_MSG_ERROR(["--with-interfaces does not take an argument."])
1111: ;;
1112: esac], AC_MSG_RESULT(yes))
1113:
1.1.1.3 ! misho 1114: AC_ARG_WITH(stow, [AS_HELP_STRING([--with-stow], [deprecated])],
1.1 misho 1115: [case $with_stow in
1.1.1.3 ! misho 1116: *) AC_MSG_NOTICE([--with-stow option deprecated, now is defalt behavior])
1.1 misho 1117: ;;
1.1.1.3 ! misho 1118: esac])
1.1 misho 1119:
1120: AC_MSG_CHECKING(whether to use an askpass helper)
1121: AC_ARG_WITH(askpass, [AS_HELP_STRING([--with-askpass=PATH], [Fully qualified pathname of askpass helper])],
1122: [case $with_askpass in
1123: yes) AC_MSG_ERROR(["--with-askpass takes a path as an argument."])
1124: ;;
1125: no) ;;
1126: *) SUDO_DEFINE_UNQUOTED(_PATH_SUDO_ASKPASS, "$with_askpass", [The fully qualified pathname of askpass])
1127: ;;
1128: esac], AC_MSG_RESULT(no))
1129:
1130: AC_ARG_WITH(plugindir, [AS_HELP_STRING([--with-plugindir], [set directory to load plugins from])],
1131: [case $with_plugindir in
1132: no) AC_MSG_ERROR(["illegal argument: --without-plugindir."])
1133: ;;
1134: *) ;;
1135: esac], [with_plugindir="$libexecdir"])
1136:
1.1.1.3 ! misho 1137: AC_ARG_WITH(man, [AS_HELP_STRING([--with-man], [manual pages use man macros])],
! 1138: [case $with_man in
! 1139: yes) MANTYPE=man
! 1140: ;;
! 1141: no) AC_MSG_ERROR(["--without-man not supported."])
! 1142: ;;
! 1143: *) AC_MSG_ERROR(["ignoring unknown argument to --with-man: $with_man."])
! 1144: ;;
! 1145: esac])
! 1146:
! 1147: AC_ARG_WITH(mdoc, [AS_HELP_STRING([--with-mdoc], [manual pages use mdoc macros])],
! 1148: [case $with_mdoc in
! 1149: yes) MANTYPE=mdoc
! 1150: ;;
! 1151: no) AC_MSG_ERROR(["--without-mdoc not supported."])
! 1152: ;;
! 1153: *) AC_MSG_ERROR(["ignoring unknown argument to --with-mdoc: $with_mdoc."])
! 1154: ;;
! 1155: esac])
! 1156:
1.1 misho 1157: dnl
1158: dnl Options for --enable
1159: dnl
1160:
1161: AC_MSG_CHECKING(whether to do user authentication by default)
1162: AC_ARG_ENABLE(authentication,
1163: [AS_HELP_STRING([--disable-authentication], [Do not require authentication by default])],
1164: [ case "$enableval" in
1165: yes) AC_MSG_RESULT(yes)
1166: ;;
1167: no) AC_MSG_RESULT(no)
1168: AC_DEFINE(NO_AUTHENTICATION)
1169: ;;
1170: *) AC_MSG_RESULT(no)
1171: AC_MSG_WARN([Ignoring unknown argument to --enable-authentication: $enableval])
1172: ;;
1173: esac
1174: ], AC_MSG_RESULT(yes))
1175:
1176: AC_MSG_CHECKING(whether to disable running the mailer as root)
1177: AC_ARG_ENABLE(root-mailer,
1178: [AS_HELP_STRING([--disable-root-mailer], [Don't run the mailer as root, run as the user])],
1179: [ case "$enableval" in
1180: yes) AC_MSG_RESULT(no)
1181: ;;
1182: no) AC_MSG_RESULT(yes)
1183: AC_DEFINE(NO_ROOT_MAILER)
1184: ;;
1185: *) AC_MSG_RESULT(no)
1186: AC_MSG_WARN([Ignoring unknown argument to --enable-root-mailer: $enableval])
1187: ;;
1188: esac
1189: ], AC_MSG_RESULT(no))
1190:
1191: AC_ARG_ENABLE(setreuid,
1192: [AS_HELP_STRING([--disable-setreuid], [Don't try to use the setreuid() function])],
1193: [ case "$enableval" in
1194: no) SKIP_SETREUID=yes
1195: ;;
1196: *) ;;
1197: esac
1198: ])
1199:
1200: AC_ARG_ENABLE(setresuid,
1201: [AS_HELP_STRING([--disable-setresuid], [Don't try to use the setresuid() function])],
1202: [ case "$enableval" in
1203: no) SKIP_SETRESUID=yes
1204: ;;
1205: *) ;;
1206: esac
1207: ])
1208:
1209: AC_MSG_CHECKING(whether to disable shadow password support)
1210: AC_ARG_ENABLE(shadow,
1211: [AS_HELP_STRING([--disable-shadow], [Never use shadow passwords])],
1212: [ case "$enableval" in
1213: yes) AC_MSG_RESULT(no)
1214: ;;
1215: no) AC_MSG_RESULT(yes)
1216: CHECKSHADOW="false"
1217: ;;
1218: *) AC_MSG_RESULT(no)
1219: AC_MSG_WARN([Ignoring unknown argument to --enable-shadow: $enableval])
1220: ;;
1221: esac
1222: ], AC_MSG_RESULT(no))
1223:
1224: AC_MSG_CHECKING(whether root should be allowed to use sudo)
1225: AC_ARG_ENABLE(root-sudo,
1226: [AS_HELP_STRING([--disable-root-sudo], [Don't allow root to run sudo])],
1227: [ case "$enableval" in
1228: yes) AC_MSG_RESULT(yes)
1229: ;;
1230: no) AC_DEFINE(NO_ROOT_SUDO)
1231: AC_MSG_RESULT(no)
1232: root_sudo=off
1233: ;;
1234: *) AC_MSG_ERROR(["--enable-root-sudo does not take an argument."])
1235: ;;
1236: esac
1237: ], AC_MSG_RESULT(yes))
1238:
1239: AC_MSG_CHECKING(whether to log the hostname in the log file)
1240: AC_ARG_ENABLE(log-host,
1241: [AS_HELP_STRING([--enable-log-host], [Log the hostname in the log file])],
1242: [ case "$enableval" in
1243: yes) AC_MSG_RESULT(yes)
1244: AC_DEFINE(HOST_IN_LOG)
1245: ;;
1246: no) AC_MSG_RESULT(no)
1247: ;;
1248: *) AC_MSG_RESULT(no)
1249: AC_MSG_WARN([Ignoring unknown argument to --enable-log-host: $enableval])
1250: ;;
1251: esac
1252: ], AC_MSG_RESULT(no))
1253:
1254: AC_MSG_CHECKING(whether to invoke a shell if sudo is given no arguments)
1255: AC_ARG_ENABLE(noargs-shell,
1256: [AS_HELP_STRING([--enable-noargs-shell], [If sudo is given no arguments run a shell])],
1257: [ case "$enableval" in
1258: yes) AC_MSG_RESULT(yes)
1259: AC_DEFINE(SHELL_IF_NO_ARGS)
1260: ;;
1261: no) AC_MSG_RESULT(no)
1262: ;;
1263: *) AC_MSG_RESULT(no)
1264: AC_MSG_WARN([Ignoring unknown argument to --enable-noargs-shell: $enableval])
1265: ;;
1266: esac
1267: ], AC_MSG_RESULT(no))
1268:
1269: AC_MSG_CHECKING(whether to set \$HOME to target user in shell mode)
1270: AC_ARG_ENABLE(shell-sets-home,
1271: [AS_HELP_STRING([--enable-shell-sets-home], [Set $HOME to target user in shell mode])],
1272: [ case "$enableval" in
1273: yes) AC_MSG_RESULT(yes)
1274: AC_DEFINE(SHELL_SETS_HOME)
1275: ;;
1276: no) AC_MSG_RESULT(no)
1277: ;;
1278: *) AC_MSG_RESULT(no)
1279: AC_MSG_WARN([Ignoring unknown argument to --enable-shell-sets-home: $enableval])
1280: ;;
1281: esac
1282: ], AC_MSG_RESULT(no))
1283:
1284: AC_MSG_CHECKING(whether to disable 'command not found' messages)
1285: AC_ARG_ENABLE(path_info,
1286: [AS_HELP_STRING([--disable-path-info], [Print 'command not allowed' not 'command not found'])],
1287: [ case "$enableval" in
1288: yes) AC_MSG_RESULT(no)
1289: ;;
1290: no) AC_MSG_RESULT(yes)
1291: AC_DEFINE(DONT_LEAK_PATH_INFO)
1292: path_info=off
1293: ;;
1294: *) AC_MSG_RESULT(no)
1295: AC_MSG_WARN([Ignoring unknown argument to --enable-path-info: $enableval])
1296: ;;
1297: esac
1298: ], AC_MSG_RESULT(no))
1299:
1300: AC_MSG_CHECKING(whether to enable environment debugging)
1301: AC_ARG_ENABLE(env_debug,
1302: [AS_HELP_STRING([--enable-env-debug], [Whether to enable environment debugging.])],
1303: [ case "$enableval" in
1304: yes) AC_MSG_RESULT(yes)
1305: AC_DEFINE(ENV_DEBUG)
1306: ;;
1307: no) AC_MSG_RESULT(no)
1308: ;;
1309: *) AC_MSG_RESULT(no)
1310: AC_MSG_WARN([Ignoring unknown argument to --enable-env-debug: $enableval])
1311: ;;
1312: esac
1313: ], AC_MSG_RESULT(no))
1314:
1315: AC_ARG_ENABLE(zlib,
1316: [AS_HELP_STRING([--enable-zlib[[=PATH]]], [Whether to enable or disable zlib])],
1317: [], [enable_zlib=yes])
1318:
1319: AC_MSG_CHECKING(whether to enable environment resetting by default)
1320: AC_ARG_ENABLE(env_reset,
1321: [AS_HELP_STRING([--enable-env-reset], [Whether to enable environment resetting by default.])],
1322: [ case "$enableval" in
1323: yes) env_reset=on
1324: ;;
1325: no) env_reset=off
1326: ;;
1327: *) env_reset=on
1328: AC_MSG_WARN([Ignoring unknown argument to --enable-env-reset: $enableval])
1329: ;;
1330: esac
1331: ])
1332: if test "$env_reset" = "on"; then
1333: AC_MSG_RESULT(yes)
1.1.1.2 misho 1334: AC_DEFINE(ENV_RESET, 1)
1.1 misho 1335: else
1336: AC_MSG_RESULT(no)
1.1.1.2 misho 1337: AC_DEFINE(ENV_RESET, 0)
1.1 misho 1338: fi
1339:
1340: AC_ARG_ENABLE(warnings,
1341: [AS_HELP_STRING([--enable-warnings], [Whether to enable compiler warnings])],
1342: [ case "$enableval" in
1343: yes) ;;
1344: no) ;;
1345: *) AC_MSG_WARN([Ignoring unknown argument to --enable-warnings: $enableval])
1346: ;;
1347: esac
1348: ])
1349:
1350: AC_ARG_ENABLE(werror,
1351: [AS_HELP_STRING([--enable-werror], [Whether to enable the -Werror compiler option])],
1352: [ case "$enableval" in
1353: yes) ;;
1354: no) ;;
1355: *) AC_MSG_WARN([Ignoring unknown argument to --enable-werror: $enableval])
1356: ;;
1357: esac
1358: ])
1359:
1.1.1.3 ! misho 1360: AC_ARG_ENABLE(hardening,
! 1361: [AS_HELP_STRING([--disable-hardening], [Do not use compiler/linker exploit mitigation options])],
! 1362: [], [enable_hardening=yes])
! 1363:
! 1364: AC_ARG_ENABLE(pie,
! 1365: [AS_HELP_STRING([--disable-pie], [Do not build position independent executables, even if the compiler/linker supports them])],
! 1366: [], [enable_pie=yes])
! 1367:
1.1 misho 1368: AC_ARG_ENABLE(admin-flag,
1369: [AS_HELP_STRING([--enable-admin-flag], [Whether to create a Ubuntu-style admin flag file])],
1370: [ case "$enableval" in
1371: yes) AC_DEFINE(USE_ADMIN_FLAG)
1372: ;;
1373: no) ;;
1374: *) AC_MSG_WARN([Ignoring unknown argument to --enable-admin-flag: $enableval])
1375: ;;
1376: esac
1377: ])
1378:
1379: AC_ARG_ENABLE(nls,
1380: [AS_HELP_STRING([--disable-nls], [Disable natural language support using gettext])],
1381: [], [enable_nls=yes])
1382:
1383: AC_ARG_WITH(selinux, [AS_HELP_STRING([--with-selinux], [enable SELinux support])],
1384: [case $with_selinux in
1385: yes) SELINUX_USAGE="[[-r role]] [[-t type]] "
1386: AC_DEFINE(HAVE_SELINUX)
1387: SUDO_LIBS="${SUDO_LIBS} -lselinux"
1388: SUDO_OBJS="${SUDO_OBJS} selinux.o"
1389: PROGS="${PROGS} sesh"
1390: SEMAN=1
1391: AC_CHECK_LIB([selinux], [setkeycreatecon],
1392: [AC_DEFINE(HAVE_SETKEYCREATECON)])
1393: ;;
1394: no) ;;
1395: *) AC_MSG_ERROR(["--with-selinux does not take an argument."])
1396: ;;
1397: esac])
1398:
1399: dnl
1400: dnl gss_krb5_ccache_name() may not work on Heimdal so we don't use it by default
1401: dnl
1402: AC_ARG_ENABLE(gss_krb5_ccache_name,
1403: [AS_HELP_STRING([--enable-gss-krb5-ccache-name], [Use GSS-API to set the Kerberos V cred cache name])],
1404: [check_gss_krb5_ccache_name=$enableval], [check_gss_krb5_ccache_name=no])
1405:
1406: dnl
1407: dnl C compiler checks
1408: dnl
1409: AC_SEARCH_LIBS([strerror], [cposix])
1410: AC_PROG_CPP
1411: AC_CHECK_TOOL(AR, ar, false)
1412: AC_CHECK_TOOL(RANLIB, ranlib, :)
1413: if test X"$AR" = X"false"; then
1414: AC_MSG_ERROR([the "ar" utility is required to build sudo])
1415: fi
1416:
1417: if test "x$ac_cv_prog_cc_c89" = "xno"; then
1418: AC_MSG_ERROR([Sudo version $PACKAGE_VERSION requires an ANSI C compiler to build.])
1419: fi
1420:
1421: dnl
1422: dnl If the user specified --disable-static, override them or we'll
1423: dnl be unable to build the executables in the sudoers plugin dir.
1424: dnl
1425: if test "$enable_static" = "no"; then
1426: AC_MSG_WARN([Ignoring --disable-static, sudo does not install static libs])
1427: enable_static=yes
1428: fi
1429:
1430: dnl
1431: dnl Libtool setup, we require libtool 2.2.6b or higher
1432: dnl
1433: AC_CANONICAL_HOST
1434: AC_CONFIG_MACRO_DIR([m4])
1435: LT_PREREQ([2.2.6b])
1436: LT_INIT([dlopen])
1437:
1438: dnl
1439: dnl Defer with_noexec until after libtool magic runs
1440: dnl
1441: if test "$enable_shared" = "no"; then
1442: with_noexec=no
1443: enable_dlopen=no
1444: lt_cv_dlopen=none
1445: lt_cv_dlopen_libs=
1.1.1.2 misho 1446: ac_cv_func_dlopen=no
1.1 misho 1447: else
1448: eval _shrext="$shrext_cmds"
1449: # Darwin uses .dylib for libraries but .so for modules
1450: if test X"$_shrext" = X".dylib"; then
1451: SOEXT=".so"
1452: else
1453: SOEXT="$_shrext"
1454: fi
1455: fi
1456: AC_MSG_CHECKING(path to sudo_noexec.so)
1457: AC_ARG_WITH(noexec, [AS_HELP_STRING([--with-noexec[=PATH]], [fully qualified pathname of sudo_noexec.so])],
1458: [case $with_noexec in
1459: yes) with_noexec="$libexecdir/sudo_noexec$_shrext"
1460: ;;
1461: no) ;;
1462: *) ;;
1463: esac], [with_noexec="$libexecdir/sudo_noexec$_shrext"])
1464: AC_MSG_RESULT($with_noexec)
1465: NOEXECFILE="sudo_noexec$_shrext"
1.1.1.3 ! misho 1466: NOEXECDIR="`echo $with_noexec|sed -e 's:^${\([[^}]]*\)}:$(\1):' -e 's:^\(.*\)/[[^/]]*:\1:'`"
1.1 misho 1467:
1468: dnl
1469: dnl Find programs we use
1470: dnl
1.1.1.3 ! misho 1471: AC_PATH_PROG(UNAMEPROG, [uname], [uname])
! 1472: AC_PATH_PROG(TRPROG, [tr], [tr])
! 1473: AC_PATH_PROG(MANDOCPROG, [mandoc], [mandoc])
! 1474: if test "$MANDOCPROG" != "mandoc"; then
! 1475: : ${MANTYPE='mdoc'}
1.1 misho 1476: else
1.1.1.3 ! misho 1477: AC_PATH_PROG(NROFFPROG, [nroff])
! 1478: if test -n "$NROFFPROG"; then
! 1479: test -n "$MANTYPE" && sudo_cv_var_mantype="$MANTYPE"
! 1480: AC_CACHE_CHECK([which macro set to use for manual pages],
! 1481: [sudo_cv_var_mantype],
! 1482: [
! 1483: sudo_cv_var_mantype="man"
! 1484: echo ".Sh NAME" > conftest
! 1485: echo ".Nm sudo" >> conftest
! 1486: echo ".Nd sudo" >> conftest
! 1487: echo ".Sh DESCRIPTION" >> conftest
! 1488: echo "sudo" >> conftest
! 1489: if $NROFFPROG -mdoc conftest >/dev/null 2>&1; then
! 1490: sudo_cv_var_mantype="mdoc"
! 1491: fi
! 1492: rm -f conftest
! 1493: ]
! 1494: )
! 1495: MANTYPE="$sudo_cv_var_mantype"
! 1496: else
! 1497: MANTYPE=cat
! 1498: MANDIRTYPE=cat
! 1499: mansrcdir='$(srcdir)'
! 1500: fi
1.1 misho 1501: fi
1502:
1503: dnl
1504: dnl What kind of beastie are we being run on?
1505: dnl Barf if config.cache was generated on another host.
1506: dnl
1507: if test -n "$sudo_cv_prev_host"; then
1508: if test "$sudo_cv_prev_host" != "$host"; then
1509: AC_MSG_ERROR([config.cache was created on a different host; remove it and re-run configure.])
1510: else
1511: AC_MSG_CHECKING(previous host type)
1512: AC_CACHE_VAL(sudo_cv_prev_host, sudo_cv_prev_host="$host")
1513: AC_MSG_RESULT([$sudo_cv_prev_host])
1514: fi
1515: else
1516: # this will produce no output since there is no cached value
1517: AC_CACHE_VAL(sudo_cv_prev_host, sudo_cv_prev_host="$host")
1518: fi
1519:
1520: dnl
1521: dnl We want to be able to differentiate between different rev's
1522: dnl
1523: if test -n "$host_os"; then
1524: OS=`echo $host_os | sed 's/[[0-9]].*//'`
1525: OSREV=`echo $host_os | sed 's/^[[^0-9\.]]*\([[0-9\.]]*\).*$/\1/'`
1526: OSMAJOR=`echo $OSREV | sed 's/\..*$//'`
1527: else
1528: OS="unknown"
1529: OSREV=0
1530: OSMAJOR=0
1531: fi
1532:
1533: case "$host" in
1534: *-*-sunos4*)
1.1.1.2 misho 1535: # LD_PRELOAD is space-delimited
1536: RTLD_PRELOAD_DELIM=" "
1537:
1.1 misho 1538: # getcwd(3) opens a pipe to getpwd(1)!?!
1539: BROKEN_GETCWD=1
1540:
1541: # system headers lack prototypes but gcc helps...
1542: if test -n "$GCC"; then
1543: OSDEFS="${OSDEFS} -D__USE_FIXED_PROTOTYPES__"
1544: fi
1545:
1546: shadow_funcs="getpwanam issecure"
1547: ;;
1548: *-*-solaris2*)
1.1.1.2 misho 1549: # LD_PRELOAD is space-delimited
1550: RTLD_PRELOAD_DELIM=" "
1551:
1.1 misho 1552: # To get the crypt(3) prototype (so we pass -Wall)
1553: OSDEFS="${OSDEFS} -D__EXTENSIONS__"
1554: # AFS support needs -lucb
1555: if test "$with_AFS" = "yes"; then
1556: AFS_LIBS="-lc -lucb"
1557: fi
1558: : ${mansectsu='1m'}
1559: : ${mansectform='4'}
1560: : ${with_rpath='yes'}
1561: test -z "$with_pam" && AUTH_EXCL_DEF="PAM"
1.1.1.3 ! misho 1562: AC_CHECK_FUNCS(priv_set, [PSMAN=1])
1.1 misho 1563: ;;
1564: *-*-aix*)
1565: # To get all prototypes (so we pass -Wall)
1566: OSDEFS="${OSDEFS} -D_ALL_SOURCE -D_LINUX_SOURCE_COMPAT"
1567: SUDOERS_LDFLAGS="${SUDOERS_LDFLAGS} -Wl,-bI:\$(srcdir)/aixcrypt.exp"
1568: if test X"$with_blibpath" != X"no"; then
1569: AC_MSG_CHECKING([if linker accepts -Wl,-blibpath])
1570: O_LDFLAGS="$LDFLAGS"
1571: LDFLAGS="$O_LDFLAGS -Wl,-blibpath:/usr/lib:/lib"
1572: AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [
1573: if test -n "$with_blibpath" -a "$with_blibpath" != "yes"; then
1574: blibpath="$with_blibpath"
1575: elif test -n "$GCC"; then
1576: blibpath="/usr/lib:/lib:/usr/local/lib"
1577: else
1578: blibpath="/usr/lib:/lib"
1579: fi
1580: AC_MSG_RESULT(yes)
1581: ], [AC_MSG_RESULT(no)])
1582: fi
1583: LDFLAGS="$O_LDFLAGS"
1584:
1585: # On AIX 6 and higher default to PAM, else default to LAM
1586: if test $OSMAJOR -ge 6; then
1587: if test X"$with_pam" = X""; then
1588: AUTH_EXCL_DEF="PAM"
1589: fi
1590: else
1591: if test X"$with_aixauth" = X""; then
1592: AC_CHECK_FUNCS(authenticate, [AUTH_EXCL_DEF="AIX_AUTH"])
1593: fi
1594: fi
1595:
1596: # AIX analog of nsswitch.conf, enabled by default
1597: AC_ARG_WITH(netsvc, [AS_HELP_STRING([--with-netsvc[[=PATH]]], [path to netsvc.conf])],
1598: [case $with_netsvc in
1599: no) ;;
1600: yes) with_netsvc="/etc/netsvc.conf"
1601: ;;
1602: *) ;;
1603: esac])
1604: if test -z "$with_nsswitch" -a -z "$with_netsvc"; then
1605: with_netsvc="/etc/netsvc.conf"
1606: fi
1607:
1608: # For implementing getgrouplist()
1609: AC_CHECK_FUNCS(getgrset)
1610:
1611: # LDR_PRELOAD is only supported in AIX 5.3 and later
1612: if test $OSMAJOR -lt 5; then
1613: with_noexec=no
1.1.1.2 misho 1614: else
1615: RTLD_PRELOAD_VAR="LDR_PRELOAD"
1.1 misho 1616: fi
1617:
1618: # AIX-specific functions
1619: AC_CHECK_FUNCS(getuserattr setauthdb)
1620: COMMON_OBJS="$COMMON_OBJS aix.lo"
1621: ;;
1622: *-*-hiuxmpp*)
1623: : ${mansectsu='1m'}
1624: : ${mansectform='4'}
1.1.1.3 ! misho 1625:
! 1626: # HP-UX shared libs must be executable
! 1627: SHLIB_MODE=0755
1.1 misho 1628: ;;
1629: *-*-hpux*)
1630: # AFS support needs -lBSD
1631: if test "$with_AFS" = "yes"; then
1632: AFS_LIBS="-lc -lBSD"
1633: fi
1634: : ${mansectsu='1m'}
1635: : ${mansectform='4'}
1636:
1.1.1.3 ! misho 1637: # HP-UX shared libs must be executable
! 1638: SHLIB_MODE=0755
! 1639:
1.1 misho 1640: # The HP bundled compiler cannot generate shared libs
1641: if test -z "$GCC"; then
1642: AC_CACHE_CHECK([for HP bundled C compiler],
1643: [sudo_cv_var_hpccbundled],
1644: [if $CC -V 2>&1 | grep '^(Bundled)' >/dev/null 2>&1; then
1645: sudo_cv_var_hpccbundled=yes
1646: else
1647: sudo_cv_var_hpccbundled=no
1648: fi]
1649: )
1650: if test "$sudo_cv_var_hpccbundled" = "yes"; then
1651: AC_MSG_ERROR([The HP bundled C compiler is unable to build Sudo, you must use gcc or the HP ANSI C compiler instead.])
1652: fi
1653: fi
1654:
1655: # Build PA-RISC1.1 objects for better portability
1656: case "$host_cpu" in
1657: hppa[[2-9]]*)
1658: _CFLAGS="$CFLAGS"
1659: if test -n "$GCC"; then
1660: portable_flag="-march=1.1"
1661: else
1662: portable_flag="+DAportable"
1663: fi
1664: CFLAGS="$CFLAGS $portable_flag"
1665: AC_CACHE_CHECK([whether $CC understands $portable_flag],
1666: [sudo_cv_var_daportable],
1667: [AC_LINK_IFELSE(
1668: [AC_LANG_PROGRAM([[]], [[]])],
1669: [sudo_cv_var_daportable=yes],
1670: [sudo_cv_var_daportable=no]
1671: )
1672: ]
1673: )
1674: if test X"$sudo_cv_var_daportable" != X"yes"; then
1675: CFLAGS="$_CFLAGS"
1676: fi
1677: ;;
1678: esac
1679:
1680: case "$host" in
1681: *-*-hpux[[1-8]].*)
1682: AC_DEFINE(BROKEN_SYSLOG)
1683: ;;
1684: *-*-hpux9.*)
1685: AC_DEFINE(BROKEN_SYSLOG)
1686:
1687: shadow_funcs="getspwuid"
1688:
1689: # DCE support (requires ANSI C compiler)
1690: if test "$with_DCE" = "yes"; then
1691: # order of libs in 9.X is important. -lc_r must be last
1692: SUDOERS_LIBS="${SUDOERS_LIBS} -ldce -lM -lc_r"
1693: LIBS="${LIBS} -ldce -lM -lc_r"
1694: CPPFLAGS="${CPPFLAGS} -D_REENTRANT -I/usr/include/reentrant"
1695: fi
1696: ;;
1697: *-*-hpux10.*)
1698: shadow_funcs="getprpwnam iscomsec"
1699: shadow_libs="-lsec"
1700: # HP-UX 10.20 libc has an incompatible getline
1701: ac_cv_func_getline="no"
1702: ;;
1703: *)
1704: shadow_funcs="getspnam iscomsec"
1705: shadow_libs="-lsec"
1706: test -z "$with_pam" && AUTH_EXCL_DEF="PAM"
1707: ;;
1708: esac
1709: ;;
1710: *-dec-osf*)
1711: # ignore envariables wrt dynamic lib path
1.1.1.3 ! misho 1712: # XXX - sudo LDFLAGS instead?
1.1 misho 1713: SUDOERS_LDFLAGS="${SUDOERS_LDFLAGS} -Wl,-no_library_replacement"
1714:
1715: : ${CHECKSIA='true'}
1716: AC_MSG_CHECKING(whether to disable sia support on Digital UNIX)
1717: AC_ARG_ENABLE(sia,
1718: [AS_HELP_STRING([--disable-sia], [Disable SIA on Digital UNIX])],
1719: [ case "$enableval" in
1720: yes) AC_MSG_RESULT(no)
1721: CHECKSIA=true
1722: ;;
1723: no) AC_MSG_RESULT(yes)
1724: CHECKSIA=false
1725: ;;
1726: *) AC_MSG_RESULT(no)
1727: AC_MSG_WARN([Ignoring unknown argument to --enable-sia: $enableval])
1728: ;;
1729: esac
1730: ], AC_MSG_RESULT(no))
1731:
1732: shadow_funcs="getprpwnam dispcrypt"
1733: # OSF/1 4.x and higher need -ldb too
1734: if test $OSMAJOR -lt 4; then
1735: shadow_libs="-lsecurity -laud -lm"
1736: else
1737: shadow_libs="-lsecurity -ldb -laud -lm"
1738: fi
1739:
1740: # use SIA by default, if we have it
1741: test "$CHECKSIA" = "true" && AUTH_EXCL_DEF="SIA"
1742:
1743: #
1744: # Some versions of Digital Unix ship with a broken
1745: # copy of prot.h, which we need for shadow passwords.
1746: # XXX - make should remove this as part of distclean
1747: #
1748: AC_MSG_CHECKING([for broken prot.h])
1749: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1750: #include <sys/types.h>
1751: #include <sys/security.h>
1752: #include <prot.h>
1753: ]], [[exit(0);]])], [AC_MSG_RESULT(no)], [AC_MSG_RESULT([yes, fixing locally])
1754: sed 's:<acl.h>:<sys/acl.h>:g' < /usr/include/prot.h > prot.h
1755: ])
1.1.1.2 misho 1756: # ":DEFAULT" must be appended to _RLD_LIST
1757: RTLD_PRELOAD_VAR="_RLD_LIST"
1758: RTLD_PRELOAD_DEFAULT="DEFAULT"
1.1 misho 1759: : ${mansectsu='8'}
1760: : ${mansectform='4'}
1761: ;;
1762: *-*-irix*)
1763: OSDEFS="${OSDEFS} -D_BSD_TYPES"
1764: if test -z "$NROFFPROG"; then
1765: if test "$prefix" = "/usr/local" -a "$mandir" = '${datarootdir}/man'; then
1766: if test -d /usr/share/catman/local; then
1767: mandir="/usr/share/catman/local"
1768: else
1769: mandir="/usr/catman/local"
1770: fi
1771: fi
1.1.1.3 ! misho 1772: # Compress cat pages with pack
! 1773: MANCOMPRESS='pack'
! 1774: MANCOMPRESSEXT='.z'
1.1 misho 1775: else
1776: if test "$prefix" = "/usr/local" -a "$mandir" = '${datarootdir}/man'; then
1777: if test -d "/usr/share/man/local"; then
1778: mandir="/usr/share/man/local"
1779: else
1780: mandir="/usr/man/local"
1781: fi
1782: fi
1783: fi
1784: # IRIX <= 4 needs -lsun
1785: if test "$OSMAJOR" -le 4; then
1786: AC_CHECK_LIB(sun, getpwnam, [LIBS="${LIBS} -lsun"])
1787: fi
1.1.1.2 misho 1788: # ":DEFAULT" must be appended to _RLD_LIST
1789: RTLD_PRELOAD_VAR="_RLD_LIST"
1790: RTLD_PRELOAD_DEFAULT="DEFAULT"
1.1 misho 1791: : ${mansectsu='1m'}
1792: : ${mansectform='4'}
1793: ;;
1794: *-*-linux*|*-*-k*bsd*-gnu)
1795: OSDEFS="${OSDEFS} -D_GNU_SOURCE"
1796: # Some Linux versions need to link with -lshadow
1797: shadow_funcs="getspnam"
1798: shadow_libs_optional="-lshadow"
1799: test -z "$with_pam" && AUTH_EXCL_DEF="PAM"
1800: ;;
1801: *-convex-bsd*)
1802: OSDEFS="${OSDEFS} -D_CONVEX_SOURCE"
1803: if test -z "$GCC"; then
1804: CFLAGS="${CFLAGS} -D__STDC__"
1805: fi
1806:
1807: shadow_defs="-D_AUDIT -D_ACL -DSecureWare"
1808: shadow_funcs="getprpwnam"
1809: shadow_libs="-lprot"
1810: ;;
1811: *-*-ultrix*)
1812: OS="ultrix"
1813: shadow_funcs="getauthuid"
1814: shadow_libs="-lauth"
1815: ;;
1816: *-*-riscos*)
1817: LIBS="${LIBS} -lsun -lbsd"
1818: CPPFLAGS="${CPPFLAGS} -I/usr/include -I/usr/include/bsd"
1819: OSDEFS="${OSDEFS} -D_MIPS"
1820: : ${mansectsu='1m'}
1821: : ${mansectform='4'}
1822: ;;
1823: *-*-isc*)
1824: OSDEFS="${OSDEFS} -D_ISC"
1825: LIB_CRYPT=1
1826: SUDOERS_LIBS="${SUDOERS_LIBS} -lcrypt"
1827:
1828: shadow_funcs="getspnam"
1829: shadow_libs="-lsec"
1830:
1831: : ${mansectsu='1m'}
1832: : ${mansectform='4'}
1833: ;;
1834: *-*-sco*|*-sco-*)
1835: shadow_funcs="getprpwnam"
1836: shadow_libs="-lprot -lx"
1837: : ${mansectsu='1m'}
1838: : ${mansectform='4'}
1839: ;;
1840: m88k-motorola-sysv*)
1841: # motorolla's cc (a variant of gcc) does -O but not -O2
1842: CFLAGS=`echo $CFLAGS | sed 's/-O2/-O/g'`
1843: : ${mansectsu='1m'}
1844: : ${mansectform='4'}
1845: ;;
1846: *-sequent-sysv*)
1847: shadow_funcs="getspnam"
1848: shadow_libs="-lsec"
1849: : ${mansectsu='1m'}
1850: : ${mansectform='4'}
1851: : ${with_rpath='yes'}
1852: ;;
1853: *-ncr-sysv4*|*-ncr-sysvr4*)
1854: AC_CHECK_LIB(c89, strcasecmp, [LIBS="${LIBS} -lc89"])
1855: : ${mansectsu='1m'}
1856: : ${mansectform='4'}
1857: : ${with_rpath='yes'}
1858: ;;
1859: *-ccur-sysv4*|*-ccur-sysvr4*)
1860: LIBS="${LIBS} -lgen"
1861: : ${mansectsu='1m'}
1862: : ${mansectform='4'}
1863: : ${with_rpath='yes'}
1864: ;;
1865: *-*-bsdi*)
1866: SKIP_SETREUID=yes
1867: # Check for newer BSD auth API
1868: if test -z "$with_bsdauth"; then
1869: AC_CHECK_FUNCS(auth_challenge, [AUTH_EXCL_DEF="BSD_AUTH"])
1870: fi
1871: ;;
1872: *-*-freebsd*)
1873: # FreeBSD has a real setreuid(2) starting with 2.1 and
1874: # backported to 2.0.5. We just take 2.1 and above...
1875: case "$OSREV" in
1876: 0.*|1.*|2.0*)
1877: SKIP_SETREUID=yes
1878: ;;
1879: esac
1880: OSDEFS="${OSDEFS} -D_BSD_SOURCE"
1881: if test "${with_skey-'no'}" = "yes"; then
1882: SUDOERS_LIBS="${SUDOERS_LIBS} -lmd"
1883: fi
1884: CHECKSHADOW="false"
1885: test -z "$with_pam" && AUTH_EXCL_DEF="PAM"
1886: : ${with_logincap='maybe'}
1887: ;;
1888: *-*-*openbsd*)
1889: # OpenBSD has a real setreuid(2) starting with 3.3 but
1890: # we will use setresuid(2) instead.
1891: SKIP_SETREUID=yes
1892: OSDEFS="${OSDEFS} -D_BSD_SOURCE"
1893: CHECKSHADOW="false"
1894: # OpenBSD >= 3.0 supports BSD auth
1895: if test -z "$with_bsdauth"; then
1896: if test "$OSMAJOR" -ge 3; then
1897: AUTH_EXCL_DEF="BSD_AUTH"
1898: fi
1899: fi
1900: : ${with_logincap='maybe'}
1901: ;;
1902: *-*-*netbsd*)
1903: # NetBSD has a real setreuid(2) starting with 1.3.2
1904: case "$OSREV" in
1905: 0.9*|1.[[012]]*|1.3|1.3.1)
1906: SKIP_SETREUID=yes
1907: ;;
1908: esac
1909: CHECKSHADOW="false"
1910: test -z "$with_pam" && AUTH_EXCL_DEF="PAM"
1911: : ${with_logincap='maybe'}
1912: ;;
1913: *-*-dragonfly*)
1914: OSDEFS="${OSDEFS} -D_BSD_SOURCE"
1915: if test "${with_skey-'no'}" = "yes"; then
1916: SUDOERS_LIBS="${SUDOERS_LIBS} -lmd"
1917: fi
1918: CHECKSHADOW="false"
1919: test -z "$with_pam" && AUTH_EXCL_DEF="PAM"
1920: : ${with_logincap='yes'}
1921: ;;
1922: *-*-*bsd*)
1923: CHECKSHADOW="false"
1924: ;;
1925: *-*-darwin*)
1926: # Darwin has a real setreuid(2) starting with 9.0
1927: if test $OSMAJOR -lt 9; then
1928: SKIP_SETREUID=yes
1929: fi
1930: CHECKSHADOW="false"
1931: test -z "$with_pam" && AUTH_EXCL_DEF="PAM"
1932: : ${with_logincap='yes'}
1.1.1.2 misho 1933: RTLD_PRELOAD_VAR="DYLD_INSERT_LIBRARIES"
1934: RTLD_PRELOAD_ENABLE_VAR="DYLD_FORCE_FLAT_NAMESPACE"
1.1 misho 1935: ;;
1936: *-*-nextstep*)
1937: # lockf() on is broken on the NeXT -- use flock instead
1938: ac_cv_func_lockf=no
1939: ac_cv_func_flock=yes
1.1.1.2 misho 1940: RTLD_PRELOAD_VAR="DYLD_INSERT_LIBRARIES"
1941: RTLD_PRELOAD_ENABLE_VAR="DYLD_FORCE_FLAT_NAMESPACE"
1.1 misho 1942: ;;
1943: *-*-*sysv4*)
1944: : ${mansectsu='1m'}
1945: : ${mansectform='4'}
1946: : ${with_rpath='yes'}
1947: ;;
1948: *-*-sysv*)
1949: : ${mansectsu='1m'}
1950: : ${mansectform='4'}
1951: ;;
1952: *-gnu*)
1953: OSDEFS="${OSDEFS} -D_GNU_SOURCE"
1954: ;;
1955: esac
1956:
1957: dnl
1.1.1.2 misho 1958: dnl Library preloading to support NOEXEC
1959: dnl
1960: if test -n "$with_noexec"; then
1961: SUDO_DEFINE_UNQUOTED(RTLD_PRELOAD_VAR, "$RTLD_PRELOAD_VAR")
1962: SUDO_DEFINE_UNQUOTED(RTLD_PRELOAD_DELIM, "$RTLD_PRELOAD_DELIM")
1963: if test -n "$RTLD_PRELOAD_DEFAULT"; then
1964: SUDO_DEFINE_UNQUOTED(RTLD_PRELOAD_DEFAULT, "$RTLD_PRELOAD_DEFAULT")
1965: fi
1966: if test -n "$RTLD_PRELOAD_ENABLE_VAR"; then
1967: SUDO_DEFINE_UNQUOTED(RTLD_PRELOAD_ENABLE_VAR, "$RTLD_PRELOAD_ENABLE_VAR")
1968: fi
1969: fi
1970:
1971: dnl
1.1 misho 1972: dnl Check for mixing mutually exclusive and regular auth methods
1973: dnl
1974: AUTH_REG=${AUTH_REG# }
1975: AUTH_EXCL=${AUTH_EXCL# }
1976: if test -n "$AUTH_EXCL"; then
1977: set -- $AUTH_EXCL
1978: if test $# != 1; then
1979: AC_MSG_ERROR([More than one mutually exclusive authentication method specified: $AUTH_EXCL])
1980: fi
1981: if test -n "$AUTH_REG"; then
1982: AC_MSG_ERROR([Cannot mix mutually exclusive ($AUTH_EXCL) and regular ($AUTH_REG) authentication methods])
1983: fi
1984: fi
1985: dnl
1986: dnl Only one of S/Key and OPIE may be specified
1987: dnl
1988: if test X"${with_skey}${with_opie}" = X"yesyes"; then
1989: AC_MSG_ERROR(["cannot use both S/Key and OPIE"])
1990: fi
1991:
1992: dnl
1993: dnl Use BSD-style man sections by default
1994: dnl
1995: : ${mansectsu='8'}
1996: : ${mansectform='5'}
1997:
1998: dnl
1999: dnl Add in any libpaths or libraries specified via configure
2000: dnl
2001: if test -n "$with_libpath"; then
2002: for i in ${with_libpath}; do
2003: SUDO_APPEND_LIBPATH(LDFLAGS, [$i])
2004: done
2005: fi
2006: if test -n "$with_libraries"; then
2007: for i in ${with_libraries}; do
2008: case $i in
2009: -l*) ;;
2010: *.a) ;;
2011: *.o) ;;
2012: *) i="-l${i}";;
2013: esac
2014: LIBS="${LIBS} ${i}"
2015: done
2016: fi
2017:
2018: dnl
2019: dnl C compiler checks (to be done after os checks)
2020: dnl
2021: AC_PROG_GCC_TRADITIONAL
2022: AC_C_CONST
2023: AC_C_VOLATILE
1.1.1.2 misho 2024: # Check for variadic macro support in cpp
2025: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
2026: AC_INCLUDES_DEFAULT
2027: #if defined(__GNUC__) && __GNUC__ == 2
2028: # define sudo_fprintf(fp, fmt...) fprintf((fp), (fmt))
2029: #else
2030: # define sudo_fprintf(fp, ...) fprintf((fp), __VA_ARGS__)
2031: #endif
2032: ], [sudo_fprintf(stderr, "a %s", "test");])], [], [AC_MSG_ERROR([Your C compiler doesn't support variadic macros, try building with gcc instead])])
1.1.1.3 ! misho 2033:
1.1 misho 2034: dnl
2035: dnl Program checks
2036: dnl
2037: AC_PROG_YACC
2038: AC_PATH_PROG([FLEX], [flex], [flex])
2039: SUDO_PROG_MV
2040: SUDO_PROG_BSHELL
2041: if test -z "$with_sendmail"; then
2042: SUDO_PROG_SENDMAIL
2043: fi
2044: SUDO_PROG_VI
2045: dnl
2046: dnl Check for authpriv support in syslog
2047: dnl
2048: AC_MSG_CHECKING(which syslog facility sudo should log with)
2049: if test X"$with_logfac" = X""; then
2050: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <syslog.h>]], [[int i = LOG_AUTHPRIV; (void)i;]])], [logfac=authpriv])
2051: fi
2052: AC_DEFINE_UNQUOTED(LOGFAC, "$logfac", [The syslog facility sudo will use.])
2053: AC_MSG_RESULT($logfac)
2054: dnl
2055: dnl Header file checks
2056: dnl
2057: AC_HEADER_STDC
2058: AC_HEADER_DIRENT
2059: AC_HEADER_TIME
1.1.1.2 misho 2060: AC_HEADER_STDBOOL
2061: AC_HEADER_MAJOR
2062: AC_CHECK_HEADERS(malloc.h netgroup.h paths.h spawn.h utime.h utmpx.h sys/sockio.h sys/bsdtypes.h sys/select.h sys/stropts.h sys/sysmacros.h)
2063: AC_CHECK_HEADERS([procfs.h] [sys/procfs.h], [AC_CHECK_MEMBERS(struct psinfo.pr_ttydev, [AC_CHECK_FUNCS(_ttyname_dev)], [], [AC_INCLUDES_DEFAULT
2064: #ifdef HAVE_PROCFS_H
2065: #include <procfs.h>
2066: #endif
2067: #ifdef HAVE_SYS_PROCFS_H
2068: #include <sys/procfs.h>
2069: #endif
2070: ])]
2071: break)
1.1 misho 2072: dnl
2073: dnl Check for large file support. HP-UX 11.23 has a broken sys/type.h
2074: dnl when large files support is enabled so work around it.
2075: dnl
2076: AC_SYS_LARGEFILE
2077: case "$host" in
2078: *-*-hpux11.*)
2079: AC_CACHE_CHECK([whether sys/types.h needs _XOPEN_SOURCE_EXTENDED], [sudo_cv_xopen_source_extended],
2080: [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
2081: #include <sys/socket.h>], [])], [sudo_cv_xopen_source_extended=no], [
2082: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#define _XOPEN_SOURCE_EXTENDED
2083: AC_INCLUDES_DEFAULT
2084: #include <sys/socket.h>], [])], [sudo_cv_xopen_source_extended=yes],
2085: [sudo_cv_xopen_source_extended=error])
2086: ])])
2087: if test "$sudo_cv_xopen_source_extended" = "yes"; then
2088: OSDEFS="${OSDEFS} -D_XOPEN_SOURCE_EXTENDED"
2089: SUDO_DEFINE(_XOPEN_SOURCE_EXTENDED)
2090: fi
2091: ;;
2092: esac
2093: AC_SYS_POSIX_TERMIOS
2094: if test "$ac_cv_sys_posix_termios" != "yes"; then
2095: AC_MSG_ERROR([Must have POSIX termios to build sudo])
2096: fi
2097: SUDO_MAILDIR
2098: if test ${with_logincap-'no'} != "no"; then
2099: AC_CHECK_HEADERS(login_cap.h, [LOGINCAP_USAGE='[[-c class|-]] '; LCMAN=1
2100: case "$OS" in
2101: freebsd|netbsd)
2102: SUDO_LIBS="${SUDO_LIBS} -lutil"
2103: SUDOERS_LIBS="${SUDOERS_LIBS} -lutil"
2104: ;;
2105: esac
2106: ])
2107: fi
2108: if test ${with_project-'no'} != "no"; then
2109: AC_CHECK_HEADER(project.h, [
2110: AC_CHECK_LIB(project, setproject, [
2111: AC_DEFINE(HAVE_PROJECT_H)
2112: SUDO_LIBS="${SUDO_LIBS} -lproject"
2113: ])
2114: ], [])
2115: fi
2116: dnl
2117: dnl typedef checks
2118: dnl
2119: AC_TYPE_MODE_T
2120: AC_TYPE_UID_T
2121: AC_CHECK_TYPE([__signed char], [], [AC_CHECK_TYPE([signed char], [AC_DEFINE(__signed, signed)], [AC_DEFINE(__signed, [])])])
2122: AC_CHECK_TYPE([sig_atomic_t], [], [AC_DEFINE(sig_atomic_t, int)], [#include <sys/types.h>
2123: #include <signal.h>])
1.1.1.2 misho 2124: AC_CHECK_TYPES([sigaction_t], [], [], [#include <sys/types.h>
1.1 misho 2125: #include <signal.h>])
1.1.1.2 misho 2126: AC_CHECK_TYPES([struct timespec], [], [], [#include <sys/types.h>
1.1 misho 2127: #if TIME_WITH_SYS_TIME
2128: # include <sys/time.h>
2129: #endif
2130: #include <time.h>])
1.1.1.2 misho 2131: AC_CHECK_TYPES([struct in6_addr], [], [], [#include <sys/types.h>
1.1 misho 2132: #include <netinet/in.h>])
2133: AC_TYPE_LONG_LONG_INT
2134: AC_CHECK_SIZEOF([long int])
1.1.1.2 misho 2135: AC_CHECK_TYPE(size_t, unsigned int)
2136: AC_CHECK_TYPE(ssize_t, int)
2137: AC_CHECK_TYPE(dev_t, int)
2138: AC_CHECK_TYPE(ino_t, unsigned int)
2139: AC_CHECK_TYPE(socklen_t, [], [AC_DEFINE(socklen_t, unsigned int)], [
2140: AC_INCLUDES_DEFAULT
2141: #include <sys/socket.h>])
1.1 misho 2142: SUDO_UID_T_LEN
2143: SUDO_SOCK_SA_LEN
2144: dnl
2145: dnl Check for utmp/utmpx struct members.
2146: dnl We need to include OSDEFS for glibc which only has __e_termination
2147: dnl visible when _GNU_SOURCE is *not* defined.
2148: dnl
2149: _CFLAGS="$CFLAGS"
2150: CFLAGS="$CFLAGS $OSDEFS"
2151: if test $ac_cv_header_utmpx_h = "yes"; then
2152: AC_CHECK_MEMBERS([struct utmpx.ut_id, struct utmpx.ut_pid, struct utmpx.ut_tv, struct utmpx.ut_type], [], [], [
2153: #include <sys/types.h>
2154: #include <utmpx.h>
2155: ])
2156: dnl
2157: dnl Check for ut_exit.__e_termination first, then ut_exit.e_termination
2158: dnl
2159: AC_CHECK_MEMBERS([struct utmpx.ut_exit.__e_termination], [AC_DEFINE(HAVE_STRUCT_UTMPX_UT_EXIT)], [
2160: AC_CHECK_MEMBERS([struct utmpx.ut_exit.e_termination], [AC_DEFINE(HAVE_STRUCT_UTMPX_UT_EXIT)], [], [
2161: #include <sys/types.h>
2162: #include <utmpx.h>
2163: ])
2164: ], [
2165: #include <sys/types.h>
2166: #include <utmpx.h>
2167: ])
2168: else
2169: AC_CHECK_MEMBERS([struct utmp.ut_id, struct utmp.ut_pid, struct utmp.ut_tv, struct utmp.ut_type, struct utmp.ut_user], [], [], [
2170: #include <sys/types.h>
2171: #include <utmp.h>
2172: ])
2173: dnl
2174: dnl Check for ut_exit.__e_termination first, then ut_exit.e_termination
2175: dnl
2176: AC_CHECK_MEMBERS([struct utmp.ut_exit.__e_termination], [AC_DEFINE(HAVE_STRUCT_UTMP_UT_EXIT)], [
2177: AC_CHECK_MEMBERS([struct utmp.ut_exit.e_termination], [AC_DEFINE(HAVE_STRUCT_UTMP_UT_EXIT)], [], [
2178: #include <sys/types.h>
2179: #include <utmp.h>
2180: ])
2181: ], [
2182: #include <sys/types.h>
2183: #include <utmp.h>
2184: ])
2185: fi
2186: CFLAGS="$_CFLAGS"
2187:
2188: dnl
2189: dnl Function checks
2190: dnl
2191: AC_FUNC_GETGROUPS
1.1.1.2 misho 2192: AC_CHECK_FUNCS(glob strrchr sysconf tzset strftime setenv \
2193: regcomp setlocale nl_langinfo mbr_check_membership \
2194: setrlimit64)
1.1 misho 2195: AC_REPLACE_FUNCS(getgrouplist)
2196: AC_CHECK_FUNCS(getline, [], [
2197: AC_LIBOBJ(getline)
2198: AC_CHECK_FUNCS(fgetln)
2199: ])
1.1.1.2 misho 2200: dnl
2201: dnl If libc supports _FORTIFY_SOURCE check functions, use it.
2202: dnl
1.1.1.3 ! misho 2203: if test "$enable_hardening" != "no"; then
! 2204: O_CPPFLAGS="$CPPFLAGS"
! 2205: CPPFLAGS="$CPPFLAGS -D_FORTIFY_SOURCE=2"
! 2206: AC_CHECK_FUNC(__sprintf_chk, [
! 2207: AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[char buf[4]; (void)sprintf(buf, "%s", "foo");]])], [OSDEFS="${OSDEFS} -D_FORTIFY_SOURCE=2"], [])
! 2208: ], [])
! 2209: CPPFLAGS="$O_CPPFLAGS"
! 2210: fi
1.1.1.2 misho 2211:
1.1 misho 2212: utmp_style=LEGACY
2213: AC_CHECK_FUNCS(getutxid getutid, [utmp_style=POSIX; break])
2214: if test "$utmp_style" = "LEGACY"; then
2215: AC_CHECK_FUNCS(getttyent ttyslot, [break])
1.1.1.3 ! misho 2216: AC_CHECK_FUNCS(fseeko)
1.1 misho 2217: fi
2218:
1.1.1.2 misho 2219: AC_CHECK_FUNCS(sysctl, [AC_CHECK_MEMBERS([struct kinfo_proc.ki_tdev], [],
2220: [
2221: AC_CHECK_MEMBERS([struct kinfo_proc2.p_tdev], [], [
2222: AC_CHECK_MEMBERS([struct kinfo_proc.p_tdev], [], [
2223: AC_CHECK_MEMBERS([struct kinfo_proc.kp_eproc.e_tdev], [], [], [
2224: #include <sys/param.h>
2225: #include <sys/sysctl.h>
2226: ])
2227: ], [
2228: #include <sys/param.h>
2229: #include <sys/sysctl.h>
2230: ])
2231: ],
2232: [
2233: #include <sys/param.h>
2234: #include <sys/sysctl.h>
2235: ])
2236: ],
2237: [
2238: #include <sys/param.h>
2239: #include <sys/sysctl.h>
2240: #include <sys/user.h>
2241: ])
2242: ])
2243:
1.1 misho 2244: AC_CHECK_FUNCS(openpty, [AC_CHECK_HEADERS(libutil.h util.h pty.h, [break])], [
2245: AC_CHECK_LIB(util, openpty, [
2246: AC_CHECK_HEADERS(libutil.h util.h pty.h, [break])
2247: case "$SUDO_LIBS" in
2248: *-lutil*) ;;
2249: *) SUDO_LIBS="${SUDO_LIBS} -lutil";;
2250: esac
2251: AC_DEFINE(HAVE_OPENPTY)
2252: ], [
2253: AC_CHECK_FUNCS(_getpty, [], [
2254: AC_CHECK_FUNCS(grantpt, [
2255: AC_CHECK_FUNCS(posix_openpt)
2256: ], [
2257: AC_CHECK_FUNCS(revoke)
2258: ])
2259: ])
2260: ])
2261: ])
1.1.1.2 misho 2262: AC_CHECK_FUNCS(unsetenv, [SUDO_FUNC_UNSETENV_VOID], [])
2263: SUDO_FUNC_PUTENV_CONST
1.1 misho 2264: if test -z "$SKIP_SETRESUID"; then
2265: AC_CHECK_FUNCS(setresuid, [
2266: SKIP_SETREUID=yes
2267: AC_CHECK_FUNCS(getresuid)
2268: ])
2269: fi
2270: if test -z "$SKIP_SETREUID"; then
2271: AC_CHECK_FUNCS(setreuid, [SKIP_SETEUID=yes])
2272: fi
2273: if test -z "$SKIP_SETEUID"; then
2274: AC_CHECK_FUNCS(seteuid)
2275: fi
2276: if test X"$with_interfaces" != X"no"; then
2277: AC_CHECK_FUNCS(getifaddrs, [AC_CHECK_FUNCS(freeifaddrs)])
2278: fi
2279: if test -z "$BROKEN_GETCWD"; then
2280: AC_REPLACE_FUNCS(getcwd)
2281: fi
2282: AC_CHECK_FUNCS(lockf flock, [break])
2283: AC_CHECK_FUNCS(innetgr _innetgr, [AC_CHECK_FUNCS(getdomainname) [break]])
2284: AC_CHECK_FUNCS(utimes, [AC_CHECK_FUNCS(futimes futimesat, [break])], [AC_CHECK_FUNCS(futime) AC_LIBOBJ(utimes)])
2285: AC_CHECK_FUNCS(killpg, [], [AC_LIBOBJ(killpg)])
1.1.1.2 misho 2286: SUDO_FUNC_FNMATCH([AC_DEFINE(HAVE_FNMATCH)], [AC_LIBOBJ(fnmatch)
2287: COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }fnm_test"
2288: ])
1.1 misho 2289: SUDO_FUNC_ISBLANK
1.1.1.2 misho 2290: AC_REPLACE_FUNCS(memrchr pw_dup strlcpy strlcat)
1.1 misho 2291: AC_CHECK_FUNCS(nanosleep, [], [
2292: # On Solaris, nanosleep is in librt
2293: AC_CHECK_LIB(rt, nanosleep, [REPLAY_LIBS="${REPLAY_LIBS} -lrt"], [AC_LIBOBJ(nanosleep)])
2294: ])
2295: AC_CHECK_FUNCS(closefrom, [], [AC_LIBOBJ(closefrom)
2296: AC_CHECK_DECL(F_CLOSEM, AC_DEFINE(HAVE_FCNTL_CLOSEM), [],
2297: [ #include <limits.h>
2298: #include <fcntl.h> ])
2299: ])
2300: AC_CHECK_FUNCS(mkstemps mkdtemp, [], [
2301: AC_CHECK_FUNCS(random lrand48, [break])
2302: AC_LIBOBJ(mktemp)
2303: ])
2304: AC_CHECK_FUNCS(snprintf vsnprintf asprintf vasprintf, , [NEED_SNPRINTF=1])
2305: if test X"$ac_cv_type_struct_timespec" != X"no"; then
2306: AC_CHECK_MEMBER([struct stat.st_mtim], [AC_DEFINE(HAVE_ST_MTIM)]
2307: [AC_CHECK_MEMBER([struct stat.st_mtim.st__tim], AC_DEFINE(HAVE_ST__TIM))],
2308: [AC_CHECK_MEMBER([struct stat.st_mtimespec], AC_DEFINE([HAVE_ST_MTIMESPEC]))])
2309: fi
2310: dnl
2311: dnl Check for the dirfd function/macro. If not found, look for dd_fd in DIR.
2312: dnl
2313: AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
2314: #include <$ac_header_dirent>]], [[DIR *d; (void)dirfd(d);]])], [AC_DEFINE(HAVE_DIRFD)], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
2315: #include <$ac_header_dirent>]], [[DIR d; memset(&d, 0, sizeof(d)); return(d.dd_fd);]])], [AC_DEFINE(HAVE_DD_FD)], [])])
1.1.1.2 misho 2316: AC_CHECK_MEMBERS([struct dirent.d_type], [], [], [
2317: AC_INCLUDES_DEFAULT
2318: #include <$ac_header_dirent>
2319: ])
1.1 misho 2320: dnl
2321: dnl If NEED_SNPRINTF is set, add snprintf.c to LIBOBJS
2322: dnl (it contains snprintf, vsnprintf, asprintf, and vasprintf)
2323: dnl
2324: if test -n "$NEED_SNPRINTF"; then
2325: AC_LIBOBJ(snprintf)
2326: fi
2327: dnl
2328: dnl If socket(2) not in libc, check -lsocket and -linet
2329: dnl May need to link with *both* -lnsl and -lsocket due to unresolved symbols
2330: dnl
1.1.1.2 misho 2331: AC_CHECK_FUNC(socket, [], [
2332: for libs in "-lsocket" "-linet" "-lsocket -lnsl"; do
2333: _libs=
2334: for lib in $libs; do
2335: case "$NET_LIBS" in
2336: *"$lib"*) ;;
2337: *) _libs="$_libs $lib";;
2338: esac
2339: done
2340: libs="${_libs# }"
2341: test -z "$libs" && continue
2342: lib="`echo \"$libs\"|sed -e 's/^-l//' -e 's/ .*$//'`"
2343: extralibs="`echo \"$libs\"|sed 's/^-l[[^ ]]*//'`"
2344: SUDO_CHECK_LIB($lib, socket, [NET_LIBS="${NET_LIBS} $libs"; LIBS="${LIBS} $libs"; break], [], [$extralibs])
2345: done
2346: ])
1.1 misho 2347: dnl
2348: dnl If inet_addr(3) not in libc, check -lnsl and -linet
2349: dnl May need to link with *both* -lnsl and -lsocket due to unresolved symbols
2350: dnl
1.1.1.2 misho 2351: AC_CHECK_FUNC(inet_addr, [], [
2352: AC_CHECK_FUNC(__inet_addr, [], [
2353: for libs in "-lsocket" "-linet" "-lsocket -lnsl"; do
2354: _libs=
2355: for lib in $libs; do
2356: case "$NET_LIBS" in
2357: *"$lib"*) ;;
2358: *) _libs="$_libs $lib";;
2359: esac
2360: done
2361: libs="${_libs# }"
2362: test -z "$libs" && continue
2363: lib="`echo \"$libs\"|sed -e 's/^-l//' -e 's/ .*$//'`"
2364: extralibs="`echo \"$libs\"|sed 's/^-l[[^ ]]*//'`"
2365: SUDO_CHECK_LIB($lib, inet_addr, [NET_LIBS="${NET_LIBS} $libs"; LIBS="${LIBS} $libs"; break], [], [$extralibs])
2366: done
2367: ])
2368: ])
1.1 misho 2369: dnl
2370: dnl If syslog(3) not in libc, check -lsocket, -lnsl and -linet
2371: dnl
1.1.1.2 misho 2372: AC_CHECK_FUNC(syslog, [], [
2373: for libs in "-lsocket" "-linet" "-lsocket -lnsl"; do
2374: _libs=
2375: for lib in $libs; do
2376: case "$NET_LIBS" in
2377: *"$lib"*) ;;
2378: *) _libs="$_libs $lib";;
2379: esac
2380: done
2381: libs="${_libs# }"
2382: test -z "$libs" && continue
2383: lib="`echo \"$libs\"|sed -e 's/^-l//' -e 's/ .*$//'`"
2384: extralibs="`echo \"$libs\"|sed 's/^-l[[^ ]]*//'`"
2385: SUDO_CHECK_LIB($lib, syslog, [NET_LIBS="${NET_LIBS} $libs"; LIBS="${LIBS} $libs"; break], [], [$extralibs])
2386: done
2387: ])
2388: dnl
2389: dnl If getaddrinfo(3) not in libc, check -lsocket and -linet
2390: dnl May need to link with *both* -lnsl and -lsocket due to unresolved symbols.
2391: dnl
2392: AC_CHECK_FUNCS(getaddrinfo, [], [
2393: found=no
2394: for libs in "-lsocket" "-linet" "-lsocket -lnsl"; do
2395: _libs=
2396: for lib in $libs; do
2397: case "$NET_LIBS" in
2398: *"$lib"*) ;;
2399: *) _libs="$_libs $lib";;
2400: esac
2401: done
2402: libs="${_libs# }"
2403: test -z "$libs" && continue
2404: lib="`echo \"$libs\"|sed -e 's/^-l//' -e 's/ .*$//'`"
2405: extralibs="`echo \"$libs\"|sed 's/^-l[[^ ]]*//'`"
2406: SUDO_CHECK_LIB($lib, getaddrinfo, [NET_LIBS="${NET_LIBS} $libs"; LIBS="${LIBS} $libs"; found=yes; break], [], [$extralibs])
2407: done
2408: if test X"$found" != X"no"; then
2409: AC_DEFINE(HAVE_GETADDRINFO)
2410: fi
2411: ])
1.1 misho 2412: dnl
2413: dnl Check for getprogname() or __progname
2414: dnl
2415: AC_CHECK_FUNCS(getprogname, , [
2416: AC_MSG_CHECKING([for __progname])
2417: AC_CACHE_VAL(sudo_cv___progname, [
2418: AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[extern char *__progname; (void)puts(__progname);]])], [sudo_cv___progname=yes], [sudo_cv___progname=no])])
2419: if test "$sudo_cv___progname" = "yes"; then
2420: AC_DEFINE(HAVE___PROGNAME)
2421: else
2422: AC_LIBOBJ(getprogname)
2423: fi
2424: AC_MSG_RESULT($sudo_cv___progname)
2425: ])
1.1.1.2 misho 2426: dnl
2427: dnl Check for __func__ or __FUNCTION__
2428: dnl
2429: AC_MSG_CHECKING([for __func__])
2430: AC_CACHE_VAL(sudo_cv___func__, [
2431: AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[(void)puts(__func__);]])], [sudo_cv___func__=yes], [sudo_cv___func__=no])])
2432: AC_MSG_RESULT($sudo_cv___func__)
2433: if test "$sudo_cv___func__" = "yes"; then
2434: AC_DEFINE(HAVE___FUNC__)
2435: elif test -n "$GCC"; then
2436: AC_MSG_CHECKING([for __FUNCTION__])
2437: AC_CACHE_VAL(sudo_cv___FUNCTION__, [
2438: AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[(void)puts(__FUNCTION__);]])], [sudo_cv___FUNCTION__=yes], [sudo_cv___FUNCTION__=no])])
2439: AC_MSG_RESULT($sudo_cv___FUNCTION__)
2440: if test "$sudo_cv___FUNCTION__" = "yes"; then
2441: AC_DEFINE(HAVE___FUNC__)
2442: AC_DEFINE(__func__, __FUNCTION__, [Define to __FUNCTION__ if your compiler support __FUNCTION__ but not __func__])
2443: fi
2444: fi
1.1 misho 2445:
2446: # gettext() and friends may be located in libc (Linux and Solaris)
2447: # or in libintl. However, it is possible to have libintl installed
2448: # even when gettext() is present in libc. In the case of GNU libintl,
2449: # gettext() will be defined to gettext_libintl in libintl.h.
2450: # Since gcc prefers /usr/local/include to /usr/include, we need to
2451: # make sure we use the gettext() that matches the include file.
2452: if test "$enable_nls" != "no"; then
2453: if test "$enable_nls" != "yes"; then
2454: CPPFLAGS="${CPPFLAGS} -I${enable_nls}/include"
2455: SUDO_APPEND_LIBPATH(LDFLAGS, [$enable_nls/lib])
2456: fi
2457: OLIBS="$LIBS"
2458: for l in "libc" "-lintl" "-lintl -liconv"; do
2459: if test "$l" = "libc"; then
2460: # If user specified a dir for libintl ignore libc
2461: if test "$enable_nls" != "yes"; then
2462: continue
2463: fi
2464: gettext_name=sudo_cv_gettext
2465: AC_MSG_CHECKING([for gettext])
2466: else
2467: LIBS="$OLIBS $l"
2468: gettext_name=sudo_cv_gettext"`echo $l|sed -e 's/ //g' -e 's/-/_/g'`"
2469: AC_MSG_CHECKING([for gettext in $l])
2470: fi
2471: AC_CACHE_VAL($gettext_name, [
2472: AC_LINK_IFELSE(
2473: [
2474: AC_LANG_PROGRAM([[#include <libintl.h>]], [(void)gettext((char *)0);])
2475: ], [eval $gettext_name=yes], [eval $gettext_name=no]
2476: )
2477: ])
2478: eval gettext_result="\$$gettext_name"
2479: AC_MSG_RESULT($gettext_result)
1.1.1.3 ! misho 2480: if test "$gettext_result" = "yes"; then
! 2481: AC_CHECK_FUNCS(ngettext)
! 2482: break
! 2483: fi
1.1 misho 2484: done
2485: LIBS="$OLIBS"
2486:
2487: if test "$sudo_cv_gettext" = "yes"; then
2488: AC_DEFINE(HAVE_LIBINTL_H)
2489: SUDO_NLS=enabled
2490: elif test "$sudo_cv_gettext_lintl" = "yes"; then
2491: AC_DEFINE(HAVE_LIBINTL_H)
2492: SUDO_NLS=enabled
2493: LIBINTL="-lintl"
2494: elif test "$sudo_cv_gettext_lintl_liconv" = "yes"; then
2495: AC_DEFINE(HAVE_LIBINTL_H)
2496: SUDO_NLS=enabled
2497: LIBINTL="-lintl -liconv"
2498: fi
2499: fi
2500:
2501: dnl
2502: dnl Deferred zlib option processing.
2503: dnl By default we use the system zlib if it is present.
1.1.1.2 misho 2504: dnl If a directory was specified for zlib (or we are use sudo's version),
2505: dnl prepend the include dir to make sure we get the right zlib header.
1.1 misho 2506: dnl
2507: case "$enable_zlib" in
2508: yes)
2509: AC_CHECK_LIB(z, gzdopen, [
2510: AC_CHECK_HEADERS(zlib.h, [ZLIB="-lz"], [enable_zlib=builtin])
2511: ])
2512: ;;
2513: no)
2514: ;;
2515: system)
2516: AC_DEFINE(HAVE_ZLIB_H)
2517: ZLIB="-lz"
2518: ;;
2519: builtin)
2520: # handled below
2521: ;;
2522: *)
2523: AC_DEFINE(HAVE_ZLIB_H)
1.1.1.2 misho 2524: CPPFLAGS="-I${enable_zlib}/include ${CPPFLAGS}"
1.1 misho 2525: SUDO_APPEND_LIBPATH(ZLIB, [$enable_zlib/lib])
2526: ZLIB="${ZLIB} -lz"
2527: ;;
2528: esac
2529: if test X"$enable_zlib" = X"builtin"; then
2530: AC_DEFINE(HAVE_ZLIB_H)
1.1.1.2 misho 2531: CPPFLAGS='-I$(top_builddir)/zlib -I$(top_srcdir)/zlib '"${CPPFLAGS}"
1.1 misho 2532: ZLIB="${ZLIB}"' $(top_builddir)/zlib/libz.la'
2533: ZLIB_SRC=zlib
2534: AC_CONFIG_HEADER([zlib/zconf.h])
2535: AC_CONFIG_FILES([zlib/Makefile])
2536: fi
2537:
2538: dnl
2539: dnl Check for errno declaration in errno.h
2540: dnl
2541: AC_CHECK_DECLS([errno], [], [], [
2542: AC_INCLUDES_DEFAULT
2543: #include <errno.h>
2544: ])
2545:
2546: dnl
1.1.1.2 misho 2547: dnl Check for h_errno declaration in netdb.h
2548: dnl
2549: AC_CHECK_DECLS([h_errno], [], [], [
2550: AC_INCLUDES_DEFAULT
2551: #include <netdb.h>
2552: ])
2553:
2554: dnl
1.1 misho 2555: dnl Check for strsignal() or sys_siglist
2556: dnl
2557: AC_CHECK_FUNCS(strsignal, [], [
2558: AC_LIBOBJ(strsignal)
2559: HAVE_SIGLIST="false"
2560: AC_CHECK_DECLS([sys_siglist, _sys_siglist, __sys_siglist], [
2561: HAVE_SIGLIST="true"
2562: break
2563: ], [ ], [
2564: AC_INCLUDES_DEFAULT
2565: #include <signal.h>
2566: ])
2567: if test "$HAVE_SIGLIST" != "true"; then
2568: AC_LIBOBJ(siglist)
2569: fi
2570: ])
2571:
2572: dnl
1.1.1.3 ! misho 2573: dnl Check for sig2str(), sys_signame or sys_sigabbrev
! 2574: dnl
! 2575: AC_CHECK_FUNCS(sig2str, [], [
! 2576: AC_LIBOBJ(sig2str)
! 2577: HAVE_SIGNAME="false"
! 2578: AC_CHECK_DECLS([sys_signame, _sys_signame, __sys_signame, sys_sigabbrev], [
! 2579: HAVE_SIGNAME="true"
! 2580: break
! 2581: ], [ ], [
! 2582: AC_INCLUDES_DEFAULT
! 2583: #include <signal.h>
! 2584: ])
! 2585: if test "$HAVE_SIGNAME" != "true"; then
! 2586: AC_CACHE_CHECK([for undeclared sys_sigabbrev],
! 2587: [sudo_cv_var_sys_sigabbrev],
! 2588: [AC_LINK_IFELSE(
! 2589: [AC_LANG_PROGRAM([[extern char **sys_sigabbrev;]], [[return sys_sigabbrev[1];]])],
! 2590: [sudo_cv_var_sys_sigabbrev=yes],
! 2591: [sudo_cv_var_sys_sigabbrev=no]
! 2592: )
! 2593: ]
! 2594: )
! 2595: if test "$sudo_cv_var_sys_sigabbrev" = yes; then
! 2596: AC_DEFINE(HAVE_SYS_SIGABBREV)
! 2597: else
! 2598: AC_LIBOBJ(signame)
! 2599: fi
! 2600: fi
! 2601: ])
! 2602:
! 2603: dnl
1.1 misho 2604: dnl nsswitch.conf and its equivalents
2605: dnl
2606: if test ${with_netsvc-"no"} != "no"; then
2607: SUDO_DEFINE_UNQUOTED(_PATH_NETSVC_CONF, "${with_netsvc-/etc/netsvc.conf}")
2608: netsvc_conf=${with_netsvc-/etc/netsvc.conf}
2609: elif test ${with_nsswitch-"yes"} != "no"; then
2610: SUDO_DEFINE_UNQUOTED(_PATH_NSSWITCH_CONF, "${with_nsswitch-/etc/nsswitch.conf}")
2611: nsswitch_conf=${with_nsswitch-/etc/nsswitch.conf}
2612: fi
2613:
2614: dnl
2615: dnl Mutually exclusive auth checks come first, followed by
2616: dnl non-exclusive ones. Note: passwd must be last of all!
2617: dnl
2618:
2619: dnl
2620: dnl Convert default authentication methods to with_* if
2621: dnl no explicit authentication scheme was specified.
2622: dnl
2623: if test -z "${AUTH_EXCL}${AUTH_REG}" -a -n "$AUTH_EXCL_DEF"; then
2624: for auth in $AUTH_EXCL_DEF; do
2625: case $auth in
2626: AIX_AUTH) with_aixauth=maybe;;
2627: BSD_AUTH) with_bsdauth=maybe;;
2628: PAM) with_pam=maybe;;
2629: SIA) CHECKSIA=true;;
2630: esac
2631: done
2632: fi
2633:
2634: dnl
2635: dnl PAM support. Systems that use PAM by default set with_pam=default
2636: dnl and we do the actual tests here.
2637: dnl
2638: if test ${with_pam-"no"} != "no"; then
1.1.1.2 misho 2639: #
2640: # Check for pam_start() in libpam first, then for pam_appl.h.
2641: #
2642: found_pam_lib=no
2643: AC_CHECK_LIB(pam, pam_start, [found_pam_lib=yes], [], [$lt_cv_dlopen_libs])
2644: #
2645: # Some PAM implementations (MacOS X for example) put the PAM headers
2646: # in /usr/include/pam instead of /usr/include/security...
2647: #
2648: found_pam_hdrs=no
2649: AC_CHECK_HEADERS([security/pam_appl.h] [pam/pam_appl.h], [found_pam_hdrs=yes; break])
2650: if test "$found_pam_lib" = "yes" -a "$found_pam_hdrs" = "yes"; then
2651: # Found both PAM libs and headers
2652: with_pam=yes
2653: elif test "$with_pam" = "yes"; then
2654: if test "$found_pam_lib" = "no"; then
2655: AC_MSG_ERROR(["--with-pam specified but unable to locate PAM development library."])
2656: fi
2657: if test "$found_pam_hdrs" = "no"; then
2658: AC_MSG_ERROR(["--with-pam specified but unable to locate PAM development headers."])
2659: fi
2660: elif test "$found_pam_lib" != "$found_pam_hdrs"; then
2661: if test "$found_pam_lib" = "no"; then
2662: AC_MSG_ERROR(["found PAM headers but no PAM development library; specify --without-pam to build without PAM"])
2663: fi
2664: if test "$found_pam_hdrs" = "no"; then
2665: AC_MSG_ERROR(["found PAM library but no PAM development headers; specify --without-pam to build without PAM"])
2666: fi
2667: fi
1.1 misho 2668:
2669: if test "$with_pam" = "yes"; then
1.1.1.2 misho 2670: # Older PAM implementations lack pam_getenvlist
2671: OLIBS="$LIBS"
2672: LIBS="$LIBS -lpam $lt_cv_dlopen_libs"
2673: AC_CHECK_FUNCS(pam_getenvlist)
2674: LIBS="$OLIBS"
2675:
2676: # We already link with -ldl if needed (see LIBDL below)
2677: SUDOERS_LIBS="${SUDOERS_LIBS} -lpam"
1.1 misho 2678: AC_DEFINE(HAVE_PAM)
2679: AUTH_OBJS="$AUTH_OBJS pam.lo";
2680: AUTH_EXCL=PAM
2681:
2682: AC_ARG_WITH(pam-login, [AS_HELP_STRING([--with-pam-login], [enable specific PAM session for sudo -i])],
2683: [case $with_pam_login in
2684: yes) AC_DEFINE([HAVE_PAM_LOGIN])
2685: AC_MSG_CHECKING(whether to use PAM login)
2686: AC_MSG_RESULT(yes)
2687: ;;
2688: no) ;;
2689: *) AC_MSG_ERROR(["--with-pam-login does not take an argument."])
2690: ;;
2691: esac])
2692:
2693: AC_MSG_CHECKING(whether to use PAM session support)
2694: AC_ARG_ENABLE(pam_session,
2695: [AS_HELP_STRING([--disable-pam-session], [Disable PAM session support])],
2696: [ case "$enableval" in
2697: yes) AC_MSG_RESULT(yes)
2698: ;;
2699: no) AC_MSG_RESULT(no)
2700: AC_DEFINE(NO_PAM_SESSION)
2701: ;;
2702: *) AC_MSG_RESULT(no)
2703: AC_MSG_WARN([Ignoring unknown argument to --enable-pam-session: $enableval])
2704: ;;
2705: esac], AC_MSG_RESULT(yes))
2706: fi
2707: fi
2708:
2709: dnl
2710: dnl AIX general authentication
2711: dnl If set to "maybe" only enable if no other exclusive method in use.
2712: dnl
2713: if test ${with_aixauth-'no'} != "no"; then
2714: if test X"$with_aixauth" != X"maybe" -o X"$AUTH_EXCL" = X""; then
2715: AC_MSG_NOTICE([using AIX general authentication])
2716: AC_DEFINE(HAVE_AIXAUTH)
2717: AUTH_OBJS="$AUTH_OBJS aix_auth.lo";
2718: SUDOERS_LIBS="${SUDOERS_LIBS} -ls"
2719: AUTH_EXCL=AIX_AUTH
2720: fi
2721: fi
2722:
2723: dnl
2724: dnl BSD authentication
2725: dnl If set to "maybe" only enable if no other exclusive method in use.
2726: dnl
2727: if test ${with_bsdauth-'no'} != "no"; then
2728: AC_CHECK_HEADER(bsd_auth.h, AC_DEFINE(HAVE_BSD_AUTH_H)
2729: [AUTH_OBJS="$AUTH_OBJS bsdauth.lo"]
2730: [BSDAUTH_USAGE='[[-a auth_type]] ']
2731: [AUTH_EXCL=BSD_AUTH; BAMAN=1],
2732: [AC_MSG_ERROR([BSD authentication was specified but bsd_auth.h could not be found])])
2733: fi
2734:
2735: dnl
2736: dnl SIA authentication for Tru64 Unix
2737: dnl
2738: if test ${CHECKSIA-'false'} = "true"; then
2739: AC_CHECK_FUNCS(sia_ses_init, [found=true], [found=false])
2740: if test "$found" = "true"; then
2741: AUTH_EXCL=SIA
2742: AUTH_OBJS="$AUTH_OBJS sia.lo"
2743: fi
2744: fi
2745:
2746: dnl
2747: dnl extra FWTK libs + includes
2748: dnl
2749: if test ${with_fwtk-'no'} != "no"; then
2750: if test "$with_fwtk" != "yes"; then
2751: SUDO_APPEND_LIBPATH(SUDOERS_LDFLAGS, [${with_fwtk}])
2752: CPPFLAGS="${CPPFLAGS} -I${with_fwtk}"
2753: with_fwtk=yes
2754: fi
2755: SUDOERS_LIBS="${SUDOERS_LIBS} -lauth -lfwall"
2756: AUTH_OBJS="$AUTH_OBJS fwtk.lo"
2757: fi
2758:
2759: dnl
2760: dnl extra SecurID lib + includes
2761: dnl
2762: if test ${with_SecurID-'no'} != "no"; then
2763: if test "$with_SecurID" != "yes"; then
2764: :
2765: elif test -d /usr/ace/examples; then
2766: with_SecurID=/usr/ace/examples
2767: else
2768: with_SecurID=/usr/ace
2769: fi
2770: CPPFLAGS="${CPPFLAGS} -I${with_SecurID}"
2771: SUDO_APPEND_LIBPATH(LDFLAGS, [${with_SecurID}])
1.1.1.2 misho 2772: SUDOERS_LIBS="${SUDOERS_LIBS} -laceclnt -lpthread"
2773: AUTH_OBJS="$AUTH_OBJS securid5.lo";
1.1 misho 2774: fi
2775:
2776: dnl
2777: dnl Non-mutually exclusive auth checks come next.
2778: dnl Note: passwd must be last of all!
2779: dnl
2780:
2781: dnl
2782: dnl Convert default authentication methods to with_* if
2783: dnl no explicit authentication scheme was specified.
2784: dnl
2785: if test -z "${AUTH_EXCL}" -a -n "$AUTH_DEF"; then
2786: for auth in $AUTH_DEF; do
2787: case $auth in
2788: passwd) : ${with_passwd='maybe'};;
2789: esac
2790: done
2791: fi
2792:
2793: dnl
2794: dnl Kerberos V
2795: dnl There is an easy way and a hard way...
2796: dnl
2797: if test ${with_kerb5-'no'} != "no"; then
2798: AC_CHECK_PROG(KRB5CONFIG, krb5-config, yes, "")
2799: if test -n "$KRB5CONFIG"; then
2800: AC_DEFINE(HAVE_KERB5)
2801: AUTH_OBJS="$AUTH_OBJS kerb5.lo"
2802: CPPFLAGS="$CPPFLAGS `krb5-config --cflags`"
2803: SUDOERS_LIBS="$SUDOERS_LIBS `krb5-config --libs`"
2804: dnl
2805: dnl Try to determine whether we have Heimdal or MIT Kerberos
2806: dnl
2807: AC_MSG_CHECKING(whether we are using Heimdal)
2808: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <krb5.h>]], [[const char *tmp = heimdal_version;]])], [
2809: AC_MSG_RESULT(yes)
2810: AC_DEFINE(HAVE_HEIMDAL)
2811: ], [
2812: AC_MSG_RESULT(no)
2813: ]
2814: )
2815: else
2816: AC_DEFINE(HAVE_KERB5)
2817: dnl
2818: dnl Use the specified directory, if any, else search for correct inc dir
2819: dnl
2820: if test "$with_kerb5" = "yes"; then
2821: found=no
2822: O_CPPFLAGS="$CPPFLAGS"
2823: for dir in "" "kerberosV/" "krb5/" "kerberos5/" "kerberosv5/"; do
2824: CPPFLAGS="$O_CPPFLAGS -I/usr/include/${dir}"
2825: AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[#include <krb5.h>]])], [found=yes; break])
2826: done
2827: if test X"$found" = X"no"; then
2828: CPPFLAGS="$O_CPPFLAGS"
2829: AC_MSG_WARN([Unable to locate Kerberos V include files, you will have to edit the Makefile and add -I/path/to/krb/includes to CPPFLAGS])
2830: fi
2831: else
2832: dnl XXX - try to include krb5.h here too
2833: SUDO_APPEND_LIBPATH(SUDOERS_LDFLAGS, [${with_kerb5}/lib])
2834: CPPFLAGS="$CPPFLAGS -I${with_kerb5}/include"
2835: fi
2836:
2837: dnl
2838: dnl Try to determine whether we have Heimdal or MIT Kerberos
2839: dnl
2840: AC_MSG_CHECKING(whether we are using Heimdal)
2841: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <krb5.h>]], [[const char *tmp = heimdal_version;]])], [
2842: AC_MSG_RESULT(yes)
2843: AC_DEFINE(HAVE_HEIMDAL)
2844: # XXX - need to check whether -lcrypo is needed!
2845: SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5 -lcrypto -ldes -lcom_err -lasn1"
2846: AC_CHECK_LIB(roken, main, [SUDOERS_LIBS="${SUDOERS_LIBS} -lroken"])
2847: ], [
2848: AC_MSG_RESULT(no)
2849: SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5 -lk5crypto -lcom_err"
2850: AC_CHECK_LIB(krb5support, main, [SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5support"])
2851: ])
2852: AUTH_OBJS="$AUTH_OBJS kerb5.lo"
2853: fi
2854: _LIBS="$LIBS"
2855: LIBS="${LIBS} ${SUDOERS_LIBS}"
2856: AC_CHECK_FUNCS(krb5_verify_user krb5_init_secure_context)
2857: AC_CHECK_FUNCS(krb5_get_init_creds_opt_alloc, [
2858: AC_CACHE_CHECK([whether krb5_get_init_creds_opt_free takes a context],
2859: sudo_cv_krb5_get_init_creds_opt_free_two_args, [
2860: AC_COMPILE_IFELSE(
2861: [AC_LANG_PROGRAM(
2862: [[#include <krb5.h>]],
2863: [[krb5_get_init_creds_opt_free(NULL, NULL);]]
2864: )],
2865: [sudo_cv_krb5_get_init_creds_opt_free_two_args=yes],
2866: [sudo_cv_krb5_get_init_creds_opt_free_two_args=no]
2867: )
2868: ]
2869: )
2870: ])
2871: if test X"$sudo_cv_krb5_get_init_creds_opt_free_two_args" = X"yes"; then
2872: AC_DEFINE(HAVE_KRB5_GET_INIT_CREDS_OPT_FREE_TWO_ARGS)
2873: fi
2874: LIBS="$_LIBS"
1.1.1.2 misho 2875: AC_MSG_CHECKING(whether to use an instance name for Kerberos V)
2876: AC_ARG_ENABLE(kerb5-instance,
2877: [AS_HELP_STRING([--enable-kerb5-instance], [instance string to append to the username (separated by a slash)])],
2878: [ case "$enableval" in
2879: yes) AC_MSG_ERROR(["must give --enable-kerb5-instance an argument."])
2880: ;;
2881: no) AC_MSG_RESULT(no)
2882: ;;
2883: *) SUDO_DEFINE_UNQUOTED(SUDO_KRB5_INSTANCE, "$enableval")
2884: AC_MSG_RESULT([$enableval])
2885: ;;
2886: esac], AC_MSG_RESULT(no))
1.1 misho 2887: fi
2888:
2889: dnl
2890: dnl extra AFS libs and includes
2891: dnl
2892: if test ${with_AFS-'no'} = "yes"; then
2893:
2894: # looks like the "standard" place for AFS libs is /usr/afsws/lib
2895: AFSLIBDIRS="/usr/lib/afs /usr/afsws/lib /usr/afsws/lib/afs"
2896: for i in $AFSLIBDIRS; do
2897: if test -d ${i}; then
2898: SUDO_APPEND_LIBPATH(SUDOERS_LDFLAGS, [$i])
2899: FOUND_AFSLIBDIR=true
2900: fi
2901: done
2902: if test -z "$FOUND_AFSLIBDIR"; then
2903: AC_MSG_WARN([Unable to locate AFS libraries, you will have to edit the Makefile and add -L/path/to/afs/libs to SUDOERS_LDFLAGS or rerun configure with the --with-libpath options.])
2904: fi
2905:
2906: # Order is important here. Note that we build AFS_LIBS from right to left
2907: # since AFS_LIBS may be initialized with BSD compat libs that must go last
2908: AFS_LIBS="-laudit ${AFS_LIBS}"
2909: for i in $AFSLIBDIRS; do
2910: if test -f ${i}/util.a; then
2911: AFS_LIBS="${i}/util.a ${AFS_LIBS}"
2912: FOUND_UTIL_A=true
2913: break;
2914: fi
2915: done
2916: if test -z "$FOUND_UTIL_A"; then
2917: AFS_LIBS="-lutil ${AFS_LIBS}"
2918: fi
2919: AFS_LIBS="-lkauth -lprot -lubik -lauth -lrxkad -lsys -ldes -lrx -llwp -lcom_err ${AFS_LIBS}"
2920:
2921: # AFS includes may live in /usr/include on some machines...
2922: for i in /usr/afsws/include; do
2923: if test -d ${i}; then
2924: CPPFLAGS="${CPPFLAGS} -I${i}"
2925: FOUND_AFSINCDIR=true
2926: fi
2927: done
2928:
2929: if test -z "$FOUND_AFSLIBDIR"; then
2930: AC_MSG_WARN([Unable to locate AFS include dir, you may have to edit the Makefile and add -I/path/to/afs/includes to CPPFLAGS or rerun configure with the --with-incpath options.])
2931: fi
2932:
2933: AUTH_OBJS="$AUTH_OBJS afs.lo"
2934: fi
2935:
2936: dnl
2937: dnl extra DCE obj + lib
2938: dnl Order of libs in HP-UX 10.x is important, -ldce must be last.
2939: dnl
2940: if test ${with_DCE-'no'} = "yes"; then
2941: DCE_OBJS="${DCE_OBJS} dce_pwent.o"
2942: SUDOERS_LIBS="${SUDOERS_LIBS} -ldce"
2943: AUTH_OBJS="$AUTH_OBJS dce.lo"
2944: fi
2945:
2946: dnl
2947: dnl extra S/Key lib and includes
2948: dnl
2949: if test "${with_skey-'no'}" = "yes"; then
2950: O_LDFLAGS="$LDFLAGS"
2951: if test "$with_skey" != "yes"; then
2952: CPPFLAGS="${CPPFLAGS} -I${with_skey}/include"
2953: SUDO_APPEND_LIBPATH(LDFLAGS, [${with_skey}/lib])
2954: SUDO_APPEND_LIBPATH(SUDOERS_LDFLAGS, [${with_skey}/lib])
2955: AC_CHECK_HEADER([skey.h], [found=yes], [found=no], [#include <stdio.h>])
2956: else
2957: found=no
2958: O_CPPFLAGS="$CPPFLAGS"
2959: for dir in "" "/usr/local" "/usr/contrib"; do
2960: test -n "$dir" && CPPFLAGS="$O_CPPFLAGS -I${dir}/include"
2961: AC_CHECK_HEADER([skey.h], [found=yes; break], [],
1.1.1.3 ! misho 2962: [#include <stdio.h>])
1.1 misho 2963: done
2964: if test "$found" = "no" -o -z "$dir"; then
2965: CPPFLAGS="$O_CPPFLAGS"
2966: else
2967: SUDO_APPEND_LIBPATH(LDFLAGS, [${dir}/lib])
2968: SUDO_APPEND_LIBPATH(SUDOERS_LDFLAGS, [${dir}/lib])
2969: fi
2970: if test "$found" = "no"; then
2971: AC_MSG_WARN([Unable to locate skey.h, you will have to edit the Makefile and add -I/path/to/skey/includes to CPPFLAGS])
2972: fi
2973: fi
2974: AC_CHECK_LIB(skey, main, [found=yes], [AC_MSG_WARN([Unable to locate libskey.a, you will have to edit the Makefile and add -L/path/to/skey/lib to SUDOERS_LDFLAGS])])
2975: AC_CHECK_LIB(skey, skeyaccess, AC_DEFINE(HAVE_SKEYACCESS))
2976:
2977: AC_MSG_CHECKING([for RFC1938-compliant skeychallenge])
2978: AC_COMPILE_IFELSE(
2979: [AC_LANG_PROGRAM(
2980: [[#include <stdio.h>
2981: #include <skey.h>]],
2982: [[skeychallenge(NULL, NULL, NULL, 0);]]
2983: )], [
2984: AC_DEFINE(HAVE_RFC1938_SKEYCHALLENGE)
2985: AC_MSG_RESULT([yes])
2986: ], [
2987: AC_MSG_RESULT([no])
2988: ]
2989: )
2990:
2991: LDFLAGS="$O_LDFLAGS"
2992: SUDOERS_LIBS="${SUDOERS_LIBS} -lskey"
2993: AUTH_OBJS="$AUTH_OBJS rfc1938.lo"
2994: fi
2995:
2996: dnl
2997: dnl extra OPIE lib and includes
2998: dnl
2999: if test "${with_opie-'no'}" = "yes"; then
3000: O_LDFLAGS="$LDFLAGS"
3001: if test "$with_opie" != "yes"; then
3002: CPPFLAGS="${CPPFLAGS} -I${with_opie}/include"
3003: SUDO_APPEND_LIBPATH(LDFLAGS, [${with_opie}/lib])
3004: SUDO_APPEND_LIBPATH(SUDOERS_LDFLAGS, [${with_opie}/lib])
3005: AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[#include <opie.h>]])], [found=yes], [found=no])
3006: else
3007: found=no
3008: O_CPPFLAGS="$CPPFLAGS"
3009: for dir in "" "/usr/local" "/usr/contrib"; do
3010: test -n "$dir" && CPPFLAGS="$O_CPPFLAGS -I${dir}/include"
3011: AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[#include <opie.h>]])], [found=yes; break])
3012: done
3013: if test "$found" = "no" -o -z "$dir"; then
3014: CPPFLAGS="$O_CPPFLAGS"
3015: else
3016: SUDO_APPEND_LIBPATH(LDFLAGS, [${dir}/lib])
3017: SUDO_APPEND_LIBPATH(SUDOERS_LDFLAGS, [${dir}/lib])
3018: fi
3019: if test "$found" = "no"; then
3020: AC_MSG_WARN([Unable to locate opie.h, you will have to edit the Makefile and add -I/path/to/opie/includes to CPPFLAGS])
3021: fi
3022: fi
3023: AC_CHECK_LIB(opie, main, [found=yes], [AC_MSG_WARN([Unable to locate libopie.a, you will have to edit the Makefile and add -L/path/to/opie/lib to SUDOERS_LDFLAGS])])
3024: LDFLAGS="$O_LDFLAGS"
3025: SUDOERS_LIBS="${SUDOERS_LIBS} -lopie"
3026: AUTH_OBJS="$AUTH_OBJS rfc1938.lo"
3027: fi
3028:
3029: dnl
3030: dnl Check for shadow password routines if we have not already done so.
3031: dnl If there is a specific list of functions to check we do that first.
3032: dnl Otherwise, we check for SVR4-style and then SecureWare-style.
3033: dnl
3034: if test ${with_passwd-'no'} != "no"; then
3035: dnl
3036: dnl if crypt(3) not in libc, look elsewhere
3037: dnl
3038: if test -z "$LIB_CRYPT"; then
3039: _LIBS="$LIBS"
3040: AC_SEARCH_LIBS([crypt], [crypt crypt_d ufc], [test -n "$ac_lib" && SUDOERS_LIBS="${SUDOERS_LIBS} $ac_res"])
3041: LIBS="$_LIBS"
3042: fi
3043:
3044: if test "$CHECKSHADOW" = "true" -a -n "$shadow_funcs"; then
3045: _LIBS="$LIBS"
3046: LIBS="$LIBS $shadow_libs"
3047: found=no
3048: AC_CHECK_FUNCS($shadow_funcs, [found=yes])
3049: if test "$found" = "yes"; then
3050: SUDOERS_LIBS="$SUDOERS_LIBS $shadow_libs"
3051: elif test -n "$shadow_libs_optional"; then
3052: LIBS="$LIBS $shadow_libs_optional"
3053: AC_CHECK_FUNCS($shadow_funcs, [found=yes])
3054: if test "$found" = "yes"; then
3055: SUDOERS_LIBS="$SUDOERS_LIBS $shadow_libs $shadow_libs_optional"
3056: fi
3057: fi
3058: if test "$found" = "yes"; then
3059: case "$shadow_funcs" in
3060: *getprpwnam*) SECUREWARE=1;;
3061: esac
3062: test -n "$shadow_defs" && OSDEFS="${OSDEFS} $shadow_defs"
3063: else
3064: LIBS="$_LIBS"
3065: fi
3066: CHECKSHADOW=false
3067: fi
3068: if test "$CHECKSHADOW" = "true"; then
3069: AC_SEARCH_LIBS([getspnam], [gen], [AC_DEFINE(HAVE_GETSPNAM)] [CHECKSHADOW=false; test -n "$ac_lib" && SUDOERS_LIBS="${SUDOERS_LIBS} $ac_res"])
3070: fi
3071: if test "$CHECKSHADOW" = "true"; then
3072: AC_SEARCH_LIBS([getprpwnam], [sec security prot], [AC_DEFINE(HAVE_GETPRPWNAM)] [CHECKSHADOW=false; SECUREWARE=1; test -n "$ac_lib" && SUDOERS_LIBS="${SUDOERS_LIBS} $ac_res"])
3073: fi
3074: if test -n "$SECUREWARE"; then
3075: AC_CHECK_FUNCS(bigcrypt set_auth_parameters initprivs)
3076: AUTH_OBJS="$AUTH_OBJS secureware.lo"
3077: fi
3078: fi
3079:
3080: dnl
3081: dnl extra lib and .o file for LDAP support
3082: dnl
3083: if test ${with_ldap-'no'} != "no"; then
3084: _LDFLAGS="$LDFLAGS"
3085: if test "$with_ldap" != "yes"; then
3086: SUDO_APPEND_LIBPATH(SUDOERS_LDFLAGS, [${with_ldap}/lib])
3087: SUDO_APPEND_LIBPATH(LDFLAGS, [${with_ldap}/lib])
3088: CPPFLAGS="${CPPFLAGS} -I${with_ldap}/include"
3089: with_ldap=yes
3090: fi
3091: SUDOERS_OBJS="${SUDOERS_OBJS} ldap.lo"
3092: LDAP=""
3093:
3094: AC_MSG_CHECKING([for LDAP libraries])
3095: LDAP_LIBS=""
3096: _LIBS="$LIBS"
3097: found=no
3098: for l in -lldap -llber '-lssl -lcrypto'; do
3099: LIBS="${LIBS} $l"
3100: LDAP_LIBS="${LDAP_LIBS} $l"
3101: AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3102: #include <lber.h>
3103: #include <ldap.h>]], [[(void)ldap_init(0, 0)]])], [found=yes; break])
3104: done
3105: if test "$found" = "no"; then
3106: LDAP_LIBS=""
3107: LIBS="$_LIBS"
3108: for l in -libmldap -lidsldif; do
3109: LIBS="${LIBS} $l"
3110: LDAP_LIBS="${LDAP_LIBS} $l"
3111: AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3112: #include <lber.h>
3113: #include <ldap.h>]], [[(void)ldap_init(0, 0)]])], [found=yes; break])
3114: done
3115: fi
3116: dnl if nothing linked just try with -lldap
3117: if test "$found" = "no"; then
3118: LIBS="${_LIBS} -lldap"
3119: LDAP_LIBS="-lldap"
3120: AC_MSG_RESULT([not found, using -lldap])
3121: else
3122: AC_MSG_RESULT([$LDAP_LIBS])
3123: fi
3124: dnl check if we need to link with -llber for ber_set_option
3125: OLIBS="$LIBS"
3126: AC_SEARCH_LIBS([ber_set_option], [lber], [found=yes], [found=no])
3127: if test X"$found" = X"yes" -a X"$LIBS" != X"$OLIBS"; then
3128: LDAP_LIBS="$LDAP_LIBS -llber"
3129: fi
3130: dnl check if ldap.h includes lber.h for us
3131: AC_MSG_CHECKING([whether lber.h is needed])
3132: AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3133: #include <ldap.h>]], [[(void)ldap_init(0, 0)]])], [AC_MSG_RESULT([no])], [
3134: AC_MSG_RESULT([yes])
3135: AC_DEFINE(HAVE_LBER_H)])
3136:
3137: AC_CHECK_HEADERS([sasl/sasl.h] [sasl.h], [AC_CHECK_FUNCS(ldap_sasl_interactive_bind_s)], [break])
3138: AC_CHECK_HEADERS([ldap_ssl.h] [mps/ldap_ssl.h], [break], [], [#include <ldap.h>])
1.1.1.3 ! misho 3139: AC_CHECK_FUNCS(ldap_initialize ldap_start_tls_s ldapssl_init ldapssl_set_strength ldap_unbind_ext_s ldap_str2dn ldap_create ldap_sasl_bind_s ldap_ssl_init ldap_ssl_client_init ldap_start_tls_s_np)
1.1 misho 3140: AC_CHECK_FUNCS(ldap_search_ext_s ldap_search_st, [break])
3141:
3142: if test X"$check_gss_krb5_ccache_name" = X"yes"; then
3143: AC_CHECK_LIB(gssapi, gss_krb5_ccache_name,
3144: AC_DEFINE(HAVE_GSS_KRB5_CCACHE_NAME)
3145: [LDAP_LIBS="${LDAP_LIBS} -lgssapi"],
3146: AC_CHECK_LIB(gssapi_krb5, gss_krb5_ccache_name,
3147: AC_DEFINE(HAVE_GSS_KRB5_CCACHE_NAME)
3148: [LDAP_LIBS="${LDAP_LIBS} -lgssapi_krb5"])
3149: )
3150:
3151: # gssapi headers may be separate or part of Kerberos V
3152: found=no
3153: O_CPPFLAGS="$CPPFLAGS"
3154: for dir in "" "kerberosV" "krb5" "kerberos5" "kerberosv5"; do
3155: test X"$dir" != X"" && CPPFLAGS="$O_CPPFLAGS -I/usr/include/${dir}"
3156: AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[#include <gssapi/gssapi.h>]])], [found="gssapi/gssapi.h"; break], [AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[#include <gssapi.h>]])], [found="gssapi.h"; break])])
3157: done
3158: if test X"$found" != X"no"; then
3159: AC_CHECK_HEADERS([$found])
3160: if test X"$found" = X"gssapi/gssapi.h"; then
3161: AC_CHECK_HEADERS([gssapi/gssapi_krb5.h])
3162: fi
3163: else
3164: CPPFLAGS="$O_CPPFLAGS"
3165: AC_MSG_WARN([Unable to locate gssapi.h, you will have to edit the Makefile and add -I/path/to/gssapi/includes to CPPFLAGS])
3166: fi
3167: fi
3168:
3169: SUDOERS_LIBS="${SUDOERS_LIBS} ${LDAP_LIBS}"
3170: LIBS="$_LIBS"
3171: LDFLAGS="$_LDFLAGS"
3172: fi
3173:
3174: #
3175: # How to do dynamic object loading.
3176: # We support dlopen() and sh_load(), else fall back to static loading.
3177: #
3178: case "$lt_cv_dlopen" in
3179: dlopen)
3180: AC_DEFINE(HAVE_DLOPEN)
3181: SUDOERS_OBJS="$SUDOERS_OBJS plugin_error.lo"
3182: LT_STATIC="--tag=disable-static"
3183: ;;
3184: shl_load)
3185: AC_DEFINE(HAVE_SHL_LOAD)
3186: SUDOERS_OBJS="$SUDOERS_OBJS plugin_error.lo"
3187: LT_STATIC="--tag=disable-static"
3188: AC_LIBOBJ(dlopen)
3189: ;;
3190: *)
3191: if test X"${ac_cv_func_dlopen}" = X"yes"; then
3192: AC_MSG_ERROR(["dlopen present but libtool doesn't appear to support your platform."])
3193: fi
3194: # Preload sudoers module symbols
3195: SUDO_OBJS="${SUDO_OBJS} preload.o"
3196: SUDO_LIBS="${SUDO_LIBS} \$(top_builddir)/plugins/sudoers/sudoers.la"
3197: LT_STATIC=""
3198: AC_LIBOBJ(dlopen)
3199: ;;
3200: esac
3201:
3202: #
3203: # Add library needed for dynamic loading, if any.
3204: #
3205: LIBDL="$lt_cv_dlopen_libs"
3206: if test X"$LIBDL" != X""; then
3207: SUDO_LIBS="${SUDO_LIBS} $LIBDL"
3208: SUDOERS_LIBS="${SUDOERS_LIBS} $LIBDL"
3209: fi
3210:
1.1.1.3 ! misho 3211: # On HP-UX, you cannot dlopen() a shared object that uses pthreads unless
! 3212: # the main program is linked against -lpthread. We have no knowledge of
! 3213: # what libraries a plugin may depend on (e.g. HP-UX LDAP which uses pthreads)
! 3214: # so always link against -lpthread on HP-UX if it is available.
1.1 misho 3215: # This check should go after all other libraries tests.
3216: case "$host" in
3217: *-*-hpux*)
3218: AC_CHECK_LIB(pthread, main, [SUDO_LIBS="${SUDO_LIBS} -lpthread"])
3219: ;;
3220: esac
3221:
3222: dnl
3223: dnl Add $blibpath to SUDOERS_LDFLAGS if specified by the user or if we
3224: dnl added -L dirpaths to SUDOERS_LDFLAGS.
3225: dnl
3226: if test -n "$blibpath"; then
3227: if test -n "$blibpath_add"; then
3228: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS -Wl,-blibpath:${blibpath}${blibpath_add}"
3229: elif test -n "$with_blibpath" -a "$with_blibpath" != "yes"; then
3230: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS -Wl,-blibpath:${blibpath}"
3231: fi
3232: fi
3233:
3234: dnl
3235: dnl Check for log file, timestamp and iolog locations
3236: dnl
3237: if test "$utmp_style" = "LEGACY"; then
3238: SUDO_PATH_UTMP
3239: fi
3240: SUDO_LOGFILE
3241: SUDO_TIMEDIR
3242: SUDO_IO_LOGDIR
3243:
3244: dnl
1.1.1.3 ! misho 3245: dnl Turn warnings into errors.
! 3246: dnl All compiler/loader tests after this point will fail if
! 3247: dnl a warning is displayed (nornally, warnings are not fata).
! 3248: dnl
! 3249: AC_LANG_WERROR
! 3250:
! 3251: dnl
! 3252: dnl If compiler supports the -static-libgcc flag use it unless we have
! 3253: dnl GNU ld (which can avoid linking in libgcc when it is not needed).
! 3254: dnl This test relies on AC_LANG_WERROR
! 3255: dnl
! 3256: if test -n "$GCC" -a "$lt_cv_prog_gnu_ld" != "yes" -a -n "$GCC"; then
! 3257: AX_CHECK_COMPILE_FLAG([-static-libgcc], [LT_LDFLAGS="$LT_LDFLAGS -Wc,-static-libgcc"])
! 3258: fi
! 3259:
! 3260: dnl
! 3261: dnl Check for symbol visibility support.
! 3262: dnl This test relies on AC_LANG_WERROR
! 3263: dnl
! 3264: AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [
! 3265: AC_DEFINE(HAVE_DSO_VISIBILITY)
! 3266: CFLAGS="${CFLAGS} -fvisibility=hidden"
! 3267: LT_LDEXPORTS=
! 3268: LT_LDDEP=
! 3269: ], [
! 3270: NO_VIZ="-DNO_VIZ"
! 3271: if test -z "$GCC"; then
! 3272: case "$host" in
! 3273: *-*-hpux*)
! 3274: AX_CHECK_COMPILE_FLAG([-Bhidden_def], [
! 3275: AC_DEFINE(HAVE_DSO_VISIBILITY)
! 3276: CFLAGS="${CFLAGS} -Bhidden_def"
! 3277: LT_LDEXPORTS=
! 3278: LT_LDDEP=
! 3279: ])
! 3280: ;;
! 3281: *-*-solaris2*)
! 3282: AX_CHECK_COMPILE_FLAG([-xldscope=hidden], [
! 3283: AC_DEFINE(HAVE_DSO_VISIBILITY)
! 3284: CFLAGS="${CFLAGS} -xldscope=hidden"
! 3285: LT_LDEXPORTS=
! 3286: LT_LDDEP=
! 3287: ])
! 3288: ;;
! 3289: esac
! 3290: fi
! 3291: ])
! 3292:
! 3293: dnl
! 3294: dnl If the compiler doesn't have symbol visibility support, it may
! 3295: dnl support version scripts (only GNU and Solaris ld).
! 3296: dnl This test relies on AC_LANG_WERROR
! 3297: dnl
! 3298: if test -n "$LT_LDEXPORTS"; then
! 3299: if test "$lt_cv_prog_gnu_ld" = "yes"; then
! 3300: AC_CACHE_CHECK([whether ld supports anonymous map files],
! 3301: [sudo_cv_var_gnu_ld_anon_map],
! 3302: [
! 3303: cat > conftest.map <<-EOF
! 3304: {
! 3305: global: foo;
! 3306: local: *;
! 3307: };
! 3308: EOF
! 3309: _CFLAGS="$CFLAGS"
! 3310: CFLAGS="$CFLAGS $lt_prog_compiler_pic"
! 3311: _LDFLAGS="$LDFLAGS"
! 3312: LDFLAGS="$LDFLAGS -fpic -shared -Wl,--version-script,./conftest.map"
! 3313: AC_TRY_LINK([int foo;], [], [
! 3314: sudo_cv_var_gnu_ld_anon_map=yes
! 3315: ])
! 3316: CFLAGS="$_CFLAGS"
! 3317: LDFLAGS="$_LDFLAGS"
! 3318: ]
! 3319: )
! 3320: if test "$sudo_cv_var_gnu_ld_anon_map" = "yes"; then
! 3321: LT_LDEXPORTS=; LT_LDDEP="\$(shlib_map)"; LT_LDMAP="-Wl,--version-script,\$(shlib_map)"
! 3322: fi
! 3323: else
! 3324: case "$host" in
! 3325: *-*-solaris2*)
! 3326: AC_CACHE_CHECK([whether ld supports anonymous map files],
! 3327: [sudo_cv_var_solaris_ld_anon_map],
! 3328: [
! 3329: cat > conftest.map <<-EOF
! 3330: {
! 3331: global: foo;
! 3332: local: *;
! 3333: };
! 3334: EOF
! 3335: _CFLAGS="$CFLAGS"
! 3336: CFLAGS="$CFLAGS $lt_prog_compiler_pic"
! 3337: _LDFLAGS="$LDFLAGS"
! 3338: LDFLAGS="$LDFLAGS -shared -Wl,-M,./conftest.map"
! 3339: AC_TRY_LINK([int foo;], [], [
! 3340: sudo_cv_var_solaris_ld_anon_map=yes
! 3341: ])
! 3342: CFLAGS="$_CFLAGS"
! 3343: LDFLAGS="$_LDFLAGS"
! 3344: ]
! 3345: )
! 3346: if test "$sudo_cv_var_solaris_ld_anon_map" = "yes"; then
! 3347: LT_LDEXPORTS=; LT_LDDEP="\$(shlib_map)"; LT_LDMAP="-Wl,-M,\$(shlib_map)"
! 3348: fi
! 3349: ;;
! 3350: *-*-hpux*)
! 3351: AC_CACHE_CHECK([whether ld supports controlling exported symbols],
! 3352: [sudo_cv_var_hpux_ld_symbol_export],
! 3353: [
! 3354: echo "+e foo" > conftest.opt
! 3355: _CFLAGS="$CFLAGS"
! 3356: CFLAGS="$CFLAGS $lt_prog_compiler_pic"
! 3357: _LDFLAGS="$LDFLAGS"
! 3358: if test -n "$GCC"; then
! 3359: LDFLAGS="$LDFLAGS -shared -Wl,-c,./conftest.opt"
! 3360: else
! 3361: LDFLAGS="$LDFLAGS -Wl,-b -Wl,-c,./conftest.opt"
! 3362: fi
! 3363: AC_TRY_LINK([int foo;], [], [
! 3364: sudo_cv_var_hpux_ld_symbol_export=yes
! 3365: ])
! 3366: CFLAGS="$_CFLAGS"
! 3367: LDFLAGS="$_LDFLAGS"
! 3368: ]
! 3369: )
! 3370: if test "$sudo_cv_var_hpux_ld_symbol_export" = "yes"; then
! 3371: LT_LDEXPORTS=; LT_LDDEP="\$(shlib_opt)"; LT_LDOPT="-Wl,-c,\$(shlib_opt)"
! 3372: fi
! 3373: ;;
! 3374: esac
! 3375: fi
! 3376: fi
! 3377:
! 3378: dnl
! 3379: dnl Check for PIE executable support if using gcc.
! 3380: dnl This test relies on AC_LANG_WERROR
! 3381: dnl
! 3382: if test "$enable_pie" != "no" -a -n "$GCC"; then
! 3383: AX_CHECK_COMPILE_FLAG([-fPIE], [
! 3384: _CFLAGS="$CFLAGS"
! 3385: CFLAGS="$CFLAGS -fPIE"
! 3386: AX_CHECK_LINK_FLAG([-pie], [
! 3387: PIE_CFLAGS="-fPIE"
! 3388: PIE_LDFLAGS="-pie"
! 3389: ])
! 3390: CFLAGS="$_CFLAGS"
! 3391: ])
! 3392: fi
! 3393:
! 3394: dnl
! 3395: dnl Check for -fstack-protector and -z relro support
! 3396: dnl This test relies on AC_LANG_WERROR
! 3397: dnl
! 3398: if test "$enable_hardening" != "no"; then
! 3399: AX_CHECK_COMPILE_FLAG([-fstack-protector], [
! 3400: AX_CHECK_LINK_FLAG([-fstack-protector], [
! 3401: CFLAGS="${CFLAGS} -fstack-protector"
! 3402: LT_LDFLAGS="${LT_LDFLAGS} -Wc,-fstack-protector"
! 3403: ])
! 3404: ])
! 3405: AX_CHECK_LINK_FLAG([-Wl,-z,relro], [LDFLAGS="${LDFLAGS} -Wl,-z,relro"])
! 3406: fi
! 3407:
! 3408: dnl
1.1 misho 3409: dnl Use passwd auth module?
3410: dnl
3411: case "$with_passwd" in
3412: yes|maybe)
3413: AUTH_OBJS="$AUTH_OBJS getspwuid.lo passwd.lo"
3414: ;;
3415: *)
3416: AC_DEFINE(WITHOUT_PASSWD)
3417: if test -z "$AUTH_OBJS"; then
3418: AC_MSG_ERROR([no authentication methods defined.])
3419: fi
3420: ;;
3421: esac
3422: AUTH_OBJS=${AUTH_OBJS# }
3423: _AUTH=`echo "$AUTH_OBJS" | sed -e 's/\.lo//g' -e 's/getspwuid *//'`
3424: AC_MSG_NOTICE([using the following authentication methods: $_AUTH])
3425:
3426: dnl
3427: dnl LIBS may contain duplicates from SUDO_LIBS, SUDOERS_LIBS, or NET_LIBS
3428: dnl
3429: if test -n "$LIBS"; then
3430: L="$LIBS"
3431: LIBS=
3432: for l in ${L}; do
3433: dupe=0
3434: for sl in ${SUDO_LIBS} ${SUDOERS_LIBS} ${NET_LIBS}; do
3435: test $l = $sl && dupe=1
3436: done
3437: test $dupe = 0 && LIBS="${LIBS} $l"
3438: done
3439: fi
3440:
3441: dnl
3442: dnl We add -Wall and -Werror after all tests so they don't cause failures
3443: dnl
3444: if test -n "$GCC"; then
3445: if test X"$enable_warnings" = X"yes" -o X"$with_devel" = X"yes"; then
3446: CFLAGS="${CFLAGS} -Wall"
3447: fi
3448: if test X"$enable_werror" = X"yes"; then
3449: CFLAGS="${CFLAGS} -Werror"
3450: fi
3451: fi
3452:
3453: dnl
1.1.1.3 ! misho 3454: dnl Skip regress tests and sudoers sanity check if cross compiling.
! 3455: dnl
! 3456: CROSS_COMPILING="$cross_compiling"
! 3457:
! 3458: dnl
1.1 misho 3459: dnl Set exec_prefix
3460: dnl
3461: test "$exec_prefix" = "NONE" && exec_prefix='$(prefix)'
3462:
3463: dnl
3464: dnl Defer setting _PATH_SUDO_NOEXEC until after exec_prefix is set
3465: dnl XXX - this is gross!
3466: dnl
3467: if test X"$with_noexec" != X"no" -o X"$with_selinux" != X"no"; then
3468: oexec_prefix="$exec_prefix"
3469: if test "$exec_prefix" = '$(prefix)'; then
3470: if test "$prefix" = "NONE"; then
3471: exec_prefix="$ac_default_prefix"
3472: else
3473: exec_prefix="$prefix"
3474: fi
3475: fi
3476: if test X"$with_noexec" != X"no"; then
3477: PROGS="${PROGS} libsudo_noexec.la"
3478: INSTALL_NOEXEC="install-noexec"
3479:
1.1.1.2 misho 3480: noexec_file="$with_noexec"
3481: _noexec_file=
3482: while test X"$noexec_file" != X"$_noexec_file"; do
3483: _noexec_file="$noexec_file"
3484: eval noexec_file="$_noexec_file"
3485: done
1.1 misho 3486: SUDO_DEFINE_UNQUOTED(_PATH_SUDO_NOEXEC, "$noexec_file", [The fully qualified pathname of sudo_noexec.so])
3487: fi
3488: if test X"$with_selinux" != X"no"; then
1.1.1.2 misho 3489: sesh_file="$libexecdir/sesh"
3490: _sesh_file=
3491: while test X"$sesh_file" != X"$_sesh_file"; do
3492: _sesh_file="$sesh_file"
3493: eval sesh_file="$_sesh_file"
3494: done
1.1 misho 3495: SUDO_DEFINE_UNQUOTED(_PATH_SUDO_SESH, "$sesh_file", [The fully qualified pathname of sesh])
3496: fi
1.1.1.2 misho 3497: PLUGINDIR="$with_plugindir"
3498: _PLUGINDIR=
3499: while test X"$PLUGINDIR" != X"$_PLUGINDIR"; do
3500: _PLUGINDIR="$PLUGINDIR"
3501: eval PLUGINDIR="$_PLUGINDIR"
3502: done
1.1 misho 3503: SUDO_DEFINE_UNQUOTED(_PATH_SUDO_PLUGIN_DIR, "$PLUGINDIR/")
3504: SUDO_DEFINE_UNQUOTED(SUDOERS_PLUGIN, "sudoers${SOEXT}")
3505: exec_prefix="$oexec_prefix"
3506: fi
3507:
3508: dnl
3509: dnl Override default configure dirs for the Makefile
3510: dnl
3511: if test X"$prefix" = X"NONE"; then
3512: test "$mandir" = '${datarootdir}/man' && mandir='$(prefix)/man'
3513: else
3514: test "$mandir" = '${datarootdir}/man' && mandir='$(datarootdir)/man'
3515: fi
3516: test "$bindir" = '${exec_prefix}/bin' && bindir='$(exec_prefix)/bin'
3517: test "$sbindir" = '${exec_prefix}/sbin' && sbindir='$(exec_prefix)/sbin'
3518: test "$libexecdir" = '${exec_prefix}/libexec' && libexecdir='$(exec_prefix)/libexec'
3519: test "$includedir" = '${prefix}/include' && includedir='$(prefix)/include'
3520: test "$datarootdir" = '${prefix}/share' && datarootdir='$(prefix)/share'
3521: test "$docdir" = '${datarootdir}/doc/${PACKAGE_TARNAME}' && docdir='$(datarootdir)/doc/$(PACKAGE_TARNAME)'
1.1.1.3 ! misho 3522: test "$localedir" = '${datarootdir}/locale' && localedir='$(datarootdir)/locale'
! 3523: test "$localstatedir" = '${prefix}/var' && localstatedir='$(prefix)/var'
1.1 misho 3524: test "$sysconfdir" = '${prefix}/etc' -a X"$with_stow" != X"yes" && sysconfdir='/etc'
3525:
3526: dnl
3527: dnl Substitute into the Makefile and man pages
3528: dnl
1.1.1.2 misho 3529: AC_CONFIG_FILES([Makefile common/Makefile compat/Makefile doc/Makefile include/Makefile src/sudo_usage.h src/Makefile plugins/sample/Makefile plugins/sample_group/Makefile plugins/system_group/Makefile plugins/sudoers/Makefile plugins/sudoers/sudoers])
1.1 misho 3530: AC_OUTPUT
3531:
3532: dnl
3533: dnl Spew any text the user needs to know about
3534: dnl
3535: if test "$with_pam" = "yes"; then
3536: case $host in
1.1.1.2 misho 3537: *-*-hpux*)
3538: if test -f /usr/lib/security/libpam_hpsec.so.1; then
3539: AC_MSG_NOTICE([You may wish to add the following line to /etc/pam.conf])
3540: AC_MSG_NOTICE([sudo session required libpam_hpsec.so.1 bypass_umask bypass_last_login])
3541: fi
3542: ;;
1.1 misho 3543: *-*-linux*)
3544: AC_MSG_NOTICE([You will need to customize sample.pam and install it as /etc/pam.d/sudo])
3545: ;;
3546: esac
3547: fi
3548:
3549: dnl
3550: dnl Autoheader templates
3551: dnl
3552: AH_TEMPLATE(BROKEN_SYSLOG, [Define to 1 if the `syslog' function returns a non-zero int to denote failure.])
3553: AH_TEMPLATE(CLASSIC_INSULTS, [Define to 1 if you want the insults from the "classic" version sudo.])
3554: AH_TEMPLATE(CSOPS_INSULTS, [Define to 1 if you want insults culled from the twisted minds of CSOps.])
3555: AH_TEMPLATE(SUDOERS_PLUGIN, [The name of the sudoers plugin, including extension.])
3556: AH_TEMPLATE(DONT_LEAK_PATH_INFO, [Define to 1 if you want sudo to display "command not allowed" instead of "command not found" when a command cannot be found.])
3557: AH_TEMPLATE(ENV_DEBUG, [Define to 1 to enable environment function debugging.])
3558: AH_TEMPLATE(ENV_EDITOR, [Define to 1 if you want visudo to honor the EDITOR and VISUAL env variables.])
3559: AH_TEMPLATE(FQDN, [Define to 1 if you want to require fully qualified hosts in sudoers.])
3560: AH_TEMPLATE(ENV_RESET, [Define to 1 to enable environment resetting by default.])
3561: AH_TEMPLATE(GOONS_INSULTS, [Define to 1 if you want insults from the "Goon Show".])
3562: AH_TEMPLATE(HAL_INSULTS, [Define to 1 if you want 2001-like insults.])
3563: AH_TEMPLATE(HAVE_AFS, [Define to 1 if you use AFS.])
3564: AH_TEMPLATE(HAVE_AIXAUTH, [Define to 1 if you use AIX general authentication.])
3565: AH_TEMPLATE(HAVE_BSD_AUTH_H, [Define to 1 if you use BSD authentication.])
3566: AH_TEMPLATE(HAVE_BSM_AUDIT, [Define to 1 to enable BSM audit support.])
3567: AH_TEMPLATE(HAVE_DCE, [Define to 1 if you use OSF DCE.])
3568: AH_TEMPLATE(HAVE_DD_FD, [Define to 1 if your `DIR' contains dd_fd.])
3569: AH_TEMPLATE(HAVE_DIRFD, [Define to 1 if you have the `dirfd' function or macro.])
3570: AH_TEMPLATE(HAVE_DISPCRYPT, [Define to 1 if you have the `dispcrypt' function.])
3571: AH_TEMPLATE(HAVE_DLOPEN, [Define to 1 if you have the `dlopen' function.])
3572: AH_TEMPLATE(HAVE_FCNTL_CLOSEM, [Define to 1 if your system has the F_CLOSEM fcntl.])
3573: AH_TEMPLATE(HAVE_FNMATCH, [Define to 1 if you have the `fnmatch' function.])
3574: AH_TEMPLATE(HAVE_FWTK, [Define to 1 if you use the FWTK authsrv daemon.])
3575: AH_TEMPLATE(HAVE_GETAUTHUID, [Define to 1 if you have the `getauthuid' function. (ULTRIX 4.x shadow passwords)])
3576: AH_TEMPLATE(HAVE_GETPRPWNAM, [Define to 1 if you have the `getprpwnam' function. (SecureWare-style shadow passwords)])
3577: AH_TEMPLATE(HAVE_GETPWANAM, [Define to 1 if you have the `getpwanam' function. (SunOS 4.x shadow passwords)])
3578: AH_TEMPLATE(HAVE_GETSPNAM, [Define to 1 if you have the `getspnam' function (SVR4-style shadow passwords)])
3579: AH_TEMPLATE(HAVE_GETSPWUID, [Define to 1 if you have the `getspwuid' function. (HP-UX <= 9.X shadow passwords)])
3580: AH_TEMPLATE(HAVE_GSS_KRB5_CCACHE_NAME, [Define to 1 if you have the `gss_krb5_ccache_name' function.])
3581: AH_TEMPLATE(HAVE_HEIMDAL, [Define to 1 if your Kerberos is Heimdal.])
3582: AH_TEMPLATE(HAVE_ISCOMSEC, [Define to 1 if you have the `iscomsec' function. (HP-UX >= 10.x check for shadow enabled)])
3583: AH_TEMPLATE(HAVE_ISSECURE, [Define to 1 if you have the `issecure' function. (SunOS 4.x check for shadow enabled)])
3584: AH_TEMPLATE(HAVE_KERB5, [Define to 1 if you use Kerberos V.])
3585: AH_TEMPLATE(HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC, [Define to 1 if you have the `krb5_get_init_creds_opt_alloc' function.])
3586: AH_TEMPLATE(HAVE_KRB5_GET_INIT_CREDS_OPT_FREE_TWO_ARGS, [Define to 1 if your `krb5_get_init_creds_opt_free' function takes two arguments.])
3587: AH_TEMPLATE(HAVE_KRB5_INIT_SECURE_CONTEXT, [Define to 1 if you have the `krb5_init_secure_context' function.])
3588: AH_TEMPLATE(HAVE_KRB5_VERIFY_USER, [Define to 1 if you have the `krb5_verify_user' function.])
3589: AH_TEMPLATE(HAVE_LBER_H, [Define to 1 if your LDAP needs <lber.h>. (OpenLDAP does not)])
3590: AH_TEMPLATE(HAVE_LDAP, [Define to 1 if you use LDAP for sudoers.])
3591: AH_TEMPLATE(HAVE_LIBINTL_H, [Define to 1 if you have the <libintl.h> header file.])
3592: AH_TEMPLATE(HAVE_LINUX_AUDIT, [Define to 1 to enable Linux audit support.])
1.1.1.3 ! misho 3593: AH_TEMPLATE(HAVE_SSSD, [Define to 1 to enable SSSD support.])
1.1 misho 3594: AH_TEMPLATE(HAVE_OPIE, [Define to 1 if you use NRL OPIE.])
3595: AH_TEMPLATE(HAVE_PAM, [Define to 1 if you use PAM authentication.])
3596: AH_TEMPLATE(HAVE_PAM_LOGIN, [Define to 1 if you use a specific PAM session for sudo -i.])
3597: AH_TEMPLATE(HAVE_PROJECT_H, [Define to 1 if you have the <project.h> header file.])
3598: AH_TEMPLATE(HAVE_SECURID, [Define to 1 if you use SecurID for authentication.])
3599: AH_TEMPLATE(HAVE_SELINUX, [Define to 1 to enable SELinux RBAC support.])
3600: AH_TEMPLATE(HAVE_SETKEYCREATECON, [Define to 1 if you have the `setkeycreatecon' function.])
3601: AH_TEMPLATE(HAVE_SHL_LOAD, [Define to 1 if you have the `shl_load' function.])
3602: AH_TEMPLATE(HAVE_SKEY, [Define to 1 if you use S/Key.])
3603: AH_TEMPLATE(HAVE_SKEYACCESS, [Define to 1 if your S/Key library has skeyaccess().])
3604: AH_TEMPLATE(HAVE_RFC1938_SKEYCHALLENGE, [Define to 1 if the skeychallenge() function is RFC1938-compliant and takes 4 arguments])
3605: AH_TEMPLATE(HAVE_ST__TIM, [Define to 1 if your struct stat uses an st__tim union])
3606: AH_TEMPLATE(HAVE_ST_MTIM, [Define to 1 if your struct stat has an st_mtim member])
3607: AH_TEMPLATE(HAVE_ST_MTIMESPEC, [Define to 1 if your struct stat has an st_mtimespec member])
3608: AH_TEMPLATE(HAVE___PROGNAME, [Define to 1 if your crt0.o defines the __progname symbol for you.])
3609: AH_TEMPLATE(HOST_IN_LOG, [Define to 1 if you want the hostname to be entered into the log file.])
3610: AH_TEMPLATE(IGNORE_DOT_PATH, [Define to 1 if you want to ignore '.' and empty PATH elements])
3611: AH_TEMPLATE(LOGGING, [Define to SLOG_SYSLOG, SLOG_FILE, or SLOG_BOTH.])
3612: AH_TEMPLATE(LONG_OTP_PROMPT, [Define to 1 if you want a two line OTP (S/Key or OPIE) prompt.])
3613: AH_TEMPLATE(NO_AUTHENTICATION, [Define to 1 if you don't want sudo to prompt for a password by default.])
3614: AH_TEMPLATE(NO_LECTURE, [Define to 1 if you don't want users to get the lecture the first they user sudo.])
3615: AH_TEMPLATE(NO_PAM_SESSION, [Define to 1 if you don't want to use sudo's PAM session support])
3616: AH_TEMPLATE(NO_ROOT_MAILER, [Define to avoid runing the mailer as root.])
3617: AH_TEMPLATE(NO_ROOT_SUDO, [Define to 1 if root should not be allowed to use sudo.])
3618: AH_TEMPLATE(NO_TTY_TICKETS, [Define to 1 if you want a single ticket file instead of per-tty files.])
3619: AH_TEMPLATE(PC_INSULTS, [Define to 1 to replace politically incorrect insults with less offensive ones.])
3620: AH_TEMPLATE(SECURE_PATH, [Define to 1 to override the user's path with a built-in one.])
3621: AH_TEMPLATE(SEND_MAIL_WHEN_NOT_OK, [Define to 1 to send mail when the user is not allowed to run a command.])
3622: AH_TEMPLATE(SEND_MAIL_WHEN_NO_HOST, [Define to 1 to send mail when the user is not allowed to run sudo on this host.])
3623: AH_TEMPLATE(SEND_MAIL_WHEN_NO_USER, [Define to 1 to send mail when the user is not in the sudoers file.])
3624: AH_TEMPLATE(SHELL_IF_NO_ARGS, [Define to 1 if you want sudo to start a shell if given no arguments.])
3625: AH_TEMPLATE(SHELL_SETS_HOME, [Define to 1 if you want sudo to set $HOME in shell mode.])
3626: AH_TEMPLATE(STUB_LOAD_INTERFACES, [Define to 1 if the code in interfaces.c does not compile for you.])
3627: AH_TEMPLATE(UMASK_OVERRIDE, [Define to 1 to use the umask specified in sudoers even when it is less restrictive than the invoking user's.])
3628: AH_TEMPLATE(USE_ADMIN_FLAG, [Define to 1 if you want to create ~/.sudo_as_admin_successful if the user is in the admin group the first time they run sudo.])
3629: AH_TEMPLATE(USE_INSULTS, [Define to 1 if you want to insult the user for entering an incorrect password.])
3630: AH_TEMPLATE(USE_STOW, [Define to 1 if you use GNU stow packaging.])
3631: AH_TEMPLATE(WITHOUT_PASSWD, [Define to avoid using the passwd/shadow file for authentication.])
3632: AH_TEMPLATE(sig_atomic_t, [Define to `int' if <signal.h> does not define.])
3633: AH_TEMPLATE(__signed, [Define to `signed' or nothing if compiler does not support a signed type qualifier.])
1.1.1.2 misho 3634: AH_TEMPLATE(socklen_t, [Define to `unsigned int' if <sys/socket.h> doesn't define.])
1.1 misho 3635: AH_TEMPLATE(HAVE_STRUCT_UTMP_UT_EXIT, [Define to 1 if `ut_exit' is a member of `struct utmp'.])
3636: AH_TEMPLATE(HAVE_STRUCT_UTMPX_UT_EXIT, [Define to 1 if `ut_exit' is a member of `struct utmpx'.])
1.1.1.2 misho 3637: AH_TEMPLATE(HAVE___FUNC__, [Define to 1 if the compiler supports the C99 __func__ variable.])
3638: AH_TEMPLATE(SUDO_KRB5_INSTANCE, [An instance string to append to the username (separated by a slash) for Kerberos V authentication])
3639: AH_TEMPLATE(RTLD_PRELOAD_VAR, [The environment variable that controls preloading of dynamic objects.])
3640: AH_TEMPLATE(RTLD_PRELOAD_ENABLE_VAR, [An extra environment variable that is required to enable preloading (if any).])
3641: AH_TEMPLATE(RTLD_PRELOAD_DELIM, [The delimiter to use when defining multiple preloaded objects.])
3642: AH_TEMPLATE(RTLD_PRELOAD_DEFAULT, [The default value of preloaded objects (if any).])
1.1.1.3 ! misho 3643: AH_TEMPLATE(HAVE_DSO_VISIBILITY, [Define to 1 if the compiler supports the __visibility__ attribute.])
! 3644: AH_TEMPLATE(HAVE_SYS_SIGABBREV, [Define to 1 if your libc has the `sys_sigabbrev' symbol.])
1.1 misho 3645:
3646: dnl
3647: dnl Bits to copy verbatim into config.h.in
3648: dnl
3649: AH_TOP([#ifndef _SUDO_CONFIG_H
3650: #define _SUDO_CONFIG_H])
3651:
3652: AH_BOTTOM([/*
3653: * Macros to convert ctime and mtime into timevals.
3654: */
3655: #define timespec2timeval(_ts, _tv) do { \
3656: (_tv)->tv_sec = (_ts)->tv_sec; \
3657: (_tv)->tv_usec = (_ts)->tv_nsec / 1000; \
3658: } while (0)
3659:
3660: #ifdef HAVE_ST_MTIM
3661: # ifdef HAVE_ST__TIM
3662: # define ctim_get(_x, _y) timespec2timeval(&(_x)->st_ctim.st__tim, (_y))
3663: # define mtim_get(_x, _y) timespec2timeval(&(_x)->st_mtim.st__tim, (_y))
3664: # else
3665: # define ctim_get(_x, _y) timespec2timeval(&(_x)->st_ctim, (_y))
3666: # define mtim_get(_x, _y) timespec2timeval(&(_x)->st_mtim, (_y))
3667: # endif
3668: #else
3669: # ifdef HAVE_ST_MTIMESPEC
3670: # define ctim_get(_x, _y) timespec2timeval(&(_x)->st_ctimespec, (_y))
3671: # define mtim_get(_x, _y) timespec2timeval(&(_x)->st_mtimespec, (_y))
3672: # else
3673: # define ctim_get(_x, _y) do { (_y)->tv_sec = (_x)->st_ctime; (_y)->tv_usec = 0; } while (0)
3674: # define mtim_get(_x, _y) do { (_y)->tv_sec = (_x)->st_mtime; (_y)->tv_usec = 0; } while (0)
3675: # endif /* HAVE_ST_MTIMESPEC */
3676: #endif /* HAVE_ST_MTIM */
3677:
1.1.1.2 misho 3678: #ifdef __GNUC__
3679: # define ignore_result(x) do { \
3680: __typeof__(x) y = (x); \
3681: (void)y; \
3682: } while(0)
3683: #else
3684: # define ignore_result(x) (void)(x)
3685: #endif
3686:
1.1 misho 3687: /* Macros to set/clear/test flags. */
3688: #undef SET
3689: #define SET(t, f) ((t) |= (f))
3690: #undef CLR
3691: #define CLR(t, f) ((t) &= ~(f))
3692: #undef ISSET
3693: #define ISSET(t, f) ((t) & (f))
3694:
3695: /* ANSI-style OS defs for HP-UX and ConvexOS. */
3696: #if defined(hpux) && !defined(__hpux)
3697: # define __hpux 1
3698: #endif /* hpux */
3699:
3700: #if defined(convex) && !defined(__convex__)
3701: # define __convex__ 1
3702: #endif /* convex */
3703:
3704: /* BSD compatibility on some SVR4 systems. */
3705: #ifdef __svr4__
3706: # define BSD_COMP
3707: #endif /* __svr4__ */
3708:
3709: #endif /* _SUDO_CONFIG_H */])
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>