Add executable arguments for configuration tests / execute=True

conf.check(..., execute=True, test_args=['--abc=def'])
This commit is contained in:
Thomas Nagy 2019-07-11 07:48:40 +02:00
parent 88fa1fab83
commit bbaa976ae0
No known key found for this signature in database
GPG Key ID: 49B4C67C05277AAA
2 changed files with 10 additions and 6 deletions

View File

@ -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<stdio.h>\nint main(){fprintf(stderr, "mu"); printf("%d", 22);return 0;}\n""", execute=True, define_name='HAVE_MU')
conf.check(fragment="""#include<stdio.h>\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)

View File

@ -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')