seems that doxygen target now produces a target
with different name, and it does not produce
any target unless there's explicit dependency
on it. I'm not sure I like the change, but
anyway.
[SVN r39605]
* BoostBuild.py; Make the matching of content and files be more loose and use pattern globbing of toolset names.
* glob.py/project_glob.py; Rename to avoid collision with builtin Python module.
* all; Update copyrights and license info.
[SVN r35729]
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]
bjam --clean some_main_target
don't clean files belonging to other main targets, even if those other main
targets are dependencies of 'some_main_target'.
[SVN r32760]
to 'make', sine it's no longer supported.
Allow to call 'flags' on local rule. Use flag settings on local rule to
implement the effect previously achieved with extra arguments.
[SVN r32723]
affect the names of the generated targets and only usefull for preventing
V2 from treating two independent targets as target alternatives.
[SVN r32720]
The issue is that when with new response files the names of libraries we're
trying to link to is not emitted with "bjam -n", so remove "-n" and explicitly
look in response files.
[SVN r32341]
There were two problems:
- 'glob' was using __name__ as the name of the project and not
project.current, so it would search in project root, and not in child
project that inherited project root rules.
- the 'import' that's overrided in project context used __name__ to
restore the value of current project
Thanks to Emil Dotchevski for the bug report.
[SVN r30507]
* If a generator was given a source it could not handle, it used to return
that source together with generated targets. This was nice for some use
cases, but no very nice for others, and this behaviour could not be turned
off. One use case where it worked bad was:
lib plugin : plugin.cpp helper ;
lib helper : helper.cpp ;
On windows, 'plugin' would link to the 'import library' and pass the DLL
target though. So, when installing 'plugin', we'd also install 'helper.dll',
and it was not possible to do anything about it.
* If we asked generators.construct to produce sources of type CPP,
and the selected generator produced both targets of type CPP, and of
some other type, we'd try again to convert those other targets to CPP.
This simply complicated the logic for no good reason.
* Most generator function had 'multiple' parameter, which function
was long forgotten by anybody.
As a bit of history, I believe some of the above decisions were due to a
certain use case:
CPP <------- WHL
\
WD
/
CPP <------- DLP
Here, a source file is converted to two targets with one command, and each
produced file is converted to CPP. Our generators search would notice that
there are two generators for CPP: the WHL->CPP and DPL->CPP
generators. Neither is better that the other so both are tried, and produce
(CPP, DPL) and (CPP, WHL) pairs of targets. To avoid reporting an ambiguity,
we'd try to convert, DLP to CPP and WHL to CPP, do it successfully, notice
that produced targets are the same and decide that there's no ambiguity.
However, this is rather complex logic for a relatively rare case. It can
be handled by writing another WD->CPP generator that would handle
disambiguation itself.
This commit has one user-visible change. The code:
exe a : a.cpp b ;
obj b : b.cpp helper;
lib helper ;
No longer works -- the 'a' target won't link to 'helper'. However, this is
pretty stange code and worked before almost by accident.
[SVN r29361]
The problem with the previous implementation is that it would iterate
over all elements in a dir even if 'pattern' had no metacharacters. First,
that was slow -- if you handed
/cygdrive/w/My Documents/boost/test/a.cpp
to it, it would crawl all the way to the top, listing each directory and
checking each file. Second, it would fail, because Cygwin is broken and
does not show 'cygdrive' is the list of directory elements of '/'.
Now we check if a pattern has metacharacters, and if not, just do
a simple 'timestamp' call.
The new glob is implemented as new 'GLOB-RECURSIVELY' builtin. I've decided
to use builtin since otherwise, we'd need 'does this name exist' builtin,
and if we need new builtin, why don't implement all globbing in core.
[SVN r29163]
The <tag> rule if often used in Jamfile like this: <tag>@$(__name__).rule.
The __name__ looks like Jamfile<jamfiles'directory>. When directory has
a dot, we we confused and took the part till the first dot as the
name of module.
Now, such values are processed closer to the definition point, where
we know the name of the module and don't need to guess it by looking at
the name.
Thanks to Juergen Hunold for the bug report.
[SVN r28063]
* build/generators.jam
(generator.generated-targets): Comment the desired semantics.
* util/utility.jam
(basename): Take the part till the last dot, not the first.
[SVN r27374]
tools/testing.jam
Support rules for measuring timing of build steps.
build/generators.jam
Generators with empty source lists can now consume any target type.
[SVN r27335]
builtins.{c,h}
Support for the REBUILDS rule
remove unused variable
rules.h
make.c
Support for the REBUILDS rule
make1.c
Support for the REBUILDS rule
Support for recording timing information
Restructured a case statement because it was masking a bug I
introduced.
execcmd.h
execnt.c
execunix.c
Support for recording timing information
Also removed NT-specific stuff from execunix
expand.c
Removed tabs from critical comment
Added tab-width variable setting comment for emacs.
v2/test
rebuilds.py, timedata.py, test_all.py
Tests for REBUILDS and timing.
[SVN r27334]
to direct dependents. The previous behaviour can be confusing and
there are no use cases where the new behaviour will be bad.
It will add more include paths in some cases, but who cares?
[SVN r26528]
Thanks to Toon Knapen for the bug report.
* tools/builtin.jam
(archiving-generator.run): Add <library> properties to sources.
* test/library_chain.py: New test.
[SVN r26447]
* tools/stage.jam
(copy-file, relink-file): Add stage's dependency properies to
the staged targets properties, so that <dependency> is copied too.
* test/stage.py: New test.
[SVN r26420]
enviroment variables in the list of values. No it's possible to add
an element to a variable.
* build/project.jam: Remove obsolete test.
* build/toolset.jam (find-property-subset): No longer local,
so that test can call it.
* test/test.jam: Import 'print' and 'common'.
* util/print.jam: Comment out failing unit test.
[SVN r26413]
* build/targets.jam
(project-target.find): Better error reporting.
* build/project.jam
(load-jamfile): Use 'path.native' when loading Jamfile,
otherwise, target id with absolute directory name won't
work for Windows.
[SVN r26271]
(load-parent): New rule, extracted from 'initilize'.
(load-jamfile): If loading project-root.jam, check for
Jamfile and load it in the same module.
(inherit-attributes): Simplify.
(project-rules.constant, project-rules.path-constant): New rules.
* build/targets.jam
(project-target.__init__): New paramater 'parent'.
(project-target.inherit)
(project-target.add-constant)
(project-target.intern-constants): New rules
*
[SVN r26251]
* build/project.jam
(project-context.use-project): Just record parameters, don't do anything.
(load): After Jamfile is loaded, use data recorded above to load
additional projects.
* test/test_all.py: New test.
[SVN r26229]
as the first elements of result. Those usage requirements will be combined
with explicitly specified for the main target.
This is yet another step towards making 'main target classes' unnecessary.
* build/generators.jam
(try-one-generator): Check if generator returned usage requirements or not.
(construct): Make sure first element of result is always property set.
(many other methods): Induced changes
* tools/builtin.jam
(exe-target-class, lib-target-class): Remove.
(linking-generator, seached-lib-generator): Compute usage requirements.
(archiving-generator): New class
[SVN r26192]
property, since it's typically used when only headers are used.
* build/virtual-target.jam (subvariant.all-referenced-targets): Return
the names of properties.
* tools/stage.jam (stage-target-class.collect-targets): Filter out <use>
Thanks to Jurgen Hunold for the bug report.
[SVN r26052]
* v2/tools/gcc.jam
(init): parse the new options and call the new rule.
(init-link-flags): new rule. Initialize flags based on linker type.
put back -minpure-text
* v2/test/conditionals.py
small modification to avoid empty binaries.
Patch from Andre Hentz.
[SVN r25764]
would force us to relink all libraries when staging.
Now that libraries do not hardcode dll paths, add a check that correct
-rpath-link options are added. When staging, we don't hardcode-dll-paths,
and libraries never hardcode dll paths, so if there's a long chain of
libraries, we should add -rpath-link, otherwise the linker won't find
the dynamic libraries and will complain.
[SVN r25756]
lib png : z : <name>png ;
lib z : : <name>z ;
now works: if you link to 'png' you'll also link to 'z'.
lib png : z : <file>png.a ;
lib z : : <file>z.a ;
now works too. The 'prebuilt.jam' modules which used to handle <file> for
all target kinds is now removed.
[SVN r25703]
* build/toolset.jam (inherit-generator): New parameter 'generators-to-ignore'.
* tools/gcc.jam: Ignore *link* generators when inheriting. Declare the
gcc specific generator.
* test/gcc_runtime.py: Test that <link-runtime>static is correctly handled.
The gcc specific generator is necessary exactly for that reason.
[SVN r25700]
'rank' for each viable generator, we use explicit information of the
form 'generator A is better than generator B', which is provided by
the user. The obvious goal is to fix 'custom_generator' failure on
msvc, but generally, I'm fixing BB76 -- which says that current generators
selection is very broken.
[SVN r25361]
msvc, 0 is returned and that broke the test. But really, we're interested
only if user-defined generator is run, not that the result is compiled.
[SVN r24779]
(from-file): Use full file name as search key, to avoid creating two
different targets from two different project, which actually correspond
to the same file.
(register): Use actual name of the target as key. This again avoid
the problem with two equivalent targets in two different projects.
[SVN r23173]
'toolset' and 'threading'. The reason is that current link-compatibility
check is way too simple minded and produces bogus warnings. For example,
linking MT library into single threaded application is OK. Likewise, some
toolsets are link-compatible.
We might need a better mechanism, but for now just make the feature
link-compatible. Useless warnings are much worse than failure to report
link-incompatibility in some cases.
[SVN r22949]
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]
Patch from Andre Hentz.
* v2/build/toolset.jam
(inherit-flags): Take an extra parameter describing properties that
should not be inherited.
* v2/build/type.jam
(register-suffixes): Removed local qualifier.
* v2/test/BoostBuild.py
(prepare_suffix_map): Add .dylib if OS is Darwin.
(Tester::_init_): path to bjam on Darwin.
* v2/test/prebuilt.py
make sure $toolset is expanded correctly.
* v2/test/prebuilt/project-root.jam
use $toolset instead of gcc.
* v2/test/prebuilt/ext/project-root.jam
use $toolset instead of gcc.
* v2/test/prebuilt/ext/Jamfile2.jam
handle extension .dylib.
* v2/test/prebuilt/ext/Jamfile2.jam
handle extension .dylib.
* v2/tools/darwin.jam
inline call to toolset.inherit.
filter <debug-symbols>off because -s is not accepted for dlls.
speficy that .dylib files are of type SHARED_LIB.
(actions link): pass -s for static linkage.
(actions link.dll): pass -L flag with path to libraries.
(actions archive): -c inhibits warning.
[SVN r22332]
* test/BoostBuild.py:
(Tester): added a check for SunOS and one for Linux. The default now is
to raise an exception.
Patch from Andre Hentz.
[SVN r21663]
options to the linker.
* tools/builtin.jam
(lib-target-class.compute-usage-requirements): Add xdll-path
properties instead of dll-path. Add them unconditionally,
not only when hardcode-dll-paths is true.
(linking-generator.run): When hardcode-dll-paths is true, add
dll-path property for each xdll-path property.
* tools/gcc.jam
Convert xdll-path properties into -rpath-link option.
[SVN r21560]
* 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]
we need to bypass <library-path> property, as well.
* tools/builtin.jam
(lib-target-class.compute-usage-requirements): The above change.
* build/virtual-target.jam
(subvariant.set-usage-requirements, subvariant.usege-requirements):
New methods.
(abstract-file-target.dg): Don't allow changing the value.
* build/targets.jam
(basic-target.generate): Explicitly don't change value of 'dg'.
[SVN r20655]
* 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]
* new/builtin.jam
(link-action.adjust-properties): Remove.
(linking-generator.generated-targets): Do what adjust-properties used to do.
(linking-generator.run): Convert <library> properties to sources.
(exe-generator): New class.
[SVN r20455]
to Austin Bingham for the bug report.
* new/project.jam
(load): Don't mark project as loaded here.
(load-jamfile): Mark it as loaded here.
[SVN r20439]
* new/targets.jam
(main-target.select-alternative): Rewrite.
(main-target.generate-really): Issue error in all cases where best
alternative could not be found.
(basic-target.match): Renamed from 'match-rank' and changed.
* boost_build_v2.html: Document new algorithm.
* test/alternatives.py: More tests.
[SVN r20331]
projects, and for individual targets, it will reappear later.
* new/property.jam:
(refine): Don't check for link-compatibility.
* new/targets.jam
(project-target.generate): Don't call 'refine' and don't emit any
warnings.
(basic-target.match-rank): The alternative selection mechanism dependended
on link-compatibility in some way. Work around the difference in semantic
we have now. This will be resolved in a more clean way later.
* new/property-set.jam
(property-set.link-incompatible, property-set.link-incompatible-with):
New methods.
[SVN r20190]
* new/virtual-target.jam
(subvariant-dg.implicit-includes): New method.
(subvariant-dg.__init__): Check for <implcit-dependency>, not all
dependency features.
* new/builtin.jam
(compile-action.adjust-properties): Call 'implicit-includes'.
[SVN r20174]
* new/generators.jam
(generator.__init__): Use parallel lists to store prefixes and postfixes
for a name, not mapping with type as a key, since type is not unique.
(generator.generated-targets): Adjust.
[SVN r19990]
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]
rather then only defined on first.
The previous behaviour did not work when there were "default-build" attribute
on project and two alternatives for a main target.
Patch from Michael Stevens.
[SVN r19303]
* 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]
* new/builtin.jam
(lib-generator): Remove.
(lib-target-class): New class. Target class is more powerfull then
generator, here.
* new/generators.jam
(construct): New argument 'return-all'.
* bew/property-set.jam
(property-set.add-raw): New method.
[SVN r18917]
not by project attribute. The problem with the previous interface was
that it was not possible to mark target as explicit anywhere else,
such as in helper module which declares target in project module, or
in toolset module.
* new/targets.jam
(project-target.mark-target-as-explicit): New rule
(project-target.targets-to-build): Use self.explicit-targets.
* new/project.jam
(project-attributes.set): Don't allow 'explicit-targets'.
[SVN r18900]
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]
* new/project-root.jam (project-root-context.project): New rule
(find-project-rule): New rule, factored out of 'load' so that it can
be used elsewhere.
* new/project.jam (find): When project is not yet known, try loading
project-root, not only Jamfile.
[SVN r18759]
are communiated via return value of 'abstract-target.generate', not as
attribute of virtual target. The advantage is that we can return usage
requirements, even if no targets were created.
Also, usage requirements is not really attribute of virtual target. If several
virtual targets are created for one main target, the previous code would set
the same usage requirements on all virtual targets.
[SVN r18689]
* new/project.jam
(lookup) Don't support project location in front of "@".
(lookup-with-load): Remove.
(find): New rule.
(find-target): move to...
* new/target.jam
(find): Here. And simplify.
[SVN r18667]
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]
build-system.jam - moved from tools/build/new to tools/build
boost-build.jam - moved from tools/build/new to tools/build/kernel
bootstrap.jam
errors.jam
modules.jam
test/BoostBuild.py - adjusted for the above modification
test/boost-build.jam
project-root.jam - renamed to "project-roots.jam" to avoid confusion
and conflict with the user's project-root.jam file
project.jam - adjusted for the above renaming
test/project-test1/project-test1.jam
type.jam - broke a circular module dependency
[SVN r18575]
* new/project.jam
(inherit-attribute): New rule, extracted from 'initialize'.
(initialize): Allow 'jamfile' parameter to be empty, in which case
the project is 'standalone'.
[SVN r18544]
they are located. The problem with using the directory name is that we might
want toolset modules to act as project, and directory name is not unique then.
We might even want to declare two projects in the same module.
[SVN r18542]
* new/stage.jam
(stage-target-class.construct): Pass the result via
'virtual-target.register'. I wonder if virtual targets should
be create via 'virtual-target.create' which will invoke
'virtual-target.register' internally. Passing via 'register' was forgotten
in many places.
* test/stage.py: New test.
[SVN r18497]
default build was stored as plain list, and implied properties were not
converted. E.g. we had "debug release", not "<variant>debug <variant>release",
which was assumed.
* new/targets.jam
(main-target, basic-target): Store 'property-set' as default-build
attribute.
(main-target-default-build): Use 'property-set.create-with-validation'.
* new/property-set.jam
(create-with-validation): New rule.
* test/default_build.py: More tests.
[SVN r18436]
translation. Cleaned up indentation and idiomatic use of string.
* index.html - documented recent features including VARNAMES and
DELETE_MODULE
* borland.jam, msvc.jam - use the new :W modifier to simplify
code (but only somewhat)
* BoostBuild.py - ignore MSVC .ilk files under Cygwin and NT
[SVN r18434]
Consequently rolled back the workaround in make_rule.py
* Added new indirect rule invocation module for encoding the module to
invoke a rule from as well as the exact name to invoke it by, and
for subsequent invocation.
* Fixed module __test__ rules so they really do execute in a separate
module. Associated tweaks to __test__ in path.jam
[SVN r18427]
* 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/targets.jam
(basic-target.generate-source): Separate virtual targets that come from
different sources.
(basic-target.check-for-unused-targets): Warn only if not virtual target
from a given source is comsumed.
[SVN r18403]
* 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]
the same properties. Thanks to Andre Hentz for finding this bug and
providing the test case.
* new/builtin.jam
(searched-lib-generator.run): Pass the result through
'virtual-target.register'.
* test/searched_lib.py: Add new test.
[SVN r18247]
get os=cygwin/toolset=msvc to pass the tests
* new/msvc.jam
(link): create a CYGWIN-specific version (assumes bash and cygpath)
(archive): convert paths from unix-style to nt-style
(init): use platform-independent paths
* test/dependency-test/foo.jam
add __declspec if CYGWIN and not GCC
[SVN r18224]
* new/builtin.jam: Associate obj and lib extension with OBJ and
STATIC_LIB target types, to handle the above combination. The gcc
toolset overrides these extension explicitly.
* new/msvc.jam
(archive): Use bash syntax on cygwin.
[SVN r18210]
* new/builtin.jam
- register builtin.response-generator with 'register-linker', to
take advantange of 'link-action'. Convert <library-path>,
<find-static-library> and <find-shared-library> into on-target
variables using toolset.flags.
(builtin.response-file) Output variables for library path to response
file.
(searched-lib-generator.run): Assign 'null-action' instance to the
generated target, to carry properties. Correct prototype and workaround
some, as-yet-unknown problem.
* test/searched_lib.py: New test (added by me).
[SVN r18121]
* new/targets.jam
(generate): Use a special string to report failure, not just return
of empty list.
(basic-target.generate-sources): Accomodate the above change.
(basic-target.check-for-unused-sources): Allow empty list of targets.
* test/alternatives.py: New test.
[SVN r17906]
* new/property.jam
(split-conditional): New rule
(translate-paths): Use the above to handle conditional properties.
* test/path_features.py: New tests.
[SVN r17881]
unconditionally.
* new/builtin.jam
(linking-generator.run): New rule. Sets dependency on <library>
properties.
* new/generators.jam
(construct): Do not handle usage requirements. Do not handle
dependency features in any way.
* new/targets.jam
(main-target.generate-really): Don't create/set subvariant-dg.
(basic-target.generate): Collect usage requirements. Create/set
subvariant-dg.
* new/virtual-target.jam
(subvariant-dg): Take actual build properties together with
requested ones.
[SVN r17813]
property-set instances, because of different order.
* new/property-set.jam
(create): Sort the properties.
* new/feature.jam:
(minimize): Bugfix.
[SVN r17812]
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]
for the bug report.
* new/make.jam
(make-target-class.construct): Pass the result through
'virtual-target.register'.
* new/virtual-target.jam
(register): Ignore incidental properties when deciding if targets are
equivivalent.
* test/make_rule.py: Add new test.
[SVN r17701]
* 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.default-build): New field.
(main-target.add-alternative): Don't allow default-build for
second and subsequence alternatives. Record default build
from the first one.
(main-target.generate): Expand build request.
(main-target.generate-really): New rule, extracted from 'generate'.
(basic-target.default-build): New rule.
(basic-target.generate): Don't expand default build.
* test/BoostBuild.py
Allow to suppress passing toolset when calling run_build_system.
Some Python 2.1 compatibility fixes.
* test/alternatives.py
More tests.
* test/default_build.py
More tests.
[SVN r17683]
* 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/build-system.jam: Try to load 'test-config.jam'. If successfull,
don't load site-config.jam/user-config.jam.
* test/BoostBuild.py: Add directory where test is invoked to BOOST_BUILD_PATH,
so that test-config.jam can be dropped to "test" dir.
[SVN r17558]
* 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]
with ordinary virtual target.
* new/virtual-target.jam
(abstract-file-target.specific-main-target): New overridable rule.
(abstract-file-target.actual-name): Use the above.
(file-target.specific-main-target): Override, using code from
'compute-extra-path'.
(file-target.compute-extra-path): Remove
(file-target.path): Use 'specific-main-target' directly.
* test/main_properties.py: More tests.
[SVN r17480]
* new/stage.jam:
(stage-target-class): Strip directory names when determining the name of
the target file.
* test/stage.py: Update the test.
[SVN r16892]
* 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]
* new/builtin.jam: The lib suffix in not "obj", even on windows.
* test/BoostBuild.py: (lib_suffix): New variable.
* test/generators_test.py: Use lib_suffix.
[SVN r16793]
on build properties.
* new/builtin.jam
Introduce "os" feature.
* new/gcc.jam
Make object suffix "o" on all platforms.
* new/property.jam
(property-map): New class.
* new/type.jam
(.suffixes): Global propety-map instance, to
keep properties->suffix mapping.
(set-generated-target-suffix): New rule
(generated-target-suffix): New argument
'properties'.
* new/virtual-target.jam
(abstract-file-target.actual-name): Pass
properties to type.generated-target-suffix.
* test/project_test4.py
Don't specify expected list of build properties,
since it's not stable. Check head of error message
only.
[SVN r16700]
* new/targets.jam
(generate-dependencies): New argument 'extra-properties.
Add it to properties used for building dependencies.
(basic-target.generate): Use the above change.
[SVN r16611]
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]
* gcc.jam: Handle the <dll-path> feature.
* builtin.jam
New features <dll-path> and <hardcode-dll-paths>.
(link-action.adjust-properties): Add library's
full paths to <dll-path> when <hardcode-dll-paths>
is specified.
[SVN r16588]
* new/targets.jam
(basic-target.generate): Use 'generate-dependencies'
for use requirements on this target.
* test/use_requirements.py: More tests.
[SVN r16580]
* new/generators.jam
(find-viable-generators): Allow target type of
"*" mean any type. Try generators for "*" first.
Really ignore generators for base types when
there's a generator for derived type. Allow
grist-only element in generators requirements
to match all values of property.
* new/prebuilt.jam
(prebuilt-target-class): Remove
(prebuild-file-generator): New class.
[SVN r16578]
introduce separate <link-runtime> feature.
Allow to use the 'lib' rule to declare
libraries that should be searched for.
* builtin.jam: Remove 'shared' features. Introduce
'link' and 'link-runtime'.
(searched-lib-target): New class
(searched-lib-generator): New generator.
(lib-action): New class, derived from 'action'.
Handles instances of 'searched-lib-target' in sources.
Also, moves all libraries from sources to property value,
so that we can repeat them twice in command line.
(lib-generator): Generator which uses 'lib-action'.
* generators.jam: Allow empty list of sources everywhere.
* virtual-target.jam (file-target): Split into
'abstract-file-target' and 'file-target'.
(abstra
(action.actualize-sources): New rule. Allows to
handle the fact that some sources are special,
and should not become $(>) in action body.
[SVN r16573]
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]
* gcc.jam: Extend the 'toolset' feature with gcc here.
Use flags for linking too and eliminate 'link-options'
rule. Remove empty compile/archive/link/link-dll rules.
* toolset.jam (flags): Document somehow.
(set-target-variables): Call 'actualize' on values
of dependency features.
[SVN r16440]
* boost_build_v2.html: Document new option.
* new/generators.jam (find-viable-generators): Revert part of Dave's
commit, essentially disabling finding base type generators.
This part breaks a test, and need to be thinked about.
* new/errors.jam: Handle "--no-error-backtrace" option.
* test/project_test4.py: Adjust for new error syntax.
[SVN r16233]
* 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]
targets are specified as sources, not only as dependency properties.
* new/virtual-target.jam (subvariant-dg): Note which sources
are roots of dependency grapgs and record those graphs.
[SVN r16095]
* 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]
* project.jam (lookup-with-load): New rule.
(find-target): Try interperting target id as project first.
* build-request.jam (from-command-line): Don't grab
unconditionally elements which have slashes -- they may be target
ids.
* build-system.jam: Allow target ids is command
line. Accept --clean option.
* BoostBuild.py (run_build_system): Call 'ignore_directoies' on diff.
* tree.py (Trees_different.ignore_directoies): New method.
[SVN r15768]
* 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]
* builtin.jam (variant): New rule.
* build-system.jam: Unconditionally add <toolset>gcc to build
request. Will be fixed when toolset support is ready.
* feature.jam (extend-feature): Bugfix.
[SVN r15678]
* 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]
* new/builtin.jam: Make 'obj' main type.
* new/generators-test/*: Try compiling the same CPP file with
different defines and linking in the same exe.
[SVN r15649]
* jam_src/builtins.c: New builtin SEARCH_FOR_TARGET.
* jam_src/rules.c
(bind_explicitly_located_targets): New function.
(search_for_target): New function.
* jam_src/make.c (make): Call 'bind_explicitly_located_targets()'
immediately on entering.
* jam_src/search.c (call_bind_rule): No longer 'static'.
* new/builtin.jam (c-scanner.process): Real implementation.
* test/dependency_test.py: Really test for dependencies.
[SVN r15646]
* virtual-target.jam (virtual-target.actualize): Accept
'scanner' parameter and create different actual targets
for different values of that parameter.
(virtual-target.includes): Remove.
(binding): New rule
(remember-binding): New rule.
* type.jam (set-scanner): New rule. (get-scanner): New rule.
* scanner.jam: New file.
* class.jam (__init__): Define __name__ in class scopes.
* builtin.jam (c-scanner): New scanner class, associated with CPP
files.
[SVN r15644]
* 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]
For example, this would allow compilers to add generated headers into include
path.
* virtual-target.jam (action.adjust-properties): New rule.
(clone-action-template): Don't slice cloned object.
* generators.jam (generator.action-class): New rule, to allow
overriding action class on per-generator basis.
* builtin.jam (compile-action): New class.
(C-compiling-generator): New class.
* gcc.jam: Use C-compiling-generator for gcc. Honor includes.
[SVN r15618]
- Got rid of vectors of vectors in generators code. That was not only slow, it
was also troublesome.
- Started work on transformation caching. Works but needs review/cleanup.
[SVN r15465]
prevents complining the same source twice with the same properties.
Also allow generators to change source names using patterns.
* new/generators.jam (generator): Accept name patterns together with
target types.
(generator.generated-targets): Use name patterns. Transform generated
targets with 'virtual-targets.register', to eliminate duplicate
virtual targets.
[SVN r15302]