diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2004-03-08 17:49:39 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2004-03-08 17:49:39 +0000 |
commit | 23030b10e3b9335ae5dc0384a2cb2890cf3685ac (patch) | |
tree | ca3e765a20e6da33cb24d1c9871987dd7e7ee756 /m4 | |
parent | 1a63a918f80858a329f0312da04a6a2ea37011d0 (diff) | |
download | ellinika-23030b10e3b9335ae5dc0384a2cb2890cf3685ac.tar.gz ellinika-23030b10e3b9335ae5dc0384a2cb2890cf3685ac.tar.bz2 |
New files
git-svn-id: file:///home/puszcza/svnroot/ellinika/trunk@27 941c8c0f-9102-463b-b60b-cd22ce0e6858
Diffstat (limited to 'm4')
-rw-r--r-- | m4/common.m4 | 49 | ||||
-rw-r--r-- | m4/guile.m4 | 90 | ||||
-rw-r--r-- | m4/lib.m4 | 26 |
3 files changed, 165 insertions, 0 deletions
diff --git a/m4/common.m4 b/m4/common.m4 new file mode 100644 index 0000000..395a7cb --- /dev/null +++ b/m4/common.m4 @@ -0,0 +1,49 @@ +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 + +AC_SUBST(RADIUSD_LDADD_LIST) +AC_DEFUN([RA_RADIUSD_LDADD], + RADIUSD_LDADD_LIST="$RADIUSD_LDADD_LIST [$1]") + diff --git a/m4/guile.m4 b/m4/guile.m4 new file mode 100644 index 0000000..0934cc2 --- /dev/null +++ b/m4/guile.m4 @@ -0,0 +1,90 @@ +dnl This file is part of GNU Radius. +dnl Copyright (C) 2001,2003 Free Software Foundation, Inc. +dnl +dnl Written by Sergey Poznyakoff +dnl +dnl GNU Radius is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl GNU Radius 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 +dnl along with GNU Radius; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +dnl + +AC_DEFUN([RA_CHECK_GUILE], +[ + if test "x$ra_cv_lib_guile" = x; then + cached="" + AC_PATH_PROG(GUILE_CONFIG, guile-config, no, $PATH) + if test $GUILE_CONFIG = no; then + ra_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.4 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 14; then + AC_MSG_RESULT(Nope. Version number too low.) + ra_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]), + [ra_cv_lib_guile=yes], + [ra_cv_lib_guile=no]) + LIBS=$save_LIBS + CFLAGS=$save_CFLAGS + fi ;; + *) AC_MSG_RESULT(Nope. Unknown version number) + ra_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) + RA_RESULT_ACTIONS([ra_cv_lib_guile],[LIBGUILE],[$2],[$3]) + AC_MSG_RESULT(${cached}$ra_cv_lib_guile) + if test $ra_cv_lib_guile = yes; then + if test $GUILE_VERSION -gt 14; then + LIBS="$LIBS $GUILE_LIBS" + CFLAGS="$CFLAGS $GUILE_INCLUDES" + AC_CHECK_FUNCS(scm_long2num scm_cell scm_list_1 scm_list_n scm_c_define\ + scm_c_lookup) + if test $ac_cv_func_scm_cell = no; then + AC_MSG_CHECKING(for inline scm_cell) + AC_TRY_LINK([#include <libguile.h>], + [scm_cell(SCM_EOL, SCM_EOL)], + [ac_cv_func_scm_cell=yes + AC_DEFINE(HAVE_SCM_CELL,1, + Define if you have scm_cell function)]) + AC_MSG_RESULT($ac_cv_func_scm_cell) + fi + CFLAGS=$save_CFLAGS + LIBS=$save_LIBS + fi + fi +]) + + + diff --git a/m4/lib.m4 b/m4/lib.m4 new file mode 100644 index 0000000..1ecb33c --- /dev/null +++ b/m4/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 $3 -L$path -l$1" + AC_TRY_LINK_FUNC($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 +]) + + |