From: stevenknight Date: Sat, 13 Aug 2005 20:44:44 +0000 (+0000) Subject: Allow modification of BUILD_TARGETS from with SConscript files. (Stanislav Baranov) X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=d3948fd2ae326567c1ea6bdcbb9bd2a56871abb0;p=scons.git Allow modification of BUILD_TARGETS from with SConscript files. (Stanislav Baranov) git-svn-id: http://scons.tigris.org/svn/scons/trunk@1331 fdb21ef1-2011-0410-befe-b5e4ea1792b1 --- diff --git a/src/CHANGES.txt b/src/CHANGES.txt index e575de32..9d2e2351 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -44,6 +44,8 @@ RELEASE 0.97 - XXX - Allow access to both TARGET and SOURCE in $*PATH expansions. + - Allow SConscript files to modify BUILD_TARGETS. + From Timothee Besset: - Add support for Objective C/C++ .m and .mm file suffixes (for diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py index c41587cc..81562085 100644 --- a/src/engine/SCons/Script/Main.py +++ b/src/engine/SCons/Script/Main.py @@ -1080,13 +1080,15 @@ def _main(args, parser): fs.set_max_drift(ssoptions.get('max_drift')) lookup_top = None - if targets: + if SCons.Script.BUILD_TARGETS: # They specified targets on the command line, so if they # used -u, -U or -D, we have to look up targets relative # to the top, but we build whatever they specified. if target_top: lookup_top = fs.Dir(target_top) target_top = None + + targets = SCons.Script.BUILD_TARGETS else: # There are no targets specified on the command line, # so if they used -u, -U or -D, we may have to restrict diff --git a/test/TARGETS.py b/test/TARGETS.py index 5c73d81b..d2520d57 100644 --- a/test/TARGETS.py +++ b/test/TARGETS.py @@ -32,6 +32,8 @@ import TestSCons test = TestSCons.TestSCons() + + test.write('SConstruct', """ print COMMAND_LINE_TARGETS print map(str, BUILD_TARGETS) @@ -62,6 +64,8 @@ scons: Nothing to be done for `aaa'. """) test.run(arguments = 'bbb ccc=xyz -n aaa', stdout = expect) + + test.write('SConstruct', """ env = Environment() print map(str, DEFAULT_TARGETS) @@ -106,4 +110,31 @@ expect = test.wrap_stdout(build_str = "scons: `.' is up to date.\n", """) test.run(arguments = '.', stdout = expect) + + +test.write('SConstruct', """\ +print map(str, BUILD_TARGETS) +SConscript('SConscript') +print map(str, BUILD_TARGETS) +""") + +test.write('SConscript', """\ +BUILD_TARGETS.append('sconscript_target') +""") + +test.write('command_line_target', "command_line_target\n") +test.write('sconscript_target', "sconscript_target\n") + +expect = test.wrap_stdout(read_str = """\ +['command_line_target'] +['command_line_target', 'sconscript_target'] +""", + build_str = """\ +scons: Nothing to be done for `command_line_target'. +scons: Nothing to be done for `sconscript_target'. +""") +test.run(arguments = 'command_line_target', stdout = expect) + + + test.pass_test()