build: use include paths for pkg-config found libraries
authorAndrew Bartlett <abartlet@samba.org>
Wed, 11 Apr 2012 08:40:27 +0000 (18:40 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 11 Apr 2012 14:00:38 +0000 (16:00 +0200)
buildtools/wafsamba/samba3.py
buildtools/wafsamba/samba_autoconf.py
buildtools/wafsamba/samba_deps.py

index afdf99ae0bfcdc731dc353b5141f7cd5cba84ed7..dc230659058567b0a6ae13983f0ace8a4ba6b0cb 100644 (file)
@@ -60,32 +60,32 @@ def s3_fix_kwargs(bld, kwargs):
 
     if bld.CONFIG_SET('BUILD_TDB2'):
         if bld.CONFIG_SET('USING_SYSTEM_TDB2'):
-            (tdb2_includes, tdb2_ldflags) = library_flags(bld, 'tdb')
-            extra_includes += tdb2_includes
+            (tdb2_includes, tdb2_ldflags, tdb2_cpppath) = library_flags(bld, 'tdb')
+            extra_includes += tdb2_cpppath
         else:
             extra_includes += [ '../lib/tdb2' ]
     else:
         if bld.CONFIG_SET('USING_SYSTEM_TDB'):
-            (tdb_includes, tdb_ldflags) = library_flags(bld, 'tdb')
-            extra_includes += tdb_includes
+            (tdb_includes, tdb_ldflags, tdb_cpppath) = library_flags(bld, 'tdb')
+            extra_includes += tdb_cpppath
         else:
             extra_includes += [ '../lib/tdb/include' ]
 
     if bld.CONFIG_SET('USING_SYSTEM_TEVNT'):
-        (tevent_includes, tevent_ldflags) = library_flags(bld, 'tevent')
-        extra_includes += tevent_includes
+        (tevent_includes, tevent_ldflags, tevent_cpppath) = library_flags(bld, 'tevent')
+        extra_includes += tevent_cpppath
     else:
         extra_includes += [ '../lib/tevent' ]
 
     if bld.CONFIG_SET('USING_SYSTEM_TALLOC'):
-        (talloc_includes, talloc_ldflags) = library_flags(bld, 'talloc')
-        extra_includes += talloc_includes
+        (talloc_includes, talloc_ldflags, talloc_cpppath) = library_flags(bld, 'talloc')
+        extra_includes += talloc_cpppath
     else:
         extra_includes += [ '../lib/talloc' ]
 
     if bld.CONFIG_SET('USING_SYSTEM_POPT'):
-        (popt_includes, popt_ldflags) = library_flags(bld, 'popt')
-        extra_includes += popt_includes
+        (popt_includes, popt_ldflags, popt_cpppath) = library_flags(bld, 'popt')
+        extra_includes += popt_cpppath
     else:
         extra_includes += [ '../lib/popt' ]
 
index 08df2b3c2f26a1eaa55e803622b824703db34ce9..4da5df86a07f3bc668241ffcd8339b9e8be837dd 100644 (file)
@@ -92,7 +92,7 @@ def CHECK_HEADER(conf, h, add_headers=False, lib=None):
                 conf.env.hlist.append(h)
         return True
 
-    (ccflags, ldflags) = library_flags(conf, lib)
+    (ccflags, ldflags, cpppath) = library_flags(conf, lib)
 
     hdrs = hlist_to_string(conf, headers=h)
     if lib is None:
@@ -101,6 +101,7 @@ def CHECK_HEADER(conf, h, add_headers=False, lib=None):
                      type='nolink',
                      execute=0,
                      ccflags=ccflags,
+                     includes=cpppath,
                      uselib=lib.upper(),
                      msg="Checking for header %s" % h)
     if not ret:
@@ -371,7 +372,10 @@ def CHECK_CODE(conf, code, define,
 
     uselib = TO_LIST(lib)
 
-    (ccflags, ldflags) = library_flags(conf, uselib)
+    (ccflags, ldflags, cpppath) = library_flags(conf, uselib)
+
+    includes = TO_LIST(includes)
+    includes.extend(cpppath)
 
     uselib = [l.upper() for l in uselib]
 
@@ -472,20 +476,24 @@ def library_flags(self, libs):
     '''work out flags from pkg_config'''
     ccflags = []
     ldflags = []
+    cpppath = []
     for lib in TO_LIST(libs):
         # note that we do not add the -I and -L in here, as that is added by the waf
         # core. Adding it here would just change the order that it is put on the link line
         # which can cause system paths to be added before internal libraries
         extra_ccflags = TO_LIST(getattr(self.env, 'CCFLAGS_%s' % lib.upper(), []))
         extra_ldflags = TO_LIST(getattr(self.env, 'LDFLAGS_%s' % lib.upper(), []))
+        extra_cpppath = TO_LIST(getattr(self.env, 'CPPPATH_%s' % lib.upper(), []))
         ccflags.extend(extra_ccflags)
         ldflags.extend(extra_ldflags)
+        cpppath.extend(extra_cpppath)
     if 'EXTRA_LDFLAGS' in self.env:
         ldflags.extend(self.env['EXTRA_LDFLAGS'])
 
     ccflags = unique_list(ccflags)
     ldflags = unique_list(ldflags)
-    return (ccflags, ldflags)
+    cpppath = unique_list(cpppath)
+    return (ccflags, ldflags, cpppath)
 
 
 @conf
@@ -509,7 +517,7 @@ int foo()
             ret.append(lib)
             continue
 
-        (ccflags, ldflags) = library_flags(conf, lib)
+        (ccflags, ldflags, cpppath) = library_flags(conf, lib)
         if shlib:
             res = conf.check(features='cc cshlib', fragment=fragment, lib=lib, uselib_store=lib, ccflags=ccflags, ldflags=ldflags, uselib=lib.upper())
         else:
index d342f0b22f2fad62bf1cc905526ba3ed398a9227..ed2169b32a9b958f72973c3acaed577bddb3b429 100644 (file)
@@ -80,7 +80,7 @@ def build_dependencies(self):
         # extra link flags from pkg_config
         libs = self.final_syslibs.copy()
 
-        (ccflags, ldflags) = library_flags(self, list(libs))
+        (ccflags, ldflags, cpppath) = library_flags(self, list(libs))
         new_ldflags        = getattr(self, 'samba_ldflags', [])[:]
         new_ldflags.extend(ldflags)
         self.ldflags       = new_ldflags