2
0
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:
Vladimir Prus
2006-01-23 09:41:18 +00:00
parent 4180453ade
commit 763d52aa58
3 changed files with 57 additions and 12 deletions

View File

@@ -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
View 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()

View File

@@ -132,6 +132,7 @@ tests = [ "rebuilds",
"out_of_tree",
"notfile",
"project_root_rule",
"resolution",
]
if os.name == 'posix':