aboutsummaryrefslogtreecommitdiff
path: root/build2/prerequisite
AgeCommit message (Collapse)AuthorFilesLines
2017-02-13Pass const target& to recipesBoris Kolpackov1-4/+3
2017-02-13Pass const scope& where modification should not happenBoris Kolpackov1-3/+3
2017-01-23Go back to storing scope instead of target in prerequisiteBoris Kolpackov1-19/+30
Turns out this was semantically the right way to do it.
2017-01-20Remove prerequisite caching in scopeBoris Kolpackov1-105/+27
We don't share them often and those that are shared (e.g., cxx{} in obja/objs{}) are lightweight (SOO).
2017-01-19Get rid of unnecessary mutableBoris Kolpackov1-2/+2
2017-01-19Get rid of extension_poolBoris Kolpackov1-11/+11
2017-01-19Get rid of project_name_poolBoris Kolpackov1-15/+13
With small string optimizations this is most likely a hindrance rather that an optimization.
2017-01-05Update copyright yearBoris Kolpackov1-1/+1
2016-08-24Handle *.export.libs, distinguish interface and implementation dependenciesBoris Kolpackov1-0/+4
A library dependency on another libraries is either "interface" or "implementation". If it is interface, then everyone who links to this library should also link to the interface dependency, explicitly. A good example of an interface dependency is a library API that is called in inline functions. Interface dependencies of a library should be explicitly listed in the *.export.libs (where we can also list target names). So the typical usage will be along these lines: import int_libs = libfoo%lib{foo} import int_libs += ... import imp_libs = libbar%lib{bar} import imp_libs += ... lib{baz}: ... $int_libs $imp_libs lib{baz}: cxx.export.libs = $int_libs
2016-08-12Implement support for C compilationBoris Kolpackov1-0/+3
We now have two new modules: cc (c-common) and c.
2016-04-21Use hash map/set for targets/prerequisites to resolve key change issueBoris Kolpackov1-6/+69
2016-04-19Redesign src/out scopingBoris Kolpackov1-15/+22
We no longer enter paths from the src tree into scope map. Instead, targets from the src tree now include their out tree directory (in essence their "configuration"). This is then used to find a target's scope. See the comment in class target for details. The result of this change is that we can now again build multiple configurations (out trees) for same project at once.
2016-02-12<types>/<utility> scheme cleanupBoris Kolpackov1-25/+21
2016-01-23Change target_key::ext from pointer to pointer to reference to pointerBoris Kolpackov1-2/+2
Probably can also do for the rest of the target_key members.
2016-01-21Tighten/clarify interfaceBoris Kolpackov1-1/+5
2016-01-09Update copyright yearBoris Kolpackov1-1/+1
2016-01-05Rename build directory/namespace to build2Boris Kolpackov1-0/+129