mirror of
https://github.com/boostorg/build.git
synced 2026-02-15 13:02:11 +00:00
When resolving target id, first look for target in Jamfile, then for
file in current dir. This partially reverts rev 1.117 of build/targets.jam. See test for further explanations. [SVN r32377]
This commit is contained in:
@@ -364,22 +364,28 @@ class project-target : abstract-target
|
||||
}
|
||||
else
|
||||
{
|
||||
# Interpret as filename
|
||||
result = [ new file-reference [ path.make $(id) ] : $(project) ] ;
|
||||
|
||||
if ! [ $(result).exists ]
|
||||
{
|
||||
# File actually does not exist.
|
||||
# Reset 'target' so that an error is issued.
|
||||
result = ;
|
||||
}
|
||||
|
||||
# Interpret target-name as name of main target
|
||||
# Need to do this before checking for file. Consider this:
|
||||
#
|
||||
# exe test : test.cpp ;
|
||||
# install s : test : <location>. ;
|
||||
#
|
||||
# After first build we'll have target 'test' in Jamfile and file
|
||||
# 'test' on the disk. We need target to override the file.
|
||||
result = [ main-target $(id) ] ;
|
||||
|
||||
if ! $(result)
|
||||
{
|
||||
result = [ main-target $(id) ] ;
|
||||
result = [ new file-reference [ path.make $(id) ] : $(project) ] ;
|
||||
|
||||
if ! [ $(result).exists ]
|
||||
{
|
||||
# File actually does not exist.
|
||||
# Reset 'target' so that an error is issued.
|
||||
result = ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Interpret id as project-id
|
||||
if ! $(result)
|
||||
{
|
||||
|
||||
38
v2/test/resolution.py
Normal file
38
v2/test/resolution.py
Normal file
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# Copyright (C) Vladimir Prus 2006.
|
||||
# Distributed under the Boost Software License, Version 1.0. (See
|
||||
# accompanying file LICENSE_1_0.txt or copy at
|
||||
# http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
# Tests for the target id resolution process.
|
||||
from BoostBuild import Tester, List
|
||||
|
||||
# Create a temporary working directory
|
||||
t = Tester()
|
||||
|
||||
# Create the needed files
|
||||
t.write("Jamroot", """
|
||||
exe hello : hello.cpp ;
|
||||
# This should use the 'hello' target, even if there's
|
||||
# 'hello' file in current dir.
|
||||
install s : hello : <location>. ;
|
||||
""")
|
||||
t.write("hello.cpp", """
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
""")
|
||||
|
||||
t.run_build_system()
|
||||
|
||||
t.expect_addition("bin/$toolset/debug/hello.obj")
|
||||
|
||||
t.touch("hello.cpp")
|
||||
t.run_build_system("s")
|
||||
# If 'hello' in the 's' target resolved to file in
|
||||
# current dir, nothing will be rebuilt.
|
||||
t.expect_touch("bin/$toolset/debug/hello.obj")
|
||||
|
||||
t.cleanup()
|
||||
@@ -132,6 +132,7 @@ tests = [ "rebuilds",
|
||||
"out_of_tree",
|
||||
"notfile",
|
||||
"project_root_rule",
|
||||
"resolution",
|
||||
]
|
||||
|
||||
if os.name == 'posix':
|
||||
|
||||
Reference in New Issue
Block a user