wafsamba: flags from enviroment are put before our own internal versions
authorRalph Boehme <slow@samba.org>
Fri, 19 Dec 2014 08:05:33 +0000 (09:05 +0100)
committerMichael Adam <obnox@samba.org>
Mon, 22 Dec 2014 09:51:24 +0000 (10:51 +0100)
Ensure user provided CPPFLAGS and LDFLAGS are put *behind* our
internally computed compiler and linker flags.

Bug: https://bugzilla.samba.org/show_bug.cgi?id=10877

Signed-off-by: Ralph Boehme <slow@samba.org>
buildtools/wafsamba/samba_optimisation.py

index 583a6514d7811b1827debbfe9e08b928b800fbd3..4e59d310268e26b763d9ff4b978fd4af288d3fa2 100644 (file)
@@ -59,6 +59,13 @@ def apply_incpaths(self):
         if node:
             self.env.append_value('INC_PATHS', node)
 
+@feature('cc')
+@before('apply_incpaths')
+def samba_stash_cppflags(self):
+    """Fix broken waf ordering of CPPFLAGS"""
+    self.env['SAVED_CPPFLAGS'] = self.env['CPPFLAGS']
+    self.env['CPPFLAGS'] = []
+
 @feature('cc')
 @after('apply_incpaths')
 def apply_obj_vars_cc(self):
@@ -90,6 +97,10 @@ def apply_obj_vars_cc(self):
     for i in env['CPPPATH']:
         app('_CCINCFLAGS', cpppath_st % i)
 
+    # append stashed user CPPFLAGS after our internally computed flags
+    app('_CCINCFLAGS', env['SAVED_CPPFLAGS'])
+    env['SAVED_CPPFLAGS'] = []
+
 import Node, Environment
 
 def vari(self):
@@ -331,3 +342,20 @@ def samba_before_apply_obj_vars(self):
     for i in v['LIBPATH']:
         if is_standard_libpath(v, i):
             v['LIBPATH'].remove(i)
+
+@feature('cprogram', 'cshlib', 'cstaticlib')
+@before('apply_obj_vars', 'add_extra_flags')
+def samba_stash_linkflags(self):
+    """stash away LINKFLAGS in order to fix waf's broken ordering wrt or
+    user LDFLAGS"""
+
+    self.env.SAVE_LINKFLAGS = self.env['LINKFLAGS']
+    self.env['LINKFLAGS'] = []
+
+@feature('cprogram', 'cshlib', 'cstaticlib')
+@after('apply_obj_vars', 'add_extra_flags')
+def samba_pop_linkflags(self):
+    """after apply_obj_vars append saved LDFLAGS"""
+
+    self.env.append_value('LINKFLAGS', self.env.SAVE_LINKFLAGS)
+    self.env.SAVE_LINKFLAGS = []