Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2024-02-13 | Make target_type non-copyable | Boris Kolpackov | 2 | -6/+25 | |
2024-02-13 | Extend json_value C++ interface | Boris Kolpackov | 3 | -18/+240 | |
2024-02-12 | Add ability to specify recipes in separate files | Boris Kolpackov | 4 | -149/+494 | |
This can now be achieved with the new `recipe` directive: recipe <language> <file> Note that similar to the use of if-else and switch directives with recipes, this directive requires explicit % recipe header. For example, instead of: file{foo.output}: {{ echo 'hello' >$path($>) }} We can now write: file{foo.output}: % recipe buildscript hello.buildscript With hello.buildscript containing: echo 'hello' >$path($>) Similarly, for C++ recipes (this time for a pattern), instead of: [rule_name=hello] file{~'/(.+)\.output/'}: % update clean {{ c++ 1 -- -- ... }} We can now write: [rule_name=hello] file{~'/(.+)\.output/'}: % update clean recipe c++ hello.cxx With hello.cxx containing: // c++ 1 -- -- ... Relative <file> paths are resolved using the buildfile directory that contains the `recipe` directive as a base. Note also that this mechanism can be used in exported buildfiles with recipe files placed into build/export/ together with buildfiles. | |||||
2024-02-12 | Allow overriding apply(match_extra) version in cxx_rule_v1 | Boris Kolpackov | 2 | -5/+29 | |
2024-02-12 | Extend class target, prerequisite_target interfaces | Boris Kolpackov | 2 | -6/+38 | |
2024-02-12 | Extend class prerequisite constructors | Boris Kolpackov | 3 | -6/+21 | |
2024-02-12 | Move to_string(uint64_t,base,width) to utility, use everywhere | Boris Kolpackov | 4 | -52/+58 | |
2024-02-07 | Add $json.object_names() function | Boris Kolpackov | 1 | -26/+50 | |
2024-02-07 | Tweak $json.*() function names and semantics | Boris Kolpackov | 1 | -11/+37 | |
2024-02-07 | Use reverse to fundamental types semantics in $json.member_value() | Boris Kolpackov | 2 | -4/+25 | |
Feels like this is an equivalent context to subscript/iteration. | |||||
2024-02-07 | Map JSON null in subscript/iteration to [null] instead of empty | Boris Kolpackov | 1 | -18/+29 | |
This in fact feels more natural in the "for consumption" model and also helps with the nested subscript semantics. | |||||
2024-02-07 | Add support for nested subscript, use for json access | Boris Kolpackov | 2 | -92/+105 | |
2024-02-07 | Add experimental support for JSON value types | Boris Kolpackov | 9 | -24/+2831 | |
New types: json json_array json_object New functions: $json.value_type(<json>) $json.value_size(<json>) $json.member_{name,value}(<json-member>) $json.object_names(<json-object>) $json.array_size(<json-array>) $json.array_find(<json-array>, <json>) $json.array_find_index(<json-array>, <json>) $json.load(<path>) $json.parse(<text>) $json.serialize(<json>[, <indentation>]) For example, to load a JSON value from a file: j = $json.load($src_base/board.json) Or to construct it in a buildfile: j = [json] one@1 two@([json] 2 3 4) three@([json] x@1 y@-1) This can also be done incrementally with append/prepend: j = [json_object] j += one@1 j += two@([json] 2 3 4) j += three@([json] x@1 y@-1) Instead of using this JSON-like syntax, one can also specify valid JSON input text: j = [json] '{"one":1, "two":[2, 3, 4], "three":{"x":1, "y":-1}' Besides the above set of functions, other handy ways to access components in a JSON value are iteration and subscript. For example: for m: $j print $member_name($m) $member_value($m) print ($j[three]) A subscript can be nested: print ($j[two][1]) print ($j[three][x]) While a JSON value can be printed directly like any other value, the representation will not be pretty-printed. As a result, for complex JSON values, printing a serialized representation might be a more readable option: info $serialize($j) | |||||
2024-02-06 | Add support for value type-specific subscript and iteration | Boris Kolpackov | 4 | -110/+205 | |
2024-02-06 | Fix bunch of maybe used uninitialized warnings | Boris Kolpackov | 6 | -6/+8 | |
2024-02-02 | Handle unseparated `rc` and `git` suffixes in Clang version (GH issue #360) | Boris Kolpackov | 1 | -2/+38 | |
2024-01-29 | Fix pkgconfig_load() to set common poptions for lib{} target group | Karen Arutyunov | 1 | -6/+47 | |
2024-01-23 | Fix bug in Buildscript pre-parsing logic | Boris Kolpackov | 2 | -4/+23 | |
2024-01-16 | Fix bug in import_load() (GH issue #357) | Boris Kolpackov | 1 | -0/+6 | |
2024-01-16 | Don't enter exported buildfile as real targets (GH issue #357) | Boris Kolpackov | 1 | -2/+4 | |
In particular, this used to prevent file_rule from match such targets for clean. | |||||
2024-01-16 | Add add_adhoc_member_identity(), use to fix ad hoc pattern rule logic | Boris Kolpackov | 3 | -8/+73 | |
2024-01-15 | Add no_default_target attribute for source, buildfile import directives | Boris Kolpackov | 2 | -13/+63 | |
This attribute can be used to disable the default target semantics for the sources/imported buildfile. | |||||
2024-01-15 | Disable default target semantics when loading {bootstrap,root}.build | Boris Kolpackov | 1 | -2/+6 | |
2024-01-15 | Make sure --dump-{scope,target} are specified with --dump | Boris Kolpackov | 1 | -0/+12 | |
2024-01-15 | Automatically alias unknown target types of imported targets | Boris Kolpackov | 6 | -47/+140 | |
2024-01-15 | Fail with unable to import rather than unknown target type | Boris Kolpackov | 7 | -25/+140 | |
2024-01-11 | Add ability to alias target type from another project | Boris Kolpackov | 3 | -39/+109 | |
The syntax is: define <type> = <scope>/<type> | |||||
2024-01-11 | Fix name recomposition bug in $name.filter*() functions | Boris Kolpackov | 2 | -2/+13 | |
2024-01-11 | Properly split injected ad hoc group member name in regex pattern rule | Boris Kolpackov | 5 | -10/+16 | |
2024-01-10 | Add ability to specify alternative sysroot for pkg-config files (GC issue #59) | Boris Kolpackov | 2 | -4/+65 | |
Specifically, the new config.cc.pkgconfig.sysroot variable provides roughly equivalent functionality to PKG_CONFIG_SYSROOT_DIR in pkg-config. For details and limitations, see "Rewriting Installed Libraries System Root (sysroot)" in the manual for details. | |||||
2024-01-10 | Fix abs_dir_path conversion diagnostics | Boris Kolpackov | 1 | -1/+8 | |
2024-01-10 | Fix bunch of typos | Boris Kolpackov | 6 | -10/+10 | |
2024-01-09 | Disable use of -frewrite-includes for assembler with preprocessor files | Boris Kolpackov | 1 | -3/+24 | |
With -frewrite-includes Clang has issues with correctly tracking location information (manifests itself as wrong line numbers in debug info, for example). The result also appears to reference the .Si file instead of the original source file for some reason. While at it also omit trying to scan such files since that can be hazardous (such files sometimes use `#`-style comments). | |||||
2024-01-09 | Allow imported buildfiles to using config.* variables from own project | Boris Kolpackov | 3 | -38/+189 | |
2024-01-08 | Improve documentation comment | Boris Kolpackov | 1 | -2/+2 | |
2024-01-08 | Allow specifying compiler mode options in buildfile | Boris Kolpackov | 1 | -7/+20 | |
Now the configured mode options are appended to buildfile-specified (which must be specified before loading the guess module). In particular, this ability to specify the compiler mode in a buildfile is useful in embedded development where the project may need to hardcode things like -target, -nostdinc, etc. For example: cxx.std = 20 cxx.mode = -target riscv32-unknown-unknown -nostdinc using cxx | |||||
2024-01-08 | Handle absent paths in cc::gcc_header_search_dirs() (e.g., due to -nostdinc) | Boris Kolpackov | 1 | -8/+17 | |
2024-01-08 | Add {bin,c,cxx}.types submodules that only register target types | Boris Kolpackov | 7 | -166/+371 | |
2023-12-14 | Allow enabling C++ modules for C++20 and later std.cxx values | Boris Kolpackov | 2 | -90/+243 | |
2023-12-14 | Cleanup old code for C++ modules support in Clang | Boris Kolpackov | 1 | -106/+2 | |
2023-12-13 | Fix another instance of module name not being assigned due to deferred failure | Boris Kolpackov | 1 | -10/+17 | |
2023-12-12 | Work around unexecuted member for installed libraries issue | Boris Kolpackov | 4 | -21/+64 | |
See comment for the long-term plan. | |||||
2023-12-11 | Instrument target::newer() with additional debug information | Boris Kolpackov | 1 | -0/+12 | |
2023-12-08 | Workaround bogus initialized variable warning | Boris Kolpackov | 1 | -1/+1 | |
2023-12-07 | Fix bug that led to duplication of module import information | Boris Kolpackov | 1 | -1/+7 | |
2023-12-07 | Add support for compiling MSVC standard library modules | Boris Kolpackov | 1 | -41/+144 | |
2023-12-07 | C++20 named modules support for MSVC, take 2 | Boris Kolpackov | 7 | -135/+126 | |
2023-12-04 | Clarify comment | Boris Kolpackov | 1 | -4/+4 | |
2023-12-04 | Don't match predefs rule for unsupported compiler/version | Boris Kolpackov | 1 | -1/+24 | |
2023-12-04 | Improve parser diagnostics | Boris Kolpackov | 1 | -1/+5 | |