aboutsummaryrefslogtreecommitdiff
path: root/libbuild2
AgeCommit message (Collapse)AuthorFilesLines
2024-06-07Use combined -L option form for extra system search pathsBoris Kolpackov3-16/+47
The split one was just too much of an eye-sore in the logs.
2024-06-07Add comment on not adding rpath for /usr/local/libBoris Kolpackov1-0/+18
2024-06-06Use -pthread instead of -lpthreadBoris Kolpackov1-2/+2
2024-06-05Improve -rpath duplicate suppression logic even moreBoris Kolpackov1-2/+11
2024-06-05Improve -rpath duplicate suppression logic some moreBoris Kolpackov1-3/+15
2024-06-05Include top-level libraries in -rpath duplicate suppression logicBoris Kolpackov1-0/+7
2024-06-04Update Apple Clang to vanilla Clang version mapping informationBoris Kolpackov1-21/+23
2024-05-22Add $filesystem.file_exists(), $filesystem.directory_exists()Boris Kolpackov1-2/+49
2024-05-21Use new thread-specific current working directory in testscript implementationBoris Kolpackov1-0/+11
In particular, this makes sure functions like $path.complete() work correctly from testscripts.
2024-05-21Add $path.complete(), $path.try_normalize(), $path.try_actualize()Boris Kolpackov1-134/+284
2024-05-20Add $path.absolute(), $path.simple(), $path.sub_path(), $path.super_path()Boris Kolpackov1-0/+74
2024-05-20Add convert_to_base<T>(value) variants that allow derive-to-base conversionBoris Kolpackov2-4/+46
2024-05-20Add $string.contains(), $string.starts_with(), $string.ends_with()Boris Kolpackov2-42/+207
Also fix bug in $string.replace().
2024-05-15Add note on potentially mismatching cxx.std in module sidebuildsBoris Kolpackov1-0/+9
2024-05-14Map latest/experimental cxx.std values to C++26 from GCC 14 and Clang 18Boris Kolpackov1-15/+24
2024-05-14Add /Zc:preprocessor in experimental cxx.std mode from MSVC 17.9 (19.39)Boris Kolpackov2-1/+7
For background, see: https://developercommunity.visualstudio.com/t/Please-clarify-ifwhen-Zc:preprocessor/10537317
2024-05-14Map C23/C2X to /std:clatest starting from MSVC 17.9 (19.39)Boris Kolpackov2-12/+20
In particular, this option enables C23 typeof support.
2024-05-13Issue better diagnostics if standard library modules not supportedBoris Kolpackov1-142/+150
2024-05-13Update std.cppm to Clang 18, add std.compat.cppmBoris Kolpackov4-80/+1087
Note that Clang 17 is not longer supported with regards to standard library modules.
2024-05-09Handle exception thrown by fdterm_color()Boris Kolpackov1-1/+8
2024-05-09Try to improve deadlock detection accuracy (GH issue 319)Boris Kolpackov1-1/+11
2024-05-09Fixes and tweaks to diagnostics color support on Windows (GH issue #312)Boris Kolpackov2-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-06Switch from libpkg-config to version from libbutlBoris Kolpackov1-1/+1
2024-04-25Skip hidden filesystem entries when looking for subprojectsBoris Kolpackov2-3/+10
2024-04-23Make sure ad hoc member is matched even if group match failedBoris Kolpackov1-0/+13
2024-04-22Fix uninitialized variable bugBoris Kolpackov1-1/+1
2024-04-12Add -s|--timeout-success option to env script builtinBoris Kolpackov5-11/+29
The semantics is equivalent to the --success option we already have in the timeout builtin.
2024-04-11Diagnose empty paths in config.config.{load,save}Boris Kolpackov2-3/+9
GitHub issue #372.
2024-04-02Detect and diagnose attempt to create new target in src directoryBoris Kolpackov5-8/+47
GitHub issue #277.
2024-04-01Add missing std::move() callBoris Kolpackov1-1/+1
2024-04-01Add $string.replace() functionBoris Kolpackov2-1/+133
2024-04-01Add ~host-no-warnings and ~build2-no-warnings special configurationsBoris Kolpackov4-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-27Filter out config.bin.lib/config.bin.*.lib from ~hostBoris Kolpackov1-10/+22
2024-03-21Improve import diagnosticsBoris Kolpackov1-0/+12
2024-03-19Use new next_word() to observe blank lines for accurate line countBoris Kolpackov1-2/+4
2024-03-01Use original variable name in config reportBoris Kolpackov3-42/+100
2024-02-26Add ability to serialize compilation/linking in cc rulesBoris Kolpackov6-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-26Add ability to request serialization from schedulerBoris Kolpackov8-31/+128
In particular, this can be used to make sure no other recipe is being executed in parallel with the caller.
2024-02-22Diagnose instead of asserting lib{} group with no membersBoris Kolpackov1-1/+3
Fixes GH issue #361.
2024-02-22Detect dependency cycles in *.export.libsBoris Kolpackov1-0/+5
Fixes GH issue #362.
2024-02-22Diagnose instead of asserting ad hoc group member not already existingBoris Kolpackov1-21/+18
Fixes GH issue #365.
2024-02-22Detect non-cc::link_rule libraries not marked with cc.type=ccBoris Kolpackov2-6/+36
Fixes GH issue #368.
2024-02-22Deal with libs{} being member of group in windows_rpath_timestamp()Boris Kolpackov3-8/+20
Fixes GH issue #366.
2024-02-21Fix issue with json null representation in containersBoris Kolpackov2-2/+13
2024-02-21Improve diagnosticsBoris Kolpackov1-1/+12
2024-02-20Add json_map and json_set buildfile value typesBoris Kolpackov6-95/+197
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-20Make json value type prepend non-overriding for consistency with mapBoris Kolpackov3-14/+26
2024-02-20Add custom subscript, iterate functions for vector and set value typesBoris Kolpackov2-5/+83
2024-02-20Add string_set buildfile value typeBoris Kolpackov6-2/+290
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-19Add string_map buildfile value typeBoris Kolpackov5-46/+161
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>>).