version 1.1.1.3, 2012/10/09 09:29:52
|
version 1.1.1.5, 2014/06/15 16:12:53
|
Line 1
|
Line 1
|
dnl Local m4 macros for autoconf (used by sudo) | # generated automatically by aclocal 1.11.6 -*- Autoconf -*- |
dnl | |
dnl Copyright (c) 1994-1996, 1998-2005, 2007-2011 | |
dnl Todd C. Miller <Todd.Miller@courtesan.com> | |
dnl | |
dnl XXX - should cache values in all cases!!! | |
dnl | |
dnl checks for programs | |
|
|
dnl | # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, |
dnl check for sendmail in well-known locations | # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, |
dnl | # Inc. |
AC_DEFUN([SUDO_PROG_SENDMAIL], [AC_MSG_CHECKING([for sendmail]) | # This file is free software; the Free Software Foundation |
found=no | # gives unlimited permission to copy and/or distribute it, |
for p in "/usr/sbin/sendmail" "/usr/lib/sendmail" "/usr/etc/sendmail" "/usr/ucblib/sendmail" "/usr/local/lib/sendmail" "/usr/local/bin/sendmail"; do | # with or without modifications, as long as this notice is preserved. |
if test -f "$p"; then | |
found=yes | |
AC_MSG_RESULT([$p]) | |
SUDO_DEFINE_UNQUOTED(_PATH_SUDO_SENDMAIL, "$p") | |
break | |
fi | |
done | |
if test X"$found" != X"yes"; then | |
AC_MSG_RESULT([not found]) | |
fi | |
])dnl | |
|
|
dnl | # This program is distributed in the hope that it will be useful, |
dnl check for vi in well-known locations | # but WITHOUT ANY WARRANTY, to the extent permitted by law; without |
dnl | # even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
AC_DEFUN([SUDO_PROG_VI], [AC_MSG_CHECKING([for vi]) | # PARTICULAR PURPOSE. |
found=no | |
for editor in "/usr/bin/vi" "/bin/vi" "/usr/ucb/vi" "/usr/bsd/vi" "/usr/local/bin/vi"; do | |
if test -f "$editor"; then | |
found=yes | |
AC_MSG_RESULT([$editor]) | |
SUDO_DEFINE_UNQUOTED(_PATH_VI, "$editor") | |
break | |
fi | |
done | |
if test X"$found" != X"yes"; then | |
AC_MSG_RESULT([not found]) | |
fi | |
])dnl | |
|
|
dnl | # longlong.m4 serial 17 |
dnl check for mv in well-known locations | dnl Copyright (C) 1999-2007, 2009-2012 Free Software Foundation, Inc. |
dnl | dnl This file is free software; the Free Software Foundation |
AC_DEFUN([SUDO_PROG_MV], [AC_MSG_CHECKING([for mv]) | dnl gives unlimited permission to copy and/or distribute it, |
found=no | dnl with or without modifications, as long as this notice is preserved. |
for p in "/usr/bin/mv" "/bin/mv" "/usr/ucb/mv" "/usr/sbin/mv"; do | |
if test -f "$p"; then | |
found=yes | |
AC_MSG_RESULT([$p]) | |
SUDO_DEFINE_UNQUOTED(_PATH_MV, "$p") | |
break | |
fi | |
done | |
if test X"$found" != X"yes"; then | |
AC_MSG_RESULT([not found]) | |
fi | |
])dnl | |
|
|
dnl | dnl From Paul Eggert. |
dnl check for bourne shell in well-known locations | |
dnl | |
AC_DEFUN([SUDO_PROG_BSHELL], [AC_MSG_CHECKING([for bourne shell]) | |
found=no | |
for p in "/bin/sh" "/usr/bin/sh" "/sbin/sh" "/usr/sbin/sh" "/bin/ksh" "/usr/bin/ksh" "/bin/bash" "/usr/bin/bash"; do | |
if test -f "$p"; then | |
found=yes | |
AC_MSG_RESULT([$p]) | |
SUDO_DEFINE_UNQUOTED(_PATH_BSHELL, "$p") | |
break | |
fi | |
done | |
if test X"$found" != X"yes"; then | |
AC_MSG_RESULT([not found]) | |
fi | |
])dnl | |
|
|
dnl | # Define HAVE_LONG_LONG_INT if 'long long int' works. |
dnl check for utmp file | # This fixes a bug in Autoconf 2.61, and can be faster |
dnl | # than what's in Autoconf 2.62 through 2.68. |
AC_DEFUN([SUDO_PATH_UTMP], [AC_MSG_CHECKING([for utmp file path]) | |
found=no | |
for p in "/var/run/utmp" "/var/adm/utmp" "/etc/utmp"; do | |
if test -r "$p"; then | |
found=yes | |
AC_MSG_RESULT([$p]) | |
SUDO_DEFINE_UNQUOTED(_PATH_UTMP, "$p") | |
break | |
fi | |
done | |
if test X"$found" != X"yes"; then | |
AC_MSG_RESULT([not found]) | |
fi | |
])dnl | |
|
|
dnl | # Note: If the type 'long long int' exists but is only 32 bits large |
dnl Where the log file goes, use /var/log if it exists, else /{var,usr}/adm | # (as on some very old compilers), HAVE_LONG_LONG_INT will not be |
dnl | # defined. In this case you can treat 'long long int' like 'long int'. |
AC_DEFUN([SUDO_LOGFILE], [AC_MSG_CHECKING(for log file location) | |
if test -n "$with_logpath"; then | |
AC_MSG_RESULT($with_logpath) | |
SUDO_DEFINE_UNQUOTED(_PATH_SUDO_LOGFILE, "$with_logpath") | |
elif test -d "/var/log"; then | |
AC_MSG_RESULT(/var/log/sudo.log) | |
SUDO_DEFINE(_PATH_SUDO_LOGFILE, "/var/log/sudo.log") | |
elif test -d "/var/adm"; then | |
AC_MSG_RESULT(/var/adm/sudo.log) | |
SUDO_DEFINE(_PATH_SUDO_LOGFILE, "/var/adm/sudo.log") | |
elif test -d "/usr/adm"; then | |
AC_MSG_RESULT(/usr/adm/sudo.log) | |
SUDO_DEFINE(_PATH_SUDO_LOGFILE, "/usr/adm/sudo.log") | |
else | |
AC_MSG_RESULT(unknown, you will have to set _PATH_SUDO_LOGFILE by hand) | |
fi | |
])dnl | |
|
|
dnl | AC_DEFUN([AC_TYPE_LONG_LONG_INT], |
dnl Where the timestamp files go. | [ |
dnl | AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) |
AC_DEFUN([SUDO_TIMEDIR], [AC_MSG_CHECKING(for timestamp file location) | AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], |
timedir="$with_timedir" | [ac_cv_type_long_long_int=yes |
if test -z "$timedir"; then | if test "x${ac_cv_prog_cc_c99-no}" = xno; then |
for d in /var/db /var/lib /var/adm /usr/adm; do | ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int |
if test -d "$d"; then | if test $ac_cv_type_long_long_int = yes; then |
timedir="$d/sudo" | dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. |
break | dnl If cross compiling, assume the bug is not important, since |
fi | dnl nobody cross compiles for this platform as far as we know. |
done | AC_RUN_IFELSE( |
fi | [AC_LANG_PROGRAM( |
AC_MSG_RESULT([$timedir]) | [[@%:@include <limits.h> |
SUDO_DEFINE_UNQUOTED(_PATH_SUDO_TIMEDIR, "$timedir") | @%:@ifndef LLONG_MAX |
])dnl | @%:@ define HALF \ |
| (1LL << (sizeof (long long int) * CHAR_BIT - 2)) |
dnl | @%:@ define LLONG_MAX (HALF - 1 + HALF) |
dnl Where the I/O log files go, use /var/log/sudo-io if | @%:@endif]], |
dnl /var/log exists, else /{var,usr}/adm/sudo-io | [[long long int n = 1; |
dnl | int i; |
AC_DEFUN([SUDO_IO_LOGDIR], [ | for (i = 0; ; i++) |
AC_MSG_CHECKING(for I/O log dir location) | { |
if test "${with_iologdir-yes}" != "yes"; then | long long int m = n << i; |
iolog_dir="$with_iologdir" | if (m >> i != n) |
elif test -d "/var/log"; then | return 1; |
iolog_dir="/var/log/sudo-io" | if (LLONG_MAX / 2 < m) |
elif test -d "/var/adm"; then | break; |
iolog_dir="/var/adm/sudo-io" | } |
else | return 0;]])], |
iolog_dir="/usr/adm/sudo-io" | [], |
fi | [ac_cv_type_long_long_int=no], |
if test "${with_iologdir}" != "no"; then | [:]) |
SUDO_DEFINE_UNQUOTED(_PATH_SUDO_IO_LOGDIR, "$iolog_dir") | fi |
fi | fi]) |
AC_MSG_RESULT($iolog_dir) | if test $ac_cv_type_long_long_int = yes; then |
])dnl | AC_DEFINE([HAVE_LONG_LONG_INT], [1], |
| [Define to 1 if the system has the type 'long long int'.]) |
dnl | |
dnl check for working fnmatch(3) | |
dnl | |
AC_DEFUN([SUDO_FUNC_FNMATCH], | |
[AC_MSG_CHECKING([for working fnmatch with FNM_CASEFOLD]) | |
AC_CACHE_VAL(sudo_cv_func_fnmatch, | |
[rm -f conftestdata; > conftestdata | |
AC_TRY_RUN([#include <fnmatch.h> | |
main() { exit(fnmatch("/*/bin/echo *", "/usr/bin/echo just a test", FNM_CASEFOLD)); }], [sudo_cv_func_fnmatch=yes], [sudo_cv_func_fnmatch=no], | |
[sudo_cv_func_fnmatch=no]) | |
rm -f core core.* *.core]) | |
AC_MSG_RESULT($sudo_cv_func_fnmatch) | |
AS_IF([test $sudo_cv_func_fnmatch = yes], [$1], [$2])]) | |
| |
dnl | |
dnl check for isblank(3) | |
dnl | |
AC_DEFUN([SUDO_FUNC_ISBLANK], | |
[AC_CACHE_CHECK([for isblank], [sudo_cv_func_isblank], | |
[AC_TRY_LINK([#include <ctype.h>], [return (isblank('a'));], | |
sudo_cv_func_isblank=yes, sudo_cv_func_isblank=no)]) | |
] [ | |
if test "$sudo_cv_func_isblank" = "yes"; then | |
AC_DEFINE(HAVE_ISBLANK, 1, [Define if you have isblank(3).]) | |
else | |
AC_LIBOBJ(isblank) | |
fi |
fi |
]) |
]) |
|
|
AC_DEFUN([SUDO_CHECK_LIB], [ | # Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works. |
_sudo_check_lib_extras=`echo "$5"|sed -e 's/[ ]*//g' -e 's/-l/_/g'` | # This fixes a bug in Autoconf 2.61, and can be faster |
AC_MSG_CHECKING([for $2 in -l$1${5+ }$5]) | # than what's in Autoconf 2.62 through 2.68. |
AC_CACHE_VAL([sudo_cv_lib_$1''_$2$_sudo_check_lib_extras], [ | |
SUDO_CHECK_LIB_OLIBS="$LIBS" | |
LIBS="$LIBS -l$1${5+ }$5" | |
AC_LINK_IFELSE( | |
[AC_LANG_CALL([], [$2])], | |
[eval sudo_cv_lib_$1''_$2$_sudo_check_lib_extras=yes], | |
[eval sudo_cv_lib_$1''_$2$_sudo_check_lib_extras=no] | |
) | |
LIBS="$SUDO_CHECK_LIB_OLIBS" | |
]) | |
if eval test \$sudo_cv_lib_$1''_$2$_sudo_check_lib_extras = "yes"; then | |
AC_MSG_RESULT([yes]) | |
$3 | |
else | |
AC_MSG_RESULT([no]) | |
$4 | |
fi | |
]) | |
|
|
dnl | # Note: If the type 'unsigned long long int' exists but is only 32 bits |
dnl check unsetenv() return value | # large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT |
dnl | # will not be defined. In this case you can treat 'unsigned long long int' |
AC_DEFUN([SUDO_FUNC_UNSETENV_VOID], | # like 'unsigned long int'. |
[AC_CACHE_CHECK([whether unsetenv returns void], [sudo_cv_func_unsetenv_void], | |
[AC_RUN_IFELSE([AC_LANG_PROGRAM( | |
[AC_INCLUDES_DEFAULT | |
int unsetenv(); | |
], [ | |
[return unsetenv("FOO") != 0;] | |
]) | |
], | |
[sudo_cv_func_unsetenv_void=no], | |
[sudo_cv_func_unsetenv_void=yes], | |
[sudo_cv_func_unsetenv_void=no])]) | |
if test $sudo_cv_func_unsetenv_void = yes; then | |
AC_DEFINE(UNSETENV_VOID, 1, | |
[Define to 1 if the `unsetenv' function returns void instead of `int'.]) | |
fi | |
]) | |
|
|
dnl | AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], |
dnl check putenv() argument for const | [ |
dnl | AC_CACHE_CHECK([for unsigned long long int], |
AC_DEFUN([SUDO_FUNC_PUTENV_CONST], | [ac_cv_type_unsigned_long_long_int], |
[AC_CACHE_CHECK([whether putenv takes a const argument], | [ac_cv_type_unsigned_long_long_int=yes |
sudo_cv_func_putenv_const, | if test "x${ac_cv_prog_cc_c99-no}" = xno; then |
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT | AC_LINK_IFELSE( |
int putenv(const char *string) {return 0;}], [])], | [_AC_TYPE_LONG_LONG_SNIPPET], |
[sudo_cv_func_putenv_const=yes], | [], |
[sudo_cv_func_putenv_const=no]) | [ac_cv_type_unsigned_long_long_int=no]) |
]) | fi]) |
if test $sudo_cv_func_putenv_const = yes; then | if test $ac_cv_type_unsigned_long_long_int = yes; then |
AC_DEFINE(PUTENV_CONST, const, [Define to const if the `putenv' takes a const argument.]) | AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], |
else | [Define to 1 if the system has the type 'unsigned long long int'.]) |
AC_DEFINE(PUTENV_CONST, []) | |
fi |
fi |
]) |
]) |
|
|
dnl | # Expands to a C program that can be used to test for simultaneous support |
dnl check for sa_len field in struct sockaddr | # of 'long long' and 'unsigned long long'. We don't want to say that |
dnl | # 'long long' is available if 'unsigned long long' is not, or vice versa, |
AC_DEFUN([SUDO_SOCK_SA_LEN], [ | # because too many programs rely on the symmetry between signed and unsigned |
AC_CHECK_MEMBER([struct sockaddr.sa_len], | # integer types (excluding 'bool'). |
[AC_DEFINE(HAVE_STRUCT_SOCKADDR_SA_LEN, 1, [Define if your struct sockadr has an sa_len field.])], | AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], |
[], | [ |
[ #include <sys/types.h> | AC_LANG_PROGRAM( |
#include <sys/socket.h>] | [[/* For now, do not test the preprocessor; as of 2007 there are too many |
)] | implementations with broken preprocessors. Perhaps this can |
) | be revisited in 2012. In the meantime, code should not expect |
dnl | #if to work with literals wider than 32 bits. */ |
dnl check for max length of uid_t in string representation. | /* Test literals. */ |
dnl we can't really trust UID_MAX or MAXUID since they may exist | long long int ll = 9223372036854775807ll; |
dnl only for backwards compatibility. | long long int nll = -9223372036854775807LL; |
dnl | unsigned long long int ull = 18446744073709551615ULL; |
AC_DEFUN([SUDO_UID_T_LEN], | /* Test constant expressions. */ |
[AC_REQUIRE([AC_TYPE_UID_T]) | typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) |
AC_MSG_CHECKING(max length of uid_t) | ? 1 : -1)]; |
AC_CACHE_VAL(sudo_cv_uid_t_len, | typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 |
[rm -f conftestdata | ? 1 : -1)]; |
AC_TRY_RUN( | int i = 63;]], |
[#include <stdio.h> | [[/* Test availability of runtime routines for shift and division. */ |
#include <pwd.h> | long long int llmax = 9223372036854775807ll; |
#include <limits.h> | unsigned long long int ullmax = 18446744073709551615ull; |
#include <sys/types.h> | return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) |
#include <sys/param.h> | | (llmax / ll) | (llmax % ll) |
main() { | | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) |
FILE *f; | | (ullmax / ull) | (ullmax % ull));]]) |
char b[1024]; | |
uid_t u = (uid_t) -1; | |
| |
if ((f = fopen("conftestdata", "w")) == NULL) | |
exit(1); | |
| |
(void) sprintf(b, "%lu", (unsigned long) u); | |
(void) fprintf(f, "%d\n", strlen(b)); | |
(void) fclose(f); | |
exit(0); | |
}], sudo_cv_uid_t_len=`cat conftestdata`, sudo_cv_uid_t_len=10, sudo_cv_uid_t_len=10) | |
]) |
]) |
rm -f conftestdata |
|
AC_MSG_RESULT($sudo_cv_uid_t_len) |
|
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).]) |
|
]) |
|
|
|
dnl | m4_include([m4/ax_check_compile_flag.m4]) |
dnl append a libpath to an LDFLAGS style variable | m4_include([m4/ax_check_link_flag.m4]) |
dnl | m4_include([m4/ax_func_getaddrinfo.m4]) |
AC_DEFUN([SUDO_APPEND_LIBPATH], [ | m4_include([m4/ax_func_snprintf.m4]) |
if test X"$with_rpath" = X"yes"; then | m4_include([m4/libtool.m4]) |
case "$host" in | m4_include([m4/ltoptions.m4]) |
*-*-hpux*) $1="${$1} -L$2 -Wl,+b,$2" | m4_include([m4/ltsugar.m4]) |
;; | m4_include([m4/ltversion.m4]) |
*) $1="${$1} -L$2 -Wl,-R$2" | m4_include([m4/lt~obsolete.m4]) |
;; | m4_include([m4/sudo.m4]) |
esac | |
else | |
$1="${$1} -L$2" | |
fi | |
if test X"$blibpath" != X"" -a "$1" = "SUDO_LDFLAGS"; then | |
blibpath_add="${blibpath_add}:$2" | |
fi | |
]) | |
| |
dnl | |
dnl Determine the mail spool location | |
dnl NOTE: must be run *after* check for paths.h | |
dnl | |
AC_DEFUN([SUDO_MAILDIR], [ | |
maildir=no | |
if test X"$ac_cv_header_paths_h" = X"yes"; then | |
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT | |
#include <paths.h>], | |
[char *p = _PATH_MAILDIR;])], [maildir=yes], []) | |
fi | |
if test $maildir = no; then | |
# Solaris has maillock.h which defines MAILDIR | |
AC_CHECK_HEADERS(maillock.h, [ | |
SUDO_DEFINE(_PATH_MAILDIR, MAILDIR) | |
maildir=yes | |
]) | |
if test $maildir = no; then | |
for d in /var/mail /var/spool/mail /usr/spool/mail; do | |
if test -d "$d"; then | |
maildir=yes | |
SUDO_DEFINE_UNQUOTED(_PATH_MAILDIR, "$d") | |
break | |
fi | |
done | |
if test $maildir = no; then | |
# unable to find mail dir, hope for the best | |
SUDO_DEFINE_UNQUOTED(_PATH_MAILDIR, "/var/mail") | |
fi | |
fi | |
fi | |
]) | |
| |
dnl | |
dnl private versions of AC_DEFINE and AC_DEFINE_UNQUOTED that don't support | |
dnl tracing that we use to define paths for pathnames.h so autoheader doesn't | |
dnl put them in config.h.in. An awful hack. | |
dnl | |
m4_define([SUDO_DEFINE], | |
[cat >>confdefs.h <<\EOF | |
[@%:@define] $1 m4_if($#, 2, [$2], $#, 3, [$2], 1) | |
EOF | |
]) | |
| |
m4_define([SUDO_DEFINE_UNQUOTED], | |
[cat >>confdefs.h <<EOF | |
[@%:@define] $1 m4_if($#, 2, [$2], $#, 3, [$2], 1) | |
EOF | |
]) | |
| |
dnl | |
dnl Pull in libtool macros | |
dnl | |
m4_include([libtool.m4]) | |
m4_include([ltoptions.m4]) | |
m4_include([ltsugar.m4]) | |
m4_include([ltversion.m4]) | |
m4_include([lt~obsolete.m4]) | |
dnl | |
dnl Pull in other non-standard macros | |
dnl | |
m4_include([ax_check_compile_flag.m4]) | |
m4_include([ax_check_link_flag.m4]) | |