diff options
Diffstat (limited to 'buildtools/wafsamba/samba_optimisation.py')
-rw-r--r-- | buildtools/wafsamba/samba_optimisation.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/buildtools/wafsamba/samba_optimisation.py b/buildtools/wafsamba/samba_optimisation.py index 583a6514d7..1e7a57fb0b 100644 --- a/buildtools/wafsamba/samba_optimisation.py +++ b/buildtools/wafsamba/samba_optimisation.py @@ -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 = [] |