blob: 112a503e2c2143530ce29779aedbd1d8e457b8ec [file] [log] [blame]
diff --git a/buildtools/wafsamba/samba_waf18.py b/buildtools/wafsamba/samba_waf18.py
index c0bb6bfcf55..547da1996da 100644
--- a/buildtools/wafsamba/samba_waf18.py
+++ b/buildtools/wafsamba/samba_waf18.py
@@ -1,7 +1,7 @@
# compatibility layer for building with more recent waf versions
import os, shlex, sys
-from waflib import Build, Configure, Node, Utils, Options, Logs, TaskGen
+from waflib import Build, Configure, Node, Utils, Options, Logs, TaskGen, Task
from waflib import ConfigSet
from waflib.TaskGen import feature, after
from waflib.Configure import conf, ConfigurationContext
@@ -429,3 +429,28 @@ def add_obj_file(self, file):
if not 'process_obj_files' in self.meths:
self.meths.append('process_obj_files')
self.obj_files.append(file)
+
+
+class test_exec(Task.Task):
+ """
+ A task that runs programs after they are built. See :py:func:`waflib.Tools.c_config.test_exec_fun`.
+ """
+ color = 'PINK'
+ def run(self):
+ exec_args = Utils.to_list(self.generator.exec_args)
+
+ if getattr(self.generator, 'rpath', None):
+ if getattr(self.generator, 'define_ret', False):
+ self.generator.bld.retval = self.generator.bld.cmd_and_log([self.inputs[0].abspath()] + exec_args)
+ else:
+ self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()] + exec_args)
+ else:
+ env = self.env.env or {}
+ env.update(dict(os.environ))
+ for var in ('LD_LIBRARY_PATH', 'DYLD_LIBRARY_PATH', 'PATH'):
+ env[var] = self.inputs[0].parent.abspath() + os.path.pathsep + env.get(var, '')
+
+ if getattr(self.generator, 'define_ret', False):
+ self.generator.bld.retval = self.generator.bld.cmd_and_log([self.inputs[0].abspath()] + exec_args, env=env)
+ else:
+ self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()] + exec_args, env=env)