Aaron Boman
ca9b6035ba
Optimize PropertySet class.
2016-10-27 20:22:02 -05:00
Aaron Boman
5292c95e29
Optimize PropertySet creation.
...
The Property class has been updated so that passing in the same
parameters will always return the same Property instance. Since
no duplicate Property instances will be created, we can assign
a unique ID to each instance. This allows us to create a faster
lookup key when determining whether to create a new PropertySet
or use an existing one as integer comparison is much faster than
(string, string) comparison.
2016-10-27 20:22:02 -05:00
Aaron Boman
7f7995879b
Optimize Property comparisons.
2016-10-27 20:22:02 -05:00
Aaron Boman
6f04175044
Convert all Property and Feature gettters to attribute access.
2016-10-27 20:22:01 -05:00
Aaron Boman
42ffca9c1c
Optimize replace_grist() and forward_slashes().
2016-10-27 20:22:01 -05:00
Aaron Boman
e3b93cffcb
Optimize set.difference().
2016-10-27 20:22:01 -05:00
Aaron Boman
0999a4f1ef
Optimize CScanner in builtin.py
2016-10-27 20:22:01 -05:00
Aaron Boman
4bbde8e2b8
Fix duplicate virtual target error message.
2016-10-27 20:22:01 -05:00
Aaron Boman
0228b8ed7d
Various fixes in toolset.py
2016-10-27 20:22:00 -05:00
Aaron Boman
8c406a88cf
Save best alternative on metatargets.
...
This is useful for virtual target reporting to report which
alternative was chosen.
2016-10-27 20:22:00 -05:00
Aaron Boman
51e665fc45
Various fixes in targets.py
2016-10-27 20:22:00 -05:00
Aaron Boman
bb1fa52a2f
Set target location on metatargets.
2016-10-27 20:22:00 -05:00
Aaron Boman
f663fd8163
Update set_abbreviated_paths() to work from Jam.
2016-10-27 20:22:00 -05:00
Aaron Boman
42e0899eed
Add bjam_signature() to feature.extend().
2016-10-27 20:22:00 -05:00
Aaron Boman
67bafcd133
Add LazyProperty class for delayed Property evaluation.
2016-10-27 20:21:59 -05:00
Aaron Boman
d7b2e0974c
Update gitignore to ignore *.pyo and b2/bjam.exe
2016-10-27 20:21:59 -05:00
Aaron Boman
0055072ad6
Support passing --stacktrace to tests.
2016-10-27 20:21:59 -05:00
Aaron Boman
88f567f2ff
Prevent backreferences from breaking regex.transform().
2016-10-27 20:21:59 -05:00
Aaron Boman
a56aca9212
Fix path.glob().
2016-10-27 20:21:59 -05:00
Aaron Boman
1c315cf87b
Update unix.ArchiveGenerator.run().
2016-10-27 20:21:59 -05:00
Aaron Boman
1080608e11
Remove CScanner from cpp.py as it was already declared in builtin.py
2016-10-27 20:21:58 -05:00
Aaron Boman
8ee37e2afe
Fix asm.set_asm_type() return value.
2016-10-27 20:21:58 -05:00
Aaron Boman
83de3c5827
Fix call to alias() in testing.py.
2016-10-27 20:21:58 -05:00
Aaron Boman
404ae8a89d
Incorrect type passed in rc.py
2016-10-27 20:21:58 -05:00
Aaron Boman
359f21c237
Fix incorrect type passed in msvc.py
2016-10-27 20:21:58 -05:00
Aaron Boman
aaf9187883
Add support for faster MSVC Startup script.
2016-10-27 20:21:58 -05:00
Aaron Boman
aa49e0a141
Fix msvc.preprocess action name in msvc.py.
2016-10-27 20:21:57 -05:00
Aaron Boman
643bc6f410
Fix toolset.flags() call for 'mc.compile' in mc.py.
2016-10-27 20:21:57 -05:00
Aaron Boman
e50815353e
Add preprocessor support in gcc.py/
2016-10-27 20:21:57 -05:00
Aaron Boman
1fee455656
Fix function called with wrong type in gcc.py.
2016-10-27 20:21:57 -05:00
Aaron Boman
eb097ad804
Fix options bug in gcc.py
2016-10-27 20:21:57 -05:00
Aaron Boman
b4b5e3179e
Clean up common.MkDir in common.py.
2016-10-27 20:21:57 -05:00
Aaron Boman
2371e387a0
Make the command line outputs like that of Jam.
2016-10-27 20:21:56 -05:00
Aaron Boman
d5a07dcdb3
Fix get_invocation_command_nodefault().
...
It was possible for command to be None. Thus, calling ' '.join(None) directly
would error out.
2016-10-27 20:21:56 -05:00
Aaron Boman
8f0b57e54e
Fix cast() rule.
...
Previously, only the TYPE was allowed and not the type's rule.
This brings the Python port up to date with Jam.
2016-10-27 20:21:56 -05:00
Aaron Boman
aa42913e08
Finish porting the ArchivingGenerator.
2016-10-27 20:21:56 -05:00
Aaron Boman
593f615a1a
Prevent LinkingGenerator from direclty modifying its source list.
2016-10-27 20:21:56 -05:00
Aaron Boman
a216a9a2c8
Set CScanner as scanner for H and HPP types.
2016-10-27 20:21:56 -05:00
Aaron Boman
0e164d20d2
Fix inconsistency with <asynch-exceptions> in builtin.py.
2016-10-27 20:21:55 -05:00
Aaron Boman
cb8402239d
Remove unnecesary comments in build_system.py
2016-10-27 20:21:55 -05:00
Aaron Boman
1281499719
Fix --ignore-toolset-requirements flag.
2016-10-27 20:21:55 -05:00
Aaron Boman
4a37e4b147
Update version.py
2016-10-27 20:21:55 -05:00
Aaron Boman
5471945b4d
Fix bjam_signature for set_generated_target_prefix(). Update docs.
2016-10-27 20:21:55 -05:00
Aaron Boman
707a56e9b5
Prevent already registered type error.
...
A type can be registered as inheriting from a base type, however,
due to lazy loading, it's possible for that base type to not have
been registered yet. Originally, calling type.register() with an
unregistered base type would have registered the base type. Later,
when the base type itself was registered, an error would have been
raised saying that the base type was already registered.
This change allows for lazy loading to occur such that a base type
can be registered after a subtype is has already inherited from it.
2016-10-27 20:21:55 -05:00
Aaron Boman
98f1c4b92f
Remove unused import in scanners.py and update base Scanner.process signature.
2016-10-27 20:21:54 -05:00
Aaron Boman
3b453b85e5
Fix typos in project.py
2016-10-27 20:21:54 -05:00
Aaron Boman
b3d45f8694
Fix project initialization and loading.
...
The recently added __python_module_cache broke project.initialize().
This fixes the standalone Python file loading.
2016-10-27 20:21:54 -05:00
Aaron Boman
7737c858ac
Remove unnecessary file.
2016-10-27 20:21:54 -05:00
Aaron Boman
8039dc0fd8
Update generators to match Jam.
...
The generator methods referred to `bypassed` and `consumed`. `bypassed`
is no longer present in Jam and so any reference to that variable has been
removed.
2016-10-27 20:21:54 -05:00
Aaron Boman
c07100423e
Provide help message when generator is handed empty list of sources.
...
In Jam, the language itself would raise an error when the sources list
was empty. In the Python port, it was assumed that sources was never
empty and would run into an IndexError when the empty sources list
tried to access the first element. This change checks sources first
and provides an error message in the event that sources is empty.
An empty source list can be passed in when the best alternative
evalutates to an empty list of sources. This target is then added
to a typed target, e.g. lib, which requires sources.
2016-10-27 20:21:54 -05:00