a couple of cases.
1. On Windows, DLLs are never directly linked to, so they are considered
unused and cause a warning. There used to be special code in
exe-target-class and lib-target-class to supress that warning, but this
failed for unit-test, for example, since main target class for unit test
is not related with exe-target-class. And making yet another main target
class looks ugly.
2. A target specified via project-wide <source> or <library> property is
added to sources for all targets, and cause a warning when it's not used.
However, there are valid cases to ignore such sources. For example
obj a : a.cpp : <optimization>off ;
need to comsume any libraries.
It was not clear how to fix both problems. Further, the only case when I found
the warning to be usefull is when declaring new toolsets, and it that case it
does not add much information compared to --debug-generators output. So, let's
just kill the feature for now.
[SVN r22927]
The used 'CALLER_MODULE' to determine the project where the main target
is to be declared, which did not work if the rule is called from another
module.
Thanks to Zbynek Winkler for the bug report.
* build/project.jam (current): New rule
* test/wrapper.py: New test
* other files: Use 'project.current'.
[SVN r22569]
* tools/builtin.jam
(linking-generator): Move <library> properties to sources in the 'run'
method. This makes the logic usable by everyone who invokes the generator.
(exe-target-class, lib-target-class): Don't do the above.
[SVN r20707]
* build/targets.jam
(basic-target.refined-properties): expand composites in the 'requirements' property-set.
Patch from Paul Lin.
* tests/composite.py: New test.
[SVN r20615]
Thanks to Peter Schoen for bugreport.
* new/project.jam (initialize): Set 'project-root-module' attribute.
* new/project_root.py: New test.
[SVN r19899]
* jam_src/builtins.c: New builtins IMPORT_MODULE and IMPORTED_MODULES.
jam_src/rules.c: (bindrule): Refactor. (lookup_rule): New function.
* kernel/modules.jam: Make use of IMPORT_MODULE.
[SVN r19422]
it included MSVC...
* new/toolset.jam:
Allow action names with dots, so that we can set flags for
gcc.compile.c, gcc.compile and gcc and combine those flags.
* tools/gcc.jam: Use 'gcc' for compiling C files. There's still a problem:
'init' rules does not allow to configure name of C compiler. Also, don't
declare flags individually for gcc.link and gcc.link-dll.
* tools/borland.jam: Force C++ compile when needed.
[SVN r18774]
metacharacters, Boost.Build misbehaved.
* new/path.jam
(all-parents): Don't use regex to strip path prefix, use a more robust
approach.
* test/bad_dirname.py: New test.
[SVN r18576]
* new/virtual-target.jam
(null-action): Pass '.no-action' as action name, not 'no-action'. The
action name is really dummy, it's not used at all. However, when it does
not include dot, the smart 'action' ctor will assume it's local and prepend
module name to it. The calling module will be 'null-action' instance module,
always unique, and as result, no two targets with null actions will be
equal, as far as 'virtual-target.register' is concerned.
[SVN r18424]
* handle the absence of QT more gracefully
* flush stdout after each test so that emacs shows progress
****** Commented out tests which appear to be failing outside my control ******
[SVN r18410]
* new/virtual-target.jam
(file-target.specific-main-target): Check not only free, but also
dependency properties when deciding if targets is specific to the main
target.
* new/dependency_property.py: New test.
[SVN r18363]
* new/virtual-target.jam
(from-file): Pass target name via "path.make".
(abstract-file-target.actual-name): Pass target name via "path.native".
* test/absolute_sources.py: New test.
[SVN r18324]
default value will always be present in build properties of all
main targets. The change moves adding default value into main
targets --- it was done at the top level.
* new/build-request.jam
(expand-no-defaults): No longer local.
* new/build-system.jam
Use 'build-request.expand-no-defaults', not 'expand'.
* new/feature.jam
(add-defaults): Tolerate conditional properties
(e.g <variant>debug:<define>DEBUG)
* new/property-set.jam
(property-set.add-defaults): New method.
* new/targets.jam
(basic-target.final-properties): Add defaults.
* test/default_features.py: New test.
[SVN r17753]
* new/targets.jam
(basic-target.check-for-unused-sources): New rule.
(basic-target.generate): Call the above.
* new/virtual-target.jam
(traverse): New arguments 'include-roots' and 'include-sources'.
* test/unused.py: New test.
[SVN r17685]
* new/targets.jam
(main-target.select-alternatives): New rule.
(main-target.generate): Simplify, using the above.
* new/errors.jam
(error): Do EXIT if --no-error-backtrace is given.
* tests/alternatives.py: New test.
[SVN r17673]
* new/make.jam
(make): Change name only of the first element in 'generating-rule'
* new/virtual-target.jam
(action.actualize): Pass only first element of action name to
toolset.set-target-variables.
* test/make_rule.py: New test.
[SVN r17543]
* new/path.jam
(make-NT, make-UNIX): Convert empty path into "."
* new/project.jam
(path-relative-to-project-location): New rule.
* new/stage.jam
(stage-target-class.construct): Use the above rule.
* new/symlink.jam
(symlink-targets.construct): Call 'set-path' on created
virtual targets.
(ln): Attempts at better handling creating symlinks in
directories.
* new/virtual-target.jam
(abstract-file-target.actual-name): If explicit path was
given, include it in grist.
* test/symlink.py: New test.
* test/test_all.py
Run new test.
[SVN r16889]
attribute which controls where generated targets are put,
much in the same was as ALL_LOCATE_TARGET.
* new/virtual-target.jam
(virtual-target.path): Respect build dir.
(virtual-target.actualize-location): Don't
compute path, but call call instead.
* new/project.jam
(initialize): Set default value for 'build-dir'.
(project-attributes.set): Handle 'build-dir'.
* new/path.jam
(relative): New rule.
* test/build_dir.py: New test.
[SVN r16589]
in it. Don't generate all main target into separate subdirectories
in this case.
* new/targets.jam:
(project-target.reference-properties): New method
(generate): Moved from basic-target.generate-source
(generate-dependencies): New rule.
* test/project_dependencies.py: New test.
[SVN r16453]
* new/common.jam (copy): New rule.
* new/targets.jam (main-target.generate): Use a different
algorith for selecting subvariant. Favour one with
the longest intersection of requirements with build
properties.
* new/virtual-target.jam (virtual-target): Eliminate 'subvariant'
attribute. Use properties of action to for the same
purpose. New methods 'set-path' and 'extra-grist'.
[SVN r16129]
* new/virtual-target.jam
(virtual-target.use-requirements): New rule.
(virtual-target.set-use-requirements): New rule.
* new/generators.jam (construct): Use 'use-requirements' of sources.
* new/targets.jam (basic-target.generate): Store use requirements for
generated targets.
(main-target-alternative): Process use requirements.
* new/project.jam: Support 'use-requirements' project attribute.
[SVN r15821]
* new/virtual-target.jam (clone-template): Improve interface and logic.
* new/make.jam (make-target-class.construct): Set type and suffix on
generated targets.
* new/generators.jam (construct): Make sure all targets have known
types.
[SVN r15766]
* targets.jam
(abstract-target.direct-build-request): New rule.
(project-target.direct-build-request): New rule.
(main-target.direct-build-request): New rule.
(main-target.generate): Use data stored by
'direct-build-request' to adjust build properties.
* build-system.jam: Call 'direct-build-request' on project
target in "."
* feature.jam (feature): Don't allow propagated free features.
[SVN r15677]
* virtual-target.jam (traverse): New rule, returns a list of
targets, given the graph root.
(subvariant-dg): New class, to keep all targets for a given
subvariant.
(virtual-target.dg): New rule to access subvariant-dg.
(virtual-target.path): New rule
* targets.jam (main-target.generate): Assign subvariant dg to all
created targets.
* builtin.jam (compile-action.adjust-properties): Use subvariant
dg to find all targets, their location, and add those location
to include path.
[SVN r15619]
* new/targets.jam: Check for duplicate 'basic-target::generate()' calls.
Use better logic to tell is source is another main target or file.
(project-target::has-main-target): New rule.
* new/project.jam (lookup): Fixes. (find-target): Implemented.
* new/make.jam: New file, defines the 'make' rule and associated target
class.
* new/build-system.jam: Import 'make'. Generate virtual targets and
actualize them.
* new/utility.jam: Added "MkDir" rule and actions.
* test/project_test3.py: New test.
[SVN r14249]