aboutsummaryrefslogtreecommitdiff
path: root/build2
AgeCommit message (Collapse)AuthorFilesLines
2016-07-17Redesign obj to exe/lib mappingBoris Kolpackov15-284/+463
Specifically: * objso{} and libso{} target types have been renamed to objs{} and libs{} * obje{} has been added (so now we have obje{}, obja{}, and objs{}) * obje{} is now used for building exe{} * object file extensions have been changed to use "hierarchical extensions" that reflect the extension of the corresponding exe/lib target (instead of the -so suffix we used), specifically: obje{}: foo.o, (UNIX), foo.exe.o (MinGW), foo.exe.obj (Windows) obja{}: foo.a.o (UNIX, MinGW), foo.lib.obj (Windows) objs{}: foo.so.o (UNIX), foo.dylib.o (Darwin), foo.dll.o (MinGW), foo.dll.obj (Windows)
2016-07-16Add support for prepend/append in target type/pattern-specific varsBoris Kolpackov9-89/+301
Semantically, these are similar to variable overrides and are essentially treated as "templates" that are applied on lookup to the "stem" value that is specific to the target type/name. For example: x = [string] a file{f*}: x =+ b sub/: { file{*}: x += c print $(file{foo}:x) # abc print $(file{bar}:x) # ac }
2016-07-15Always generate separate object files for liba{} and libso{}Boris Kolpackov1-9/+5
While on some platforms they sometimes can be the same, they could also be built differently (e.g., based on command line macros, etc). I guess we could compare the set of options and if they are identical, then use the same file. But that will complicate things quite a bit, so maybe in version 2.
2016-07-15Make .pdb ad hoc group member, installBoris Kolpackov4-37/+88
2016-07-15Name and cleanup extra VC files (.pdb, .ilk, .idb)Boris Kolpackov6-52/+162
2016-07-13Use link.exe instead of cl.exe to link executablesBoris Kolpackov2-69/+109
2016-07-12Get src_root value if we have already bootstrapped this projectBoris Kolpackov1-0/+2
This fixes a core dump in out-of-source 'clean update' run.
2016-07-11Escape Windows path backslashes in synthesized .rc fileBoris Kolpackov1-2/+18
2016-07-11Reimplement Windows rpath emulation using embedded manifestsBoris Kolpackov5-391/+584
As a bonus, everyone now gets a sane default manifest.
2016-07-11Add bin.rc module (resource compiler)Boris Kolpackov5-24/+179
2016-07-11Add bin.ld sub-moduleBoris Kolpackov5-20/+236
2016-07-09Add config.bin.pattern, pass it as hint from cxx moduleBoris Kolpackov2-29/+169
With this change we normally no longer need to specify config.bin.ar explicitly when cross-compiling or set it to lib.exe for VC.
2016-07-08Add dependency on fsdir{} in alias rulesBoris Kolpackov6-27/+37
This makes sure that a directory with only dir{} target gets cleaned up.
2016-07-08Move filesystem-related functions from context to new filesystem filesBoris Kolpackov20-275/+315
2016-07-08Implement limited rpath emulation for WindowsBoris Kolpackov9-145/+589
2016-07-01Fix cli test to read cli output till the endKaren Arutyunov1-0/+6
2016-07-01Port to MSVCKaren Arutyunov11-48/+44
2016-06-28Work around static initialization order issueBoris Kolpackov3-10/+39
value_traits<T>::value_type initialization is not constexpr in VC because of pointers to function template instantiations (which apparently are not constexpr).
2016-06-27Add config.bin.target var/hint, use to decide libso{} install modeBoris Kolpackov14-175/+352
Normally the user doesn't need to specify config.bin.target explicitly since the cxx module will hint it. We now also have the whole set of target's components: bin.target.{cpu,vendor,system,version,class}
2016-06-27Get rid of extern "C" in module boot()/init()Boris Kolpackov16-149/+153
We will have a separate (extern "C") register() function that will return the pointers to these two. This way we can still throw exceptions from boot() and init().
2016-06-26Add support for passing configuration hints via module init()Boris Kolpackov17-28/+97
2016-06-26Minor module interface cleanupsBoris Kolpackov8-27/+33
2016-06-26Add notion of ad hoc group, use to handle DLL/import libraryBoris Kolpackov17-302/+611
2016-06-20Fix some more MinGW .dll.a searchBoris Kolpackov1-15/+43
2016-06-18Port to MinGWKaren Arutyunov11-51/+174
2016-06-18Fix MinGW .dll.a searchBoris Kolpackov1-8/+15
2016-06-18Cosmetic changesBoris Kolpackov2-6/+5
2016-06-17Initial take on DLL support for MinGW toolchainBoris Kolpackov6-65/+157
2016-06-11Temporarily add --strip-trailing-cr to diff options in test moduleBoris Kolpackov2-0/+3
2016-06-11Initial VC++ support (static libraries only)Boris Kolpackov12-335/+840
2016-06-03Treat trailing backslash as directory indicatorBoris Kolpackov1-13/+36
Note that with this change we broke reversibility for such names, i.e., 'foo\' name will be reversed to 'foo/'.
2016-05-21Recursively link prerequisite libraries of static librariesBoris Kolpackov1-4/+52
2016-04-26Bump version to 0.4.0-a1, master is open for businessBoris Kolpackov1-3/+3
2016-04-26Add imported library rpaths before user-supplied0.3.0Boris Kolpackov1-9/+13
This way we don't accidentally prefer old (installed) versions.
2016-04-25Suppress Clang warningBoris Kolpackov1-1/+1
2016-04-25Fix bug in C++ compiler guessing logicBoris Kolpackov1-1/+1
2016-04-25Add missing variable assignmentsBoris Kolpackov1-4/+4
2016-04-25Add workaround for GCC 4.8 bug in default initialization of union memberBoris Kolpackov1-3/+9
It appears to silently ignore this C++11 feature and leave the data uninitialized.
2016-04-23Add missing file to buildfileBoris Kolpackov1-1/+1
2016-04-23Revert back to using root scope in src_out()/out_src()Boris Kolpackov6-20/+22
Relaxing it to base was not wise since we can have "sideways" prerequisites (those from parallel directories such as brep's ../web/*).
2016-04-22Bump version to 0.3.0Boris Kolpackov1-3/+3
2016-04-22Clarify few @@ notesBoris Kolpackov2-2/+2
2016-04-21Move target state reset back to recipe()Boris Kolpackov4-10/+8
Doing it in target::reset() (which is called by match()) didn't play well with delegated recipes.
2016-04-21Implement short-circuiting to group stateBoris Kolpackov6-62/+87
This is necessary to get rid of bogus restarts in inject_prerequisites() where it think a group member was updated since its state changed from unknown to (group's) changed.
2016-04-21Delete target_key assignment operators since we need tracking referencesBoris Kolpackov1-3/+14
2016-04-21Use hash map/set for targets/prerequisites to resolve key change issueBoris Kolpackov7-38/+127
2016-04-20Print variable/value attributes in dump()Boris Kolpackov1-16/+45
2016-04-20Add missing cast() specializationBoris Kolpackov1-0/+9
2016-04-20Type install.mode variableBoris Kolpackov1-1/+2
2016-04-19Redesign src/out scopingBoris Kolpackov29-478/+544
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.