Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2016-07-30 | Construct paths to use canonical directory separators | Boris Kolpackov | 6 | -29/+47 | |
Hardcoding separators as in "build/root.build" is now a big no-no. | |||||
2016-07-30 | Actualize project root directories | Boris Kolpackov | 5 | -15/+23 | |
This solves the problem of changing path spelling on platforms with case- insensitive filesystems. For example, you may build a project in the current working directory without specifying any paths. This means the current working directory will be used as the project's root. On Windows this could be C:\x. Now you are building another project that imports the above project and you specify config.import.x variable pointing to the above build. But you are lazy to type capital C so you spell it as config.import.x=c:\x. What happens now is the value from config.import.x is used as the project root. And now it is a different spelling compared to your original build. This is not a problem when the build system itself is concerned -- it is smart enough to use case-insensitive comparison. However, we often use roots to derive other things, say, -I options that we pass to compilers. And these options are normally no longer treated as (case-insensitive) paths. If they are hashed and the result stored in depdb, then we end up with rebuilds that are triggered by changes from C:\ to c:\. | |||||
2016-07-30 | Fix missing src_root initialization | Boris Kolpackov | 1 | -0/+2 | |
2016-07-29 | Fix bug in prerequisite iteration leave group support | Boris Kolpackov | 2 | -1/+5 | |
2016-07-29 | Suppress VC banners even at verbosity above 2 | Boris Kolpackov | 2 | -7/+3 | |
There is really no use seeing this stuff. | |||||
2016-07-29 | Make /EHsc and /MD default for VC compiler | Boris Kolpackov | 4 | -18/+242 | |
2016-07-29 | Fix duplicate config.build variable issue | Boris Kolpackov | 3 | -11/+29 | |
2016-07-28 | Improve target out directory printing | Boris Kolpackov | 1 | -1/+13 | |
2016-07-28 | Fix dump not to type target type/pattern-specific prepend/append | Boris Kolpackov | 2 | -14/+30 | |
2016-07-28 | Adjust to new path implementation, use to support reversibility | Boris Kolpackov | 21 | -159/+167 | |
2016-07-25 | Only do "effective escaping" (['"\$(]) on the command line | Boris Kolpackov | 6 | -24/+57 | |
This will make things more convenient on Windows provided we use "sane" paths (no spaces, no (), etc). | |||||
2016-07-25 | Fix surprising config override behavior now that they are amalgamation-wide | Boris Kolpackov | 1 | -2/+24 | |
2016-07-25 | Fix module separating blank line logic | Boris Kolpackov | 1 | -4/+10 | |
2016-07-23 | Adapt to fdstream extension | Karen Arutyunov | 13 | -299/+311 | |
2016-07-22 | Incorporate target to link rule's depdb | Boris Kolpackov | 3 | -2/+16 | |
Since there is no guarantee that the target is part of the linker's checksum. | |||||
2016-07-22 | Factor target CPU to VC /MACHINE option translation | Boris Kolpackov | 2 | -19/+30 | |
2016-07-22 | Link shell32.lib and user32.lib to default for VC builds | Boris Kolpackov | 1 | -0/+19 | |
2016-07-22 | Change default var override from 'projects and subprojects' to amalgamation | Boris Kolpackov | 4 | -3/+47 | |
The 'projects and subprojects' semantics resulted in some counter-intuitive behavior. For example, in a project with tests/ as a subproject if one builds one of the tests directly with a non-global override (say C++ compiler), then the main project would be built without the overrides. I this light, overriding in the whole amalgamation seems like the right thing to do. The old behavior can still be obtained with scope qualification, for example: b ./:foo=bar | |||||
2016-07-21 | Save config vars in order specified rather than alphabetically | Boris Kolpackov | 5 | -173/+205 | |
This way we can group them semantically which results in easier to understand config.build output. | |||||
2016-07-21 | Fix bug in save_commented logic | Boris Kolpackov | 1 | -2/+2 | |
2016-07-21 | Add support for single line if-blocks | Boris Kolpackov | 4 | -27/+86 | |
So now we can do: if true print true else print false Instead having to do: if true { print true } else { print false } | |||||
2016-07-21 | Add backwards-compatibility hack for ranlib | Boris Kolpackov | 1 | -0/+3 | |
2016-07-21 | Save default/hinted ar/ld/rc values as commented out | Boris Kolpackov | 7 | -34/+75 | |
This way, when we, for example, change the C++ compiler (which hinted these values), they will be automatically adjusted as well. | |||||
2016-07-20 | Switch to dynamic empty() implementation in variable value | Boris Kolpackov | 8 | -425/+358 | |
The current model fell apart when we modified values directly. | |||||
2016-07-20 | Implement support for <, >, <=, >= in eval context | Boris Kolpackov | 11 | -27/+199 | |
Now can write: if ($build.version > 30000) | |||||
2016-07-20 | Fix cli test verbosity | Boris Kolpackov | 1 | -3/+1 | |
2016-07-20 | Sanitize library name-derived macro for illegal characters ('-', etc) | Boris Kolpackov | 1 | -6/+11 | |
2016-07-20 | Print project name and out_root in config reports | Boris Kolpackov | 4 | -67/+91 | |
2016-07-20 | Move ar/ranlib to bin.ar sub-module, load in cxx unless shared-only build | Boris Kolpackov | 4 | -90/+154 | |
This way we don't load/configure what we don't need. | |||||
2016-07-19 | Add import library target libi{}, make libs{} the DLL | Boris Kolpackov | 11 | -173/+291 | |
In the end, having libs{} be the DLL with import library being its member is more natural than making libs{} the import library and having dll{} as its member. | |||||
2016-07-19 | Add support for building DLLs with VC | Boris Kolpackov | 6 | -142/+421 | |
2016-07-18 | Add standard static/shared macros for imported installed libraries | Boris Kolpackov | 2 | -3/+50 | |
2016-07-18 | Pick liba{}/libs{} before looking up cxx.export.* | Boris Kolpackov | 4 | -39/+73 | |
This way we can specify static library-specific defines which are necessary to handle DLL export. | |||||
2016-07-17 | Redesign obj to exe/lib mapping | Boris Kolpackov | 15 | -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-16 | Add support for prepend/append in target type/pattern-specific vars | Boris Kolpackov | 13 | -89/+371 | |
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-15 | Always generate separate object files for liba{} and libso{} | Boris Kolpackov | 1 | -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-15 | Make .pdb ad hoc group member, install | Boris Kolpackov | 4 | -37/+88 | |
2016-07-15 | Name and cleanup extra VC files (.pdb, .ilk, .idb) | Boris Kolpackov | 6 | -52/+162 | |
2016-07-13 | Use link.exe instead of cl.exe to link executables | Boris Kolpackov | 2 | -69/+109 | |
2016-07-12 | Get src_root value if we have already bootstrapped this project | Boris Kolpackov | 1 | -0/+2 | |
This fixes a core dump in out-of-source 'clean update' run. | |||||
2016-07-12 | Use ./ instead of just . to denote current directory in buildfiles | Boris Kolpackov | 9 | -10/+10 | |
2016-07-11 | Escape Windows path backslashes in synthesized .rc file | Boris Kolpackov | 1 | -2/+18 | |
2016-07-11 | Reimplement Windows rpath emulation using embedded manifests | Boris Kolpackov | 5 | -391/+584 | |
As a bonus, everyone now gets a sane default manifest. | |||||
2016-07-11 | Add bin.rc module (resource compiler) | Boris Kolpackov | 5 | -24/+179 | |
2016-07-11 | Add bin.ld sub-module | Boris Kolpackov | 5 | -20/+236 | |
2016-07-09 | Add config.bin.pattern, pass it as hint from cxx module | Boris Kolpackov | 2 | -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-08 | Add dependency on fsdir{} in alias rules | Boris Kolpackov | 6 | -27/+37 | |
This makes sure that a directory with only dir{} target gets cleaned up. | |||||
2016-07-08 | Move filesystem-related functions from context to new filesystem files | Boris Kolpackov | 20 | -275/+315 | |
2016-07-08 | Implement limited rpath emulation for Windows | Boris Kolpackov | 9 | -145/+589 | |
2016-07-01 | Fix cli test to read cli output till the end | Karen Arutyunov | 1 | -0/+6 | |