That was an old hack which was only needed in one context -- when we
passed both Jamroot and jamroot as patterns, got back Jamroot and jamroot
(because windows is case-insensitive and reports that both exist), and get
confused.
Calling 'unique' does not harm in most cases, but in Boost Jamfiles we glob
for all headers, and O(n^2) algorithm used by unique considerably slows us.
[SVN r29187]
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]
It was completely broken with absolute windows paths because /cygdrive
is valid cygwin path, but 'cygdrive' is not shown when listing the '/'
directory.
[SVN r28508]
* 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]
* util/print.jam: Do not quote the argument to the
'echo' command on windows. It's special, and does not need quotes.
Adding them will cause the quotes to always appear in the output,
which would be different behaviour from Unix.
* tools/common.jam (response-file): Add quotes here.
[SVN r26836]
- Drop separate 'suffix' field in file targets. Store suffix as part of
the name' field. This avoids the need to copy the suffix field and the
name everywhere.
- Do not pass generated targets to constructor of 'action'. Instead,
pass the acton to constructor of target.
[SVN r26778]
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]
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]
- Specialized RC->RES generators were added for msvc. This allows
to invoke setup script before calling rc.exe, which adds necessary
include paths.
- Includes scanner for RC files added.
Thanks to Alexey Pakhunov for the patch.
[SVN r23036]
(make-qualified): Bugfix. When processing gcc.link.dll rule, take 'gcc' as
module name, not 'gcc.link'. The previous behaviour caused 'gcc.link.dll'
to be called in context of 'gcc.link' module. As the result the global
definition of 'gcc.link.dll' was called. That definition is created by jam
when it sees 'actions gcc.link.dll' and has no executable code associated
with it. So, rule 'gcc.link.dll' was never executed.
[SVN r20009]