Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
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 | |
2023-12-04 | Support creating file symlinks with ad hoc recipes | Boris Kolpackov | 1 | -6/+52 | |
2023-12-03 | Support dir{}/fsdir{} idiosyncrasies in $name.*() function family | Boris Kolpackov | 1 | -0/+6 | |
2023-12-03 | Reimplement search_existing() functions via target_type::search | Boris Kolpackov | 18 | -66/+91 | |
This allows us to automatically get the target type-specific behavior with regards to the out_only semantics (added in the previous commit) instead of passing it explicitly from each call site. | |||||
2023-12-03 | Search in src for existing prerequisites with unspecified out | Boris Kolpackov | 5 | -23/+58 | |
2023-12-03 | Make fsdir{} usable as target of ad hoc Buildscript recipes | Boris Kolpackov | 2 | -3/+41 | |
In particular, it can now be used to represent a directory symlink. For example: exe{hello}: ... fsdir{assets} fsdir{assets}: % update {{ ln -s $src_base/assets $out_base/assets }} % clean {{ rm $out_base/assets }} | |||||
2023-11-29 | Add rule for extracting C and C++ predefs | Boris Kolpackov | 8 | -30/+518 | |
2023-11-29 | Minor cleanups in cc::compile_rule | Boris Kolpackov | 1 | -6/+3 | |