Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2020-07-18 | Work around Clang bug #45021 | Boris Kolpackov | 1 | -0/+10 | |
2020-07-18 | Minor fix in manual | Boris Kolpackov | 1 | -2/+2 | |
2020-07-18 | Add $regex.find_match() and $regex.find_search() functions | Karen Arutyunov | 3 | -0/+184 | |
2020-07-17 | Update submodules | Boris Kolpackov | 1 | -0/+0 | |
2020-07-17 | Fix race in path/mtime assignment and file_rule::match() | Boris Kolpackov | 7 | -30/+43 | |
2020-07-17 | Add optimized derive_path_with_extension(), use in file_rule | Boris Kolpackov | 4 | -14/+42 | |
2020-07-17 | Minor documentation updates | Boris Kolpackov | 2 | -4/+20 | |
2020-07-17 | Use -fexternc-nounwind by default for Clang targeting MSVC | Boris Kolpackov | 1 | -5/+27 | |
This option implements the 'c' part in /EHsc and is not a mere optimization; see Clang bug #45021 for details. | |||||
2020-07-16 | Tweak NEWS file some more | Boris Kolpackov | 1 | -5/+6 | |
2020-07-16 | Minor tweaks to NEWS file | Boris Kolpackov | 1 | -12/+14 | |
2020-07-16 | Save original compiler path/mode in {c,cxx}.config.path/mode | Boris Kolpackov | 10 | -13/+26 | |
It turns out that when propagating {c,cxx}.config in tests we don't want to propagate any options (such as *.std) that have been folded into our project's mode. | |||||
2020-07-16 | Documentation updates | Boris Kolpackov | 2 | -70/+98 | |
2020-07-14 | Fix Clang warning | Boris Kolpackov | 2 | -0/+4 | |
2020-07-14 | Update NEWS file | Boris Kolpackov | 1 | -0/+269 | |
2020-07-14 | Add another note on wildcards inside eval context | Boris Kolpackov | 1 | -3/+15 | |
2020-07-14 | Recognize `build2` as special module name in addition to `build` | Boris Kolpackov | 1 | -2/+2 | |
This is for consistency with version constraints in manifest. | |||||
2020-07-13 | Fix version check in using directive | Boris Kolpackov | 1 | -8/+9 | |
2020-07-13 | Document value subscripts | Boris Kolpackov | 1 | -3/+15 | |
2020-07-13 | Reserve backtick (`) and bit-or (|) in eval context for future use | Boris Kolpackov | 6 | -5/+25 | |
Specifically, they are reserved for future support of arithmetic evaluation contexts and evaluation pipelines, respectively. | |||||
2020-07-13 | Add ability to extend rule interface in source-compatible manner | Boris Kolpackov | 12 | -23/+68 | |
2020-07-13 | Fold translated *.std options into compiler mode options | Boris Kolpackov | 8 | -55/+35 | |
This way they are accessible in ad hoc recipes. | |||||
2020-07-12 | Rename rule-adhoc-* to adhoc-rule-* | Boris Kolpackov | 5 | -15/+15 | |
2020-07-12 | Cache subprojects variable value in scope::root_extra | Boris Kolpackov | 8 | -57/+61 | |
2020-07-10 | Fix bug | Boris Kolpackov | 1 | -1/+1 | |
2020-07-10 | Relax prerequisite filtering semantics of aliases for clean operation | Boris Kolpackov | 2 | -4/+7 | |
This is analogous to what has been done to test and install a couple of commits before. | |||||
2020-07-10 | Document ad hoc import and its usage in glue buildfiles | Boris Kolpackov | 1 | -11/+89 | |
If the target being imported has no project name and is either absolute or is a relative directory, then this is treated as ad hoc importation. Semantically it is similar to a normal import but with the location of the project being imported hard-coded into the buildfile. This type of import can be used to create a special "glue buildfile" that "pulls" together several projects, usually for convenience of development. One typical case that calls for such a glue buildfile is a multi-package project. To be able to invoke the build system driver directly in the project root, we can add a glue buildfile that imports and builds all the packages: import pkgs = */ ./: $pkgs See "Target Importation" in the manual for details. | |||||
2020-07-10 | Add support for project-local importation | Boris Kolpackov | 2 | -11/+47 | |
An import without a project name or with the same name as the importing project's is now treated as importation from the same project. For example, given the libhello project that exports the lib{hello} target, a buildfile for an executable in the same project instead of doing something like this: include ../libhello/ exe{hello}: ../libhello/lib{hello} Can now do this: import lib = libhello%lib{hello} Or: import lib = lib{hello} And then: exe{hello}: $lib Note that a target in project-local importation must still be exported in the project's export stub. In other words, project-local importation goes through the same mechanisms as normal import. | |||||
2020-07-10 | Tweak rule names | Boris Kolpackov | 3 | -3/+4 | |
2020-07-09 | Make sure update-for-{test,install} works for files out of any project | Boris Kolpackov | 2 | -2/+18 | |
2020-07-09 | Relax prerequisite filtering semantics of aliases in test and install rules | Boris Kolpackov | 3 | -5/+11 | |
2020-07-09 | Load test and install modules implicitly for simple projects | Boris Kolpackov | 1 | -0/+10 | |
While these can be useful on their own, this also makes the test and install operations available in simple projects, which is handy for "glue" projects that "pull" (using ad hoc import) a bunch of other projects. | |||||
2020-07-09 | Add support for ad hoc importation | Boris Kolpackov | 8 | -241/+438 | |
2020-07-09 | Get rid of no longer needed friend | Boris Kolpackov | 1 | -4/+0 | |
2020-07-08 | Fix bug in switch_scope() | Boris Kolpackov | 1 | -1/+1 | |
2020-07-07 | Make sure paths used to insert target are canonicalized | Boris Kolpackov | 1 | -3/+9 | |
2020-07-07 | Skip sources of executables in cc::install_rule | Boris Kolpackov | 2 | -9/+28 | |
Failed that, they may pull headers via an ad hoc group. | |||||
2020-07-06 | Adjust variable block applicability in dependency chains | Boris Kolpackov | 5 | -112/+228 | |
Before the block used to apply to the set of prerequisites before the last `:`. This turned out to be counterintuitive and not very useful since prerequisite-specific variables are a lot less common than target specific. And it doesn't fit with ad hoc recipes. The new rule is if the chain ends with `:`, then the block applies to the last set of prerequisites. Otherwise, it applies to the last set of targets. For example: ./: exe{test}: cxx{main} { test = true # Applies to the exe{test} target. } ./: exe{test}: libue{test}: { bin.whole = false # Applies to the libue{test} prerequisite. } This is actually consistent with both non-chain and non-block cases. Consider: exe{test}: cxx{main} { test = true } exe{test}: libue{test}: { bin.whole = false } exe{test}: libue{test}: bin.whole = false The only exception we now have in this overall approach of "if the dependency declaration ends with a colon, then what follows is for a prerequisite" is for the first semicolon: exe{test}: { test = true } exe{test}: test = true But that's probably intuitive enough since there cannot be a prerequisite without a target. | |||||
2020-07-03 | Cutoff amalgamation and subproject for simple projects | Boris Kolpackov | 2 | -43/+37 | |
2020-07-02 | Hopefully fix flaky permission denied in `in` module on Windows | Boris Kolpackov | 1 | -1/+9 | |
2020-07-02 | Use consistent style when referencing modules in manual | Boris Kolpackov | 1 | -12/+13 | |
2020-07-02 | Document private installation subdirectory mechanism | Boris Kolpackov | 1 | -5/+76 | |
A private installation subdirectory can be used to hide the implementation details of a project. This is primarily useful when installing an executable that depends on a bunch of libraries into a shared location, such as /usr/local/. | |||||
2020-07-02 | Optimize variable extraction in bootstrap_src() | Boris Kolpackov | 3 | -79/+69 | |
2020-07-02 | Cache project name in root_extra | Boris Kolpackov | 5 | -19/+55 | |
2020-07-01 | Add support for private installations | Boris Kolpackov | 1 | -42/+109 | |
2020-07-01 | Fix bug in *.export.imp_libs logic | Boris Kolpackov | 2 | -3/+3 | |
2020-07-01 | Add additional diagnostics for unassigned path (GitHub issue #89) | Boris Kolpackov | 1 | -6/+10 | |
2020-07-01 | Add additional diagnostics for disappearing header (GitHub issue #80) | Boris Kolpackov | 1 | -0/+16 | |
2020-07-01 | Use <project> substitution in install directories | Boris Kolpackov | 1 | -21/+24 | |
2020-07-01 | Use legal{} target type for legal documentation (LICENSE, AUTHORS, etc) | Boris Kolpackov | 1 | -1/+1 | |
2020-07-01 | Add *.export.imp_libs to get rid of dual *.export.libs semantics | Boris Kolpackov | 5 | -36/+42 | |