Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2020-07-13 | Fix version check in using directive | Boris Kolpackov | 1 | -8/+9 | |
2020-07-13 | Reserve backtick (`) and bit-or (|) in eval context for future use | Boris Kolpackov | 5 | -4/+20 | |
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 | 11 | -22/+67 | |
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 | 7 | -55/+59 | |
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 | Add support for project-local importation | Boris Kolpackov | 1 | -11/+19 | |
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 | Add support for ad hoc importation | Boris Kolpackov | 7 | -144/+415 | |
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 | 2 | -109/+124 | |
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 | 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 | Add *.export.imp_libs to get rid of dual *.export.libs semantics | Boris Kolpackov | 5 | -36/+42 | |
2020-06-30 | Add support for <var>-substitutions in config.install.* values | Boris Kolpackov | 1 | -8/+66 | |
For now, the only recognized variable name is <project> which is substituted with the project name. This can be used along these lines: $ b config.install.libexec='exec_root/lib/<project>/' install | |||||
2020-06-29 | Add config.install.share variable | Boris Kolpackov | 1 | -4/+6 | |
Its default value is data_root/share/ and it is now used as a common root for config.install.{data,doc,man} variables. | |||||
2020-06-29 | Add legal{} target type and config.install.legal variable | Boris Kolpackov | 4 | -11/+41 | |
This allows separation of legal files (LICENSE, AUTHORS, etc) from other documentation. For example: ./: ... doc{README} legal{LICENSE} $ b install ... config.install.legal=/usr/share/licenses/hello/ | |||||
2020-06-29 | Use buildfile{} instead of build{} for target type | Boris Kolpackov | 1 | -1/+1 | |
This feels like an oversight from transitioning to full names, like testscript{}, etc. | |||||
2020-06-26 | Drop workarounds for script::redirect struct compile errors | Karen Arutyunov | 2 | -58/+4 | |
Thanks to the butl::optional improvement to better deal with lack of copy/move constructors. | |||||
2020-06-26 | Handle #import in MSVC /showIncludes output | Boris Kolpackov | 2 | -13/+44 | |
2020-06-26 | Minor terminology fix in comments | Boris Kolpackov | 2 | -4/+3 | |
2020-06-26 | Fix race in library metadata protocol | Boris Kolpackov | 3 | -5/+6 | |
Specifically, we need to check whether the prerequisite_member is ad hoc before checking whether it is NULL because ad hoc ones are blanked out (set to NULL) during execute. | |||||
2020-06-25 | Fix warning | Boris Kolpackov | 1 | -1/+1 | |
2020-06-25 | Add more instrumentation for unassigned path race | Boris Kolpackov | 5 | -25/+64 | |
2020-06-25 | Eliminate phase unlock for case where we are not going to wait | Boris Kolpackov | 1 | -2/+6 | |
2020-06-24 | Fix trace and clarify comments | Boris Kolpackov | 2 | -9/+15 | |
2020-06-22 | Disable Clang C++20 modules support unless explicitly forced | Boris Kolpackov | 1 | -5/+11 | |
2020-06-22 | Try to detect and warn about the ccache compiler wrapper | Boris Kolpackov | 1 | -4/+24 | |
2020-06-22 | Add version mapping for Apple Clang 11.0.3 | Boris Kolpackov | 2 | -17/+22 | |
2020-06-20 | Fix assertion failure for unbound 'end' in testscript | Karen Arutyunov | 3 | -8/+36 | |
Issue #83. | |||||
2020-06-19 | Raise libcpp version in regex-related check to 10.0 | Karen Arutyunov | 1 | -1/+1 | |
2020-06-19 | Get rid of unnecessary copy | Boris Kolpackov | 1 | -1/+1 | |
2020-06-19 | Fix lexer to fail on invalid UTF-8 sequences | Karen Arutyunov | 4 | -0/+96 | |
2020-06-18 | Complete NetBSD compatibility | Boris Kolpackov | 6 | -5/+15 | |
2020-06-18 | Add NetBSD compatibility | magenbluten | 2 | -4/+4 | |
2020-06-18 | Add env script pseudo-builtin | Karen Arutyunov | 9 | -23/+430 | |
Also disable C++ recipe tests when cross-testing. | |||||
2020-06-18 | Fix build2::script::parser::[reset_]quoted() to consider peeked token in ↵ | Karen Arutyunov | 1 | -2/+3 | |
replay mode |