pkg-config macro patch



pkg-config doesn't provide an useful general purpouse macro for
configure.in. So I hacked a bit some macros and get the one I propose.
It introduces
AC_PATH_PKG_CONFIG()
AC_PKG_CONFIG_MODULE()
AC_PKG_CONFIG_MODULE_OPTIONAL()

(Sorry for bad english)
-- 
 (o-  | Un OS per domarli, Un OS per trovarli,
 //\  | Un OS per ghermirli e nel buio incatenarli
 V_/_ | Nella terra di Redmond, ove l'ombra cupa scende...
Tessera 99ers 204           raffaele punto salmaso presso libero punto it
Binary files pkconfig-old/.pkg.m4.swp and pkgconfig/.pkg.m4.swp differ
diff -rNu pkconfig-old/ChangeLog pkgconfig/ChangeLog
--- pkconfig-old/ChangeLog	Wed Jan 24 22:44:55 2001
+++ pkgconfig/ChangeLog	Fri Feb  2 12:45:17 2001
@@ -1,3 +1,19 @@
+2001-02-01  Salmaso Raffaele  <raffaele salmaso libero it>
+
+	* pkg.m4: removed
+
+	* pkg-config.m4.in: new m4 file macros
+	AC_PATH_PKG_CONFIG([VERSION]): check the presence of pkg-config
+	AC_PKG_CONFIG_MODULE(PKGNAME, MODULE:VERSION): check the presence
+	of a library; if fails stop configure script
+	AC_PKG_CONFIG_MODULE_OPTIONAL(PKGFLAG, MODULE:VERSION [, CAN-FAIL]):
+	check the presence of a library; if fails don't stop configure script
+
+	* configure.in: added PKG_CONFIG_{MAJOR,MINOR,MICRO} for generating
+	an useful pkg-config.m4
+
+	* Maefile.am: added pkg-config.m4 installation entry
+
 2001-01-24  Havoc Pennington  <hp redhat com>
 
         Implement --debug spew option.
diff -rNu pkconfig-old/Makefile.am pkgconfig/Makefile.am
--- pkconfig-old/Makefile.am	Wed Oct 18 22:12:17 2000
+++ pkgconfig/Makefile.am	Fri Feb  2 00:52:32 2001
@@ -1,10 +1,9 @@
 SUBDIRS = glib-1.2.8
 
-#m4dir = $(datadir)/aclocal
-#m4_SCRIPTS = pkg.m4
+m4dir = $(datadir)/aclocal
+m4_SCRIPTS = pkg-config.m4
 
-#EXTRA_DIST = $(m4_SCRIPTS)
-EXTRA_DIST = pkg-config.1
+EXTRA_DIST = pkg-config.1 $(m4_SCRIPTS)
 
 bin_PROGRAMS = pkg-config
 
diff -rNu pkconfig-old/README pkgconfig/README
--- pkconfig-old/README	Thu Jun 22 12:05:08 2000
+++ pkgconfig/README	Fri Feb  2 12:41:34 2001
@@ -1,17 +1,29 @@
 pkg-config is a script to make putting together all the build
 flags when compiling/linking a lot easier.
 
-to use it, do something like the following in your configure.in
+To use it, do something like the following in your configure.in
 
-    PKG_CHECK_MODULES(GNOME, gtk:1.2.8, gnomeui)
+    AC_PKG_CONFIG_MODULES(GNOME, gtk:1.2.8)
     AC_SUBST(GNOME_CFLAGS)
     AC_SUBST(GNOME_LIBS)
+    AC_SUBST(GNOME_DEPENDS)
 
 This puts the neccesary include flags to compile/link something against
-libgnomeui and all its dependencies in $(GNOME_CFLAGS), and the -L/-l flags
-for linking in $(GNOME_LIBS)
+libgnomeui and all its dependencies in $(GNOME_CFLAGS), the -L/-l flags
+for linking in $(GNOME_LIBS), the package dependancies in $(GNOME_DEPENDS).
 
 The gtk:1.2.8 part is only neccesary if you want to specifically check
 if libgtk is version 1.2.8 or higher. otherwise, the flags for gtk
 will be included automatically, since libgnomeui depends on gtk.
+
+Somethimes, it is possible to check the presence of an optional library
+
+    AC_PKG_CONFIG_MODULE_OPTIONAL(GDK_PIXBUF, gdk_pixbuf)
+    AC_SUBST(GDK_PIXBUF_CFLAGS)
+    AC_SUBST(GDK_PIXBUF_LIBS)
+
+All these macros call automagically AC_PATH_PKG_CONFIG() without checking
+pkg-config verion. If you want a particular version, use
+
+    AC_PATH_PKG_CONFIG(0.5)
 
diff -rNu pkconfig-old/configure.in pkgconfig/configure.in
--- pkconfig-old/configure.in	Thu Jan  4 11:35:01 2001
+++ pkgconfig/configure.in	Fri Feb  2 00:52:33 2001
@@ -3,7 +3,12 @@
 
 AC_CONFIG_SUBDIRS(glib-1.2.8)
 
-AM_INIT_AUTOMAKE(pkgconfig, 0.5.0)
+PKG_CONFIG_MAJOR=0
+PKG_CONFIG_MINOR=5
+PKG_CONFIG_MICRO=0
+VERSION=$PKG_CONFIG_MAJOR.PKG_CONFIG_MINOR.$PKG_CONFIG_MICRO
+
+AM_INIT_AUTOMAKE(pkgconfig, $VERSION)
 
 AM_MAINTAINER_MODE
 
@@ -13,4 +18,8 @@
 
 AC_PROG_CC
 
-AC_OUTPUT([Makefile])
+AC_SUBST(PKG_CONFIG_MAJOR)
+AC_SUBST(PKG_CONFIG_MINOR)
+AC_SUBST(PKG_CONFIG_MICRO)
+
+AC_OUTPUT([Makefile pkg-config.m4])
diff -rNu pkconfig-old/pkg-config.m4.in pkgconfig/pkg-config.m4.in
--- pkconfig-old/pkg-config.m4.in	Thu Jan  1 01:00:00 1970
+++ pkgconfig/pkg-config.m4.in	Fri Feb  2 12:34:20 2001
@@ -0,0 +1,123 @@
+# Configure paths for pkg-config
+# Salmaso Raffaele 2001-02-01
+#
+# Based on
+#   gnome-pkgconfig.m4 by Martin Baulig <baulig suse de>
+#   glib.m4 Owen Taylor <otaylor gtk org>
+#   gtk.m4 Owen Taylor <otaylor gtk org>
+#   gtk+/configure.in
+
+
+dnl AC_PATH_PKG_CONFIG([MINIMUM-VERSION])
+dnl Test for pkg-config, and define PKG_CONFIG
+dnl 
+AC_DEFUN(AC_PATH_PKG_CONFIG,
+[dnl
+AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+
+if test x$PKG_CONFIG = xno ; then
+  AC_MSG_ERROR([*** pkg-config not found. See http://pkgconfig.sourceforge.net])
+else
+
+  min_pkg_config=ifelse([$1], ,@PKG_CONFIG_MAJOR  @PKG_CONFIG_MINOR  @PKG_CONFIG_MICRO@,$1)
+
+  AC_MSG_CHECKING(for pkg-config >= $min_pkg_config)
+
+  if ! pkg-config --atleast-pkgconfig-version $min_pkg_config ; then
+    AC_MSG_RESULT(no)
+	AC_MSG_ERROR([*** pkg-config too old. version $min_pkg_config or better required.])
+  else
+    AC_MSG_RESULT(yes (version `$PKG_CONFIG --version`))
+  fi
+fi
+
+AC_SUBST(PKG_CONFIG)
+])
+
+dnl AC_PKG_CONFIG_MODULE_OPTIONAL(PKGNAME, PKGNAME:PKGVERSION [, CAN-FAIL])
+dnl AC_PKG_CONFIG_MODULE_OPTIONAL(GLIB, glib-2.0:1.3.2)
+dnl AC_SUBST(GLIB_CFLAGS)
+dnl AC_SUBST(GLIB_LIBS)
+dnl AC_SUBST(GLIB_DEPENDS)
+dnl AC_PKG_CONFIG_MODULE_OPTIONAL(GTK, gtk+-2.0:1.3.2,, fail)
+dnl AC_SUBST(GTL_CFLAGS)
+dnl SC_SUBST(GTK_LIBS)
+dnl AC_SUBST(GTK_DEPENDS)
+AC_DEFUN(AC_PKG_CONFIG_MODULE_OPTIONAL,
+[dnl
+AC_REQUIRE([AC_PATH_PKG_CONFIG])
+pkg_list=""
+AC_MSG_CHECKING(for libraries)
+for module in $2 ; do
+  if test -n "$module" ; then
+    if `echo "$module" | grep -q ":"` ; then
+      pkg_module_name=`echo $module | sed 's/\(.*\):.*/\1/'`
+      test_version=`echo $module | sed 's/.*:\(.*\)/\1/'`
+      msg=`$PKG_CONFIG --exists $pkg_module_name 2>&1`
+dnl      AC_MSG_CHECKING([for $pkg_module_name])
+      if test -z "$msg" ; then
+        if $PKG_CONFIG --atleast-version $test_version $pkg_module_name ; then
+dnl          AC_MSG_RESULT(yes)
+          echo $ac_n "$pkg_module_name "
+          pkg_list="$pkg_list $pkg_module_name"
+        else
+          AC_MSG_RESULT([($pkg_module_name)])
+          pkg_version=`$PKG_CONFIG --modversion $pkg_module_name`
+          if test "x$3" = "xfail" ; then
+            echo
+            AC_MSG_ERROR([An old version of $pkg_module_name (version $pkg_version) was found. You need at least $test_version])
+          else
+            echo
+            AC_MSG_WARN([An old version of $pkg_module_name (version $pkg_version) was found. You need at least $test_version])
+          fi
+        fi
+      else
+        dnl doesn't exist
+        AC_MSG_RESULT([($pkg_module_name)])
+        if test "x$3" = "xfail" ; then
+          echo
+          AC_MSG_ERROR([$msg])
+        else
+          echo
+          AC_MSG_WARN([$msg])
+        fi
+	  fi
+    else
+      msg=`$PKG_CONFIG $module 2>&1`
+      if test -z "$msg"; then
+        echo $ac_n "$module "
+        pkg_list="$pkg_list $module"
+      else
+        dnl doesn't exist
+        AC_MSG_RESULT([$module])
+        if test "x$3" = "xfail"; then
+          AC_MSG_ERROR([$msg])
+        else
+          AC_MSG_WARN([$msg])
+        fi
+      fi
+    fi
+  fi
+done
+AC_MSG_RESULT([])
+$1_CFLAGS=""
+$1_LIBS=""
+$1_DEPENDS=""
+if test -n "$pkg_list" ; then
+  $1_CFLAGS=`$PKG_CONFIG --cflags $pkg_list`
+  $1_LIBS=`$PKG_CONFIG --libs $pkg_list`
+  $1_DEPENDS="$pkg_list"
+fi
+])
+
+dnl AC_PKG_CONFIG_MODULE(PKGNAME, PKGNAME:PKGVERSION)
+dnl AC_PKG_CONFIG_MODULE(GLIB, glib-2.0:1.3.2)
+dnl AC_SUBST(GLIB_LIBS)
+dnl AC_SUBST(GLIB_CFLAGS)
+dnl AC_SUBST(GLIB_DEPENDS)
+dnl AC_PKG_CONFIG_MODULE(GTK, gtk+-2.0:1.3.2)
+dnl AC_SUBST(GTK_LIBS)
+dnl AC_SUBST(GTK_CFLAGS)
+dnl AC_SUBST(GTK_DEPENDS)
+AC_DEFUN(AC_PKG_CONFIG_MODULE,[AC_PKG_CONFIG_MODULE_OPTIONAL($1,$2,fail)])
+
diff -rNu pkconfig-old/pkg.m4 pkgconfig/pkg.m4
--- pkconfig-old/pkg.m4	Mon Jul 10 14:11:36 2000
+++ pkgconfig/pkg.m4	Thu Jan  1 01:00:00 1970
@@ -1,135 +0,0 @@
-dnl PKG_CHECK_VERSION() extracts up to 6 decimal numbers out of given-version
-dnl and required-version, using any non-number letters as delimiters. it then
-dnl compares each of those 6 numbers in order 1..6 to each other, requirering
-dnl all of the 6 given-version numbers to be greater than, or at least equal
-dnl to the corresponding number of required-version.
-dnl PKG_CHECK_VERSION(given-version, required-version [, match-action] [, else-action])
-AC_DEFUN(PKG_CHECK_VERSION,[
-[eval `echo "$1:0:0:0:0:0:0" | sed -e 's/^[^0-9]*//' -e 's/[^0-9]\+/:/g' \
- -e 's/\([^:]*\):\([^:]*\):\([^:]*\):\([^:]*\):\([^:]*\):.*/ac_v1=\1 ac_v2=\2 ac_v3=\3 ac_v4=\4 ac_v5=\5 ac_v6=\6/' \
-`]
-[eval `echo "$2:0:0:0:0:0:0" | sed -e 's/^[^0-9]*//' -e 's/[^0-9]\+/:/g' \
- -e 's/\([^:]*\):\([^:]*\):\([^:]*\):\([^:]*\):\([^:]*\):.*/ac_r1=\1 ac_r2=\2 ac_r3=\3 ac_r4=\4 ac_r5=\5 ac_r6=\6/' \
-`]
-ac_vm=[`expr \( $ac_v1 \> $ac_r1 \) \| \( \( $ac_v1 \= $ac_r1 \) \& \(          \
-              \( $ac_v2 \> $ac_r2 \) \| \( \( $ac_v2 \= $ac_r2 \) \& \(         \
-               \( $ac_v3 \> $ac_r3 \) \| \( \( $ac_v3 \= $ac_r3 \) \& \(        \
-                \( $ac_v4 \> $ac_r4 \) \| \( \( $ac_v4 \= $ac_r4 \) \& \(       \
-                 \( $ac_v5 \> $ac_r5 \) \| \( \( $ac_v5 \= $ac_r5 \) \& \(      \
-                  \( $ac_v6 \>= $ac_r6 \)                                       \
-                 \) \)  \
-                \) \)   \
-               \) \)    \
-              \) \)     \
-             \) \)      `]
-case $ac_vm in
-[1)]
-        [$3]
-        ;;
-*[)]
-        [$4]
-        ;;
-esac
-])
-
-dnl Check if the C compiler accepts a certain C flag, and if so adds it to
-dnl CFLAGS
-AC_DEFUN(PKG_CHECK_CFLAG, [
-  AC_MSG_CHECKING(if C compiler accepts $1)
-  save_CFLAGS="$CFLAGS"
-
-  dnl make sure we add it only once
-  dnl this one doesn't seem to work: *[\ \	]$1[\ \ ]*) ;;
-  case " $CFLAGS " in
-  *\ $1\ *) echo $ac_n "(already in CFLAGS) ... " ;;
-  *\ $1\	*) echo $ac_n "(already in CFLAGS) ... " ;;
-  *\	$1\ *) echo $ac_n "(already in CFLAGS) ... " ;;
-  *\	$1\	*) echo $ac_n "(already in CFLAGS) ... " ;;
-  *) CFLAGS="$CFLAGS $1" ;;
-  esac
-
-  AC_TRY_COMPILE([#include <stdio.h>], [printf("hello");],
-	         [ AC_MSG_RESULT(yes)],dnl
-	         [ CFLAGS="$save_CFLAGS" AC_MSG_RESULT(no) ])
-])
-
-dnl add $ACLOCAL_FLAGS (and optionally more dirs) to the aclocal
-dnl commandline, so make can work even if it needs to rerun aclocal
-AC_DEFUN(PKG_ACLOCALFLAGS,
-[
-  test -n "$ACLOCAL_FLAGS" && ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
-
-  for i in "$1"; do
-    ACLOCAL="$ACLOCAL -I $i"
-  done
-])
-
-AC_DEFUN(PKG_CHECK_MODULES,
-[
-    if test -z "$PKG_CONFIG"; then
-	AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-    fi
-
-    name=$1
-    depvar=$3
-    if test "$PKG_CONFIG" = "no" ; then
-	echo "*** The pkg-config script could not be found. Make sure it is"
-	echo "*** in your path, or set the PKG_CONFIG environment variable"
-	echo "*** to the full path to pkg-config."
-    fi
-
-    AC_MSG_CHECKING(for libraries)
-    pkg_list=""
-    for module in $2 ""; do
-	if test -n "$module"; then
-	    if `echo $module |grep -q ":"`; then
-		dnl has version requirement
-		pkg_module_name=`echo $module |sed 's/\(.*\):.*/\1/'`
-		test_version=`echo $module |sed 's/.*:\(.*\)/\1/'`
-
-		msg=`$PKG_CONFIG $pkg_module_name 2>&1`
-		if test -z "$msg"; then
-		    dnl module exists
-		    pkg_version=`$PKG_CONFIG --modversion $pkg_module_name`
-		    PKG_CHECK_VERSION($pkg_version, $test_version,
-			dnl has the right version
-			echo $ac_n "$pkg_module_name "
-			pkg_list="$pkg_list $pkg_module_name"
-		    ,
-			AC_MSG_RESULT([($pkg_module_name)])
-			AC_MSG_ERROR([An old version of $pkg_module_name (version $pkg_version) was found. You need at least version $test_version])
-		    )
-		else
-		    dnl doesn't exist
-		    AC_MSG_RESULT([($pkg_module_name)])
-		    AC_MSG_ERROR([$msg])
-		fi
-	    else
-		msg=`$PKG_CONFIG $module 2>&1`
-		if test -z "$msg"; then
-		    echo $ac_n "$module "
-		    pkg_list="$pkg_list $module"
-		else
-		    AC_MSG_RESULT([($module)])
-		    AC_MSG_ERROR([$msg])
-		fi
-	    fi
-	fi
-    done
-    AC_MSG_RESULT([])
-    if test -n "$pkg_list"; then
-	eval $name'_CFLAGS'=\"`$PKG_CONFIG --cflags $pkg_list`\"
-	eval $name'_LIBS'=\"`$PKG_CONFIG --libs $pkg_list`\"
-	if test -n "$depvar"; then
-	    eval $depvar'_DEPENDS'=\"\$$depname'_DEPENDS' $pkg_list\"
-	else
-	    eval $name'_DEPENDS'=\"$pkg_list\"
-	fi
-    fi
-    pkg_varlist=`$PKG_CONFIG --extra-flags $pkg_list`
-    if test -n "$pkg_varlist"; then
-	for pkgvar in $pkg_varlist; do
-	    eval ${name}'_'${pkgvar}=\"`$PKG_CONFIG --get-flag $pkgvar $pkg_list`\"
-	done
-    fi
-])


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]