aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2016-08-13Use extension derivation function rather than extension variable directlyBoris Kolpackov2-6/+11
2016-08-12Rename module to initBoris Kolpackov17-65/+86
2016-08-12Add support for ordering modules in config.buildBoris Kolpackov13-19/+97
2016-08-12Implement c/cxx toolchain cross-hintingBoris Kolpackov7-97/+248
2016-08-12Implement support for C compilationBoris Kolpackov53-1359/+2914
We now have two new modules: cc (c-common) and c.
2016-08-10Add ignore case support for find_option()Karen Arutyunov7-51/+37
2016-08-09Fix bug in inner/outer operation handlingBoris Kolpackov1-1/+3
2016-08-05Implement out-qualified target syntax for setting target-specific varsBoris Kolpackov7-18/+66
So now we can do: doc{INSTALL}@./: install = false Note that so far that's the only place where we support out-qualification. Grep for @@ OUT to see other places.
2016-08-05Enable pair recognition in the normal and eval lexer modesBoris Kolpackov2-8/+17
We need this for the out-qualified target syntax: h{config}@./: install = false
2016-08-05Merge 'value' and 'pairs' lexer_mode, call it 'value'Boris Kolpackov4-49/+46
We only really used pairs.
2016-08-03Add support for preserving subdirectories when installingBoris Kolpackov2-8/+36
This is handy, for example, when installing headers: install.include = $install.include/foo install.include.subdirs = true The base for calculating the subdirectories is the scope where the subdirs value is set.
2016-08-03Add -V option as equivalent to --verbose 3Boris Kolpackov5-1/+24
2016-08-03Don't treat absent config values that are saved commented as newBoris Kolpackov2-3/+7
2016-08-02Cosmetic changeBoris Kolpackov2-4/+4
2016-08-02Check for eof before streaming rdbufBoris Kolpackov1-3/+9
2016-08-02Filter gratuitous VC cl.exe and link.exe messagesBoris Kolpackov3-18/+119
2016-08-02Trace PATH environment variableBoris Kolpackov1-2/+6
2016-08-02Optimize out path::normalize() callsBoris Kolpackov3-10/+34
2016-08-01Work around MSYS2 install.exe permission issueBoris Kolpackov1-3/+36
2016-08-01Fix relinking on install for VCBoris Kolpackov1-4/+9
2016-07-30Construct paths to use canonical directory separatorsBoris Kolpackov6-29/+47
Hardcoding separators as in "build/root.build" is now a big no-no.
2016-07-30Actualize project root directoriesBoris Kolpackov5-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-30Fix missing src_root initializationBoris Kolpackov1-0/+2
2016-07-29Fix bug in prerequisite iteration leave group supportBoris Kolpackov2-1/+5
2016-07-29Suppress VC banners even at verbosity above 2Boris Kolpackov2-7/+3
There is really no use seeing this stuff.
2016-07-29Make /EHsc and /MD default for VC compilerBoris Kolpackov4-18/+242
2016-07-29Fix duplicate config.build variable issueBoris Kolpackov3-11/+29
2016-07-28Improve target out directory printingBoris Kolpackov1-1/+13
2016-07-28Fix dump not to type target type/pattern-specific prepend/appendBoris Kolpackov2-14/+30
2016-07-28Adjust to new path implementation, use to support reversibilityBoris Kolpackov21-159/+167
2016-07-25Only do "effective escaping" (['"\$(]) on the command lineBoris Kolpackov6-24/+57
This will make things more convenient on Windows provided we use "sane" paths (no spaces, no (), etc).
2016-07-25Fix surprising config override behavior now that they are amalgamation-wideBoris Kolpackov1-2/+24
2016-07-25Fix module separating blank line logicBoris Kolpackov1-4/+10
2016-07-23Adapt to fdstream extensionKaren Arutyunov13-299/+311
2016-07-22Incorporate target to link rule's depdbBoris Kolpackov3-2/+16
Since there is no guarantee that the target is part of the linker's checksum.
2016-07-22Factor target CPU to VC /MACHINE option translationBoris Kolpackov2-19/+30
2016-07-22Link shell32.lib and user32.lib to default for VC buildsBoris Kolpackov1-0/+19
2016-07-22Change default var override from 'projects and subprojects' to amalgamationBoris Kolpackov4-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-21Save config vars in order specified rather than alphabeticallyBoris Kolpackov5-173/+205
This way we can group them semantically which results in easier to understand config.build output.
2016-07-21Fix bug in save_commented logicBoris Kolpackov1-2/+2
2016-07-21Add support for single line if-blocksBoris Kolpackov4-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-21Add backwards-compatibility hack for ranlibBoris Kolpackov1-0/+3
2016-07-21Save default/hinted ar/ld/rc values as commented outBoris Kolpackov7-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-20Switch to dynamic empty() implementation in variable valueBoris Kolpackov8-425/+358
The current model fell apart when we modified values directly.
2016-07-20Implement support for <, >, <=, >= in eval contextBoris Kolpackov11-27/+199
Now can write: if ($build.version > 30000)
2016-07-20Fix cli test verbosityBoris Kolpackov1-3/+1
2016-07-20Sanitize library name-derived macro for illegal characters ('-', etc)Boris Kolpackov1-6/+11
2016-07-20Print project name and out_root in config reportsBoris Kolpackov4-67/+91
2016-07-20Move ar/ranlib to bin.ar sub-module, load in cxx unless shared-only buildBoris Kolpackov4-90/+154
This way we don't load/configure what we don't need.
2016-07-19Add import library target libi{}, make libs{} the DLLBoris Kolpackov11-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.