Hey guys,

let's go for the next iteration...

On Wed January 13 2010 04:04:05 Yang Tse wrote:
> Hmm, not sure if the above is clear enough. I mean something like ...
> 
> if test -z "$MY_PKG_CONFIG_LIBDIR"; then
> 
> SSL_LIBS=`${PKGCONFIG} --libs-only-l openssl 2>/dev/null`
> 
> else
> 
> SSL_LIBS=`PKG_CONFIG_LIBDIR=${MY_PKG_CONFIG_LIBDIR}; export
> PKG_CONFIG_LIBDIR; ${PKGCONFIG} --libs-only-l openssl 2>/dev/null`
> 
> fi

Should be cleaner now.

> Relative to the next one, we are polluting current PKG_CONFIG_LIBDIR.
> Wasn't this the initial problem? Something similar to the up-above
> could be done when calling CURL_CHECK_PKGCONFIG, perhaps it could
> benefit from an additional parameter.
> 
> +    PKG_CONFIG_LIBDIR="$OPENSSL_PCDIR" CURL_CHECK_PKGCONFIG(openssl)
> 

I've added an extra macro called CURL_EXPORT_PCDIR and modified
the CURL_CHECK_PKGCONFIG macro to take an optional argument.

On Wed January 13 2010 08:29:06 Daniel Stenberg wrote:
> Can I just ask that you also add a comment somewhere in there about the
> learned experience about PKG_CONFIG_LIBDIR's effect if empty vs
>  non-existing so that we don't re-introduce this problem again in a couple
>  of years when this thread gets forgotten!

Mentioned above the definition of CURL_EXPORT_PCDIR. Let me know if it is not 
the best place for that comment.

Kamil
diff --git a/acinclude.m4 b/acinclude.m4
index ed35549..47136df 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -3190,7 +3190,22 @@ AC_DEFUN([CURL_CHECK_WIN32_LARGEFILE], [
   esac
 ])
 
-dnl CURL_CHECK_PKGCONFIG ($module)
+dnl CURL_EXPORT_PCDIR ($pcdir)
+dnl ------------------------
+dnl if $pcdir is not empty, set PKG_CONFIG_LIBDIR to $pcdir and export
+dnl
+dnl we need this macro since pkg-config distinguishes among empty and unset
+dnl variable while checking PKG_CONFIG_LIBDIR
+dnl
+
+AC_DEFUN([CURL_EXPORT_PCDIR], [
+    if test -n "$1"; then
+      PKG_CONFIG_LIBDIR="$1"
+      export PKG_CONFIG_LIBDIR
+    fi
+])
+
+dnl CURL_CHECK_PKGCONFIG ($module, [$pcdir])
 dnl ------------------------
 dnl search for the pkg-config tool (if not cross-compiling). Set the PKGCONFIG
 dnl variable to hold the path to it, or 'no' if not found/present.
@@ -3198,6 +3213,8 @@ dnl
 dnl If pkg-config is present, check that it has info about the $module or
 dnl return "no" anyway!
 dnl
+dnl Optionally PKG_CONFIG_LIBDIR may be given as $pcdir.
+dnl
 
 AC_DEFUN([CURL_CHECK_PKGCONFIG], [
 
@@ -3214,6 +3231,11 @@ AC_DEFUN([CURL_CHECK_PKGCONFIG], [
     fi
 
     if test x$PKGCONFIG != xno; then
+      # set PKG_CONFIG_LIBDIR if requested, but never export
+      if test -n "$2"; then
+        PKG_CONFIG_LIBDIR="$2"
+      fi
+
       AC_MSG_CHECKING([for $1 options with pkg-config])
       dnl ask pkg-config about $1
       $PKGCONFIG --exists $1
diff --git a/configure.ac b/configure.ac
index ae8bb9c..fcc3f8e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1205,7 +1205,6 @@ if test X"$OPT_SSL" != Xno; then
   CLEANLDFLAGS="$LDFLAGS"
   CLEANCPPFLAGS="$CPPFLAGS"
   CLEANLIBS="$LIBS"
-  SAVE_PKG_CONFIG_LIBDIR="$PKG_CONFIG_LIBDIR"
 
   case "$OPT_SSL" in
   yes)
@@ -1233,10 +1232,9 @@ if test X"$OPT_SSL" != Xno; then
     dnl Try pkg-config even when cross-compiling.  Since we
     dnl specify PKG_CONFIG_LIBDIR we're only looking where
     dnl the user told us to look
-    PKG_CONFIG_LIBDIR=$OPT_SSL/lib/pkgconfig
-    export PKG_CONFIG_LIBDIR
-    AC_MSG_NOTICE([set PKG_CONFIG_LIBDIR to "$PKG_CONFIG_LIBDIR"])
-    if test -e "$PKG_CONFIG_LIBDIR/openssl.pc"; then
+    OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
+    AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
+    if test -e "$OPENSSL_PCDIR/openssl.pc"; then
       PKGTEST="yes"
     fi
 
@@ -1253,12 +1251,17 @@ if test X"$OPT_SSL" != Xno; then
 
   if test "$PKGTEST" = "yes"; then
 
-    CURL_CHECK_PKGCONFIG(openssl)
+    CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
 
     if test "$PKGCONFIG" != "no" ; then
-      SSL_LIBS=`$PKGCONFIG --libs-only-l openssl 2>/dev/null`
-      SSL_LDFLAGS=`$PKGCONFIG --libs-only-L openssl 2>/dev/null`
-      SSL_CPPFLAGS=`$PKGCONFIG --cflags-only-I openssl 2>/dev/null`
+      SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) \
+        $PKGCONFIG --libs-only-l openssl 2>/dev/null`
+
+      SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) \
+        $PKGCONFIG --libs-only-L openssl 2>/dev/null`
+
+      SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) \
+        $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
 
       AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
       AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
@@ -1276,10 +1279,6 @@ if test X"$OPT_SSL" != Xno; then
     fi
   fi
 
-  dnl we're done using pkg-config for openssl
-  PKG_CONFIG_LIBDIR="$SAVE_PKG_CONFIG_LIBDIR"
-  export PKG_CONFIG_LIBDIR
-
   dnl finally, set flags to use SSL
   CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
   LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to