* New feature <relevant> which is automatically deduced in most cases.
* Features which are not relevant do not affect target paths and
do not prevent merging of virtual targets.
* generators.jam: generator.run always returns usage-requirements
to allow usage-requirements in non-top-level generators. This
is necessary because we're using usage-requirements to track
relevance from flags.
* New rule toolset.uses-features to specify features that the rule
checks manually, instead of using toolset.flags. In the future,
we should consider restricting the properties actually passed,
to detect errors.
* Adjust tests to handle the new paths (verified by inspection).
* Add temporary option --ignore-relevance to consider all features relevant
to aid migration.
* New rule property.evaluate-conditional-relevance which helps tracking
relevance in <conditional>.
* Widely scattered changes to use the new interfaces.
Various restructure of test framework handling of paths to avoid duplicate path editing which caused failed tests. Adjust many tests to deal with added subdirectories in build outputs now that toolset requirements are active.
Related changes:
* BoostBuild.Tester & TestCmd.TestCmd interfaces now accept external process parameters as a list of strings, thus avoiding problems with parsing arguments containing spaces.
* Avoided a potential process hang in case an external process being run prints out enough output to fill up the OS's pipe buffer (OS would pause the process until someone read the data from the pipe but the testing framework would not do this until the process in question had terminated).
[SVN r79448]
alias foo : [ run a.cpp ] ;
and
exe main : main.cpp [ lib helpers : helpers.cpp ] ;
Now inline targets are marked explicit, so that they are not
build unless requested, and for the alias target, the names
of inline targets are not qualified by the name of top-level target.
build/
* alias.jam (alias): Pass 'no-renaming' to
target.main-target-sources.
* target.jam (main-target-sources): New parameter
'no-renaming'. Make inline target explicit.
* builtin.jam (lib): Declare 'result' variable,
to avoid implicit declaration of a global one.
tools/
* testing.jam (test-suite): Make synonymous with 'alias'.
test/
* inline.py: Adjust to the fact that alias no longer
changes names of inline targets. Check that inline
targets are explicit.
[SVN r35607]
* new/targets.jam
(project-target.add-alternative): New rule.
(project-target.build-main-targets): New rule.
(project-target.generate, project-target.main-target,
project-target.has-main-target): Call 'build-main-targets'
(project-target.rename-main-target): Remove.
(main-target-sources): Use 'rename', not project.rename-main-target.
(main-target-alternative): Simplify.
* test/inline.py: Test for fix.
[SVN r19245]