]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
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)
committerKarolin Seeger <kseeger@samba.org>
Tue, 27 Jan 2015 10:02:16 +0000 (11:02 +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

Pair-Programmed-With: Michael Adam <obnox@samba.org>
Pair-Programmed-With: Stefan Metzmacher <metze@samba.org>

Signed-off-by: Ralph Boehme <slow@samba.org>
Signed-off-by: Michael Adam <obnox@samba.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(cherry picked from commit a6bda1f2bc85779feb9680bc74821da5ccd401c5)

buildtools/wafsamba/samba_optimisation.py

index 583a6514d7811b1827debbfe9e08b928b800fbd3..1e7a57fb0b5ab1d94846d0255e7ba0607986ee2c 100644 (file)
@@ -331,3 +331,45 @@ def samba_before_apply_obj_vars(self):
     for i in v['LIBPATH']:
         if is_standard_libpath(v, i):
             v['LIBPATH'].remove(i)
+
+@feature('cc')
+@before('apply_incpaths', 'apply_obj_vars_cc')
+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', 'apply_obj_vars_cc')
+def samba_pop_cppflags(self):
+    """append stashed user CPPFLAGS after our internally computed flags"""
+
+    #
+    # Note that we don't restore the values to 'CPPFLAGS',
+    # but to _CCINCFLAGS instead.
+    #
+    # buildtools/wafadmin/Tools/cc.py defines the 'cc' task generator as
+    # '${CC} ${CCFLAGS} ${CPPFLAGS} ${_CCINCFLAGS} ${_CCDEFFLAGS} ${CC_SRC_F}${SRC} ${CC_TGT_F}${TGT}'
+    #
+    # Our goal is to effectively invert the order of ${CPPFLAGS} and
+    # ${_CCINCFLAGS}.
+    self.env.append_value('_CCINCFLAGS', self.env.SAVED_CPPFLAGS)
+    self.env.SAVED_CPPFLAGS = []
+
+@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 = []