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>