From ca8174aa81d7bf364b33f7254a9e887735c4996d Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Mon, 3 Dec 2012 18:17:31 +0800
Subject: [PATCH] libksba: add pkgconfig support

Upstream-Status: Denied

Add pkgconfig support to libksba.
This patch is rejected by upstream for the reason below:
They think pkgconfig adds no portability and maintaining them is not worthwhile.

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>

---
 src/ksba.m4 | 90 +++--------------------------------------------------
 1 file changed, 4 insertions(+), 86 deletions(-)

diff --git a/src/ksba.m4 b/src/ksba.m4
index 452c245..aa96255 100644
--- a/src/ksba.m4
+++ b/src/ksba.m4
@@ -23,37 +23,6 @@ dnl with a changed API.
 dnl
 AC_DEFUN([AM_PATH_KSBA],
 [ AC_REQUIRE([AC_CANONICAL_HOST])
-  dnl --with-libksba-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(libksba-prefix,
-              AS_HELP_STRING([--with-libksba-prefix=PFX],
-                             [prefix where KSBA is installed (optional)]),
-     ksba_config_prefix="$withval", ksba_config_prefix="")
-
-  dnl Accept --with-ksba-prefix and make it work the same as
-  dnl --with-libksba-prefix above, for backwards compatibility,
-  dnl but do not document this old, inconsistently-named option.
-  AC_ARG_WITH(ksba-prefix,,
-     ksba_config_prefix="$withval", ksba_config_prefix="")
-
-  if test x$ksba_config_prefix != x ; then
-    if test x${KSBA_CONFIG+set} != xset ; then
-      KSBA_CONFIG=$ksba_config_prefix/bin/ksba-config
-    fi
-  fi
-
-  use_gpgrt_config=""
-  if test x"$GPGRT_CONFIG" != x -a "$GPGRT_CONFIG" != "no"; then
-    if $GPGRT_CONFIG ksba --exists; then
-      KSBA_CONFIG="$GPGRT_CONFIG ksba"
-      AC_MSG_NOTICE([Use gpgrt-config as ksba-config])
-      use_gpgrt_config=yes
-    fi
-  fi
-  if test -z "$use_gpgrt_config"; then
-    AC_PATH_PROG(KSBA_CONFIG, ksba-config, no)
-  fi
 
   tmp=ifelse([$1], ,1:1.0.0,$1)
   if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
@@ -64,56 +33,13 @@ AC_DEFUN([AM_PATH_KSBA],
      min_ksba_version="$tmp"
   fi
 
-  AC_MSG_CHECKING(for KSBA - version >= $min_ksba_version)
-  ok=no
-  if test "$KSBA_CONFIG" != "no" ; then
-    req_major=`echo $min_ksba_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
-    req_minor=`echo $min_ksba_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
-    req_micro=`echo $min_ksba_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
-    if test -z "$use_gpgrt_config"; then
-      ksba_config_version=`$KSBA_CONFIG --version`
-    else
-      ksba_config_version=`$KSBA_CONFIG --modversion`
-    fi
-    major=`echo $ksba_config_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
-    minor=`echo $ksba_config_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
-    micro=`echo $ksba_config_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\3/'`
-    if test "$major" -gt "$req_major"; then
-        ok=yes
-    else
-        if test "$major" -eq "$req_major"; then
-            if test "$minor" -gt "$req_minor"; then
-               ok=yes
-            else
-               if test "$minor" -eq "$req_minor"; then
-                   if test "$micro" -ge "$req_micro"; then
-                     ok=yes
-                   fi
-               fi
-            fi
-        fi
-    fi
-  fi
-  if test $ok = yes; then
-    AC_MSG_RESULT([yes ($ksba_config_version)])
-  else
-    AC_MSG_RESULT(no)
-  fi
+  PKG_CHECK_MODULES(KSBA, [ksba >= $min_ksba_version], [ok=yes], [ok=no])
+
   if test $ok = yes; then
      # Even if we have a recent libksba, we should check that the
      # API is compatible.
      if test "$req_ksba_api" -gt 0 ; then
-        if test -z "$use_gpgrt_config"; then
-          tmp=`$KSBA_CONFIG --api-version 2>/dev/null || echo 0`
-	else
-          tmp=`$KSBA_CONFIG --variable=api_version 2>/dev/null || echo 0`
-	fi
+        tmp=`$PKG_CONFIG --variable=api_version ksba`
         if test "$tmp" -gt 0 ; then
            AC_MSG_CHECKING([KSBA API version])
            if test "$req_ksba_api" -eq "$tmp" ; then
@@ -126,14 +52,8 @@ AC_DEFUN([AM_PATH_KSBA],
      fi
   fi
   if test $ok = yes; then
-    KSBA_CFLAGS=`$KSBA_CONFIG --cflags`
-    KSBA_LIBS=`$KSBA_CONFIG --libs`
     ifelse([$2], , :, [$2])
-    if test -z "$use_gpgrt_config"; then
-      libksba_config_host=`$KSBA_CONFIG --host 2>/dev/null || echo none`
-    else
-      libksba_config_host=`$KSBA_CONFIG --variable=host 2>/dev/null || echo none`
-    fi
+    libksba_config_host=`$PKG_CONFIG --variable=host ksba`
     if test x"$libksba_config_host" != xnone ; then
       if test x"$libksba_config_host" != x"$host" ; then
   AC_MSG_WARN([[
@@ -147,8 +67,6 @@ AC_DEFUN([AM_PATH_KSBA],
       fi
     fi
   else
-    KSBA_CFLAGS=""
-    KSBA_LIBS=""
     ifelse([$3], , :, [$3])
   fi
   AC_SUBST(KSBA_CFLAGS)
