gpgme-config cleanups and --host option
authorWerner Koch <wk@gnupg.org>
Wed, 6 Apr 2011 18:10:45 +0000 (20:10 +0200)
committerWerner Koch <wk@gnupg.org>
Wed, 6 Apr 2011 18:10:45 +0000 (20:10 +0200)
gpgme-config.in: Add option --host.  Change options --cflags and
--libs to collapse duplicate include and lib dirs.  Try to put extra
libs at the end.

Note that gpgme.m4 has not yet been extended.

ChangeLog
configure.ac
src/ChangeLog
src/gpgme-config.in

index 3163b54..cb88a8b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,7 @@
        * autogen.sh (--build-w32): Support option --build-w64.
        * configure.ac (HAVE_W64_SYSTEM): Define.
        (INSERT__TYPEDEFS_FOR_GPGME_H): New.
+       (GPGME_CONFIG_HOST): New.
 
 2011-02-02  Marcus Brinkmann  <mb@g10code.com>
 
        * autogen.sh: Added option --build-w32.
 
 
- Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 g10 Code GmbH
+ Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2011 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
index b0f6e48..3aed5f7 100644 (file)
@@ -901,9 +901,11 @@ AH_BOTTOM([
 # Substitution used for gpgme-config
 GPGME_CONFIG_LIBS="-lgpgme"
 GPGME_CONFIG_CFLAGS=""
+GPGME_CONFIG_HOST="$host"
 AC_SUBST(GPGME_CONFIG_API_VERSION)
 AC_SUBST(GPGME_CONFIG_LIBS)
 AC_SUBST(GPGME_CONFIG_CFLAGS)
+AC_SUBST(GPGME_CONFIG_HOST)
 
 # Frob'da Variables
 LTLIBOBJS=`echo "$LIB@&t@OBJS" |
index 07b62bd..cf5a5ef 100644 (file)
@@ -1,5 +1,9 @@
 2011-04-06  Werner Koch  <wk@g10code.com>
 
+       * gpgme-config.in: Add option --host.  Change options --cflags and
+       --libs to collapse duplicate include and lib dirs.  Try to put
+       extra libs at the end.
+
        * gpgme.h.in: Use INSERT__TYPEDEFS_FOR_GPGME_H to include platform
        specific typedefs.
 
index 33ab456..db8c7ef 100644 (file)
 
 prefix=@prefix@
 exec_prefix=@exec_prefix@
-includedir=@includedir@
-libdir=@libdir@
 
 # Make sure that no weird locale setting messes up our sed regexps etc.
 LC_COLLATE=C
 LC_ALL=C
 LANG=C
 
+# GPGME's own cflags and libs
+cflags="-I@includedir@"
+libs="-L@libdir@"
+
 # Network libraries.
 assuan_cflags="@LIBASSUAN_CFLAGS@"
 assuan_libs="@LIBASSUAN_LIBS@"
@@ -55,6 +57,7 @@ Options:
        [--exec-prefix]
        [--version]
         [--api-version]
+        [--host]
        [--libs]
        [--cflags]
         [--get-gpg]
@@ -101,46 +104,75 @@ while test $# -gt 0; do
            echo "@GPGME_CONFIG_API_VERSION@"
            exit 0
            ;;
+        --host)
+           echo "@GPGME_CONFIG_HOST@"
+           exit 0
+           ;;
         --cflags)
-           if test "x$includedir" != "x/usr/include" -a "x$includedir" != "x/include"; then
-               output="$output -I$includedir"
-           fi
+            result=
+            tmp_c=
+            tmp_g=
            case "$thread_module" in
-               pthread)
-                   output="$output $cflags_pthread"
-                   ;;
-               pth)
-                   output="$output $cflags_pth"
-                   ;;
+               pthread) tmp_c="$cflags_pthread" ;;
+               pth)     tmp_c="$cflags_pth"     ;;
            esac
-           output="$output $assuan_cflags $gpg_error_cflags"
-           if test "x$with_glib" = "xyes"; then
-               output="$output $glib_cflags"
-           fi
-           ;;
+           test "x$with_glib" = "xyes" && tmp_g="$cflags_glib"
+            for i in $cflags $tmp_c $assuan_cflags $gpg_error_cflags $tmp_g ; do
+              skip=no
+              case $i in
+                  -I/usr/include|-I/include)
+                      skip=yes
+                      ;;
+                  -I*)
+                      for j in $result ; do
+                          if test x"$j" = x"$i" ; then
+                              skip=yes
+                              break;
+                          fi
+                      done
+                      ;;
+              esac
+              if test $skip = no ; then
+                  result="$result $i"
+              fi
+            done
+            output="$output $result"
+            ;;
        --libs)
-           if test "x$libdir" != "x/usr/lib" -a "x$libdir" != "x/lib"; then
-               output="$output -L$libdir"
-           fi
+            result=
+            tmp_x=
            case "$thread_module" in
-               pthread)
-                   output="$output -lgpgme-pthread $libs_pthread"
-                   ;;
-               pth)
-                   output="$output -lgpgme-pth $libs_pth"
-                   ;;
+               pthread) tmp_l="-lgpgme-pthread"; tmp_x="$libs_pthread" ;;
+               pth)     tmp_l="-lgpgme-pth";     tmp_x="$libs_pth"  ;;
                *)
-                   if test "x$with_glib" = "xyes"; then
-                       output="$output -lgpgme-glib"
+                   if test "x$with_glib" = "xyes" ; then
+                        tmp_l="-lgpgme-glib"
+                         tmp_x="$libs_glib"
                    else
-                       output="$output -lgpgme"
+                        tmp_l="-lgpgme"
                    fi
                    ;;
            esac
-           output="$output $assuan_libs $gpg_error_libs"
-           if test "x$with_glib" = "xyes"; then
-               output="$output $glib_cflags"
-           fi
+            for i in $libs $tmp_l $assuan_libs $gpg_error_libs $tmp_x; do
+              skip=no
+              case $i in
+                  -L/usr/lib|-L/lib)
+                      skip=yes
+                      ;;
+                  -L*|-l*)
+                      for j in $result ; do
+                          if test x"$j" = x"$i" ; then
+                              skip=yes
+                              break;
+                          fi
+                      done
+                      ;;
+              esac
+              if test $skip = no ; then
+                  result="$result $i"
+              fi
+            done
+            output="$output $result"
            ;;
        --thread=*)
             for thread_mod in $thread_modules; do