build: Fix handling of external pkg-config dependencies when generating pkg-config...
authorJelmer Vernooij <jelmer@samba.org>
Sun, 20 Jan 2008 00:19:59 +0000 (01:19 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Sun, 20 Jan 2008 00:19:59 +0000 (01:19 +0100)
(This used to be commit 88f9e11286bf0f12fc766dbf21f311e5373f0811)

source4/build/m4/public.m4
source4/build/smb_build/config_mk.pm
source4/build/smb_build/makefile.pm

index 9e82e6aaf199e7c7e2e47d8dae1aa83123deb4bc..6d693eaeeea9a5fbf4a2958a6cb250f2e4044ad0 100644 (file)
@@ -8,7 +8,7 @@ dnl SMB_SUBSYSTEM(name,obj_files,required_subsystems)
 dnl
 dnl SMB_EXT_LIB_FROM_PKGCONFIG(name,pkg-config name,[ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
 dnl
-dnl SMB_EXT_LIB(name,libs,cflags,cppflags,ldflags)
+dnl SMB_EXT_LIB(name,libs,cflags,cppflags,ldflags,pcname)
 dnl
 dnl SMB_ENABLE(name,default_build)
 dnl
@@ -34,7 +34,7 @@ ENABLE = YES
 "
 ])
 
-dnl SMB_LIBRARY(name,description,obj_files,required_subsystems,version,so_version,cflags,ldflags)
+dnl SMB_LIBRARY(name,description,obj_files,required_subsystems,version,so_version,cflags,ldflags,pcname)
 AC_DEFUN([SMB_LIBRARY],
 [
 SMB_INFO_LIBRARIES="$SMB_INFO_LIBRARIES
@@ -48,6 +48,7 @@ VERSION = $5
 SO_VERSION = $6 
 CFLAGS = $7
 LDFLAGS = $8
+PC_NAME = $9
 ENABLE = YES
 # End Library $1
 ###################################
@@ -93,7 +94,8 @@ AC_DEFUN([SMB_EXT_LIB_FROM_PKGCONFIG],
                                        [`$PKG_CONFIG --libs-only-l '$2'`], 
                                        [`$PKG_CONFIG --cflags-only-other '$2'`],
                                        [`$PKG_CONFIG --cflags-only-I '$2'`],
-                                       [`$PKG_CONFIG --libs-only-other '$2'` `$PKG_CONFIG --libs-only-L '$2'`])
+                                       [`$PKG_CONFIG --libs-only-other '$2'` `$PKG_CONFIG --libs-only-L '$2'`],
+                                       [ $2 ])
                                ac_cv_$1_found=yes
 
                        else
@@ -125,7 +127,7 @@ include $1
 "
 ])
 
-dnl SMB_EXT_LIB(name,libs,cflags,cppflags,ldflags)
+dnl SMB_EXT_LIB(name,libs,cflags,cppflags,ldflags,pcname)
 AC_DEFUN([SMB_EXT_LIB],
 [
 
@@ -137,6 +139,7 @@ LIBS = $2
 CFLAGS = $3
 CPPFLAGS = $4
 LDFLAGS = $5
+PC_NAME = $6
 # End Ext Lib $1
 ###################################
 "
index 7ad6600a8c4510053d215830dc49734c462612ed..2365ca19b2df9a03724733a9271ab65fd050c299 100644 (file)
@@ -18,6 +18,7 @@ my $section_types = {
                "CFLAGS"                => "list",
                "CPPFLAGS"              => "list",
                "LDFLAGS"               => "list",
+               "PC_NAME" => "string",
                },
        "PYTHON" => {
                SWIG_FILE => "string",
@@ -87,6 +88,8 @@ my $section_types = {
                "VERSION"               => "string",
                "SO_VERSION"            => "string",
                "LIBRARY_REALNAME" => "string",
+
+               "PC_NAME" => "string",
                
                "INIT_FUNCTION_TYPE"    => "string",
                "INIT_FUNCTION_SENTINEL" => "string",
index ce1e757c61b9c1523b0d1cc0b44484ab985dc503..7e715b47eb349db20413b0f2d78a90b52d473b70 100644 (file)
@@ -570,24 +570,21 @@ sub PkgConfig($$$)
        my $pubs;
        my $privs;
        my $privlibs;
+       my $publibs = "";
 
        if (defined($ctx->{PUBLIC_DEPENDENCIES})) {
                foreach (@{$ctx->{PUBLIC_DEPENDENCIES}}) {
                        next if ($other->{$_}->{ENABLE} eq "NO");
-                       if ($other->{$_}->{TYPE} eq "EXT_LIB") {
+                       if (defined($other->{$_}->{PC_NAME})) {
+                               $pubs .= "$other->{$_}->{PC_NAME} ";
+                       } elsif ($other->{$_}->{TYPE} eq "EXT_LIB") {
                                my $e = $other->{$_};
-
                                my $ldflags = join(" ", @{$e->{LDFLAGS}});
                                $ldflags .= " " unless $ldflags eq "";
                                my $libs = join(" ", @{$e->{LIBS}});
                                $libs .= " " unless $libs eq "";
 
-                               $pubs .= $ldflags.$libs;
-                       } elsif ($other->{$_}->{TYPE} eq "LIBRARY") {
-                               s/^LIB//g;
-                               $_ = lc($_);
-
-                               $pubs .= "$_ ";
+                               $publibs .= $ldflags.$libs;
                        } else {
                                s/^LIB//g;
                                $_ = lc($_);
@@ -626,7 +623,7 @@ sub PkgConfig($$$)
        smb_build::env::PkgConfig($self,
                $path,
                $link_name,
-               "-L\${libdir} -l$link_name",
+               "-L\${libdir} -l$link_name $publibs",
                $privlibs,
                "",
                "$ctx->{VERSION}",