* gpgsm/t-import.c (check_result): gpgsm does now return info in
[gpgme.git] / acinclude.m4
index 7cbdb15..57f9005 100644 (file)
@@ -26,20 +26,535 @@ AC_DEFUN(GNUPG_FIX_HDR_VERSION,
   ])
 
 
-dnl GNUPG_CHECK_TYPEDEF(TYPE, HAVE_NAME)
-dnl Check whether a typedef exists and create a #define $2 if it exists
+dnl ##
+dnl ##  GNU Pth - The GNU Portable Threads
+dnl ##  Copyright (c) 1999-2002 Ralf S. Engelschall <rse@engelschall.com>
+dnl ##
+dnl ##  This file is part of GNU Pth, a non-preemptive thread scheduling
+dnl ##  library which can be found at http://www.gnu.org/software/pth/.
+dnl ##
+dnl ##  This library is free software; you can redistribute it and/or
+dnl ##  modify it under the terms of the GNU Lesser General Public
+dnl ##  License as published by the Free Software Foundation; either
+dnl ##  version 2.1 of the License, or (at your option) any later version.
+dnl ##
+dnl ##  This library 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 GNU
+dnl ##  Lesser General Public License for more details.
+dnl ##
+dnl ##  You should have received a copy of the GNU Lesser General Public
+dnl ##  License along with this library; if not, write to the Free Software
+dnl ##  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+dnl ##  USA, or contact Ralf S. Engelschall <rse@engelschall.com>.
+dnl ##
+dnl ##  pth.m4: Autoconf macro for locating GNU Pth from within
+dnl ##          configure.in of third-party software packages
+dnl ##
+
+dnl ##
+dnl ##  Synopsis:
+dnl ##  AC_CHECK_PTH([MIN-VERSION [,          # minimum Pth version, e.g. 1.2.0
+dnl ##                DEFAULT-WITH-PTH [,     # default value for --with-pth option
+dnl ##                DEFAULT-WITH-PTH-TEST [,# default value for --with-pth-test option
+dnl ##                EXTEND-VARS [,          # whether CFLAGS/LDFLAGS/etc are extended
+dnl ##                ACTION-IF-FOUND [,      # action to perform if Pth was found
+dnl ##                ACTION-IF-NOT-FOUND     # action to perform if Pth was not found
+dnl ##                ]]]]]])
+dnl ##  Examples:
+dnl ##  AC_CHECK_PTH(1.2.0)
+dnl ##  AC_CHECK_PTH(1.2.0,,,no,CFLAGS="$CFLAGS -DHAVE_PTH $PTH_CFLAGS")
+dnl ##  AC_CHECK_PTH(1.2.0,yes,yes,yes,CFLAGS="$CFLAGS -DHAVE_PTH")
+dnl ##
+dnl
+dnl #   auxilliary macros
+AC_DEFUN(_AC_PTH_ERROR, [dnl
+AC_MSG_RESULT([*FAILED*])
+dnl define(_ac_pth_line,dnl
+dnl "+------------------------------------------------------------------------+")
+dnl echo " _ac_pth_line" 1>&2
+cat <<EOT | sed -e 's/^[[      ]]*/ | /' -e 's/>>/  /' 1>&2
+$1
+EOT
+dnl echo " _ac_pth_line" 1>&2
+dnl undefine(_ac_pth_line)
+exit 1
+])
+AC_DEFUN(_AC_PTH_VERBOSE, [dnl
+if test ".$verbose" = .yes; then
+    AC_MSG_RESULT([  $1])
+fi
+])
+dnl #   the user macro
+AC_DEFUN(AC_CHECK_PTH, [dnl
+dnl
+dnl #   prerequisites
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_CPP])dnl
 dnl
-AC_DEFUN(GNUPG_CHECK_TYPEDEF,
-  [ AC_MSG_CHECKING(for $1 typedef)
-    AC_CACHE_VAL(gnupg_cv_typedef_$1,
-    [AC_TRY_COMPILE([#include <stdlib.h>
-    #include <sys/types.h>], [
-    #undef $1
-    int a = sizeof($1);
-    ], gnupg_cv_typedef_$1=yes, gnupg_cv_typedef_$1=no )])
-    AC_MSG_RESULT($gnupg_cv_typedef_$1)
-    if test "$gnupg_cv_typedef_$1" = yes; then
-        AC_DEFINE($2, ,
-        [Define to 1 if $1 is defined in the <sys/types.h> header file.])
+PTH_CPPFLAGS=''
+PTH_CFLAGS=''
+PTH_LDFLAGS=''
+PTH_LIBS=''
+AC_SUBST(PTH_CPPFLAGS)
+AC_SUBST(PTH_CFLAGS)
+AC_SUBST(PTH_LDFLAGS)
+AC_SUBST(PTH_LIBS)
+dnl #   command line options
+AC_MSG_CHECKING(for GNU Pth)
+_AC_PTH_VERBOSE([])
+AC_ARG_WITH(pth,dnl
+[  --with-pth[=ARG]        Build with GNU Pth Library  (default=]ifelse([$2],,yes,$2)[)],dnl
+,dnl
+with_pth="ifelse([$2],,yes,$2)"
+)dnl
+AC_ARG_WITH(pth-test,dnl
+[  --with-pth-test         Perform GNU Pth Sanity Test (default=]ifelse([$3],,yes,$3)[)],dnl
+,dnl
+with_pth_test="ifelse([$3],,yes,$3)"
+)dnl
+_AC_PTH_VERBOSE([+ Command Line Options:])
+_AC_PTH_VERBOSE([    o --with-pth=$with_pth])
+_AC_PTH_VERBOSE([    o --with-pth-test=$with_pth_test])
+dnl
+dnl #   configuration
+if test ".$with_pth" != .no; then
+    _pth_subdir=no
+    _pth_subdir_opts=''
+    case "$with_pth" in
+        subdir:* )
+            _pth_subdir=yes
+            changequote(, )dnl
+            _pth_subdir_opts=`echo $with_pth | sed -e 's/^subdir:[^    ]*[     ]*//'`
+            with_pth=`echo $with_pth | sed -e 's/^subdir:\([^  ]*\).*$/\1/'`
+            changequote([, ])dnl
+            ;;
+    esac
+    _pth_version=""
+    _pth_location=""
+    _pth_type=""
+    _pth_cppflags=""
+    _pth_cflags=""
+    _pth_ldflags=""
+    _pth_libs=""
+    if test ".$with_pth" = .yes; then
+        #   via config script in $PATH
+        changequote(, )dnl
+        _pth_version=`(pth-config --version) 2>/dev/null |\
+                      sed -e 's/^.*\([0-9]\.[0-9]*[ab.][0-9]*\).*$/\1/'`
+        changequote([, ])dnl
+        if test ".$_pth_version" != .; then
+            _pth_location=`pth-config --prefix`
+            _pth_type='installed'
+            _pth_cppflags=`pth-config --cflags`
+            _pth_cflags=`pth-config --cflags`
+            _pth_ldflags=`pth-config --ldflags`
+            _pth_libs=`pth-config --libs`
+        fi
+    elif test -d "$with_pth"; then
+        with_pth=`echo $with_pth | sed -e 's;/*$;;'`
+        _pth_found=no
+        #   via locally included source tree
+        if test ".$_pth_subdir" = .yes; then
+            _pth_location="$with_pth"
+            _pth_type='local'
+            _pth_cppflags="-I$with_pth"
+            _pth_cflags="-I$with_pth"
+            if test -f "$with_pth/ltconfig"; then
+                _pth_ldflags="-L$with_pth/.libs"
+            else
+                _pth_ldflags="-L$with_pth"
+            fi
+            _pth_libs="-lpth"
+            changequote(, )dnl
+            _pth_version=`grep '^const char PTH_Hello' $with_pth/pth_vers.c |\
+                          sed -e 's;^.*Version[        ]*\([0-9]*\.[0-9]*[.ab][0-9]*\)[        ].*$;\1;'`
+            changequote([, ])dnl
+            _pth_found=yes
+            ac_configure_args="$ac_configure_args --enable-subdir $_pth_subdir_opts"
+            with_pth_test=no
+        fi
+        #   via config script under a specified directory
+        #   (a standard installation, but not a source tree)
+        if test ".$_pth_found" = .no; then
+            for _dir in $with_pth/bin $with_pth; do
+                if test -f "$_dir/pth-config"; then
+                    test -f "$_dir/pth-config.in" && continue # pth-config in source tree!
+                    changequote(, )dnl
+                    _pth_version=`($_dir/pth-config --version) 2>/dev/null |\
+                                  sed -e 's/^.*\([0-9]\.[0-9]*[ab.][0-9]*\).*$/\1/'`
+                    changequote([, ])dnl
+                    if test ".$_pth_version" != .; then
+                        _pth_location=`$_dir/pth-config --prefix`
+                        _pth_type="installed"
+                        _pth_cppflags=`$_dir/pth-config --cflags`
+                        _pth_cflags=`$_dir/pth-config --cflags`
+                        _pth_ldflags=`$_dir/pth-config --ldflags`
+                        _pth_libs=`$_dir/pth-config --libs`
+                        _pth_found=yes
+                        break
+                    fi
+                fi
+            done
+        fi
+        #   in any subarea under a specified directory
+        #   (either a special installation or a Pth source tree)
+        if test ".$_pth_found" = .no; then
+            changequote(, )dnl
+            _pth_found=0
+            for _file in x `find $with_pth -name "pth.h" -type f -print`; do
+                test .$_file = .x && continue
+                _dir=`echo $_file | sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;'`
+                _pth_version=`($_dir/pth-config --version) 2>/dev/null |\
+                              sed -e 's/^.*\([0-9]\.[0-9]*[ab.][0-9]*\).*$/\1/'`
+                if test ".$_pth_version" = .; then
+                    _pth_version=`grep '^#define PTH_VERSION_STR' $_file |\
+                                  sed -e 's;^#define[  ]*PTH_VERSION_STR[      ]*"\([0-9]*\.[0-9]*[.ab][0-9]*\)[       ].*$;\1;'`
+                fi
+                _pth_cppflags="-I$_dir"
+                _pth_cflags="-I$_dir"
+                _pth_found=`expr $_pth_found + 1`
+            done
+            for _file in x `find $with_pth -name "libpth.[aso]" -type f -print`; do
+                test .$_file = .x && continue
+                _dir=`echo $_file | sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;'`
+                _pth_ldflags="-L$_dir"
+                _pth_libs="-lpth"
+                _pth_found=`expr $_pth_found + 1`
+            done
+            changequote([, ])dnl
+            if test ".$_pth_found" = .2; then
+                _pth_location="$with_pth"
+                _pth_type="uninstalled"
+            else
+                _pth_version=''
+            fi
+        fi
     fi
+    _AC_PTH_VERBOSE([+ Determined Location:])
+    _AC_PTH_VERBOSE([    o path: $_pth_location])
+    _AC_PTH_VERBOSE([    o type: $_pth_type])
+    if test ".$_pth_version" = .; then
+       with_pth=no
+    else
+dnl        if test ".$with_pth" != .yes; then
+dnl             _AC_PTH_ERROR([dnl
+dnl             Unable to locate GNU Pth under $with_pth.
+dnl             Please specify the correct path to either a GNU Pth installation tree
+dnl             (use --with-pth=DIR if you used --prefix=DIR for installing GNU Pth in
+dnl             the past) or to a GNU Pth source tree (use --with-pth=DIR if DIR is a
+dnl             path to a pth-X.Y.Z/ directory; but make sure the package is already
+dnl             built, i.e., the "configure; make" step was already performed there).])
+dnl        else
+dnl             _AC_PTH_ERROR([dnl
+dnl             Unable to locate GNU Pth in any system-wide location (see \$PATH).
+dnl             Please specify the correct path to either a GNU Pth installation tree
+dnl             (use --with-pth=DIR if you used --prefix=DIR for installing GNU Pth in
+dnl             the past) or to a GNU Pth source tree (use --with-pth=DIR if DIR is a
+dnl             path to a pth-X.Y.Z/ directory; but make sure the package is already
+dnl             built, i.e., the "configure; make" step was already performed there).])
+dnl        fi
+dnl    fi
+    dnl #
+    dnl #  Check whether the found version is sufficiently new
+    dnl #
+    _req_version="ifelse([$1],,1.0.0,$1)"
+    for _var in _pth_version _req_version; do
+        eval "_val=\"\$${_var}\""
+        _major=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\1/'`
+        _minor=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\2/'`
+        _rtype=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\3/'`
+        _micro=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\4/'`
+        case $_rtype in
+            "a" ) _rtype=0 ;;
+            "b" ) _rtype=1 ;;
+            "." ) _rtype=2 ;;
+        esac
+        _hex=`echo dummy | awk '{ printf("%d%02d%1d%02d", major, minor, rtype, micro); }' \
+              "major=$_major" "minor=$_minor" "rtype=$_rtype" "micro=$_micro"`
+        eval "${_var}_hex=\"\$_hex\""
+    done
+    _AC_PTH_VERBOSE([+ Determined Versions:])
+    _AC_PTH_VERBOSE([    o existing: $_pth_version -> 0x$_pth_version_hex])
+    _AC_PTH_VERBOSE([    o required: $_req_version -> 0x$_req_version_hex])
+    _ok=0
+    if test ".$_pth_version_hex" != .; then
+        if test ".$_req_version_hex" != .; then
+            if test $_pth_version_hex -ge $_req_version_hex; then
+                _ok=1
+            fi
+        fi
+    fi
+    if test ".$_ok" = .0; then
+        _AC_PTH_ERROR([dnl
+        Found Pth version $_pth_version, but required at least version $_req_version.
+        Upgrade Pth under $_pth_location to $_req_version or higher first, please.])
+    fi
+    dnl #
+    dnl #   Perform Pth Sanity Compile Check
+    dnl #
+    if test ".$with_pth_test" = .yes; then
+        _ac_save_CPPFLAGS="$CPPFLAGS"
+        _ac_save_CFLAGS="$CFLAGS"
+        _ac_save_LDFLAGS="$LDFLAGS"
+        _ac_save_LIBS="$LIBS"
+        CPPFLAGS="$CPPFLAGS $_pth_cppflags"
+        CFLAGS="$CFLAGS $_pth_cflags"
+        LDFLAGS="$LDFLAGS $_pth_ldflags"
+        LIBS="$LIBS $_pth_libs"
+        _AC_PTH_VERBOSE([+ Test Build Environment:])
+        _AC_PTH_VERBOSE([    o CPPFLAGS=\"$CPPFLAGS\"])
+        _AC_PTH_VERBOSE([    o CFLAGS=\"$CFLAGS\"])
+        _AC_PTH_VERBOSE([    o LDFLAGS=\"$LDFLAGS\"])
+        _AC_PTH_VERBOSE([    o LIBS=\"$LIBS\"])
+        cross_compile=no
+        define(_code1, [dnl
+        #include <stdio.h>
+        #include <pth.h>
+        ])
+        define(_code2, [dnl
+        int main(int argc, char *argv[])
+        {
+            FILE *fp;
+            if (!(fp = fopen("conftestval", "w")))
+                exit(1);
+            fprintf(fp, "hmm");
+            fclose(fp);
+            pth_init();
+            pth_kill();
+            if (!(fp = fopen("conftestval", "w")))
+                exit(1);
+            fprintf(fp, "yes");
+            fclose(fp);
+            exit(0);
+        }
+        ])
+        _AC_PTH_VERBOSE([+ Performing Sanity Checks:])
+        _AC_PTH_VERBOSE([    o pre-processor test])
+        AC_TRY_CPP(_code1, _ok=yes, _ok=no)
+        if test ".$_ok" != .yes; then
+            _AC_PTH_ERROR([dnl
+            Found GNU Pth $_pth_version under $_pth_location, but
+            was unable to perform a sanity pre-processor check. This means
+            the GNU Pth header pth.h was not found.
+            We used the following build environment:
+            >> CPP="$CPP"
+            >> CPPFLAGS="$CPPFLAGS"
+            See config.log for possibly more details.])
+        fi
+        _AC_PTH_VERBOSE([    o link check])
+        AC_TRY_LINK(_code1, _code2, _ok=yes, _ok=no)
+        if test ".$_ok" != .yes; then
+            _AC_PTH_ERROR([dnl
+            Found GNU Pth $_pth_version under $_pth_location, but
+            was unable to perform a sanity linker check. This means
+            the GNU Pth library libpth.a was not found.
+            We used the following build environment:
+            >> CC="$CC"
+            >> CFLAGS="$CFLAGS"
+            >> LDFLAGS="$LDFLAGS"
+            >> LIBS="$LIBS"
+            See config.log for possibly more details.])
+        fi
+        _AC_PTH_VERBOSE([    o run-time check])
+        AC_TRY_RUN(_code1 _code2, _ok=`cat conftestval`, _ok=no, _ok=no)
+        if test ".$_ok" != .yes; then
+            if test ".$_ok" = .no; then
+                _AC_PTH_ERROR([dnl
+                Found GNU Pth $_pth_version under $_pth_location, but
+                was unable to perform a sanity execution check. This usually
+                means that the GNU Pth shared library libpth.so is present
+                but \$LD_LIBRARY_PATH is incomplete to execute a Pth test.
+                In this case either disable this test via --without-pth-test,
+                or extend \$LD_LIBRARY_PATH, or build GNU Pth as a static
+                library only via its --disable-shared Autoconf option.
+                We used the following build environment:
+                >> CC="$CC"
+                >> CFLAGS="$CFLAGS"
+                >> LDFLAGS="$LDFLAGS"
+                >> LIBS="$LIBS"
+                See config.log for possibly more details.])
+            else
+                _AC_PTH_ERROR([dnl
+                Found GNU Pth $_pth_version under $_pth_location, but
+                was unable to perform a sanity run-time check. This usually
+                means that the GNU Pth library failed to work and possibly
+                caused a core dump in the test program. In this case it
+                is strongly recommended that you re-install GNU Pth and this
+                time make sure that it really passes its "make test" procedure.
+                We used the following build environment:
+                >> CC="$CC"
+                >> CFLAGS="$CFLAGS"
+                >> LDFLAGS="$LDFLAGS"
+                >> LIBS="$LIBS"
+                See config.log for possibly more details.])
+            fi
+        fi
+        _extendvars="ifelse([$4],,yes,$4)"
+        if test ".$_extendvars" != .yes; then
+            CPPFLAGS="$_ac_save_CPPFLAGS"
+            CFLAGS="$_ac_save_CFLAGS"
+            LDFLAGS="$_ac_save_LDFLAGS"
+            LIBS="$_ac_save_LIBS"
+        fi
+    else
+        _extendvars="ifelse([$4],,yes,$4)"
+        if test ".$_extendvars" = .yes; then
+            if test ".$_pth_subdir" = .yes; then
+                CPPFLAGS="$CPPFLAGS $_pth_cppflags"
+                CFLAGS="$CFLAGS $_pth_cflags"
+                LDFLAGS="$LDFLAGS $_pth_ldflags"
+                LIBS="$LIBS $_pth_libs"
+            fi
+        fi
+    fi
+    PTH_CPPFLAGS="$_pth_cppflags"
+    PTH_CFLAGS="$_pth_cflags"
+    PTH_LDFLAGS="$_pth_ldflags"
+    PTH_LIBS="$_pth_libs"
+    AC_SUBST(PTH_CPPFLAGS)
+    AC_SUBST(PTH_CFLAGS)
+    AC_SUBST(PTH_LDFLAGS)
+    AC_SUBST(PTH_LIBS)
+    _AC_PTH_VERBOSE([+ Final Results:])
+    _AC_PTH_VERBOSE([    o PTH_CPPFLAGS=\"$PTH_CPPFLAGS\"])
+    _AC_PTH_VERBOSE([    o PTH_CFLAGS=\"$PTH_CFLAGS\"])
+    _AC_PTH_VERBOSE([    o PTH_LDFLAGS=\"$PTH_LDFLAGS\"])
+    _AC_PTH_VERBOSE([    o PTH_LIBS=\"$PTH_LIBS\"])
+fi
+fi
+if test ".$with_pth" != .no; then
+    AC_MSG_RESULT([version $_pth_version, $_pth_type under $_pth_location])
+    ifelse([$5], , :, [$5])
+else
+    AC_MSG_RESULT([no])
+    ifelse([$6], , :, [$6])
+fi
+])
+
+dnl GNUPG_CHECK_VA_COPY()
+dnl   Do some check on how to implement va_copy.
+dnl   May define MUST_COPY_VA_BY_VAL.
+dnl   Actual test code taken from glib-1.1.
+AC_DEFUN(GNUPG_CHECK_VA_COPY,
+[ AC_MSG_CHECKING(whether va_lists must be copied by value)
+  AC_CACHE_VAL(gnupg_cv_must_copy_va_byval,[
+    gnupg_cv_must_copy_va_byval=no
+    AC_TRY_RUN([
+       #include <stdarg.h>
+       void f (int i, ...)
+       {
+          va_list args1, args2;
+          va_start (args1, i);
+          args2 = args1;
+          if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+            exit (1);
+          va_end (args1);
+          va_end (args2);
+       }
+      
+       int main()
+       {
+          f (0, 42);
+            return 0;
+       }
+    ],gnupg_cv_must_copy_va_byval=yes)
   ])
+  if test "$gnupg_cv_must_copy_va_byval" = yes; then
+     AC_DEFINE(MUST_COPY_VA_BYVAL,1,[used to implement the va_copy macro])
+  fi
+  AC_MSG_RESULT($gnupg_cv_must_copy_va_byval)
+])
+
+
+# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40)
+dnl Copyright (C) 2000-2002 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.
+
+# Test for the GNU C Library, version 2.1 or newer.
+# From Bruno Haible.
+
+AC_DEFUN([jm_GLIBC21],
+  [
+    AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
+      ac_cv_gnu_library_2_1,
+      [AC_EGREP_CPP([Lucky GNU user],
+       [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+  Lucky GNU user
+ #endif
+#endif
+       ],
+       ac_cv_gnu_library_2_1=yes,
+       ac_cv_gnu_library_2_1=no)
+      ]
+    )
+    AC_SUBST(GLIBC21)
+    GLIBC21="$ac_cv_gnu_library_2_1"
+  ]
+)
+
+
+dnl AM_PATH_GPG_ERROR([MINIMUM-VERSION,
+dnl                   [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
+dnl Test for libgpg-error and define GPG_ERROR_CFLAGS and GPG_ERROR_LIBS
+dnl
+dnl taken from libgpg-error 0.6
+dnl
+AC_DEFUN(AM_PATH_GPG_ERROR,
+[ AC_ARG_WITH(gpg-error-prefix,
+            AC_HELP_STRING([--with-gpg-error-prefix=PFX],
+                           [prefix where GPG Error is installed (optional)]),
+     gpg_error_config_prefix="$withval", gpg_error_config_prefix="")
+  if test x$gpg_error_config_prefix != x ; then
+     if test x${GPG_ERROR_CONFIG+set} != xset ; then
+        GPG_ERROR_CONFIG=$gpg_error_config_prefix/bin/gpg-error-config
+     fi
+  fi
+
+  AC_PATH_PROG(GPG_ERROR_CONFIG, gpg-error-config, no)
+  min_gpg_error_version=ifelse([$1], ,0.0,$1)
+  AC_MSG_CHECKING(for GPG Error - version >= $min_gpg_error_version)
+  ok=no
+  if test "$GPG_ERROR_CONFIG" != "no" ; then
+    req_major=`echo $min_gpg_error_version | \
+               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
+    req_minor=`echo $min_gpg_error_version | \
+               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
+    gpg_error_config_version=`$GPG_ERROR_CONFIG $gpg_error_config_args --version`
+    major=`echo $gpg_error_config_version | \
+               sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
+    minor=`echo $gpg_error_config_version | \
+               sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
+    if test "$major" -gt "$req_major"; then
+        ok=yes
+    else 
+        if test "$major" -eq "$req_major"; then
+            if test "$minor" -ge "$req_minor"; then
+               ok=yes
+            fi
+        fi
+    fi
+  fi
+  if test $ok = yes; then
+    GPG_ERROR_CFLAGS=`$GPG_ERROR_CONFIG $gpg_error_config_args --cflags`
+    GPG_ERROR_LIBS=`$GPG_ERROR_CONFIG $gpg_error_config_args --libs`
+    AC_MSG_RESULT(yes)
+    ifelse([$2], , :, [$2])
+  else
+    GPG_ERROR_CFLAGS=""
+    GPG_ERROR_LIBS=""
+    AC_MSG_RESULT(no)
+    ifelse([$3], , :, [$3])
+  fi
+  AC_SUBST(GPG_ERROR_CFLAGS)
+  AC_SUBST(GPG_ERROR_LIBS)
+])
+
+