diff --git a/demos/c/wscript b/demos/c/wscript index 979651e5..c02184b0 100644 --- a/demos/c/wscript +++ b/demos/c/wscript @@ -27,12 +27,15 @@ def configure(conf): conf.check(fragment='int main() { return 0; }\n', features='c') try: - conf.check(fragment="int main() { return 0; }\n", execute=True) # 1 + conf.check(fragment="int main(int argc, char* argv[]) { return 0; }\n", execute=True) # 1 except conf.errors.WafError: Logs.warn('You are probably using a cross-compiler (disabling specific configuration tests)') conf.check_library(test_exec=False) else: - conf.check(fragment="""#include\nint main(){fprintf(stderr, "mu"); printf("%d", 22);return 0;}\n""", execute=True, define_name='HAVE_MU') + conf.check(fragment="""#include\nint main(){fprintf(stderr, "mu"); printf("%d", 22);return 0;}\n""", + msg='Checking for exec results', execute=True, define_name='HAVE_MU') + conf.check(fragment='int main(int argc, char* argv[]) { return argc - 2;}', + msg='Checking for test arguments', test_args=['--foo=bar'], execute=True) conf.check_library(test_exec=True) conf.check(lib='m', cflags='-Wall', defines=['var=foo', 'x=y'], uselib_store='M', mandatory=False) diff --git a/waflib/Tools/c_config.py b/waflib/Tools/c_config.py index d546be95..80580cc9 100644 --- a/waflib/Tools/c_config.py +++ b/waflib/Tools/c_config.py @@ -659,20 +659,21 @@ class test_exec(Task.Task): """ color = 'PINK' def run(self): + cmd = [self.inputs[0].abspath()] + getattr(self.generator, 'test_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()]) + self.generator.bld.retval = self.generator.bld.cmd_and_log(cmd) else: - self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()]) + self.generator.bld.retval = self.generator.bld.exec_command(cmd) 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()], env=env) + self.generator.bld.retval = self.generator.bld.cmd_and_log(cmd, env=env) else: - self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()], env=env) + self.generator.bld.retval = self.generator.bld.exec_command(cmd, env=env) @feature('test_exec') @after_method('apply_link')