aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-12-04Handle phase_lock failure in async match tasksBoris Kolpackov1-4/+8
2017-12-03Add few clarifying commentsBoris Kolpackov2-2/+5
2017-12-03Allow typification of variables and values across load generationsBoris Kolpackov6-34/+14
The original semantics turned out to be too restrictive. For example, the user may have specified the config.c variable on the command line that is only used by an imported project that is loaded in a subsequent generation. We are also relaxing it for values since conceptually the two feel the same. For a value the (hypothetical) example is a "common" variable set in a project root that is only queried in a subdirectory in a subsequent generation.
2017-12-01Fix GCC 7 -fimplicit-fallthrough warningsBoris Kolpackov5-42/+36
2017-12-01Terminate waiting threads if coming off failed load phaseBoris Kolpackov4-88/+169
In this case the build state may no longer be valid.
2017-11-30Adapt testscripts to build2 output changesKaren Arutyunov1-4/+4
2017-11-30Bump toolchain version dependency to 0.7.0 in manifestKaren Arutyunov1-2/+2
2017-11-30Implement module sidebuilds cleanup using scope operation callbacksBoris Kolpackov5-19/+72
2017-11-30Implement support for scope operation callbacksBoris Kolpackov4-48/+166
An entity (module, core) can register a function that will be called when an action is executed on the dir{} target that corresponds to the scope. The pre callback is called just before the recipe and the post -- immediately after.
2017-11-29Reimplement module sidebuilding using an ad hoc subprojectBoris Kolpackov8-204/+348
2017-11-28Fix bug in importing multiple targets with single directiveBoris Kolpackov1-0/+7
2017-11-27Add cxx_ prefix to module-related pkg-config variablesBoris Kolpackov2-18/+16
This way we can assume that those are the C++ (language) modules built by the cxx (build system) module.
2017-11-27Add {c,cxx}.class variablesBoris Kolpackov11-286/+399
Compiler class describes a set of compilers that follow more or less the same command line interface. Compilers that don't belong to any of the existing classes are in classes of their own (say, Sun CC would be on its own if we were to support it). Currently defined compiler classes: gcc gcc, clang, clang-apple, icc (on non-Windows) msvc msvc, clang-cl, icc (Windows)
2017-11-24Improve diagnosticsBoris Kolpackov1-2/+11
2017-11-24Fix few bugs in generated header path remapping logicBoris Kolpackov2-7/+12
2017-11-24Add extra library search paths as -L optionsBoris Kolpackov5-37/+89
2017-11-23Fix few typosBoris Kolpackov1-3/+3
2017-11-23Minor changeBoris Kolpackov1-1/+1
2017-11-22Remove -Xclang module options that seem to be passed by default in trunkBoris Kolpackov1-5/+1
2017-11-22Enable module re-export tests for ClangBoris Kolpackov1-1/+0
This support has been merged into trunk.
2017-11-22Fix dist bug where missing source file would be silently ignoredBoris Kolpackov8-48/+101
2017-11-22Improve diagnosticsBoris Kolpackov1-1/+2
2017-11-22Streamline skip count diagnosticsBoris Kolpackov1-1/+1
2017-11-21Recursively check timestamps of libraries we are linkingBoris Kolpackov2-6/+28
2017-11-21Move eof() utility to libbutlBoris Kolpackov2-17/+3
2017-11-21Filter VC preprocessor diagnosticsBoris Kolpackov1-54/+79
It turns out VC may still print include notes after issuing errors.
2017-11-21Diagnose failure to open depdbBoris Kolpackov2-16/+40
The cause is often a missing fsdir{} if the user tries to stash the target in a subdirectory.
2017-11-21Improve skipped update diagnosticsBoris Kolpackov4-11/+36
Instead of printing a line for each target skipped we now print a summary with count at the end. We also now show the skip count in progress.
2017-11-20Only add /usr/local/{include,lib} if compiler added /usr/includeBoris Kolpackov1-14/+25
This makes sure we don't mess up cross-compilations or even native compilations with a custom sysroot.
2017-11-20Recognize CRLF sequences for line escaping in cc::lexerBoris Kolpackov1-0/+14
2017-11-20Handle case when compiler-reported header does not existBoris Kolpackov1-1/+16
This, for example, happens when compiling under wine with file wlantypes.h included as WlanTypes.h.
2017-11-20Add test for prerequisite-specific variablesBoris Kolpackov2-0/+76
2017-11-20Add support for dumping prerequisite-specific variablesBoris Kolpackov2-51/+115
2017-11-20Implement dump directiveBoris Kolpackov4-24/+162
It can be used to print (to stderr) a human-readable representation of the current scope or a list of targets. For example: dump # Dump current scope. dump lib{foo} details/exe{bar} # Dump two targets. This is primarily useful for debugging as well as to write build system tests.
2017-11-15Enter outer prefixes in generated header prefix mapBoris Kolpackov2-25/+73
2017-11-13Quote names that contain wildcard charactersBoris Kolpackov1-0/+1
2017-11-11Add in.substitution={strict|lax}Boris Kolpackov3-18/+103
In the strict mode every substitution symbol is expected to start a substitution with the double symbol (e.g., $$) serving as an escape sequence. In the lax mode a pair of substitution symbols is only treated as a substitution if what's between them looks like a build2 variable name (i.e., doesn't contain spaces, etc). Everything else, including unterminated substitution symbols is copied as is. Note also that in this mode the double symbol is not treated as an escape sequence. The lax mode is mostly useful when trying to reuse existing .in files, for example from autoconf. Note, however, that the lax mode is still stricter than the autoconf's semantics which also leaves unknown substitutions as is.
2017-11-10Relax substitution requirements, add alternative symbol in version .in supportBoris Kolpackov3-18/+70
Give this (legacy) version.h.in: Can now do: h{version}: in{version} file{$src_root/manifest} h{version}: in.symbol = '@' h{version}: FOO = $project.version
2017-11-10Add $directory(), $base(), $leaf() and $extension() functionsKaren Arutyunov2-0/+213
2017-11-09Add support for for-loopBoris Kolpackov14-20/+342
The semantics is similar to the C++11 range-based for: list = 1 2 3 for i: $list print $i Note that there is no scoping of any kind for the loop variable ('i' in the above example). See tests/loop/for.test for some examples/ideas. In the future the plan is to also support more general while-loop as well as break and continue.
2017-11-09Initial support for prerequisite-specific variables, use for bin.wholeBoris Kolpackov7-40/+182
2017-11-09Fix bug in handling of empty target name prefixes (e.g., bin.lib.prefix)Boris Kolpackov2-2/+2
2017-11-06Revert back to using -fmodule-file for GCC and ClangBoris Kolpackov1-35/+119
Seeing that it's unclear if/when our patches for -fmodule-file-map will be accepted.
2017-11-06Translate 'latest' to C++2a for GCC 8Boris Kolpackov1-2/+2
2017-10-30Update config submoduleBoris Kolpackov1-0/+0
2017-10-30Pass --text option for diff utility on WindowsKaren Arutyunov1-0/+8
2017-10-20Update documentationBoris Kolpackov2-7/+8
2017-10-19Add support for MinGW bootstrap using bootstrap.gmake makefileBoris Kolpackov1-6/+20
2017-10-17Cosmetic changesBoris Kolpackov1-15/+10
2017-10-17Adjust stack size on Linux, FreeBSD and MacOSKaren Arutyunov1-25/+96