3 # Code to handle searches for programs Amanda needs.
5 # Because Amanda uses a customized search path, many macros which are standard
6 # in autoconf have been wrapped here. Where this is the only change, the description
7 # of those macros has been omitted.
9 # All of these macros indicate their requirements using AC_REQUIRE, so the order in
10 # which they are called in configure.in is inconsequential.
18 # Set up some amanda-specific path directories. This should be AC_REQUIRE()d by
19 # any macros which need to search for a program.
21 # SYSPATH is a list of likely system locations for a file, while
22 # LOCPATH is a list of likely local locations. The two are combined
23 # in different orders in SYSLOCPATH and LOCSYSPATH. These path differences
24 # are known to affect Solaris 8.
26 AC_DEFUN([AMANDA_INIT_PROGS],
28 SYSPATH="/bin:/usr/bin:/sbin:/usr/sbin:/opt/SUNWspro/bin:/usr/ucb:/usr/sfw/bin:/usr/bsd:/etc:/usr/etc"
29 # expand prefix or exec_prefix in LOCPATH
31 test "x$prefix" = xNONE && prefix=$ac_default_prefix
32 test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
33 eval echo "$libexecdir:$PATH:/usr/local/sbin:/usr/local/bin:/usr/ccs/bin"
35 SYSLOCPATH="$SYSPATH:$LOCPATH"
36 LOCSYSPATH="$LOCPATH:$SYSPATH"
45 # Find a lint binary (either lint or splint) and record its name in AMLINT.
46 # Set up appropriate flags for the discovered binary in AMLINTFLAGS
48 AC_DEFUN([AMANDA_PROG_LINT],
50 AC_REQUIRE([AMANDA_INIT_PROGS])
51 AC_REQUIRE([AMANDA_PROG_GREP])
53 AC_PATH_PROG(AMLINT,lint,,/opt/SUNWspro/bin:$SYSLOCPATH)
54 if test ! -z "$AMLINT"; then
55 $AMLINT -flags 2>&1 | $GREP -- '-errfmt=' > /dev/null
56 if test $? -eq 0; then
57 AMLINTFLAGS="-n -s -u -m -x"
58 AMLINTFLAGS="$AMLINTFLAGS -errchk=%all"
59 AMLINTFLAGS="$AMLINTFLAGS -errfmt=macro"
60 AMLINTFLAGS="$AMLINTFLAGS -errhdr=no%/usr/include"
61 AMLINTFLAGS="$AMLINTFLAGS -errhdr=%user"
62 AMLINTFLAGS="$AMLINTFLAGS -errsecurity=extended"
63 AMLINTFLAGS="$AMLINTFLAGS -errtags=yes"
64 AMLINTFLAGS="$AMLINTFLAGS -Ncheck=%all"
65 AMLINTFLAGS="$AMLINTFLAGS -Nlevel=2"
66 AMLINTFLAGS="$AMLINTFLAGS -erroff=E_ASGN_NEVER_USED"
67 AMLINTFLAGS="$AMLINTFLAGS,E_ASGN_RESET"
68 AMLINTFLAGS="$AMLINTFLAGS,E_CAST_INT_CONST_TO_SMALL_INT"
69 AMLINTFLAGS="$AMLINTFLAGS,E_CAST_INT_TO_SMALL_INT"
70 AMLINTFLAGS="$AMLINTFLAGS,E_CAST_UINT_TO_SIGNED_INT"
71 AMLINTFLAGS="$AMLINTFLAGS,E_CONSTANT_CONDITION"
72 AMLINTFLAGS="$AMLINTFLAGS,E_ENUM_UNUSE"
73 AMLINTFLAGS="$AMLINTFLAGS,E_EXPR_NULL_EFFECT"
74 AMLINTFLAGS="$AMLINTFLAGS,E_FUNC_RET_ALWAYS_IGNOR"
75 AMLINTFLAGS="$AMLINTFLAGS,E_FUNC_RET_MAYBE_IGNORED"
76 AMLINTFLAGS="$AMLINTFLAGS,E_H_C_CHECK0"
77 AMLINTFLAGS="$AMLINTFLAGS,E_H_C_CHECK1"
78 AMLINTFLAGS="$AMLINTFLAGS,E_H_C_CHECK2"
79 AMLINTFLAGS="$AMLINTFLAGS,E_INCL_MNUSD"
80 AMLINTFLAGS="$AMLINTFLAGS,E_INCL_NUSD"
81 AMLINTFLAGS="$AMLINTFLAGS,E_MCR_NODIFF"
82 AMLINTFLAGS="$AMLINTFLAGS,E_NAME_MULTIPLY_DEF"
83 AMLINTFLAGS="$AMLINTFLAGS,E_P_REF_NULL_PSBL"
84 AMLINTFLAGS="$AMLINTFLAGS,E_P_REF_SUSP"
85 AMLINTFLAGS="$AMLINTFLAGS,E_PTRDIFF_OVERFLOW"
86 AMLINTFLAGS="$AMLINTFLAGS,E_P_USE_NULL_PSBL"
87 AMLINTFLAGS="$AMLINTFLAGS,E_P_USE_SUSP"
88 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_ACCESS_WARN"
89 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_CHDIR_WARN"
90 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_CHMOD_WARN"
91 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_CREAT_WITHOUT_EXCL"
92 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_EXEC_PATH"
93 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_EXEC_WARN"
94 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_FOPEN_MODE"
95 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_GETENV_WARN"
96 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_MKDIR_WARN"
97 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_PRINTF_VAR_FMT"
98 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_RAND_WARN"
99 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_SCANF_VAR_FMT"
100 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_SELECT_WARN"
101 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_SHELL_WARN"
102 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_STRNCPY_WARN"
103 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_UMASK_WARN"
104 AMLINTFLAGS="$AMLINTFLAGS,E_SEC_USE_AFTER_STAT"
105 AMLINTFLAGS="$AMLINTFLAGS,E_SIGN_EXTENSION_PSBL"
106 AMLINTFLAGS="$AMLINTFLAGS,E_TYPEDEF_UNUSE"
107 AMLINTFLAGS="$AMLINTFLAGS,E_UNCAL_F"
112 AC_PATH_PROG(AMLINT,splint,,$SYSLOCPATH)
113 if test ! -z "$AMLINT"; then
115 AMLINTFLAGS='+show-scan +unixlib -weak -globs +usedef +usereleased +impouts -paramimptemp -varuse -warnposix -redef -preproc -fixedformalarray -retval -unrecog -usevarargs -formatcode'
117 AMLINT='echo "Error: LINT is not installed" ; false'
121 AC_SUBST(AMLINTFLAGS)
130 # Search for a binary for printing, usually either 'lp' or 'lpr', and put its
133 # LPRFLAG is substituted as the appropriate command-line flag to use
134 # to select a printer; either -P or -d.
136 AC_DEFUN([AMANDA_PROG_LPR],
138 AC_REQUIRE([AMANDA_INIT_PROGS])
140 AC_PATH_PROGS(LPR, lpr lp)
141 if test ! -z "$LPR"; then
142 AC_DEFINE([HAVE_LPR_CMD], [1],
143 [Set to 1 if an LPR command was found at configure time])
145 AC_CACHE_CHECK([which flag to use to select a printer],
146 amanda_cv_printer_flag, [
147 amanda_cv_printer_flag=$LPRFLAG
149 lpr|*/lpr) amanda_cv_printer_flag="-P";;
150 lp|*/lp) amanda_cv_printer_flag="-d";;
153 if test -z "$amanda_cv_printer_flag"; then
154 AMANDA_MSG_WARN([WARNING: amanda will always print to the default printer])
164 # AMANDA_PROG_GNUPLOT
168 # Search for a 'gnuplot' binary, placing the result in the precious
169 # variable GNUPLOT. Also accepts --with-gnuplot to indicate the location
172 AC_DEFUN([AMANDA_PROG_GNUPLOT],
174 AC_REQUIRE([AMANDA_INIT_PROGS])
177 AS_HELP_STRING([--with-gnuplot=PATH],
178 [use gnuplot executable at PATH in amplot]),
182 n | no) GNUPLOT=no ;;
183 *) GNUPLOT="$withval" ;;
186 if test "x$GNUPLOT" = "xno"; then
189 AC_PATH_PROG(GNUPLOT,gnuplot,,$LOCSYSPATH)
192 AC_ARG_VAR(GNUPLOT, [Location of the 'gnuplot' binary])
196 ## simple macros needing no description; some add AC_DEFINE_UNQUOTED
198 AC_DEFUN([AMANDA_PROG_GREP],
200 AC_REQUIRE([AMANDA_INIT_PROGS])
201 AC_PATH_PROG(GREP,grep,grep,$LOCSYSPATH)
202 AC_DEFINE_UNQUOTED(GREP,"$GREP",
203 [Define the location of the grep program. ])
206 AC_DEFUN([AMANDA_PROG_CAT],
208 AC_REQUIRE([AMANDA_INIT_PROGS])
209 AC_PATH_PROG(CAT,cat,cat,$LOCSYSPATH)
212 AC_DEFUN([AMANDA_PROG_COMPRESS],
214 AC_REQUIRE([AMANDA_INIT_PROGS])
215 AC_PATH_PROG(COMPRESS,compress,,$LOCSYSPATH)
218 AC_DEFUN([AMANDA_PROG_DD],
220 AC_REQUIRE([AMANDA_INIT_PROGS])
221 AC_PATH_PROG(DD,dd,,$LOCSYSPATH)
224 AC_DEFUN([AMANDA_PROG_GETCONF],
226 AC_REQUIRE([AMANDA_INIT_PROGS])
227 AC_PATH_PROG(GETCONF,getconf,,$SYSPATH)
230 AC_DEFUN([AMANDA_PROG_GZIP],
232 AC_REQUIRE([AMANDA_INIT_PROGS])
233 AC_PATH_PROG(GZIP,gzip,,$LOCSYSPATH)
236 AC_DEFUN([AMANDA_PROG_SORT],
238 AC_REQUIRE([AMANDA_INIT_PROGS])
239 AC_REQUIRE([AMANDA_CHECK_COMPONENTS])
241 AC_PATH_PROG(SORT,sort,NONE,$LOCSYSPATH)
243 # sort is only needed in the server build
244 if test x"$SORT" = x"NONE" && $WANT_SERVER; then
245 AC_MSG_ERROR([Set SORT to the path of the sort program.])
248 AC_DEFINE_UNQUOTED(SORT_PATH,"$SORT",
249 [Define to the exact path to the sort program. ])
252 AC_DEFUN([AMANDA_PROG_MAILER],
254 AC_REQUIRE([AMANDA_INIT_PROGS])
255 AC_PATH_PROGS(MAILER,Mail mailx mail,NONE)
256 if test x"$MAILER" = x"NONE"; then
257 AMANDA_MSG_WARN([WARNING: Amanda cannot send mail reports without a mailer.])
260 DEFAULT_MAILER="$MAILER"
262 AC_DEFINE_UNQUOTED(DEFAULT_MAILER,"$DEFAULT_MAILER",
263 [A program that understands -s "subject" user < message_file])
264 AC_SUBST(DEFAULT_MAILER)
273 # Find and SUBST 'mt', and additionally calculate the proper flag to use
274 # to identify the tape device (usually -f) and DEFINE and SUBST that value
277 AC_DEFUN([AMANDA_PROG_MT],
279 AC_REQUIRE([AMANDA_INIT_PROGS])
280 AC_PATH_PROG(MT,mt,mt,$SYSLOCPATH)
283 *-hp-*) MT_FILE_FLAG="-t" ;;
284 *) MT_FILE_FLAG="-f" ;;
287 AC_SUBST(MT_FILE_FLAG)
288 AC_DEFINE_UNQUOTED(MT_FILE_FLAG, "$MT_FILE_FLAG",
289 [The switch to be used when invoking mt to specify the
294 AC_DEFUN([AMANDA_PROG_MTX],
296 AC_REQUIRE([AMANDA_INIT_PROGS])
297 AC_PATH_PROG(MTX,mtx,mtx,$LOCSYSPATH)
298 AC_ARG_VAR([MTX], [Path to the 'mtx' binary])
301 AC_DEFUN([AMANDA_PROG_MOUNT],
303 AC_REQUIRE([AMANDA_INIT_PROGS])
304 AC_PATH_PROG(MOUNT,mount,mount,$LOCSYSPATH)
305 AC_ARG_VAR([MOUNT], [Path to the 'mount' binary])
308 AC_DEFUN([AMANDA_PROG_UMOUNT],
310 AC_REQUIRE([AMANDA_INIT_PROGS])
311 AC_PATH_PROG(UMOUNT,umount,umount,$LOCSYSPATH)
312 AC_ARG_VAR([UMOUNT], [Path to the 'umount' binary])
315 AC_DEFUN([AMANDA_PROG_UNAME],
317 AC_REQUIRE([AMANDA_INIT_PROGS])
318 AC_PATH_PROG(UNAME,uname,,$LOCSYSPATH)
319 AC_DEFINE_UNQUOTED(UNAME_PATH,"$UNAME",
320 [Define the location of the uname program. ])
323 AC_DEFUN([AMANDA_PROG_PCAT],
325 AC_REQUIRE([AMANDA_INIT_PROGS])
326 AC_PATH_PROG(PCAT,pcat,,$LOCSYSPATH)
329 AC_DEFUN([AMANDA_PROG_PERL],
331 AC_REQUIRE([AMANDA_INIT_PROGS])
332 AC_PATH_PROGS(PERL,perl5 perl,,$LOCSYSPATH)
333 AC_ARG_VAR([PERL], [Path to the 'perl' binary])
334 AC_PROG_PERL_VERSION([5.6.0], [], [
335 AC_MSG_ERROR([Amanda requires at least perl 5.6.0])
339 AC_DEFUN([AMANDA_PROG_SWIG],
341 AC_REQUIRE([AMANDA_INIT_PROGS])
342 AC_PATH_PROGS(SWIG,swig,,$LOCSYSPATH)
343 AC_ARG_VAR([SWIG], [Path to the 'swig' binary (developers only)])
344 # 1.3.32 introduces a change in the way empty strings are handled (old versions
345 # returned undef in Perl, while new versions return an empty Perl string)
346 # 1.3.39 is required for the %begin block
347 AC_PROG_SWIG([1.3.39])
350 AC_DEFUN([AMANDA_PROG_AR],
352 AC_REQUIRE([AMANDA_INIT_PROGS])
353 AC_PATH_PROG(AR,ar,,$LOCSYSPATH)
356 AC_DEFUN([AMANDA_PROG_BASH],
358 AC_REQUIRE([AMANDA_INIT_PROGS])
359 AC_PATH_PROG(BASH,bash,,$SYSPATH)
362 AC_DEFUN([AMANDA_PROG_SSH],
364 AC_REQUIRE([AMANDA_INIT_PROGS])
365 AC_PATH_PROGS(SSH, ssh, , $LOCSYSPATH)
366 AC_DEFINE_UNQUOTED(SSH, "$SSH", [Path to the SSH binary])
369 AC_DEFUN([AMANDA_PROG_GETTEXT],
371 AC_REQUIRE([AMANDA_INIT_PROGS])
372 AC_PATH_PROG(GETTEXT,gettext,,$LOCSYSPATH)
375 AC_DEFUN([AMANDA_PROG_RPCGEN],
377 AC_REQUIRE([AMANDA_INIT_PROGS])
378 AC_PATH_PROG(RPCGEN,rpcgen,,$LOCSYSPATH)
381 AC_DEFUN([AMANDA_PROG_LEX],
383 AC_REQUIRE([AM_PROG_LEX])
384 AC_REQUIRE([AMANDA_PROG_GREP])
385 if test x"$LEX" != x""; then
386 AC_MSG_CHECKING([whether lex is broken Solaris (SGU) lex])
387 $LEX -V < /dev/null >/dev/null 2>conftest.out
388 if grep SGU conftest.out >/dev/null; then
389 AC_MSG_RESULT([yes - disabled (set LEX=/path/to/lex to use a specific binary)])
390 LEX='echo no lex equivalent available; false'