From 7bd2b060e9ea3e2ff11e67d1e98ab882819b28b7 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>

diff --git a/src/ksba.m4 b/src/ksba.m4
index ad8de4f..af903ad 100644
--- a/src/ksba.m4
+++ b/src/ksba.m4
@@ -22,37 +22,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,
-              AC_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"$KSBA_CONFIG" = x -a 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
@@ -63,56 +32,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
@@ -125,14 +51,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([[
@@ -146,8 +66,6 @@ AC_DEFUN([AM_PATH_KSBA],
       fi
     fi
   else
-    KSBA_CFLAGS=""
-    KSBA_LIBS=""
     ifelse([$3], , :, [$3])
   fi
   AC_SUBST(KSBA_CFLAGS)
