Imported Upstream version 2.6.0
[debian/amanda] / config / amanda / progs.m4
diff --git a/config/amanda/progs.m4 b/config/amanda/progs.m4
new file mode 100644 (file)
index 0000000..79babba
--- /dev/null
@@ -0,0 +1,392 @@
+# OVERVIEW
+#
+#   Code to handle searches for programs Amanda needs.
+#
+#   Because Amanda uses a customized search path, many macros which are standard
+#   in autoconf have been wrapped here.  Where this is the only change, the description
+#   of those macros has been omitted.
+#
+#   All of these macros indicate their requirements using AC_REQUIRE, so the order in
+#   which they are called in configure.in is inconsequential.
+
+# SYNOPSIS
+#
+#   AMANDA_INIT_PROGS
+#
+# OVERVIEW
+#
+#   Set up some amanda-specific path directories.  This should be AC_REQUIRE()d by
+#   any macros which need to search for a program.
+#
+#   SYSPATH is a list of likely system locations for a file, while
+#   LOCPATH is a list of likely local locations.  The two are combined
+#   in different orders in SYSLOCPATH and LOCSYSPATH.
+#
+AC_DEFUN([AMANDA_INIT_PROGS],
+[
+    SYSPATH="/bin:/usr/bin:/sbin:/usr/sbin:/opt/SUNWspro/bin:/usr/ucb:/usr/sfw/bin:/usr/bsd:/etc:/usr/etc"
+    # expand prefix or exec_prefix in LOCPATH
+    LOCPATH=`(
+       test "x$prefix" = xNONE && prefix=$ac_default_prefix
+       test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
+       eval echo "$libexecdir:$PATH:/usr/local/sbin:/usr/local/bin:/usr/ccs/bin"
+    )`
+    SYSLOCPATH="$SYSPATH:$LOCPATH"
+    LOCSYSPATH="$LOCPATH:$SYSPATH"
+])
+
+# SYNOPSIS
+#
+#   AMANDA_PROG_LINT
+#
+# OVERVIEW
+#
+#   Find a lint binary (either lint or splint) and record its name in AMLINT.
+#   Set up appropriate flags for the discovered binary in AMLINTFLAGS
+#
+AC_DEFUN([AMANDA_PROG_LINT],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_REQUIRE([AMANDA_PROG_GREP])
+
+    AC_PATH_PROG(AMLINT,lint,,/opt/SUNWspro/bin:$SYSLOCPATH)
+    if test ! -z "$AMLINT"; then
+      $AMLINT -flags 2>&1 | $GREP -- '-errfmt=' > /dev/null
+      if test $? -eq 0; then
+       AMLINTFLAGS="-n -s -u -m -x"
+       AMLINTFLAGS="$AMLINTFLAGS -errchk=%all"
+       AMLINTFLAGS="$AMLINTFLAGS -errfmt=macro"
+       AMLINTFLAGS="$AMLINTFLAGS -errhdr=no%/usr/include"
+       AMLINTFLAGS="$AMLINTFLAGS -errhdr=%user"
+       AMLINTFLAGS="$AMLINTFLAGS -errsecurity=extended"
+       AMLINTFLAGS="$AMLINTFLAGS -errtags=yes"
+       AMLINTFLAGS="$AMLINTFLAGS -Ncheck=%all"
+       AMLINTFLAGS="$AMLINTFLAGS -Nlevel=2"
+       AMLINTFLAGS="$AMLINTFLAGS -erroff=E_ASGN_NEVER_USED"
+       AMLINTFLAGS="$AMLINTFLAGS,E_ASGN_RESET"
+       AMLINTFLAGS="$AMLINTFLAGS,E_CAST_INT_CONST_TO_SMALL_INT"
+       AMLINTFLAGS="$AMLINTFLAGS,E_CAST_INT_TO_SMALL_INT"
+       AMLINTFLAGS="$AMLINTFLAGS,E_CAST_UINT_TO_SIGNED_INT"
+       AMLINTFLAGS="$AMLINTFLAGS,E_CONSTANT_CONDITION"
+       AMLINTFLAGS="$AMLINTFLAGS,E_ENUM_UNUSE"
+       AMLINTFLAGS="$AMLINTFLAGS,E_EXPR_NULL_EFFECT"
+       AMLINTFLAGS="$AMLINTFLAGS,E_FUNC_RET_ALWAYS_IGNOR"
+       AMLINTFLAGS="$AMLINTFLAGS,E_FUNC_RET_MAYBE_IGNORED"
+       AMLINTFLAGS="$AMLINTFLAGS,E_H_C_CHECK0"
+       AMLINTFLAGS="$AMLINTFLAGS,E_H_C_CHECK1"
+       AMLINTFLAGS="$AMLINTFLAGS,E_H_C_CHECK2"
+       AMLINTFLAGS="$AMLINTFLAGS,E_INCL_MNUSD"
+       AMLINTFLAGS="$AMLINTFLAGS,E_INCL_NUSD"
+       AMLINTFLAGS="$AMLINTFLAGS,E_MCR_NODIFF"
+       AMLINTFLAGS="$AMLINTFLAGS,E_NAME_MULTIPLY_DEF"
+       AMLINTFLAGS="$AMLINTFLAGS,E_P_REF_NULL_PSBL"
+       AMLINTFLAGS="$AMLINTFLAGS,E_P_REF_SUSP"
+       AMLINTFLAGS="$AMLINTFLAGS,E_PTRDIFF_OVERFLOW"
+       AMLINTFLAGS="$AMLINTFLAGS,E_P_USE_NULL_PSBL"
+       AMLINTFLAGS="$AMLINTFLAGS,E_P_USE_SUSP"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_ACCESS_WARN"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_CHDIR_WARN"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_CHMOD_WARN"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_CREAT_WITHOUT_EXCL"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_EXEC_PATH"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_EXEC_WARN"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_FOPEN_MODE"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_GETENV_WARN"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_MKDIR_WARN"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_PRINTF_VAR_FMT"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_RAND_WARN"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_SCANF_VAR_FMT"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_SELECT_WARN"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_SHELL_WARN"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_STRNCPY_WARN"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_UMASK_WARN"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SEC_USE_AFTER_STAT"
+       AMLINTFLAGS="$AMLINTFLAGS,E_SIGN_EXTENSION_PSBL"
+       AMLINTFLAGS="$AMLINTFLAGS,E_TYPEDEF_UNUSE"
+       AMLINTFLAGS="$AMLINTFLAGS,E_UNCAL_F"
+      else
+       AMLINTFLAGS=""
+      fi
+    else
+      AC_PATH_PROG(AMLINT,splint,,$SYSLOCPATH)
+      if test ! -z "$AMLINT"; then
+       AMLINT="splint"
+      else
+       AMLINT='echo "Error: LINT is not installed" ; false'
+      fi
+      AMLINTFLAGS='+show-scan +unixlib -weak -globs +usedef +usereleased +impouts -paramimptemp -varuse -warnposix -redef -preproc -fixedformalarray -retval -unrecog -usevarargs -formatcode'
+    fi
+    AC_SUBST(AMLINTFLAGS)
+])
+
+# SYNOPSIS
+#
+#   AMANDA_PROG_GNUPLOT
+#
+# OVERVIEW
+#
+#   Search for a 'gnuplot' binary, placing the result in the precious 
+#   variable GNUPLOT.  Also accepts --with-gnuplot to indicate the location
+#   of the binary.
+#
+AC_DEFUN([AMANDA_PROG_GNUPLOT],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+
+    AC_ARG_WITH(gnuplot,
+    AS_HELP_STRING([--with-gnuplot=PATH],
+                  [use gnuplot executable at PATH in amplot]),
+       [
+           case "$withval" in
+               y | ye | yes) : ;;
+               n | no) GNUPLOT= ;;
+               *) GNUPLOT="$withval" ;;
+           esac
+       ])
+    AC_PATH_PROG(GNUPLOT,gnuplot,,$LOCSYSPATH)
+
+    AC_ARG_VAR(GNUPLOT, [Location of the 'gnuplot' binary])
+    AC_SUBST(GNUPLOT)
+])
+
+# SYNOPSIS
+#
+#   AMANDA_PROG_PRINT
+#
+# OVERVIEW
+#
+#   Search for a binary for printing, usually either 'lp' or 'lpr', and put its
+#   path in PRINT, as well as defining it in LPRCMD in config.h.
+#
+#   LPRFLAG is defined in config.h as the appropriate command-line flag to use 
+#   to select a printer; either -P or -d.
+#
+AC_DEFUN([AMANDA_PROG_PRINT],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+
+    AC_PATH_PROGS(PRINT, lpr lp)
+    if test ! -z "$PRINT"; then
+       AC_DEFINE_UNQUOTED(LPRCMD, "$PRINT",
+               [Command for starting printing jobs. ])
+
+       AC_CACHE_CHECK([which flag to use to select a printer],
+           amanda_cv_printer_flag, [
+           amanda_cv_printer_flag=$PRINTER_FLAG
+           case "$PRINT" in
+               lpr|*/lpr) amanda_cv_printer_flag="-P";;
+               lp|*/lp) amanda_cv_printer_flag="-d";;
+           esac
+       ])
+       if test ! -z "$amanda_cv_printer_flag"; then
+           AC_DEFINE_UNQUOTED(LPRFLAG, "$amanda_cv_printer_flag",
+                   [LPRCMD switch for specifying a printer name. ])
+       else
+           AMANDA_MSG_WARN([WARNING: amanda will always print to the default printer])
+       fi
+    fi
+])
+
+# SYNOPSIS
+#
+#   AMANDA_PROG_GNUPLOT
+#
+# OVERVIEW
+#
+#   Search for a 'gnuplot' binary, placing the result in the precious 
+#   variable GNUPLOT.  Also accepts --with-gnuplot to indicate the location
+#   of the binary.
+#
+AC_DEFUN([AMANDA_PROG_GNUPLOT],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+
+    AC_ARG_WITH(gnuplot,
+    AS_HELP_STRING([--with-gnuplot=PATH],
+                  [use gnuplot executable at PATH in amplot]),
+       [
+           case "$withval" in
+               y | ye | yes) : ;;
+               n | no) GNUPLOT=no ;;
+               *) GNUPLOT="$withval" ;;
+           esac
+       ])
+    if test "x$GNUPLOT" = "xno"; then
+       GNUPLOT=
+    else
+       AC_PATH_PROG(GNUPLOT,gnuplot,,$LOCSYSPATH)
+    fi
+
+    AC_ARG_VAR(GNUPLOT, [Location of the 'gnuplot' binary])
+    AC_SUBST(GNUPLOT)
+])
+
+## simple macros needing no description; some add AC_DEFINE_UNQUOTED
+
+AC_DEFUN([AMANDA_PROG_GREP],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROG(GREP,grep,grep,$LOCSYSPATH)
+    AC_DEFINE_UNQUOTED(GREP,"$GREP",
+           [Define the location of the grep program. ])
+])
+
+AC_DEFUN([AMANDA_PROG_CAT],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROG(CAT,cat,cat,$LOCSYSPATH)
+])
+
+AC_DEFUN([AMANDA_PROG_COMPRESS],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROG(COMPRESS,compress,,$LOCSYSPATH)
+])
+
+AC_DEFUN([AMANDA_PROG_DD],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROG(DD,dd,,$LOCSYSPATH)
+])
+
+AC_DEFUN([AMANDA_PROG_GETCONF],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROG(GETCONF,getconf,,$SYSPATH)
+])
+
+AC_DEFUN([AMANDA_PROG_GZIP],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROG(GZIP,gzip,,$LOCSYSPATH)
+])
+
+AC_DEFUN([AMANDA_PROG_SORT],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_REQUIRE([AMANDA_CHECK_COMPONENTS])
+
+    AC_PATH_PROG(SORT,sort,NONE,$LOCSYSPATH)
+
+    # sort is only needed in the server build
+    if test x"$SORT" = x"NONE" && $WANT_SERVER; then
+        AC_MSG_ERROR([Set SORT to the path of the sort program.])
+    fi
+
+    AC_DEFINE_UNQUOTED(SORT_PATH,"$SORT",
+           [Define to the exact path to the sort program. ])
+])
+
+AC_DEFUN([AMANDA_PROG_MAILER],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROGS(MAILER,Mail mailx mail,NONE)
+    if test x"$MAILER" = x"NONE"; then
+        AMANDA_MSG_WARN([WARNING: Amanda cannot send mail reports without a mailer.])
+    else
+        AC_DEFINE_UNQUOTED(MAILER,"$MAILER",
+                [A program that understands -s "subject" user < message_file])
+    fi
+])
+
+# SYNOPSIS
+#
+#   AMANDA_PROG_MT
+#
+# OVERVIEW
+#   
+#   Find and SUBST 'mt', and additionally calculate the proper flag to use
+#   to identify the tape device (usually -f) and DEFINE and SUBST that value
+#   as MT_FILE_FLAG.
+#
+AC_DEFUN([AMANDA_PROG_MT],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROG(MT,mt,mt,$LOCSYSPATH)
+
+    case "$target" in
+       *-hp-*) MT_FILE_FLAG="-t" ;;
+       *) MT_FILE_FLAG="-f" ;;
+    esac
+
+    AC_SUBST(MT_FILE_FLAG)
+    AC_DEFINE_UNQUOTED(MT_FILE_FLAG, "$MT_FILE_FLAG",
+  [The switch to be used when invoking mt to specify the
+ * tape device. ])
+])
+
+
+AC_DEFUN([AMANDA_PROG_CHIO],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROG(CHIO,chio,chio,$LOCSYSPATH)
+])
+
+
+AC_DEFUN([AMANDA_PROG_CHS],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROG(CHS,chs,chs,$LOCSYSPATH)
+])
+
+
+AC_DEFUN([AMANDA_PROG_MTX],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROG(MTX,mtx,mtx,$LOCSYSPATH)
+])
+
+AC_DEFUN([AMANDA_PROG_MCUTIL],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROG(MCUTIL,mcutil,mcutil,$LOCSYSPATH)
+])
+
+AC_DEFUN([AMANDA_PROG_PCAT],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROG(PCAT,pcat,,$LOCSYSPATH)
+])
+
+AC_DEFUN([AMANDA_PROG_PERL],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROGS(PERL,perl5 perl,,$LOCSYSPATH)
+    AC_ARG_VAR([PERL], [Path to the 'perl' binary])
+    AC_PROG_PERL_VERSION([5.6.0], [], [
+       AC_MSG_ERROR([Amanda requires at least perl 5.6.0])
+    ])
+])
+
+AC_DEFUN([AMANDA_PROG_SWIG],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROGS(SWIG,swig,,$LOCSYSPATH)
+    AC_ARG_VAR([SWIG], [Path to the 'swig' binary (developers only)])
+    AC_PROG_SWIG([1.3.28])
+])
+
+AC_DEFUN([AMANDA_PROG_AR],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROG(AR,ar,,$LOCSYSPATH)
+])
+
+AC_DEFUN([AMANDA_PROG_BASH],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROG(BASH,bash,,$SYSPATH)
+])
+
+AC_DEFUN([AMANDA_PROG_SSH],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROGS(SSH, ssh, , $LOCSYSPATH)
+    AC_DEFINE_UNQUOTED(SSH, "$SSH", [Path to the SSH binary])
+])
+
+AC_DEFUN([AMANDA_PROG_GETTEXT],
+[
+    AC_REQUIRE([AMANDA_INIT_PROGS])
+    AC_PATH_PROG(GETTEXT,gettext,,$LOCSYSPATH)
+])