diff options
| -rw-r--r-- | configure.ac | 10 | ||||
| -rw-r--r-- | doc/gpgme.texi | 19 | ||||
| -rw-r--r-- | m4/gpg-error.m4 | 45 | ||||
| -rw-r--r-- | src/gpgme.m4 | 59 | 
4 files changed, 116 insertions, 17 deletions
| diff --git a/configure.ac b/configure.ac index efc60c70..5cf46f7d 100644 --- a/configure.ac +++ b/configure.ac @@ -83,6 +83,7 @@ AM_INIT_AUTOMAKE  AM_MAINTAINER_MODE  AC_CANONICAL_HOST  AM_SILENT_RULES +AC_ARG_VAR(SYSROOT,[locate config scripts also below that directory])  # Enable GNU extensions on systems that have them.  AC_GNU_SOURCE @@ -636,3 +637,12 @@ echo "          FD Passing:      $use_descriptor_passing          GPGME Pthread:   $have_pthread  " +if test "x${gpg_config_script_warn}" != x; then +cat <<G10EOF +        Mismatches between the target platform and the to +        be used libraries have been been detected for: +         ${gpg_config_script_warn} +        Please check above for warning messages. + +G10EOF +fi diff --git a/doc/gpgme.texi b/doc/gpgme.texi index 1f4a9e1d..b23e7b11 100644 --- a/doc/gpgme.texi +++ b/doc/gpgme.texi @@ -391,8 +391,8 @@ to @acronym{GPGME} take the form @code{_gpgme_*} and @code{_GPGME_*}.  Because @acronym{GPGME} makes use of the GPG Error library, using  @acronym{GPGME} will also use the @code{GPG_ERR_*} name space -directly, and the @code{gpg_err*} and @code{gpg_str*} name space -indirectly. +directly, and the @code{gpg_err*}, @code{gpg_str*}, and @code{gpgrt_*} +name space indirectly.  @node Building the Source @@ -575,7 +575,10 @@ given.  Additionally, the function defines @code{GPGME_CFLAGS} to the flags  needed for compilation of the program to find the @file{gpgme.h}  header file, and @code{GPGME_LIBS} to the linker flags needed to link -the program to the @acronym{GPGME} library. +the program to the @acronym{GPGME} library.  If the used helper script +does not match the target type you are building for a warning is +printed and the string @code{libgcrypt} is appended to the variable +@code{gpg_config_script_warn}.  @code{AM_PATH_GPGME_PTH} checks for the version of @acronym{GPGME}  that can be used with GNU Pth, and defines @code{GPGME_PTH_CFLAGS} and @@ -584,6 +587,16 @@ that can be used with GNU Pth, and defines @code{GPGME_PTH_CFLAGS} and  @code{AM_PATH_GPGME_PTHREAD} checks for the version of @acronym{GPGME}  that can be used with the native pthread implementation, and defines  @code{GPGME_PTHREAD_CFLAGS} and @code{GPGME_PTHREAD_LIBS}. + +This macro searches for @command{gpgme-config} along the PATH.  If +you are cross-compiling, it is useful to set the environment variable +@code{SYSROOT} to the top directory of your target.  The macro will +then first look for the helper program in the @file{bin} directory +below that top directory.  An absolute directory name must be used for +@code{SYSROOT}.  Finally, if the configure command line option +@code{--with-gpgme-prefix} is used, only its value is used for the top +directory below which the helper script is expected. +  @end defmac  You can use the defined Autoconf variables like this in your diff --git a/m4/gpg-error.m4 b/m4/gpg-error.m4 index feb963c6..1661204c 100644 --- a/m4/gpg-error.m4 +++ b/m4/gpg-error.m4 @@ -1,5 +1,5 @@  # gpg-error.m4 - autoconf macro to detect libgpg-error. -# Copyright (C) 2002, 2003, 2004, 2011 g10 Code GmbH +# Copyright (C) 2002, 2003, 2004, 2011, 2014 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 @@ -8,10 +8,21 @@  # 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. +# +# Last-changed: 2014-10-02 +  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 Test for libgpg-error and define GPG_ERROR_CFLAGS, GPG_ERROR_LIBS, +dnl GPG_ERROR_MT_CFLAGS, and GPG_ERROR_MT_LIBS.  The _MT_ variants are +dnl used for programs requireing 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_GPG_ERROR],  [ AC_REQUIRE([AC_CANONICAL_HOST]) @@ -30,13 +41,26 @@ AC_DEFUN([AM_PATH_GPG_ERROR],    AC_ARG_WITH(gpg-error-prefix,,                [gpg_error_config_prefix="$withval"]) -  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 +  if test x"${GPG_ERROR_CONFIG}" = x ; then +     if test x"${gpg_error_config_prefix}" != x ; then +        GPG_ERROR_CONFIG="${gpg_error_config_prefix}/bin/gpg-error-config" +     else +       case "${SYSROOT}" in +         /*) +           if test -x "${SYSROOT}/bin/gpg-error-config" ; then +             GPG_ERROR_CONFIG="${SYSROOT}/bin/gpg-error-config" +           fi +           ;; +         '') +           ;; +          *) +           AC_MSG_WARN([Ignoring \$SYSROOT as it is not an absolute path.]) +           ;; +       esac       fi    fi -  AC_PATH_TOOL(GPG_ERROR_CONFIG, gpg-error-config, no) +  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 @@ -64,6 +88,8 @@ AC_DEFUN([AM_PATH_GPG_ERROR],    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` +    GPG_ERROR_MT_CFLAGS=`$GPG_ERROR_CONFIG $gpg_error_config_args --mt --cflags 2>/dev/null` +    GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG $gpg_error_config_args --mt --libs 2>/dev/null`      AC_MSG_RESULT([yes ($gpg_error_config_version)])      ifelse([$2], , :, [$2])      gpg_error_config_host=`$GPG_ERROR_CONFIG $gpg_error_config_args --host 2>/dev/null || echo none` @@ -75,16 +101,21 @@ AC_DEFUN([AM_PATH_GPG_ERROR],  *** built for $gpg_error_config_host and thus may not match the  *** used host $host.  *** You may want to use the configure option --with-gpg-error-prefix -*** to specify a matching config script. +*** to specify a matching config script or use \$SYSROOT.  ***]]) +        gpg_config_script_warn="$gpg_config_script_warn libgpg-error"        fi      fi    else      GPG_ERROR_CFLAGS=""      GPG_ERROR_LIBS="" +    GPG_ERROR_MT_CFLAGS="" +    GPG_ERROR_MT_LIBS=""      AC_MSG_RESULT(no)      ifelse([$3], , :, [$3])    fi    AC_SUBST(GPG_ERROR_CFLAGS)    AC_SUBST(GPG_ERROR_LIBS) +  AC_SUBST(GPG_ERROR_MT_CFLAGS) +  AC_SUBST(GPG_ERROR_MT_LIBS)  ]) diff --git a/src/gpgme.m4 b/src/gpgme.m4 index fe17f21a..6c2be442 100644 --- a/src/gpgme.m4 +++ b/src/gpgme.m4 @@ -1,5 +1,5 @@  # gpgme.m4 - autoconf macro to detect GPGME. -# Copyright (C) 2002, 2003, 2004 g10 Code GmbH +# Copyright (C) 2002, 2003, 2004, 2014 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 @@ -8,6 +8,8 @@  # 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. +# +# Last-changed: 2014-10-02  AC_DEFUN([_AM_PATH_GPGME_CONFIG], @@ -15,9 +17,25 @@ AC_DEFUN([_AM_PATH_GPGME_CONFIG],              AC_HELP_STRING([--with-gpgme-prefix=PFX],                             [prefix where GPGME is installed (optional)]),       gpgme_config_prefix="$withval", gpgme_config_prefix="") -  if test "x$gpgme_config_prefix" != x ; then -      GPGME_CONFIG="$gpgme_config_prefix/bin/gpgme-config" +  if test x"${GPGME_CONFIG}" = x ; then +     if test x"${gpgme_config_prefix}" != x ; then +        GPGME_CONFIG="${gpgme_config_prefix}/bin/gpgme-config" +     else +       case "${SYSROOT}" in +         /*) +           if test -x "${SYSROOT}/bin/gpgme-config" ; then +             GPGME_CONFIG="${SYSROOT}/bin/gpgme-config" +           fi +           ;; +         '') +           ;; +          *) +           AC_MSG_WARN([Ignoring \$SYSROOT as it is not an absolute path.]) +           ;; +       esac +     fi    fi +    AC_PATH_PROG(GPGME_CONFIG, gpgme-config, no)    if test "$GPGME_CONFIG" != "no" ; then @@ -31,10 +49,35 @@ AC_DEFUN([_AM_PATH_GPGME_CONFIG],                 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\3/'`  ]) + +AC_DEFUN([_AM_PATH_GPGME_CONFIG_HOST_CHECK], +[ +    gpgme_config_host=`$GPGME_CONFIG --host 2>/dev/null || echo none` +    if test x"$gpgme_config_host" != xnone ; then +      if test x"$gpgme_config_host" != x"$host" ; then +  AC_MSG_WARN([[ +*** +*** The config script $GPGME_CONFIG was +*** built for $gpgme_config_host and thus may not match the +*** used host $host. +*** You may want to use the configure option --with-gpgme-prefix +*** to specify a matching config script or use \$SYSROOT. +***]]) +        gpg_config_script_warn="$gpg_config_script_warn gpgme" +      fi +    fi +]) + +  dnl AM_PATH_GPGME([MINIMUM-VERSION,  dnl               [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])  dnl Test for libgpgme and define GPGME_CFLAGS and GPGME_LIBS.  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_GPGME],  [ AC_REQUIRE([_AM_PATH_GPGME_CONFIG])dnl    tmp=ifelse([$1], ,1:0.4.2,$1) @@ -57,7 +100,7 @@ AC_DEFUN([AM_PATH_GPGME],                 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`      if test "$gpgme_version_major" -gt "$req_major"; then          ok=yes -    else  +    else          if test "$gpgme_version_major" -eq "$req_major"; then              if test "$gpgme_version_minor" -gt "$req_minor"; then                 ok=yes @@ -88,6 +131,7 @@ AC_DEFUN([AM_PATH_GPGME],      GPGME_LIBS=`$GPGME_CONFIG --libs`      AC_MSG_RESULT(yes)      ifelse([$2], , :, [$2]) +    _AM_PATH_GPGME_CONFIG_HOST_CHECK    else      GPGME_CFLAGS=""      GPGME_LIBS="" @@ -126,7 +170,7 @@ AC_DEFUN([AM_PATH_GPGME_PTHREAD],                 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`        if test "$gpgme_version_major" -gt "$req_major"; then          ok=yes -      else  +      else          if test "$gpgme_version_major" -eq "$req_major"; then            if test "$gpgme_version_minor" -gt "$req_minor"; then              ok=yes @@ -158,6 +202,7 @@ AC_DEFUN([AM_PATH_GPGME_PTHREAD],      GPGME_PTHREAD_LIBS=`$GPGME_CONFIG --thread=pthread --libs`      AC_MSG_RESULT(yes)      ifelse([$2], , :, [$2]) +    _AM_PATH_GPGME_CONFIG_HOST_CHECK    else      GPGME_PTHREAD_CFLAGS=""      GPGME_PTHREAD_LIBS="" @@ -195,7 +240,7 @@ AC_DEFUN([AM_PATH_GPGME_GLIB],                 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`      if test "$gpgme_version_major" -gt "$req_major"; then          ok=yes -    else  +    else          if test "$gpgme_version_major" -eq "$req_major"; then              if test "$gpgme_version_minor" -gt "$req_minor"; then                 ok=yes @@ -226,6 +271,7 @@ AC_DEFUN([AM_PATH_GPGME_GLIB],      GPGME_GLIB_LIBS=`$GPGME_CONFIG --glib --libs`      AC_MSG_RESULT(yes)      ifelse([$2], , :, [$2]) +    _AM_PATH_GPGME_CONFIG_HOST_CHECK    else      GPGME_GLIB_CFLAGS=""      GPGME_GLIB_LIBS="" @@ -235,4 +281,3 @@ AC_DEFUN([AM_PATH_GPGME_GLIB],    AC_SUBST(GPGME_GLIB_CFLAGS)    AC_SUBST(GPGME_GLIB_LIBS)  ]) - | 
