diff options
Diffstat (limited to 'am')
-rw-r--r-- | am/common.m4 | 45 | ||||
-rw-r--r-- | am/guile.m4 | 109 | ||||
-rw-r--r-- | am/lib.m4 | 26 |
3 files changed, 180 insertions, 0 deletions
diff --git a/am/common.m4 b/am/common.m4 new file mode 100644 index 0000000..f78364a --- /dev/null +++ b/am/common.m4 @@ -0,0 +1,45 @@ +dnl RA_FLUSHLEFT -- remove all whitespace at the beginning of lines +dnl This is useful for c-code which may include cpp statements +dnl +define([RA_FLUSHLEFT], + [changequote(`,')dnl +patsubst(`$1', `^[ ]+') +changequote([,])])dnl + +dnl RA_RESULT_ACTIONS -- generate shell code for the result of a test +dnl $1 -- CVAR -- cache variable to check +dnl $2 -- NAME -- if not empty, used to generate a default value TRUE: +dnl `AC_DEFINE(HAVE_NAME)' +dnl $2 -- TRUE -- what to do if the CVAR is not `no' +dnl $3 -- FALSE -- what to do otherwise; defaults to `:' +dnl +AC_DEFUN([RA_RESULT_ACTIONS], [ +[if test "$$1" != "" -a "$$1" != no; then + ]ifelse([$3], , + [AC_DEFINE(HAVE_]translit($2, [a-z ./<>], [A-Z___])[,1,[FIXME])], + [$3])[ +else + ]ifelse([$4], , [:], [$4])[ +fi]])dnl + +dnl RA_CHECK_STRUCT_FIELD -- See if a structure has a particular field +dnl $1 - NAME -- name of structure +dnl $2 - FIELD -- name of field to test +dnl $3 - INCLS -- C program text to inculde necessary files for testing +dnl $4 - TRUE -- what to do if struct NAME has FIELD; defaults to +dnl `AC_DEFINE(HAVE_NAME_FIELD)' +dnl $5 - FALSE -- what to do if not; defaults to `:' +dnl +dnl NOTE: We still don't use AC_CHECK_MEMBERS, since it has (as of +dnl autoconf 2.53) a bug which prevents it from recognizing members +dnl of aggregate type. + +AC_DEFUN([RA_CHECK_STRUCT_FIELD], [ + define([ra_CVAR], [ra_cv_struct_]translit($1_$2, [A-Z], [a-z]))dnl + AC_CACHE_CHECK([whether struct $1 has $2 field], ra_CVAR, + AC_TRY_COMPILE(RA_FLUSHLEFT([$3]), + [struct $1 ra_x; int ra_y = sizeof ra_x.$2;], + ra_CVAR[=yes], ra_CVAR[=no])) + RA_RESULT_ACTIONS(ra_CVAR, [$1_$2], [$4], [$5])dnl + undefine([ra_CVAR])])dnl + diff --git a/am/guile.m4 b/am/guile.m4 new file mode 100644 index 0000000..33fcbff --- /dev/null +++ b/am/guile.m4 @@ -0,0 +1,109 @@ +dnl This file is part of GNU mailutils. +dnl Copyright (C) 2001, 2004, 2007 Free Software Foundation, Inc. +dnl +dnl This program is free software; you can redistribute it and/or modify it +dnl under the terms of the GNU General Public License as published by the +dnl Free Software Foundation; either version 3 of the License, or (at your +dnl option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License along +dnl with this program. If not, see <http://www.gnu.org/licenses/>. +dnl + +dnl MU_RESULT_ACTIONS -- generate shell code for the result of a test +dnl $1 -- CVAR -- cache variable to check +dnl $2 -- NAME -- if not empty, used to generate a default value TRUE: +dnl `AC_DEFINE(HAVE_NAME)' +dnl $2 -- TRUE -- what to do if the CVAR is not `no' +dnl $3 -- FALSE -- what to do otherwise; defaults to `:' +dnl +AC_DEFUN([MU_RESULT_ACTIONS], [ +[if test "$$1" != "" -a "$$1" != no; then + ]ifelse([$3], , + [AC_DEFINE(HAVE_]translit($2, [a-z ./<>], [A-Z___])[,1,[FIXME])], + [$3])[ +else + ]ifelse([$4], , [:], [$4])[ +fi]])dnl + +AC_DEFUN([MU_CHECK_GUILE], +[ + if test "x$mu_cv_lib_guile" = x; then + cached="" + AC_PATH_PROG(GUILE_CONFIG, guile-config, no, $PATH) + if test $GUILE_CONFIG = no; then + mu_cv_lib_guile=no + else + GUILE_INCLUDES=`guile-config compile` + GUILE_LIBS=`guile-config link` + fi + + if test $GUILE_CONFIG != no; then + AC_MSG_CHECKING(for guile version 1.6 or higher) + GUILE_VERSION=`($GUILE_CONFIG --version 2>&1; echo '')|sed -n 's/guile-config - Guile version \([[0-9]][[0-9]]*\)\.\([[0-9]][[0-9]]*\).*/\1\2/p'` + case "x$GUILE_VERSION" in + x[[0-9]]*) + if test $GUILE_VERSION -lt 18; then + AC_MSG_RESULT(Nope. Version number too low.) + mu_cv_lib_guile=no + else + AC_DEFINE_UNQUOTED(GUILE_VERSION, $GUILE_VERSION, + [Guile version number: MAX*10 + MIN]) + AC_MSG_RESULT(OK) + save_LIBS=$LIBS + save_CFLAGS=$CFLAGS + LIBS="$LIBS $GUILE_LIBS" + CFLAGS="$CFLAGS $GUILE_INCLUDES" + AC_TRY_LINK([#include <libguile.h>], + ifelse([$1], , scm_shell(0, NULL);, [$1]), + [mu_cv_lib_guile=yes], + [mu_cv_lib_guile=no]) + LIBS=$save_LIBS + CFLAGS=$save_CFLAGS + fi ;; + *) AC_MSG_RESULT(Nope. Unknown version number) + mu_cv_lib_guile=no;; + esac + fi + else + cached=" (cached) " + GUILE_INCLUDES=`$GUILE_CONFIG compile` + GUILE_LIBS=`$GUILE_CONFIG link` + fi + AC_MSG_CHECKING(whether to build guile support) + MU_RESULT_ACTIONS([mu_cv_lib_guile],[LIBGUILE],[$2],[$3]) + AC_MSG_RESULT(${cached}$mu_cv_lib_guile) + + if test $mu_cv_lib_guile = yes; then + AC_ARG_WITH([guiledir], + AC_HELP_STRING([--with-guiledir=DIR], + [Specify the directory to install guile modules to]), + [case $withval in + /*) GUILE_SITE=$withval;; + yes) GUILE_SITE=`$GUILE_CONFIG info pkgdatadir`/site;; + *) AC_MSG_ERROR([Argument to --with-guiledir must be an absolute directory name]);; + esac], + [GUILE_SITE=`$GUILE_CONFIG info pkgdatadir`/site + pfx=$prefix + test "x$pfx" = xNONE && pfx=$ac_default_prefix + case $GUILE_SITE in + $pfx/*) ;; # OK + *) AC_MSG_WARN([guile site directory "$GUILE_SITE" lies outside your current prefix ($pfx).]) + GUILE_SITE='$(datadir)/guile/site' + AC_MSG_WARN([Falling back to ${GUILE_SITE} instead. Use --with-guiledir to force using site directory.]) + ;; + esac]) + fi + + AC_SUBST(GUILE_SITE) + AC_SUBST(GUILE_INCLUDES) + AC_SUBST(GUILE_LIBS) +]) + + + diff --git a/am/lib.m4 b/am/lib.m4 new file mode 100644 index 0000000..73f3564 --- /dev/null +++ b/am/lib.m4 @@ -0,0 +1,26 @@ +dnl Arguments: +dnl $1 -- Library to look for +dnl $2 -- Function to check in the library +dnl $3 -- Any additional libraries that might be needed +dnl $4 -- Action to be taken when test succeeds +dnl $5 -- Action to be taken when test fails +dnl $6 -- Directories where the library may reside +AC_DEFUN([RA_CHECK_LIB], +[ + save_LIBS=$LIBS + AC_CACHE_CHECK([for -l$1], ra_cv_lib_$1, + [ + for path in $6 + do + LIBS="$save_LIBS -L$path" + AC_CHECK_LIB($1, $2, + [ra_cv_lib_$1="$3 -L$path -l$1" + break], + [ra_cv_lib_$1=no],$3) + done + ]) + RA_RESULT_ACTIONS([ra_cv_lib_$1],[LIB$1],[$4],[$5]) + LIBS=$save_LIBS +]) + + |