waf: added suncc_wrap
authorAndrew Tridgell <tridge@samba.org>
Fri, 29 Oct 2010 00:49:31 +0000 (11:49 +1100)
committerAndrew Tridgell <tridge@samba.org>
Sat, 30 Oct 2010 12:49:00 +0000 (23:49 +1100)
this should solve a problem with creating alias modules with Sun CC.

Thanks to Matthieu for the idea, and Thomas for the waf code

buildtools/wafsamba/samba_optimisation.py

index 1c3478c2a448a1370873c5b46ff9e58d1f19325d..ad0534834f3ab1f44d68f4c47ef6f56d5615aea1 100644 (file)
@@ -7,7 +7,7 @@
 # overall this makes some build tasks quite a bit faster
 
 from TaskGen import feature, after
-import preproc
+import preproc, Task
 
 @feature('cc', 'cxx')
 @after('apply_type_vars', 'apply_lib_vars', 'apply_core')
@@ -148,3 +148,18 @@ Task.TaskBase.hash_constraints = hash_constraints
 
 #      return task
 
+
+def suncc_wrap(cls):
+       '''work around a problem with cc on solaris not handling module aliases
+       which have empty libs'''
+       if getattr(cls, 'solaris_wrap', False):
+               return
+        cls.solaris_wrap = True
+        oldrun = cls.run
+        def run(self):
+               if self.env.CC_NAME == "sun" and not self.inputs:
+                       self.env = self.env.copy()
+                       self.env.append_value('LINKFLAGS', '-')
+               return oldrun(self)
+        cls.run = run
+suncc_wrap(Task.TaskBase.classes['cc_link'])