Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2024-05-27 | Change ##HEAD to #HEAD for build2 project repositories in repositories.manifest | Boris Kolpackov | 1 | -1/+1 | |
2024-05-22 | Add $filesystem.file_exists(), $filesystem.directory_exists() | Boris Kolpackov | 3 | -2/+99 | |
2024-05-21 | Use new thread-specific current working directory in testscript implementation | Boris Kolpackov | 1 | -0/+11 | |
In particular, this makes sure functions like $path.complete() work correctly from testscripts. | |||||
2024-05-21 | Add $path.complete(), $path.try_normalize(), $path.try_actualize() | Boris Kolpackov | 2 | -165/+329 | |
2024-05-20 | Documentation tweak | Boris Kolpackov | 1 | -4/+5 | |
2024-05-20 | Add $path.absolute(), $path.simple(), $path.sub_path(), $path.super_path() | Boris Kolpackov | 2 | -0/+104 | |
2024-05-20 | Add convert_to_base<T>(value) variants that allow derive-to-base conversion | Boris Kolpackov | 2 | -4/+46 | |
2024-05-20 | Add $string.contains(), $string.starts_with(), $string.ends_with() | Boris Kolpackov | 3 | -47/+274 | |
Also fix bug in $string.replace(). | |||||
2024-05-20 | Update C++ modules support documentation in manual | Boris Kolpackov | 1 | -709/+308 | |
2024-05-15 | Add note on potentially mismatching cxx.std in module sidebuilds | Boris Kolpackov | 1 | -0/+9 | |
2024-05-14 | Map latest/experimental cxx.std values to C++26 from GCC 14 and Clang 18 | Boris Kolpackov | 1 | -15/+24 | |
2024-05-14 | Add /Zc:preprocessor in experimental cxx.std mode from MSVC 17.9 (19.39) | Boris Kolpackov | 2 | -1/+7 | |
For background, see: https://developercommunity.visualstudio.com/t/Please-clarify-ifwhen-Zc:preprocessor/10537317 | |||||
2024-05-14 | Map C23/C2X to /std:clatest starting from MSVC 17.9 (19.39) | Boris Kolpackov | 2 | -12/+20 | |
In particular, this option enables C23 typeof support. | |||||
2024-05-13 | Issue better diagnostics if standard library modules not supported | Boris Kolpackov | 1 | -142/+150 | |
2024-05-13 | Update std.cppm to Clang 18, add std.compat.cppm | Boris Kolpackov | 4 | -80/+1087 | |
Note that Clang 17 is not longer supported with regards to standard library modules. | |||||
2024-05-09 | Handle exception thrown by fdterm_color() | Boris Kolpackov | 1 | -1/+8 | |
2024-05-09 | Try to improve deadlock detection accuracy (GH issue 319) | Boris Kolpackov | 1 | -1/+11 | |
2024-05-09 | Fixes and tweaks to diagnostics color support on Windows (GH issue #312) | Boris Kolpackov | 2 | -20/+25 | |
Specifically: - Pass -fansi-escape-codes for Clang on Windows. - Enable diagnostics color by default if already enabled on the terminal. Only try to enable it ourselves with explicit --diag-color. | |||||
2024-05-06 | Switch from libpkg-config to version from libbutl | Boris Kolpackov | 3 | -6/+1 | |
2024-04-25 | Skip hidden filesystem entries when looking for subprojects | Boris Kolpackov | 2 | -3/+10 | |
2024-04-23 | Make sure ad hoc member is matched even if group match failed | Boris Kolpackov | 1 | -0/+13 | |
2024-04-22 | Fix uninitialized variable bug | Boris Kolpackov | 1 | -1/+1 | |
2024-04-12 | Add -s|--timeout-success option to env script builtin | Boris Kolpackov | 6 | -11/+34 | |
The semantics is equivalent to the --success option we already have in the timeout builtin. | |||||
2024-04-12 | Diagnose invalid directories specified on command line | Boris Kolpackov | 1 | -13/+34 | |
GitHub issue #376. | |||||
2024-04-11 | Diagnose empty paths in config.config.{load,save} | Boris Kolpackov | 2 | -3/+9 | |
GitHub issue #372. | |||||
2024-04-02 | Detect and diagnose attempt to create new target in src directory | Boris Kolpackov | 5 | -8/+47 | |
GitHub issue #277. | |||||
2024-04-01 | Add missing std::move() call | Boris Kolpackov | 1 | -1/+1 | |
2024-04-01 | Add $string.replace() function | Boris Kolpackov | 3 | -1/+178 | |
2024-04-01 | Add ~host-no-warnings and ~build2-no-warnings special configurations | Boris Kolpackov | 4 | -9/+106 | |
These are parallel to ~host and ~build2 but with suppressed C/C++ compiler warnings. Note also that the C++ ad hoc recipes are now by default built in ~build2-no-warnings instead of ~build2 unless the project is configured for development with config.<project>.develop=true. | |||||
2024-03-27 | Filter out config.bin.lib/config.bin.*.lib from ~host | Boris Kolpackov | 1 | -10/+22 | |
2024-03-21 | Improve import diagnostics | Boris Kolpackov | 1 | -0/+12 | |
2024-03-19 | Use new next_word() to observe blank lines for accurate line count | Boris Kolpackov | 1 | -2/+4 | |
2024-03-01 | Use original variable name in config report | Boris Kolpackov | 5 | -42/+130 | |
2024-02-26 | Add ability to serialize compilation/linking in cc rules | Boris Kolpackov | 6 | -8/+45 | |
Specifically, both the C/C++ compiler and link rules now recognize the cc.serialize boolean variable which instructs them to compiler/link serially with regards to any other recipe. This is primarily useful when compiling large translation units or linking large binaries that require so much memory that doing that in parallel with other compilation/linking jobs is likely to summon the OOM killer. For example: obj{memory-hog}: cc.serialize = true | |||||
2024-02-26 | Add ability to request serialization from scheduler | Boris Kolpackov | 8 | -31/+128 | |
In particular, this can be used to make sure no other recipe is being executed in parallel with the caller. | |||||
2024-02-22 | Diagnose instead of asserting lib{} group with no members | Boris Kolpackov | 1 | -1/+3 | |
Fixes GH issue #361. | |||||
2024-02-22 | Detect dependency cycles in *.export.libs | Boris Kolpackov | 1 | -0/+5 | |
Fixes GH issue #362. | |||||
2024-02-22 | Diagnose instead of asserting ad hoc group member not already existing | Boris Kolpackov | 1 | -21/+18 | |
Fixes GH issue #365. | |||||
2024-02-22 | Detect non-cc::link_rule libraries not marked with cc.type=cc | Boris Kolpackov | 2 | -6/+36 | |
Fixes GH issue #368. | |||||
2024-02-22 | Deal with libs{} being member of group in windows_rpath_timestamp() | Boris Kolpackov | 3 | -8/+20 | |
Fixes GH issue #366. | |||||
2024-02-21 | Fix issue with json null representation in containers | Boris Kolpackov | 3 | -5/+20 | |
2024-02-21 | Improve diagnostics | Boris Kolpackov | 2 | -1/+15 | |
2024-02-21 | Update list of buildfile value types in manual | Boris Kolpackov | 1 | -0/+9 | |
2024-02-20 | Add json_map and json_set buildfile value types | Boris Kolpackov | 10 | -98/+255 | |
These expose the std::map<json_value,json_value> and std::set<json_value> types to buildfiles. New functions: $size(<json-set>) $size(<json-map>) $keys(<json-map>) Note that the $keys() function returns the list of map key as a json array. For example: m = [json_map] 2@([json] a@1 b@2) 1@([json] 1 2) s = [json_set] ([json] x@1 y@2) ([json] a@1 b@2) print ($m[2][b]) # 2 print ($s[([json] y@2 x@1)]) # true | |||||
2024-02-20 | Make json value type prepend non-overriding for consistency with map | Boris Kolpackov | 4 | -15/+27 | |
2024-02-20 | Add custom subscript, iterate functions for vector and set value types | Boris Kolpackov | 6 | -9/+156 | |
2024-02-20 | Add string_set buildfile value type | Boris Kolpackov | 9 | -3/+348 | |
This exposes the std::set<std::string> type to buildfiles. New functions: $size(<string-set>) Subscript returns true if the value is present and false otherwise (so it is mapped to std::set::contains()). For example: set = [string_set] a b c if ($set[b]) ... Note that append (+=) and prepend (=+) have the same semantics (std::set::insert()). For example: set = [string_set] a b set += c b # a b c set =+ d b # a b c d Example of iteration: set = [string_set] a b c for k: $set ... | |||||
2024-02-19 | Add string_map buildfile value type | Boris Kolpackov | 8 | -48/+238 | |
This exposes the std::map<std::string,std::string> type to buildfiles. New functions: $size(<string-map>) $keys(<string-map>) Subscript can be used to lookup a value by key. The result is [null] if there is no value associated with the specified key. For example: map = [string_map] a@1 b@2 c@3 b = ($map[b]) # 2 if ($map[z] == [null]) ... Note that append (+=) is overriding (like std::map::insert_or_assign()) while prepend (=+) is not (like std::map::insert()). In a sense, whatever appears last (from left to right) is kept, which is consistent with what we expect to happen when specifying the same key repeatedly in a literal representation. For example: map = [string_map] a@0 b@2 a@1 # a@1 b@2 map += b@0 c@3 # a@1 b@0 c@3 map =+ b@1 d@4 # a@1 b@0 c@3 d@4 Example of iteration: map = [string_map] a@1 b@2 c@3 for p: $map { k = $first($p) v = $second($p) } While the subscript is mapped to key lookup only, index-based access can be implemented (with a bit of overhead) using the $keys() function: map = [string_map] a@1 b@2 c@3 keys = $keys($m) for i: $integer_sequence(0, $size($keys)) { k = ($keys[$i]) v = ($map[$k]) } Also, this commit changes the naming of other template-based value types (not exposed as buildfile value types) to use C++ template id-like names (e.g., map<string,optional<bool>>). | |||||
2024-02-15 | Add fsdir{} duplicate suppression in more places | Boris Kolpackov | 4 | -4/+24 | |
2024-02-14 | Add comment on json_array assignment issue | Boris Kolpackov | 1 | -0/+4 | |