From f8221238d51066b7a1a5f2917cce2791876ea8b0 Mon Sep 17 00:00:00 2001
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Date: Fri, 10 May 2019 14:23:55 +0800
Subject: [PATCH] pkgconfig

Update gpgme to use pkgconfig instead of -config files since its
simpler and less error prone when cross compiling.

Upstream-Status: Denied [Upstream not interested in pkg-config support]
RP 2015/4/17

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

Rebase to 1.13.0
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Rebase to 1.17.0
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>

---
 configure.ac            |   1 +
 src/Makefile.am         |   4 +-
 src/gpgme-pthread.pc.in |  15 +++++
 src/gpgme.m4            | 119 +++-------------------------------------
 src/gpgme.pc.in         |   4 +-
 5 files changed, 29 insertions(+), 114 deletions(-)
 create mode 100644 src/gpgme-pthread.pc.in

diff --git a/configure.ac b/configure.ac
index d1b9aca..9c4f97c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1043,6 +1043,7 @@ AC_CONFIG_FILES(Makefile src/Makefile
                 src/gpgme-glib.pc
                 src/gpgme.h)
 AC_CONFIG_FILES(src/gpgme-config, chmod +x src/gpgme-config)
+AC_CONFIG_FILES(src/gpgme-pthread.pc)
 AC_CONFIG_FILES(lang/cpp/Makefile lang/cpp/src/Makefile)
 AC_CONFIG_FILES(lang/cpp/tests/Makefile)
 AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfig-w32.cmake.in)
diff --git a/src/Makefile.am b/src/Makefile.am
index 67805a8..d38ba02 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -20,11 +20,11 @@
 ## Process this file with automake to produce Makefile.in
 
 pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = gpgme.pc gpgme-glib.pc
+pkgconfig_DATA = gpgme.pc gpgme-glib.pc gpgme-pthread.pc
 
 EXTRA_DIST = gpgme-config.in gpgme.m4 libgpgme.vers ChangeLog-2011 \
 	     gpgme.h.in versioninfo.rc.in gpgme.def \
-	     gpgme.pc.in gpgme-glib.pc.in
+	     gpgme.pc.in gpgme-glib.pc.in gpgme-pthread.pc.in
 
 if USE_GPGRT_CONFIG
 noinst_SCRIPTS = gpgme-config
diff --git a/src/gpgme-pthread.pc.in b/src/gpgme-pthread.pc.in
new file mode 100644
index 0000000..074bbf6
--- /dev/null
+++ b/src/gpgme-pthread.pc.in
@@ -0,0 +1,15 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+# API info
+api_version=@GPGME_CONFIG_API_VERSION@
+host=@GPGME_CONFIG_HOST@
+
+Name: gpgme
+Description: GnuPG Made Easy (GPGME) is a C language library that allows to addsupport for cryptography to a program (deprecated)
+Version: @VERSION@
+Libs: -L${libdir} -lgpgme -lpthread
+Cflags: -I${includedir}
+Requires: libassuan gpg-error
diff --git a/src/gpgme.m4 b/src/gpgme.m4
index 8cc2898..0ff550e 100644
--- a/src/gpgme.m4
+++ b/src/gpgme.m4
@@ -168,7 +168,7 @@ 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)
   if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
      req_gpgme_api=`echo "$tmp"     | sed 's/\(.*\):\(.*\)/\1/'`
@@ -178,36 +178,12 @@ AC_DEFUN([AM_PATH_GPGME],
      min_gpgme_version="$tmp"
   fi
 
-  AC_MSG_CHECKING(for GPGME - version >= $min_gpgme_version)
-  ok=no
-  if test "$GPGME_CONFIG" != "no" ; then
-    req_major=`echo $min_gpgme_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
-    req_minor=`echo $min_gpgme_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
-    req_micro=`echo $min_gpgme_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
-    if test "$gpgme_version_major" -gt "$req_major"; then
-        ok=yes
-    else
-        if test "$gpgme_version_major" -eq "$req_major"; then
-            if test "$gpgme_version_minor" -gt "$req_minor"; then
-               ok=yes
-            else
-               if test "$gpgme_version_minor" -eq "$req_minor"; then
-                   if test "$gpgme_version_micro" -ge "$req_micro"; then
-                     ok=yes
-                   fi
-               fi
-            fi
-        fi
-    fi
-  fi
+  PKG_CHECK_MODULES(GPGME, [gpgme >= $min_gpgme_version], [ok=yes], [ok=no])
   if test $ok = yes; then
      # If we have a recent GPGME, we should also check that the
      # API is compatible.
      if test "$req_gpgme_api" -gt 0 ; then
-        tmp=`$GPGME_CONFIG --api-version 2>/dev/null || echo 0`
+        tmp=`$PKG_CONFIG --variable=api_version gpgme 2>/dev/null || echo 0`
         if test "$tmp" -gt 0 ; then
            if test "$req_gpgme_api" -ne "$tmp" ; then
              ok=no
@@ -216,19 +192,11 @@ AC_DEFUN([AM_PATH_GPGME],
      fi
   fi
   if test $ok = yes; then
-    GPGME_CFLAGS=`$GPGME_CONFIG --cflags`
-    GPGME_LIBS=`$GPGME_CONFIG --libs`
-    AC_MSG_RESULT(yes)
     ifelse([$2], , :, [$2])
     _AM_PATH_GPGME_CONFIG_HOST_CHECK
   else
-    GPGME_CFLAGS=""
-    GPGME_LIBS=""
-    AC_MSG_RESULT(no)
     ifelse([$3], , :, [$3])
   fi
-  AC_SUBST(GPGME_CFLAGS)
-  AC_SUBST(GPGME_LIBS)
 ])
 
 dnl AM_PATH_GPGME_PTHREAD([MINIMUM-VERSION,
@@ -236,9 +204,8 @@ dnl                       [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
 dnl Test for libgpgme and define GPGME_PTHREAD_CFLAGS
 dnl  and GPGME_PTHREAD_LIBS.
 dnl
-AC_DEFUN([AM_PATH_GPGME_PTHREAD],[
-  AC_OBSOLETE([$0], [; use AM_PATH_GPGME instead to use GPGME_CFLAGS and GPGME_LIBS])dnl
-  AC_REQUIRE([_AM_PATH_GPGME_CONFIG])dnl
+AC_DEFUN([AM_PATH_GPGME_PTHREAD],
+[
   tmp=ifelse([$1], ,1:0.4.2,$1)
   if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
      req_gpgme_api=`echo "$tmp"     | sed 's/\(.*\):\(.*\)/\1/'`
@@ -248,40 +215,12 @@ AC_DEFUN([AM_PATH_GPGME_PTHREAD],[
      min_gpgme_version="$tmp"
   fi
 
-  AC_MSG_CHECKING(for GPGME pthread - version >= $min_gpgme_version)
-  ok=no
-  if test "$GPGME_CONFIG" != "no" ; then
-    req_major=`echo $min_gpgme_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
-    req_minor=`echo $min_gpgme_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
-    req_micro=`echo $min_gpgme_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
-    if test "$gpgme_version_major" -gt "$req_major"; then
-        ok=yes
-    else
-        if test "$gpgme_version_major" -eq "$req_major"; then
-            if test "$gpgme_version_minor" -gt "$req_minor"; then
-               ok=yes
-            else
-               if test "$gpgme_version_minor" -eq "$req_minor"; then
-                   if test "$gpgme_version_micro" -ge "$req_micro"; then
-                     ok=yes
-                   fi
-               fi
-            fi
-        fi
-    fi
-  fi
+  PKG_CHECK_MODULES(GPGME_PTHREAD, [gpgme-pthread >= $min_gpgme_version], [ok=yes], [ok=no])
   if test $ok = yes; then
      # If we have a recent GPGME, we should also check that the
      # API is compatible.
      if test "$req_gpgme_api" -gt 0 ; then
-        if test -z "$use_gpgrt_config"; then
-          tmp=`$GPGME_CONFIG --api-version 2>/dev/null || echo 0`
-        else
-          tmp=`$GPGME_CONFIG --variable=api_version 2>/dev/null || echo 0`
-        fi
+        tmp=`$PKG_CONFIG --variable=api_version gpgme-pthread 2>/dev/null || echo 0`
         if test "$tmp" -gt 0 ; then
            if test "$req_gpgme_api" -ne "$tmp" ; then
              ok=no
@@ -290,19 +229,11 @@ AC_DEFUN([AM_PATH_GPGME_PTHREAD],[
      fi
   fi
   if test $ok = yes; then
-    GPGME_PTHREAD_CFLAGS=`$GPGME_CONFIG --cflags`
-    GPGME_PTHREAD_LIBS=`$GPGME_CONFIG --libs`
-    AC_MSG_RESULT(yes)
     ifelse([$2], , :, [$2])
     _AM_PATH_GPGME_CONFIG_HOST_CHECK
   else
-    GPGME_PTHREAD_CFLAGS=""
-    GPGME_PTHREAD_LIBS=""
-    AC_MSG_RESULT(no)
     ifelse([$3], , :, [$3])
   fi
-  AC_SUBST(GPGME_PTHREAD_CFLAGS)
-  AC_SUBST(GPGME_PTHREAD_LIBS)
 ])
 
 
@@ -321,36 +252,12 @@ AC_DEFUN([AM_PATH_GPGME_GLIB],
      min_gpgme_version="$tmp"
   fi
 
-  AC_MSG_CHECKING(for GPGME - version >= $min_gpgme_version)
-  ok=no
-  if test "$GPGME_CONFIG" != "no" ; then
-    req_major=`echo $min_gpgme_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
-    req_minor=`echo $min_gpgme_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
-    req_micro=`echo $min_gpgme_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
-    if test "$gpgme_version_major" -gt "$req_major"; then
-        ok=yes
-    else
-        if test "$gpgme_version_major" -eq "$req_major"; then
-            if test "$gpgme_version_minor" -gt "$req_minor"; then
-               ok=yes
-            else
-               if test "$gpgme_version_minor" -eq "$req_minor"; then
-                   if test "$gpgme_version_micro" -ge "$req_micro"; then
-                     ok=yes
-                   fi
-               fi
-            fi
-        fi
-    fi
-  fi
+  PKG_CHECK_MODULES(GPGME_GLIB, [gpgme >= $min_gpgme_version glib-2.0], [ok=yes], [ok=no])  
   if test $ok = yes; then
      # If we have a recent GPGME, we should also check that the
      # API is compatible.
      if test "$req_gpgme_api" -gt 0 ; then
-        tmp=`$GPGME_CONFIG --api-version 2>/dev/null || echo 0`
+        tmp=`$PKG_CONFIG --variable=api_version gpgme 2>/dev/null || echo 0`
         if test "$tmp" -gt 0 ; then
            if test "$req_gpgme_api" -ne "$tmp" ; then
              ok=no
@@ -359,17 +266,9 @@ AC_DEFUN([AM_PATH_GPGME_GLIB],
      fi
   fi
   if test $ok = yes; then
-    GPGME_GLIB_CFLAGS=`$GPGME_CONFIG --glib --cflags`
-    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=""
-    AC_MSG_RESULT(no)
     ifelse([$3], , :, [$3])
   fi
-  AC_SUBST(GPGME_GLIB_CFLAGS)
-  AC_SUBST(GPGME_GLIB_LIBS)
 ])
diff --git a/src/gpgme.pc.in b/src/gpgme.pc.in
index 9ddef5c..932645b 100644
--- a/src/gpgme.pc.in
+++ b/src/gpgme.pc.in
@@ -9,6 +9,6 @@ Name: gpgme
 Description: GnuPG Made Easy to access GnuPG
 Requires.private: gpg-error, libassuan
 Version: @PACKAGE_VERSION@
-Cflags: @GPGME_CONFIG_CFLAGS@
-Libs: @GPGME_CONFIG_LIBS@
+Cflags: -I${includedir}
+Libs: -L${libdir} -lgpgme
 URL: https://www.gnupg.org/software/gpgme/index.html
