diff options
-rw-r--r-- | src/CHANGES.txt | 2 | ||||
-rw-r--r-- | src/engine/SCons/Script/Main.py | 4 | ||||
-rw-r--r-- | test/TARGETS.py | 31 |
3 files changed, 36 insertions, 1 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt index e575de3..9d2e235 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 c41587c..8156208 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 5c73d81..d2520d5 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() |