diff options
-rw-r--r-- | doc/gpgrt.texi | 20 | ||||
-rw-r--r-- | src/Makefile.am | 12 | ||||
-rw-r--r-- | src/gpg-error-config.in | 12 | ||||
-rw-r--r-- | src/gpgrt.m4 | 124 |
4 files changed, 155 insertions, 13 deletions
diff --git a/doc/gpgrt.texi b/doc/gpgrt.texi index 857973a..cc652f5 100644 --- a/doc/gpgrt.texi +++ b/doc/gpgrt.texi @@ -209,17 +209,25 @@ directory in which the header file is located to the compilers include file search path (via the @option{-I} option). However, the path to the include file is determined at the time the -source is configured. To solve this problem, Libgpg-error ships with a small -helper program @command{gpg-error-config} that knows the path to the -include file and other configuration options. The options that need -to be added to the compiler invocation at compile time are output by -the @option{--cflags} option to @command{gpg-error-config}. The following -example shows how it can be used at the command line: +source is configured. To solve this problem, Libgpg-error ships with +the small helper programs @command{gpg-error-config} and +@command{gpgrt-config} which both know the path to the include file +and other configuration options. The options that need to be added to +the compiler invocation at compile time are output by the +@option{--cflags} option to @command{gpg-error-config} (or +@command{gpgrt-config}. The following example shows how it can be +used at the command line: @example gcc -c foo.c $(gpg-error-config --cflags) @end example +or with the identical + +@example +gcc -c foo.c $(gpgrt-config --cflags) +@end example + Adding the output of @samp{gpg-error-config --cflags} to the compiler’s command line will ensure that the compiler can find the Libgpg-error header file. diff --git a/src/Makefile.am b/src/Makefile.am index a95b732..4db7338 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -83,26 +83,27 @@ lock_obj_pub = \ lib_LTLIBRARIES = libgpg-error.la nodist_include_HEADERS = gpg-error.h gpgrt.h bin_SCRIPTS = gpg-error-config +nodist_bin_SCRIPTS = gpgrt-config m4datadir = $(datadir)/aclocal -m4data_DATA = gpg-error.m4 +m4data_DATA = gpg-error.m4 gpgrt.m4 EXTRA_DIST = mkstrtable.awk err-sources.h.in err-codes.h.in \ mkerrnos.awk errnos.in README \ mkerrcodes.awk mkerrcodes1.awk mkerrcodes2.awk mkerrcodes.c \ mkheader.c gpg-error.h.in mkw32errmap.c w32-add.h w32ce-add.h \ - err-sources.h err-codes.h gpg-error-config.in gpg-error.m4 \ + err-sources.h err-codes.h gpg-error-config.in gpg-error.m4 gpgrt.m4 \ gpg-error.vers gpg-error.def.in \ versioninfo.rc.in gpg-error.w32-manifest.in \ $(lock_obj_pub) BUILT_SOURCES = err-sources.h err-codes.h code-to-errno.h code-from-errno.h \ err-sources-sym.h err-codes-sym.h errnos-sym.h gpg-error.h gpgrt.h \ - gpg-error.def mkw32errmap.map.c + gpgrt-config gpg-error.def mkw32errmap.map.c tmp_files = _mkerrcodes.h _gpg-error.def.h mkw32errmap.tab.h mkw32errmap.map.c CLEANFILES = err-sources.h err-codes.h code-to-errno.h code-from-errno.h \ - gpg-error.h gpgrt.h \ + gpg-error.h gpgrt.h gpgrt-config \ mkerrcodes mkerrcodes.h gpg-error.def mkw32errmap.tab.h \ mkw32errmap.map.c err-sources-sym.h err-codes-sym.h errnos-sym.h \ gpg-extra/errno.h mkheader $(tmp_files) lock-obj-pub.native.h @@ -317,6 +318,9 @@ gpg-error.h: Makefile mkheader $(parts_of_gpg_error_h) \ gpgrt.h: gpg-error.h cp gpg-error.h gpgrt.h +gpgrt-config: gpg-error-config + cp gpg-error-config gpgrt-config + install-data-local: if HAVE_W32CE_SYSTEM -$(MKDIR_P) "$(DESTDIR)$(includedir)/gpg-extra" diff --git a/src/gpg-error-config.in b/src/gpg-error-config.in index bc1c583..aa7cb67 100644 --- a/src/gpg-error-config.in +++ b/src/gpg-error-config.in @@ -8,7 +8,7 @@ # This file is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - +# SPDX-License-Identifier: FSFULLR prefix=@prefix@ exec_prefix=@exec_prefix@ @@ -16,13 +16,19 @@ includedir=@includedir@ libdir=@libdir@ isubdirafter="@GPG_ERROR_CONFIG_ISUBDIRAFTER@" +if echo "$0" | grep gpg-error-config 2>/dev/null >/dev/null; then + myname="gpg-error-config" +else + myname="gpgrt-config" +fi + output="" mt=no usage() { cat <<EOF -Usage: gpg-error-config [OPTIONS] +Usage: $myname [OPTIONS] Options: [--mt] (must be the first option) [--prefix] @@ -67,7 +73,7 @@ while test $# -gt 0; do output="$output -I$includedir" fi # Note: -idirafter is a gcc extension. It is only used on - # systems where gcc is the only compiler we support. + # systems where gcc is the only compiler we support (WindowsCE). for i in $isubdirafter; do output="$output -idirafter ${includedir}/${i}" done diff --git a/src/gpgrt.m4 b/src/gpgrt.m4 new file mode 100644 index 0000000..8c2b6f9 --- /dev/null +++ b/src/gpgrt.m4 @@ -0,0 +1,124 @@ +# gpgrt.m4 - autoconf macro to detect libgpgrt +# Copyright (C) 2002, 2003, 2004, 2011, 2014, 2017 g10 Code GmbH +# +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This file is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# SPDX-License-Identifier: FSFULLR +# +# Last-changed: 2014-10-02 +# Note: This is a duplicate of gpg-error.m4 with uses the future name +# of libgpg-error to prepare for a smooth migration in some distant +# time. + +dnl AM_PATH_GPGRT([MINIMUM-VERSION, +dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]]) +dnl +dnl Test for libgpgrt and define GPGRT_CFLAGS, GPGRT_LIBS, +dnl GPG_ERROR_MT_CFLAGS, and GPG_ERROR_MT_LIBS. The _MT_ variants are +dnl used for programs requiring real multi thread support. +dnl +dnl If a prefix option is not used, the config script is first +dnl searched in $SYSROOT/bin and then along $PATH. If the used +dnl config script does not match the host specification the script +dnl is added to the gpg_config_script_warn variable. +dnl +AC_DEFUN([AM_PATH_GPGRT], +[ AC_REQUIRE([AC_CANONICAL_HOST]) + gpgrt_config_prefix="" + dnl --with-libgpg-error-prefix=PFX is the preferred name for this option, + dnl since that is consistent with how our three siblings use the directory/ + dnl package name in --with-$dir_name-prefix=PFX. + AC_ARG_WITH(libgpg-error-prefix, + AC_HELP_STRING([--with-libgpg-error-prefix=PFX], + [prefix where GPG Error is installed (optional)]), + [gpgrt_config_prefix="$withval"]) + + dnl Accept --with-gpg-error-prefix and make it work the same as + dnl --with-libgpg-error-prefix above, for backwards compatibility, + dnl but do not document this old, inconsistently-named option. + AC_ARG_WITH(gpg-error-prefix,, + [gpgrt_config_prefix="$withval"]) + + if test x"${GPGRT_CONFIG}" = x ; then + if test x"${gpgrt_config_prefix}" != x ; then + GPGRT_CONFIG="${gpgrt_config_prefix}/bin/gpg-error-config" + else + case "${SYSROOT}" in + /*) + if test -x "${SYSROOT}/bin/gpg-error-config" ; then + GPGRT_CONFIG="${SYSROOT}/bin/gpg-error-config" + fi + ;; + '') + ;; + *) + AC_MSG_WARN([Ignoring \$SYSROOT as it is not an absolute path.]) + ;; + esac + fi + fi + + AC_PATH_PROG(GPGRT_CONFIG, gpg-error-config, no) + min_gpgrt_version=ifelse([$1], ,0.0,$1) + AC_MSG_CHECKING(for GPG Error - version >= $min_gpgrt_version) + ok=no + if test "$GPGRT_CONFIG" != "no" \ + && test -f "$GPGRT_CONFIG" ; then + req_major=`echo $min_gpgrt_version | \ + sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\1/'` + req_minor=`echo $min_gpgrt_version | \ + sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\2/'` + gpgrt_config_version=`$GPGRT_CONFIG $gpgrt_config_args --version` + major=`echo $gpgrt_config_version | \ + sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'` + minor=`echo $gpgrt_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 + GPGRT_CFLAGS=`$GPGRT_CONFIG $gpgrt_config_args --cflags` + GPGRT_LIBS=`$GPGRT_CONFIG $gpgrt_config_args --libs` + GPGRT_MT_CFLAGS=`$GPGRT_CONFIG $gpgrt_config_args --mt --cflags 2>/dev/null` + GPGRT_MT_LIBS=`$GPGRT_CONFIG $gpgrt_config_args --mt --libs 2>/dev/null` + AC_MSG_RESULT([yes ($gpgrt_config_version)]) + ifelse([$2], , :, [$2]) + gpgrt_config_host=`$GPGRT_CONFIG $gpgrt_config_args --host 2>/dev/null || echo none` + if test x"$gpgrt_config_host" != xnone ; then + if test x"$gpgrt_config_host" != x"$host" ; then + AC_MSG_WARN([[ +*** +*** The config script $GPGRT_CONFIG was +*** built for $gpgrt_config_host and thus may not match the +*** used host $host. +*** You may want to use the configure option --with-libgpg-error-prefix +*** to specify a matching config script or use \$SYSROOT. +***]]) + gpg_config_script_warn="$gpg_config_script_warn libgpg-error" + fi + fi + else + GPGRT_CFLAGS="" + GPGRT_LIBS="" + GPGRT_MT_CFLAGS="" + GPGRT_MT_LIBS="" + AC_MSG_RESULT(no) + ifelse([$3], , :, [$3]) + fi + AC_SUBST(GPGRT_CFLAGS) + AC_SUBST(GPGRT_LIBS) + AC_SUBST(GPGRT_MT_CFLAGS) + AC_SUBST(GPGRT_MT_LIBS) +]) |