Imported Upstream version 1.8.4p4
[debian/sudo] / aclocal.m4
1 dnl Local m4 macros for autoconf (used by sudo)
2 dnl
3 dnl Copyright (c) 1994-1996, 1998-2005, 2007-2011
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
174 dnl check for isblank(3)
175 dnl
176 AC_DEFUN([SUDO_FUNC_ISBLANK],
177   [AC_CACHE_CHECK([for isblank], [sudo_cv_func_isblank],
178     [AC_TRY_LINK([#include <ctype.h>], [return (isblank('a'));],
179     sudo_cv_func_isblank=yes, sudo_cv_func_isblank=no)])
180 ] [
181   if test "$sudo_cv_func_isblank" = "yes"; then
182     AC_DEFINE(HAVE_ISBLANK, 1, [Define if you have isblank(3).])
183   else
184     AC_LIBOBJ(isblank)
185   fi
186 ])
187
188 AC_DEFUN([SUDO_CHECK_LIB], [
189     _sudo_check_lib_extras=`echo "$5"|sed -e 's/[       ]*//g' -e 's/-l/_/g'`
190     AC_MSG_CHECKING([for $2 in -l$1${5+ }$5])
191     AC_CACHE_VAL([sudo_cv_lib_$1''_$2$_sudo_check_lib_extras], [
192         SUDO_CHECK_LIB_OLIBS="$LIBS"
193         LIBS="$LIBS -l$1${5+ }$5"
194         AC_LINK_IFELSE(
195             [AC_LANG_CALL([], [$2])],
196             [eval sudo_cv_lib_$1''_$2$_sudo_check_lib_extras=yes],
197             [eval sudo_cv_lib_$1''_$2$_sudo_check_lib_extras=no]
198         )
199         LIBS="$SUDO_CHECK_LIB_OLIBS"
200     ])
201     if eval test \$sudo_cv_lib_$1''_$2$_sudo_check_lib_extras = "yes"; then
202         AC_MSG_RESULT([yes])
203         $3
204     else
205         AC_MSG_RESULT([no])
206         $4
207     fi
208 ])
209
210 dnl
211 dnl check unsetenv() return value
212 dnl
213 AC_DEFUN([SUDO_FUNC_UNSETENV_VOID],
214   [AC_CACHE_CHECK([whether unsetenv returns void], [sudo_cv_func_unsetenv_void],
215     [AC_RUN_IFELSE([AC_LANG_PROGRAM(
216       [AC_INCLUDES_DEFAULT
217         int unsetenv();
218       ], [
219         [return unsetenv("FOO") != 0;]
220       ])
221     ],
222     [sudo_cv_func_unsetenv_void=no],
223     [sudo_cv_func_unsetenv_void=yes],
224     [sudo_cv_func_unsetenv_void=no])])
225     if test $sudo_cv_func_unsetenv_void = yes; then
226       AC_DEFINE(UNSETENV_VOID, 1,
227         [Define to 1 if the `unsetenv' function returns void instead of `int'.])
228     fi
229   ])
230
231 dnl
232 dnl check for sa_len field in struct sockaddr
233 dnl
234 AC_DEFUN([SUDO_SOCK_SA_LEN], [
235     AC_CHECK_MEMBER([struct sockaddr.sa_len], 
236         [AC_DEFINE(HAVE_STRUCT_SOCKADDR_SA_LEN, 1, [Define if your struct sockadr has an sa_len field.])],    
237         [],
238         [ #include <sys/types.h>
239           #include <sys/socket.h>] 
240     )]
241 )
242 dnl
243 dnl check for max length of uid_t in string representation.
244 dnl we can't really trust UID_MAX or MAXUID since they may exist
245 dnl only for backwards compatibility.
246 dnl
247 AC_DEFUN([SUDO_UID_T_LEN],
248 [AC_REQUIRE([AC_TYPE_UID_T])
249 AC_MSG_CHECKING(max length of uid_t)
250 AC_CACHE_VAL(sudo_cv_uid_t_len,
251 [rm -f conftestdata
252 AC_TRY_RUN(
253 [#include <stdio.h>
254 #include <pwd.h>
255 #include <limits.h>
256 #include <sys/types.h>
257 #include <sys/param.h>
258 main() {
259   FILE *f;
260   char b[1024];
261   uid_t u = (uid_t) -1;
262
263   if ((f = fopen("conftestdata", "w")) == NULL)
264     exit(1);
265
266   (void) sprintf(b, "%lu", (unsigned long) u);
267   (void) fprintf(f, "%d\n", strlen(b));
268   (void) fclose(f);
269   exit(0);
270 }], sudo_cv_uid_t_len=`cat conftestdata`, sudo_cv_uid_t_len=10, sudo_cv_uid_t_len=10)
271 ])
272 rm -f conftestdata
273 AC_MSG_RESULT($sudo_cv_uid_t_len)
274 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).])
275 ])
276
277 dnl
278 dnl append a libpath to an LDFLAGS style variable
279 dnl
280 AC_DEFUN([SUDO_APPEND_LIBPATH], [
281     if test X"$with_rpath" = X"yes"; then
282         case "$host" in
283             *-*-hpux*)  $1="${$1} -L$2 -Wl,+b,$2"
284                         ;;
285             *)          $1="${$1} -L$2 -Wl,-R$2"
286                         ;;
287         esac
288     else
289         $1="${$1} -L$2"
290     fi
291     if test X"$blibpath" != X"" -a "$1" = "SUDO_LDFLAGS"; then
292         blibpath_add="${blibpath_add}:$2"
293     fi
294 ])
295
296 dnl
297 dnl Determine the mail spool location
298 dnl NOTE: must be run *after* check for paths.h
299 dnl
300 AC_DEFUN([SUDO_MAILDIR], [
301 maildir=no
302 if test X"$ac_cv_header_paths_h" = X"yes"; then
303 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
304 #include <paths.h>],
305 [char *p = _PATH_MAILDIR;])], [maildir=yes], [])
306 fi
307 if test $maildir = no; then
308     # Solaris has maillock.h which defines MAILDIR
309     AC_CHECK_HEADERS(maillock.h, [
310         SUDO_DEFINE(_PATH_MAILDIR, MAILDIR)
311         maildir=yes
312     ])
313     if test $maildir = no; then
314         for d in /var/mail /var/spool/mail /usr/spool/mail; do
315             if test -d "$d"; then
316                 maildir=yes
317                 SUDO_DEFINE_UNQUOTED(_PATH_MAILDIR, "$d")
318                 break
319             fi
320         done
321         if test $maildir = no; then
322             # unable to find mail dir, hope for the best
323             SUDO_DEFINE_UNQUOTED(_PATH_MAILDIR, "/var/mail")
324         fi
325     fi
326 fi
327 ])
328
329 dnl
330 dnl private versions of AC_DEFINE and AC_DEFINE_UNQUOTED that don't support
331 dnl tracing that we use to define paths for pathnames.h so autoheader doesn't
332 dnl put them in config.h.in.  An awful hack.
333 dnl
334 m4_define([SUDO_DEFINE],
335 [cat >>confdefs.h <<\EOF
336 [@%:@define] $1 m4_if($#, 2, [$2], $#, 3, [$2], 1)
337 EOF
338 ])
339
340 m4_define([SUDO_DEFINE_UNQUOTED],
341 [cat >>confdefs.h <<EOF
342 [@%:@define] $1 m4_if($#, 2, [$2], $#, 3, [$2], 1)
343 EOF
344 ])
345
346 dnl
347 dnl Pull in libtool macros
348 dnl
349 m4_include([libtool.m4])
350 m4_include([ltoptions.m4])
351 m4_include([ltsugar.m4])
352 m4_include([ltversion.m4])
353 m4_include([lt~obsolete.m4])