Annotation of embedaddon/sudo/aclocal.m4, revision 1.1.1.4
1.1 misho 1: dnl Local m4 macros for autoconf (used by sudo)
2: dnl
1.1.1.4 ! misho 3: dnl Copyright (c) 1994-1996, 1998-2005, 2007-2013
1.1 misho 4: dnl Todd C. Miller <Todd.Miller@courtesan.com>
5: dnl
6: dnl XXX - should cache values in all cases!!!
7: dnl
8: dnl checks for programs
9:
10: dnl
11: dnl check for sendmail in well-known locations
12: dnl
13: AC_DEFUN([SUDO_PROG_SENDMAIL], [AC_MSG_CHECKING([for sendmail])
14: found=no
15: for p in "/usr/sbin/sendmail" "/usr/lib/sendmail" "/usr/etc/sendmail" "/usr/ucblib/sendmail" "/usr/local/lib/sendmail" "/usr/local/bin/sendmail"; do
16: if test -f "$p"; then
17: found=yes
18: AC_MSG_RESULT([$p])
19: SUDO_DEFINE_UNQUOTED(_PATH_SUDO_SENDMAIL, "$p")
20: break
21: fi
22: done
23: if test X"$found" != X"yes"; then
24: AC_MSG_RESULT([not found])
25: fi
26: ])dnl
27:
28: dnl
29: dnl check for vi in well-known locations
30: dnl
31: AC_DEFUN([SUDO_PROG_VI], [AC_MSG_CHECKING([for vi])
32: found=no
33: for editor in "/usr/bin/vi" "/bin/vi" "/usr/ucb/vi" "/usr/bsd/vi" "/usr/local/bin/vi"; do
34: if test -f "$editor"; then
35: found=yes
36: AC_MSG_RESULT([$editor])
37: SUDO_DEFINE_UNQUOTED(_PATH_VI, "$editor")
38: break
39: fi
40: done
41: if test X"$found" != X"yes"; then
42: AC_MSG_RESULT([not found])
43: fi
44: ])dnl
45:
46: dnl
47: dnl check for mv in well-known locations
48: dnl
49: AC_DEFUN([SUDO_PROG_MV], [AC_MSG_CHECKING([for mv])
50: found=no
51: for p in "/usr/bin/mv" "/bin/mv" "/usr/ucb/mv" "/usr/sbin/mv"; do
52: if test -f "$p"; then
53: found=yes
54: AC_MSG_RESULT([$p])
55: SUDO_DEFINE_UNQUOTED(_PATH_MV, "$p")
56: break
57: fi
58: done
59: if test X"$found" != X"yes"; then
60: AC_MSG_RESULT([not found])
61: fi
62: ])dnl
63:
64: dnl
65: dnl check for bourne shell in well-known locations
66: dnl
67: AC_DEFUN([SUDO_PROG_BSHELL], [AC_MSG_CHECKING([for bourne shell])
68: found=no
69: for p in "/bin/sh" "/usr/bin/sh" "/sbin/sh" "/usr/sbin/sh" "/bin/ksh" "/usr/bin/ksh" "/bin/bash" "/usr/bin/bash"; do
70: if test -f "$p"; then
71: found=yes
72: AC_MSG_RESULT([$p])
73: SUDO_DEFINE_UNQUOTED(_PATH_BSHELL, "$p")
74: break
75: fi
76: done
77: if test X"$found" != X"yes"; then
78: AC_MSG_RESULT([not found])
79: fi
80: ])dnl
81:
82: dnl
83: dnl check for utmp file
84: dnl
85: AC_DEFUN([SUDO_PATH_UTMP], [AC_MSG_CHECKING([for utmp file path])
86: found=no
87: for p in "/var/run/utmp" "/var/adm/utmp" "/etc/utmp"; do
88: if test -r "$p"; then
89: found=yes
90: AC_MSG_RESULT([$p])
91: SUDO_DEFINE_UNQUOTED(_PATH_UTMP, "$p")
92: break
93: fi
94: done
95: if test X"$found" != X"yes"; then
96: AC_MSG_RESULT([not found])
97: fi
98: ])dnl
99:
100: dnl
101: dnl Where the log file goes, use /var/log if it exists, else /{var,usr}/adm
102: dnl
103: AC_DEFUN([SUDO_LOGFILE], [AC_MSG_CHECKING(for log file location)
104: if test -n "$with_logpath"; then
105: AC_MSG_RESULT($with_logpath)
106: SUDO_DEFINE_UNQUOTED(_PATH_SUDO_LOGFILE, "$with_logpath")
107: elif test -d "/var/log"; then
108: AC_MSG_RESULT(/var/log/sudo.log)
109: SUDO_DEFINE(_PATH_SUDO_LOGFILE, "/var/log/sudo.log")
110: elif test -d "/var/adm"; then
111: AC_MSG_RESULT(/var/adm/sudo.log)
112: SUDO_DEFINE(_PATH_SUDO_LOGFILE, "/var/adm/sudo.log")
113: elif test -d "/usr/adm"; then
114: AC_MSG_RESULT(/usr/adm/sudo.log)
115: SUDO_DEFINE(_PATH_SUDO_LOGFILE, "/usr/adm/sudo.log")
116: else
117: AC_MSG_RESULT(unknown, you will have to set _PATH_SUDO_LOGFILE by hand)
118: fi
119: ])dnl
120:
121: dnl
122: dnl Where the timestamp files go.
123: dnl
124: AC_DEFUN([SUDO_TIMEDIR], [AC_MSG_CHECKING(for timestamp file location)
125: timedir="$with_timedir"
126: if test -z "$timedir"; then
127: for d in /var/db /var/lib /var/adm /usr/adm; do
128: if test -d "$d"; then
129: timedir="$d/sudo"
130: break
131: fi
132: done
133: fi
134: AC_MSG_RESULT([$timedir])
135: SUDO_DEFINE_UNQUOTED(_PATH_SUDO_TIMEDIR, "$timedir")
136: ])dnl
137:
138: dnl
139: dnl Where the I/O log files go, use /var/log/sudo-io if
140: dnl /var/log exists, else /{var,usr}/adm/sudo-io
141: dnl
142: AC_DEFUN([SUDO_IO_LOGDIR], [
143: AC_MSG_CHECKING(for I/O log dir location)
144: if test "${with_iologdir-yes}" != "yes"; then
145: iolog_dir="$with_iologdir"
146: elif test -d "/var/log"; then
147: iolog_dir="/var/log/sudo-io"
148: elif test -d "/var/adm"; then
149: iolog_dir="/var/adm/sudo-io"
150: else
151: iolog_dir="/usr/adm/sudo-io"
152: fi
153: if test "${with_iologdir}" != "no"; then
154: SUDO_DEFINE_UNQUOTED(_PATH_SUDO_IO_LOGDIR, "$iolog_dir")
155: fi
156: AC_MSG_RESULT($iolog_dir)
157: ])dnl
158:
159: dnl
160: dnl check for working fnmatch(3)
161: dnl
162: AC_DEFUN([SUDO_FUNC_FNMATCH],
163: [AC_MSG_CHECKING([for working fnmatch with FNM_CASEFOLD])
164: AC_CACHE_VAL(sudo_cv_func_fnmatch,
165: [rm -f conftestdata; > conftestdata
166: AC_TRY_RUN([#include <fnmatch.h>
167: main() { exit(fnmatch("/*/bin/echo *", "/usr/bin/echo just a test", FNM_CASEFOLD)); }], [sudo_cv_func_fnmatch=yes], [sudo_cv_func_fnmatch=no],
168: [sudo_cv_func_fnmatch=no])
169: rm -f core core.* *.core])
170: AC_MSG_RESULT($sudo_cv_func_fnmatch)
171: AS_IF([test $sudo_cv_func_fnmatch = yes], [$1], [$2])])
172:
173: dnl
1.1.1.4 ! misho 174: dnl Attempt to check for working PIE support.
! 175: dnl This is a bit of a hack but on Solaris 10 with GNU ld and GNU as
! 176: dnl we can end up with strange values from malloc().
! 177: dnl A better check would be to verify that ASLR works with PIE.
! 178: dnl
! 179: AC_DEFUN([SUDO_WORKING_PIE],
! 180: [AC_MSG_CHECKING([for working PIE support])
! 181: AC_CACHE_VAL(sudo_cv_working_pie,
! 182: [rm -f conftestdata; > conftestdata
! 183: AC_TRY_RUN(AC_INCLUDES_DEFAULT([])
! 184: [main() { char *p = malloc(1024); if (p == NULL) return 1; memset(p, 0, 1024); return 0; }], [sudo_cv_working_pie=yes], [sudo_cv_working_pie=no],
! 185: [sudo_cv_working_pie=no])
! 186: rm -f core core.* *.core])
! 187: AC_MSG_RESULT($sudo_cv_working_pie)
! 188: AS_IF([test $sudo_cv_working_pie = yes], [$1], [$2])])
! 189:
! 190: dnl
1.1 misho 191: dnl check for isblank(3)
192: dnl
193: AC_DEFUN([SUDO_FUNC_ISBLANK],
194: [AC_CACHE_CHECK([for isblank], [sudo_cv_func_isblank],
195: [AC_TRY_LINK([#include <ctype.h>], [return (isblank('a'));],
196: sudo_cv_func_isblank=yes, sudo_cv_func_isblank=no)])
197: ] [
198: if test "$sudo_cv_func_isblank" = "yes"; then
199: AC_DEFINE(HAVE_ISBLANK, 1, [Define if you have isblank(3).])
200: else
201: AC_LIBOBJ(isblank)
202: fi
203: ])
204:
1.1.1.2 misho 205: AC_DEFUN([SUDO_CHECK_LIB], [
206: _sudo_check_lib_extras=`echo "$5"|sed -e 's/[ ]*//g' -e 's/-l/_/g'`
207: AC_MSG_CHECKING([for $2 in -l$1${5+ }$5])
208: AC_CACHE_VAL([sudo_cv_lib_$1''_$2$_sudo_check_lib_extras], [
209: SUDO_CHECK_LIB_OLIBS="$LIBS"
210: LIBS="$LIBS -l$1${5+ }$5"
211: AC_LINK_IFELSE(
212: [AC_LANG_CALL([], [$2])],
213: [eval sudo_cv_lib_$1''_$2$_sudo_check_lib_extras=yes],
214: [eval sudo_cv_lib_$1''_$2$_sudo_check_lib_extras=no]
215: )
216: LIBS="$SUDO_CHECK_LIB_OLIBS"
217: ])
218: if eval test \$sudo_cv_lib_$1''_$2$_sudo_check_lib_extras = "yes"; then
219: AC_MSG_RESULT([yes])
220: $3
221: else
222: AC_MSG_RESULT([no])
223: $4
224: fi
225: ])
226:
1.1 misho 227: dnl
228: dnl check unsetenv() return value
229: dnl
230: AC_DEFUN([SUDO_FUNC_UNSETENV_VOID],
231: [AC_CACHE_CHECK([whether unsetenv returns void], [sudo_cv_func_unsetenv_void],
232: [AC_RUN_IFELSE([AC_LANG_PROGRAM(
233: [AC_INCLUDES_DEFAULT
234: int unsetenv();
235: ], [
236: [return unsetenv("FOO") != 0;]
237: ])
238: ],
239: [sudo_cv_func_unsetenv_void=no],
240: [sudo_cv_func_unsetenv_void=yes],
241: [sudo_cv_func_unsetenv_void=no])])
242: if test $sudo_cv_func_unsetenv_void = yes; then
243: AC_DEFINE(UNSETENV_VOID, 1,
244: [Define to 1 if the `unsetenv' function returns void instead of `int'.])
245: fi
246: ])
247:
248: dnl
1.1.1.2 misho 249: dnl check putenv() argument for const
250: dnl
251: AC_DEFUN([SUDO_FUNC_PUTENV_CONST],
252: [AC_CACHE_CHECK([whether putenv takes a const argument],
253: sudo_cv_func_putenv_const,
254: [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
255: int putenv(const char *string) {return 0;}], [])],
256: [sudo_cv_func_putenv_const=yes],
257: [sudo_cv_func_putenv_const=no])
258: ])
259: if test $sudo_cv_func_putenv_const = yes; then
260: AC_DEFINE(PUTENV_CONST, const, [Define to const if the `putenv' takes a const argument.])
261: else
262: AC_DEFINE(PUTENV_CONST, [])
263: fi
264: ])
265:
266: dnl
1.1 misho 267: dnl check for sa_len field in struct sockaddr
268: dnl
269: AC_DEFUN([SUDO_SOCK_SA_LEN], [
270: AC_CHECK_MEMBER([struct sockaddr.sa_len],
1.1.1.2 misho 271: [AC_DEFINE(HAVE_STRUCT_SOCKADDR_SA_LEN, 1, [Define if your struct sockadr has an sa_len field.])],
1.1 misho 272: [],
273: [ #include <sys/types.h>
274: #include <sys/socket.h>]
275: )]
276: )
277: dnl
278: dnl check for max length of uid_t in string representation.
279: dnl we can't really trust UID_MAX or MAXUID since they may exist
280: dnl only for backwards compatibility.
281: dnl
282: AC_DEFUN([SUDO_UID_T_LEN],
283: [AC_REQUIRE([AC_TYPE_UID_T])
284: AC_MSG_CHECKING(max length of uid_t)
285: AC_CACHE_VAL(sudo_cv_uid_t_len,
286: [rm -f conftestdata
287: AC_TRY_RUN(
288: [#include <stdio.h>
289: #include <pwd.h>
290: #include <limits.h>
291: #include <sys/types.h>
292: #include <sys/param.h>
293: main() {
294: FILE *f;
295: char b[1024];
296: uid_t u = (uid_t) -1;
297:
298: if ((f = fopen("conftestdata", "w")) == NULL)
299: exit(1);
300:
301: (void) sprintf(b, "%lu", (unsigned long) u);
302: (void) fprintf(f, "%d\n", strlen(b));
303: (void) fclose(f);
304: exit(0);
305: }], sudo_cv_uid_t_len=`cat conftestdata`, sudo_cv_uid_t_len=10, sudo_cv_uid_t_len=10)
306: ])
307: rm -f conftestdata
308: AC_MSG_RESULT($sudo_cv_uid_t_len)
309: AC_DEFINE_UNQUOTED(MAX_UID_T_LEN, $sudo_cv_uid_t_len, [Define to the max length of a uid_t in string context (excluding the NUL).])
310: ])
311:
312: dnl
1.1.1.4 ! misho 313: dnl Append a libpath to an LDFLAGS style variable if not already present.
! 314: dnl Also appends to the _R version unless rpath is disabled.
1.1 misho 315: dnl
316: AC_DEFUN([SUDO_APPEND_LIBPATH], [
1.1.1.4 ! misho 317: case "${$1}" in
! 318: *"-L$2"|*"-L$2 ")
! 319: ;;
! 320: *)
! 321: $1="${$1} -L$2"
! 322: if test X"$enable_rpath" = X"yes"; then
! 323: $1_R="${$1_R} -R$2"
! 324: fi
! 325: ;;
! 326: esac
! 327: ])
! 328:
! 329: dnl
! 330: dnl Append a directory to CPPFLAGS if not already present.
! 331: dnl
! 332: AC_DEFUN([SUDO_APPEND_CPPFLAGS], [
! 333: case "${CPPFLAGS}" in
! 334: *"$1"|*"$1 ")
! 335: ;;
! 336: *)
! 337: if test X"${CPPFLAGS}" = X""; then
! 338: CPPFLAGS="$1"
! 339: else
! 340: CPPFLAGS="${CPPFLAGS} $1"
! 341: fi
! 342: ;;
! 343: esac
1.1 misho 344: ])
345:
346: dnl
347: dnl Determine the mail spool location
348: dnl NOTE: must be run *after* check for paths.h
349: dnl
350: AC_DEFUN([SUDO_MAILDIR], [
351: maildir=no
352: if test X"$ac_cv_header_paths_h" = X"yes"; then
353: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
354: #include <paths.h>],
355: [char *p = _PATH_MAILDIR;])], [maildir=yes], [])
356: fi
357: if test $maildir = no; then
358: # Solaris has maillock.h which defines MAILDIR
359: AC_CHECK_HEADERS(maillock.h, [
360: SUDO_DEFINE(_PATH_MAILDIR, MAILDIR)
361: maildir=yes
362: ])
363: if test $maildir = no; then
364: for d in /var/mail /var/spool/mail /usr/spool/mail; do
365: if test -d "$d"; then
366: maildir=yes
367: SUDO_DEFINE_UNQUOTED(_PATH_MAILDIR, "$d")
368: break
369: fi
370: done
371: if test $maildir = no; then
372: # unable to find mail dir, hope for the best
373: SUDO_DEFINE_UNQUOTED(_PATH_MAILDIR, "/var/mail")
374: fi
375: fi
376: fi
377: ])
378:
379: dnl
380: dnl private versions of AC_DEFINE and AC_DEFINE_UNQUOTED that don't support
381: dnl tracing that we use to define paths for pathnames.h so autoheader doesn't
382: dnl put them in config.h.in. An awful hack.
383: dnl
384: m4_define([SUDO_DEFINE],
385: [cat >>confdefs.h <<\EOF
386: [@%:@define] $1 m4_if($#, 2, [$2], $#, 3, [$2], 1)
387: EOF
388: ])
389:
390: m4_define([SUDO_DEFINE_UNQUOTED],
391: [cat >>confdefs.h <<EOF
392: [@%:@define] $1 m4_if($#, 2, [$2], $#, 3, [$2], 1)
393: EOF
394: ])
395:
396: dnl
397: dnl Pull in libtool macros
398: dnl
1.1.1.4 ! misho 399: m4_include([m4/libtool.m4])
! 400: m4_include([m4/ltoptions.m4])
! 401: m4_include([m4/ltsugar.m4])
! 402: m4_include([m4/ltversion.m4])
! 403: m4_include([m4/lt~obsolete.m4])
1.1.1.3 misho 404: dnl
405: dnl Pull in other non-standard macros
406: dnl
1.1.1.4 ! misho 407: m4_include([m4/ax_check_compile_flag.m4])
! 408: m4_include([m4/ax_check_link_flag.m4])
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>