summaryrefslogtreecommitdiff
path: root/buildtools/wafsamba/samba_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'buildtools/wafsamba/samba_utils.py')
-rw-r--r--buildtools/wafsamba/samba_utils.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/buildtools/wafsamba/samba_utils.py b/buildtools/wafsamba/samba_utils.py
index 519b77bdf02..bdf96fef884 100644
--- a/buildtools/wafsamba/samba_utils.py
+++ b/buildtools/wafsamba/samba_utils.py
@@ -3,7 +3,7 @@
import Build, os, sys, Options, Utils, Task, re, fnmatch, Logs
from TaskGen import feature, before
-from Configure import conf
+from Configure import conf, ConfigurationContext
from Logs import debug
import shlex
@@ -624,3 +624,26 @@ def get_tgt_list(bld):
sys.exit(1)
tgt_list.append(t)
return tgt_list
+
+from Constants import WSCRIPT_FILE
+def process_separate_rule(self, rule):
+ ''' cause waf to process additional script based on `rule'.
+ You should have file named wscript_<stage>_rule in the current directory
+ where stage is either 'configure' or 'build'
+ '''
+ ctxclass = self.__class__.__name__
+ stage = ''
+ if ctxclass == 'ConfigurationContext':
+ stage = 'configure'
+ elif ctxclass == 'BuildContext':
+ stage = 'build'
+ file_path = os.path.join(self.curdir, WSCRIPT_FILE+'_'+stage+'_'+rule)
+ txt = load_file(file_path)
+ if txt:
+ dc = {'ctx': self}
+ if getattr(self.__class__, 'pre_recurse', None):
+ dc = self.pre_recurse(txt, file_path, [])
+ exec(compile(txt, file_path, 'exec'), dc)
+
+Build.BuildContext.process_separate_rule = process_separate_rule
+ConfigurationContext.process_separate_rule = process_separate_rule