[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

gEDA-cvs: CVS update: gettext.m4



  User: sdb     
  Date: 06/01/07 16:37:51

  Added:       .        gettext.m4 guile.m4
  Log:
  Added gettext.m4 and guile.m4 into gschem m4 dir since my machine
  
  seemingly couldn't find them locally.
  
  
  
  
  Revision  Changes    Path
  1.4       +32 -204   eda/geda/devel/gschem/m4/gettext.m4
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: gettext.m4
  ===================================================================
  RCS file: gettext.m4
  diff -N gettext.m4
  --- /dev/null	1 Jan 1970 00:00:00 -0000
  +++ gettext.m4	7 Jan 2006 21:37:51 -0000	1.4
  @@ -0,0 +1,415 @@
  +# gettext.m4 serial 20 (gettext-0.12)
  +dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
  +dnl This file is free software, distributed under the terms of the GNU
  +dnl General Public License.  As a special exception to the GNU General
  +dnl Public License, this file may be distributed as part of a program
  +dnl that contains a configuration script generated by Autoconf, under
  +dnl the same distribution terms as the rest of that program.
  +dnl
  +dnl This file can can be used in projects which are not available under
  +dnl the GNU General Public License or the GNU Library General Public
  +dnl License but which still want to provide support for the GNU gettext
  +dnl functionality.
  +dnl Please note that the actual code of the GNU gettext library is covered
  +dnl by the GNU Library General Public License, and the rest of the GNU
  +dnl gettext package package is covered by the GNU General Public License.
  +dnl They are *not* in the public domain.
  +
  +dnl Authors:
  +dnl   Ulrich Drepper <drepper@xxxxxxxxxx>, 1995-2000.
  +dnl   Bruno Haible <haible@xxxxxxxxxxxxxx>, 2000-2003.
  +
  +dnl Macro to add for using GNU gettext.
  +
  +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
  +dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
  +dnl    default (if it is not specified or empty) is 'no-libtool'.
  +dnl    INTLSYMBOL should be 'external' for packages with no intl directory,
  +dnl    and 'no-libtool' or 'use-libtool' for packages with an intl directory.
  +dnl    If INTLSYMBOL is 'use-libtool', then a libtool library
  +dnl    $(top_builddir)/intl/libintl.la will be created (shared and/or static,
  +dnl    depending on --{enable,disable}-{shared,static} and on the presence of
  +dnl    AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
  +dnl    $(top_builddir)/intl/libintl.a will be created.
  +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
  +dnl    implementations (in libc or libintl) without the ngettext() function
  +dnl    will be ignored.  If NEEDSYMBOL is specified and is
  +dnl    'need-formatstring-macros', then GNU gettext implementations that don't
  +dnl    support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
  +dnl INTLDIR is used to find the intl libraries.  If empty,
  +dnl    the value `$(top_builddir)/intl/' is used.
  +dnl
  +dnl The result of the configuration is one of three cases:
  +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
  +dnl    and used.
  +dnl    Catalog format: GNU --> install in $(datadir)
  +dnl    Catalog extension: .mo after installation, .gmo in source tree
  +dnl 2) GNU gettext has been found in the system's C library.
  +dnl    Catalog format: GNU --> install in $(datadir)
  +dnl    Catalog extension: .mo after installation, .gmo in source tree
  +dnl 3) No internationalization, always use English msgid.
  +dnl    Catalog format: none
  +dnl    Catalog extension: none
  +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
  +dnl The use of .gmo is historical (it was needed to avoid overwriting the
  +dnl GNU format catalogs when building on a platform with an X/Open gettext),
  +dnl but we keep it in order not to force irrelevant filename changes on the
  +dnl maintainers.
  +dnl
  +AC_DEFUN([AM_GNU_GETTEXT],
  +[
  +  dnl Argument checking.
  +  ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
  +    [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
  +])])])])])
  +  ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
  +    [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
  +])])])])
  +  define(gt_included_intl, ifelse([$1], [external], [no], [yes]))
  +  define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], []))
  +
  +  AC_REQUIRE([AM_PO_SUBDIRS])dnl
  +  ifelse(gt_included_intl, yes, [
  +    AC_REQUIRE([AM_INTL_SUBDIR])dnl
  +  ])
  +
  +  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
  +  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
  +  AC_REQUIRE([AC_LIB_RPATH])
  +
  +  dnl Sometimes libintl requires libiconv, so first search for libiconv.
  +  dnl Ideally we would do this search only after the
  +  dnl      if test "$USE_NLS" = "yes"; then
  +  dnl        if test "$gt_cv_func_gnugettext_libc" != "yes"; then
  +  dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
  +  dnl the configure script would need to contain the same shell code
  +  dnl again, outside any 'if'. There are two solutions:
  +  dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
  +  dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
  +  dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
  +  dnl documented, we avoid it.
  +  ifelse(gt_included_intl, yes, , [
  +    AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
  +  ])
  +
  +  dnl Set USE_NLS.
  +  AM_NLS
  +
  +  ifelse(gt_included_intl, yes, [
  +    BUILD_INCLUDED_LIBINTL=no
  +    USE_INCLUDED_LIBINTL=no
  +  ])
  +  LIBINTL=
  +  LTLIBINTL=
  +  POSUB=
  +
  +  dnl If we use NLS figure out what method
  +  if test "$USE_NLS" = "yes"; then
  +    gt_use_preinstalled_gnugettext=no
  +    ifelse(gt_included_intl, yes, [
  +      AC_MSG_CHECKING([whether included gettext is requested])
  +      AC_ARG_WITH(included-gettext,
  +        [  --with-included-gettext use the GNU gettext library included here],
  +        nls_cv_force_use_gnu_gettext=$withval,
  +        nls_cv_force_use_gnu_gettext=no)
  +      AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
  +
  +      nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
  +      if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
  +    ])
  +        dnl User does not insist on using GNU NLS library.  Figure out what
  +        dnl to use.  If GNU gettext is available we use this.  Else we have
  +        dnl to fall back to GNU NLS library.
  +
  +        dnl Add a version number to the cache macros.
  +        define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1)))
  +        define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc])
  +        define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl])
  +
  +        AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
  +         [AC_TRY_LINK([#include <libintl.h>
  +]ifelse([$2], [need-formatstring-macros],
  +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
  +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
  +#endif
  +changequote(,)dnl
  +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
  +changequote([,])dnl
  +], [])[extern int _nl_msg_cat_cntr;
  +extern int *_nl_domain_bindings;],
  +            [bindtextdomain ("", "");
  +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings],
  +            gt_cv_func_gnugettext_libc=yes,
  +            gt_cv_func_gnugettext_libc=no)])
  +
  +        if test "$gt_cv_func_gnugettext_libc" != "yes"; then
  +          dnl Sometimes libintl requires libiconv, so first search for libiconv.
  +          ifelse(gt_included_intl, yes, , [
  +            AM_ICONV_LINK
  +          ])
  +          dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
  +          dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
  +          dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
  +          dnl even if libiconv doesn't exist.
  +          AC_LIB_LINKFLAGS_BODY([intl])
  +          AC_CACHE_CHECK([for GNU gettext in libintl],
  +            gt_cv_func_gnugettext_libintl,
  +           [gt_save_CPPFLAGS="$CPPFLAGS"
  +            CPPFLAGS="$CPPFLAGS $INCINTL"
  +            gt_save_LIBS="$LIBS"
  +            LIBS="$LIBS $LIBINTL"
  +            dnl Now see whether libintl exists and does not depend on libiconv.
  +            AC_TRY_LINK([#include <libintl.h>
  +]ifelse([$2], [need-formatstring-macros],
  +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
  +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
  +#endif
  +changequote(,)dnl
  +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
  +changequote([,])dnl
  +], [])[extern int _nl_msg_cat_cntr;
  +extern
  +#ifdef __cplusplus
  +"C"
  +#endif
  +const char *_nl_expand_alias ();],
  +              [bindtextdomain ("", "");
  +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
  +              gt_cv_func_gnugettext_libintl=yes,
  +              gt_cv_func_gnugettext_libintl=no)
  +            dnl Now see whether libintl exists and depends on libiconv.
  +            if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then
  +              LIBS="$LIBS $LIBICONV"
  +              AC_TRY_LINK([#include <libintl.h>
  +]ifelse([$2], [need-formatstring-macros],
  +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
  +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
  +#endif
  +changequote(,)dnl
  +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
  +changequote([,])dnl
  +], [])[extern int _nl_msg_cat_cntr;
  +extern
  +#ifdef __cplusplus
  +"C"
  +#endif
  +const char *_nl_expand_alias ();],
  +                [bindtextdomain ("", "");
  +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
  +               [LIBINTL="$LIBINTL $LIBICONV"
  +                LTLIBINTL="$LTLIBINTL $LTLIBICONV"
  +                gt_cv_func_gnugettext_libintl=yes
  +               ])
  +            fi
  +            CPPFLAGS="$gt_save_CPPFLAGS"
  +            LIBS="$gt_save_LIBS"])
  +        fi
  +
  +        dnl If an already present or preinstalled GNU gettext() is found,
  +        dnl use it.  But if this macro is used in GNU gettext, and GNU
  +        dnl gettext is already preinstalled in libintl, we update this
  +        dnl libintl.  (Cf. the install rule in intl/Makefile.in.)
  +        if test "$gt_cv_func_gnugettext_libc" = "yes" \
  +           || { test "$gt_cv_func_gnugettext_libintl" = "yes" \
  +                && test "$PACKAGE" != gettext-runtime \
  +                && test "$PACKAGE" != gettext-tools; }; then
  +          gt_use_preinstalled_gnugettext=yes
  +        else
  +          dnl Reset the values set by searching for libintl.
  +          LIBINTL=
  +          LTLIBINTL=
  +          INCINTL=
  +        fi
  +
  +    ifelse(gt_included_intl, yes, [
  +        if test "$gt_use_preinstalled_gnugettext" != "yes"; then
  +          dnl GNU gettext is not found in the C library.
  +          dnl Fall back on included GNU gettext library.
  +          nls_cv_use_gnu_gettext=yes
  +        fi
  +      fi
  +
  +      if test "$nls_cv_use_gnu_gettext" = "yes"; then
  +        dnl Mark actions used to generate GNU NLS library.
  +        BUILD_INCLUDED_LIBINTL=yes
  +        USE_INCLUDED_LIBINTL=yes
  +        LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV"
  +        LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV"
  +        LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
  +      fi
  +
  +      if test "$gt_use_preinstalled_gnugettext" = "yes" \
  +         || test "$nls_cv_use_gnu_gettext" = "yes"; then
  +        dnl Mark actions to use GNU gettext tools.
  +        CATOBJEXT=.gmo
  +      fi
  +    ])
  +
  +    if test "$gt_use_preinstalled_gnugettext" = "yes" \
  +       || test "$nls_cv_use_gnu_gettext" = "yes"; then
  +      AC_DEFINE(ENABLE_NLS, 1,
  +        [Define to 1 if translation of program messages to the user's native language
  +   is requested.])
  +    else
  +      USE_NLS=no
  +    fi
  +  fi
  +
  +  AC_MSG_CHECKING([whether to use NLS])
  +  AC_MSG_RESULT([$USE_NLS])
  +  if test "$USE_NLS" = "yes"; then
  +    AC_MSG_CHECKING([where the gettext function comes from])
  +    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
  +      if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
  +        gt_source="external libintl"
  +      else
  +        gt_source="libc"
  +      fi
  +    else
  +      gt_source="included intl directory"
  +    fi
  +    AC_MSG_RESULT([$gt_source])
  +  fi
  +
  +  if test "$USE_NLS" = "yes"; then
  +
  +    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
  +      if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
  +        AC_MSG_CHECKING([how to link with libintl])
  +        AC_MSG_RESULT([$LIBINTL])
  +        AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
  +      fi
  +
  +      dnl For backward compatibility. Some packages may be using this.
  +      AC_DEFINE(HAVE_GETTEXT, 1,
  +       [Define if the GNU gettext() function is already present or preinstalled.])
  +      AC_DEFINE(HAVE_DCGETTEXT, 1,
  +       [Define if the GNU dcgettext() function is already present or preinstalled.])
  +    fi
  +
  +    dnl We need to process the po/ directory.
  +    POSUB=po
  +  fi
  +
  +  ifelse(gt_included_intl, yes, [
  +    dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
  +    dnl to 'yes' because some of the testsuite requires it.
  +    if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
  +      BUILD_INCLUDED_LIBINTL=yes
  +    fi
  +
  +    dnl Make all variables we use known to autoconf.
  +    AC_SUBST(BUILD_INCLUDED_LIBINTL)
  +    AC_SUBST(USE_INCLUDED_LIBINTL)
  +    AC_SUBST(CATOBJEXT)
  +
  +    dnl For backward compatibility. Some configure.ins may be using this.
  +    nls_cv_header_intl=
  +    nls_cv_header_libgt=
  +
  +    dnl For backward compatibility. Some Makefiles may be using this.
  +    DATADIRNAME=share
  +    AC_SUBST(DATADIRNAME)
  +
  +    dnl For backward compatibility. Some Makefiles may be using this.
  +    INSTOBJEXT=.mo
  +    AC_SUBST(INSTOBJEXT)
  +
  +    dnl For backward compatibility. Some Makefiles may be using this.
  +    GENCAT=gencat
  +    AC_SUBST(GENCAT)
  +
  +    dnl For backward compatibility. Some Makefiles may be using this.
  +    if test "$USE_INCLUDED_LIBINTL" = yes; then
  +      INTLOBJS="\$(GETTOBJS)"
  +    fi
  +    AC_SUBST(INTLOBJS)
  +
  +    dnl Enable libtool support if the surrounding package wishes it.
  +    INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
  +    AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
  +  ])
  +
  +  dnl For backward compatibility. Some Makefiles may be using this.
  +  INTLLIBS="$LIBINTL"
  +  AC_SUBST(INTLLIBS)
  +
  +  dnl Make all documented variables known to autoconf.
  +  AC_SUBST(LIBINTL)
  +  AC_SUBST(LTLIBINTL)
  +  AC_SUBST(POSUB)
  +])
  +
  +
  +dnl Checks for all prerequisites of the intl subdirectory,
  +dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
  +dnl            USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
  +AC_DEFUN([AM_INTL_SUBDIR],
  +[
  +  AC_REQUIRE([AC_PROG_INSTALL])dnl
  +  AC_REQUIRE([AM_MKINSTALLDIRS])dnl
  +  AC_REQUIRE([AC_PROG_CC])dnl
  +  AC_REQUIRE([AC_CANONICAL_HOST])dnl
  +  AC_REQUIRE([AC_PROG_RANLIB])dnl
  +  AC_REQUIRE([AC_ISC_POSIX])dnl
  +  AC_REQUIRE([AC_HEADER_STDC])dnl
  +  AC_REQUIRE([AC_C_CONST])dnl
  +  AC_REQUIRE([AC_C_INLINE])dnl
  +  AC_REQUIRE([AC_TYPE_OFF_T])dnl
  +  AC_REQUIRE([AC_TYPE_SIZE_T])dnl
  +  AC_REQUIRE([AC_FUNC_ALLOCA])dnl
  +  AC_REQUIRE([AC_FUNC_MMAP])dnl
  +  AC_REQUIRE([jm_GLIBC21])dnl
  +  AC_REQUIRE([gt_INTDIV0])dnl
  +  AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl
  +  AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl
  +  AC_REQUIRE([gt_INTTYPES_PRI])dnl
  +
  +  AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
  +stdlib.h string.h unistd.h sys/param.h])
  +  AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \
  +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \
  +strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \
  +__fsetlocking])
  +
  +  AM_ICONV
  +  AM_LANGINFO_CODESET
  +  if test $ac_cv_header_locale_h = yes; then
  +    AM_LC_MESSAGES
  +  fi
  +
  +  dnl intl/plural.c is generated from intl/plural.y. It requires bison,
  +  dnl because plural.y uses bison specific features. It requires at least
  +  dnl bison-1.26 because earlier versions generate a plural.c that doesn't
  +  dnl compile.
  +  dnl bison is only needed for the maintainer (who touches plural.y). But in
  +  dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
  +  dnl the rule in general Makefile. Now, some people carelessly touch the
  +  dnl files or have a broken "make" program, hence the plural.c rule will
  +  dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
  +  dnl present or too old.
  +  AC_CHECK_PROGS([INTLBISON], [bison])
  +  if test -z "$INTLBISON"; then
  +    ac_verc_fail=yes
  +  else
  +    dnl Found it, now check the version.
  +    AC_MSG_CHECKING([version of bison])
  +changequote(<<,>>)dnl
  +    ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
  +    case $ac_prog_version in
  +      '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
  +      1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
  +changequote([,])dnl
  +         ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
  +      *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
  +    esac
  +    AC_MSG_RESULT([$ac_prog_version])
  +  fi
  +  if test $ac_verc_fail = yes; then
  +    INTLBISON=:
  +  fi
  +])
  +
  +
  +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
  +AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
  
  
  
  1.1                  eda/geda/devel/gschem/m4/guile.m4
  
  Index: guile.m4
  ===================================================================
  ## Autoconf macros for working with Guile.
  ##
  ##   Copyright (C) 1998,2001 Free Software Foundation, Inc.
  ##
  ## This program is free software; you can redistribute it and/or modify
  ## it under the terms of the GNU General Public License as published by
  ## the Free Software Foundation; either version 2, or (at your option)
  ## any later version.
  ##
  ## This program is distributed in the hope that it will be useful,
  ## but WITHOUT ANY WARRANTY; without even the implied warranty of
  ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  ## GNU General Public License for more details.
  ##
  ## You should have received a copy of the GNU General Public License
  ## along with this software; see the file COPYING.  If not, write to
  ## the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  ## Boston, MA 02111-1307 USA
  ##
  ## As a special exception, the Free Software Foundation gives permission
  ## for additional uses of the text contained in its release of GUILE.
  ##
  ## The exception is that, if you link the GUILE library with other files
  ## to produce an executable, this does not by itself cause the
  ## resulting executable to be covered by the GNU General Public License.
  ## Your use of that executable is in no way restricted on account of
  ## linking the GUILE library code into it.
  ##
  ## This exception does not however invalidate any other reasons why
  ## the executable file might be covered by the GNU General Public License.
  ##
  ## This exception applies only to the code released by the
  ## Free Software Foundation under the name GUILE.  If you copy
  ## code from other Free Software Foundation releases into a copy of
  ## GUILE, as the General Public License permits, the exception does
  ## not apply to the code that you add in this way.  To avoid misleading
  ## anyone as to the status of such modified files, you must delete
  ## this exception notice from them.
  ##
  ## If you write modifications of your own for GUILE, it is your choice
  ## whether to permit this exception to apply to your modifications.
  ## If you do not wish that, delete this exception notice.
  
  ## Index
  ## -----
  ##
  ## GUILE_PROGS -- set paths to Guile interpreter, config and tool programs
  ## GUILE_FLAGS -- set flags for compiling and linking with Guile
  ## GUILE_SITE_DIR -- find path to Guile "site" directory
  ## GUILE_CHECK -- evaluate Guile Scheme code and capture the return value
  ## GUILE_MODULE_CHECK -- check feature of a Guile Scheme module
  ## GUILE_MODULE_AVAILABLE -- check availability of a Guile Scheme module
  ## GUILE_MODULE_REQUIRED -- fail if a Guile Scheme module is unavailable
  ## GUILE_MODULE_EXPORTS -- check if a module exports a variable
  ## GUILE_MODULE_REQUIRED_EXPORT -- fail if a module doesn't export a variable
  
  ## Code
  ## ----
  
  ## NOTE: Comments preceding an AC_DEFUN (starting from "Usage:") are massaged
  ## into doc/ref/autoconf-macros.texi (see Makefile.am in that directory).
  
  # GUILE_PROGS -- set paths to Guile interpreter, config and tool programs
  #
  # Usage: GUILE_PROGS
  #
  # This macro looks for programs @code{guile}, @code{guile-config} and
  # @code{guile-tools}, and sets variables @var{GUILE}, @var{GUILE_CONFIG} and
  # @var{GUILE_TOOLS}, to their paths, respectively.  If either of the first two
  # is not found, signal error.
  #
  # The variables are marked for substitution, as by @code{AC_SUBST}.
  #
  AC_DEFUN([GUILE_PROGS],
   [AC_PATH_PROG(GUILE,guile)
    if test "$GUILE" = "" ; then
        AC_MSG_ERROR([guile required but not found])
    fi
    AC_SUBST(GUILE)
    AC_PATH_PROG(GUILE_CONFIG,guile-config)
    if test "$GUILE_CONFIG" = "" ; then
        AC_MSG_ERROR([guile-config required but not found])
    fi
    AC_SUBST(GUILE_CONFIG)
    AC_PATH_PROG(GUILE_TOOLS,guile-tools)
    AC_SUBST(GUILE_TOOLS)
   ])
  
  # GUILE_FLAGS -- set flags for compiling and linking with Guile
  #
  # Usage: GUILE_FLAGS
  #
  # This macro runs the @code{guile-config} script, installed with Guile, to
  # find out where Guile's header files and libraries are installed.  It sets
  # two variables, @var{GUILE_CFLAGS} and @var{GUILE_LDFLAGS}.
  #
  # @var{GUILE_CFLAGS}: flags to pass to a C or C++ compiler to build code that
  # uses Guile header files.  This is almost always just a @code{-I} flag.
  #
  # @var{GUILE_LDFLAGS}: flags to pass to the linker to link a program against
  # Guile.  This includes @code{-lguile} for the Guile library itself, any
  # libraries that Guile itself requires (like -lqthreads), and so on.  It may
  # also include a @code{-L} flag to tell the compiler where to find the
  # libraries.
  #
  # The variables are marked for substitution, as by @code{AC_SUBST}.
  #
  AC_DEFUN([GUILE_FLAGS],
   [AC_REQUIRE([GUILE_PROGS])dnl
    AC_MSG_CHECKING([libguile compile flags])
    GUILE_CFLAGS="`$GUILE_CONFIG compile`"
    AC_MSG_RESULT([$GUILE_CFLAGS])
    AC_MSG_CHECKING([libguile link flags])
    GUILE_LDFLAGS="`$GUILE_CONFIG link`"
    AC_MSG_RESULT([$GUILE_LDFLAGS])
    AC_SUBST(GUILE_CFLAGS)
    AC_SUBST(GUILE_LDFLAGS)
   ])
  
  # GUILE_SITE_DIR -- find path to Guile "site" directory
  #
  # Usage: GUILE_SITE_DIR
  #
  # This looks for Guile's "site" directory, usually something like
  # PREFIX/share/guile/site, and sets var @var{GUILE_SITE} to the path.
  # Note that the var name is different from the macro name.
  #
  # The variable is marked for substitution, as by @code{AC_SUBST}.
  #
  AC_DEFUN([GUILE_SITE_DIR],
   [AC_REQUIRE([GUILE_PROGS])dnl
    AC_MSG_CHECKING(for Guile site directory)
    GUILE_SITE=`[$GUILE_CONFIG] info pkgdatadir`/site
    AC_MSG_RESULT($GUILE_SITE)
    AC_SUBST(GUILE_SITE)
   ])
  
  # GUILE_CHECK -- evaluate Guile Scheme code and capture the return value
  #
  # Usage: GUILE_CHECK_RETVAL(var,check)
  #
  # @var{var} is a shell variable name to be set to the return value.
  # @var{check} is a Guile Scheme expression, evaluated with "$GUILE -c", and
  #    returning either 0 or non-#f to indicate the check passed.
  #    Non-0 number or #f indicates failure.
  #    Avoid using the character "#" since that confuses autoconf.
  #
  AC_DEFUN([GUILE_CHECK],
   [AC_REQUIRE([GUILE_PROGS])
    $GUILE -c "$2" > /dev/null 2>&1
    $1=$?
   ])
  
  # GUILE_MODULE_CHECK -- check feature of a Guile Scheme module
  #
  # Usage: GUILE_MODULE_CHECK(var,module,featuretest,description)
  #
  # @var{var} is a shell variable name to be set to "yes" or "no".
  # @var{module} is a list of symbols, like: (ice-9 common-list).
  # @var{featuretest} is an expression acceptable to GUILE_CHECK, q.v.
  # @var{description} is a present-tense verb phrase (passed to AC_MSG_CHECKING).
  #
  AC_DEFUN([GUILE_MODULE_CHECK],
           [AC_MSG_CHECKING([if $2 $4])
  	  GUILE_CHECK($1,(use-modules $2) (exit ((lambda () $3))))
  	  if test "$$1" = "0" ; then $1=yes ; else $1=no ; fi
            AC_MSG_RESULT($$1)
           ])
  
  # GUILE_MODULE_AVAILABLE -- check availability of a Guile Scheme module
  #
  # Usage: GUILE_MODULE_AVAILABLE(var,module)
  #
  # @var{var} is a shell variable name to be set to "yes" or "no".
  # @var{module} is a list of symbols, like: (ice-9 common-list).
  #
  AC_DEFUN([GUILE_MODULE_AVAILABLE],
           [GUILE_MODULE_CHECK($1,$2,0,is available)
           ])
  
  # GUILE_MODULE_REQUIRED -- fail if a Guile Scheme module is unavailable
  #
  # Usage: GUILE_MODULE_REQUIRED(symlist)
  #
  # @var{symlist} is a list of symbols, WITHOUT surrounding parens,
  # like: ice-9 common-list.
  #
  AC_DEFUN([GUILE_MODULE_REQUIRED],
           [GUILE_MODULE_AVAILABLE(ac_guile_module_required, ($1))
            if test "$ac_guile_module_required" = "no" ; then
                AC_MSG_ERROR([required guile module not found: ($1)])
            fi
           ])
  
  # GUILE_MODULE_EXPORTS -- check if a module exports a variable
  #
  # Usage: GUILE_MODULE_EXPORTS(var,module,modvar)
  #
  # @var{var} is a shell variable to be set to "yes" or "no".
  # @var{module} is a list of symbols, like: (ice-9 common-list).
  # @var{modvar} is the Guile Scheme variable to check.
  #
  AC_DEFUN([GUILE_MODULE_EXPORTS],
   [GUILE_MODULE_CHECK($1,$2,$3,exports `$3')
   ])
  
  # GUILE_MODULE_REQUIRED_EXPORT -- fail if a module doesn't export a variable
  #
  # Usage: GUILE_MODULE_REQUIRED_EXPORT(module,modvar)
  #
  # @var{module} is a list of symbols, like: (ice-9 common-list).
  # @var{modvar} is the Guile Scheme variable to check.
  #
  AC_DEFUN([GUILE_MODULE_REQUIRED_EXPORT],
   [GUILE_MODULE_EXPORTS(guile_module_required_export,$1,$2)
    if test "$guile_module_required_export" = "no" ; then
        AC_MSG_ERROR([module $1 does not export $2; required])
    fi
   ])
  
  ## guile.m4 ends here