Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2024-08-06 | Add support for specifying compile options on exe/lib{} targets | Boris Kolpackov | 2 | -38/+354 | |
It is now possible to specify compile option (*.poptions and *.coptions) on the exe/lib{} targets (we call them "binary-specific compile options"). Such options are propagated to obj/bmi{} targets that are synthesized for source prerequisites of the binary. Note that this propagation does not apply to obj/bmi{} prerequisites. For example: exe{foo}: cxx{foo} obj{common} { cxx.poptions += -DFOO } exe{bar}: cxx{bar} obj{common} { cxx.poptions += -DBAR } obj{common}: cxx{common} { cxx.poptions += -DCOMMON } In this example, cxx{foo} will be compiled with -DFOO, cxx{bar} -- with -DBAR, and cxx{common} -- with -DCOMMON. Note that if a source prerequisite is shared between several binaries, then the values of the propagated compile options (or their absence) must match. For instance, the following variant of the above example would result in an error since cxx{common} would have contradictory cxx.poptions values: exe{foo}: cxx{foo common} { cxx.poptions += -DFOO } exe{bar}: cxx{bar common} { cxx.poptions += -DBAR } As another example, here is how we can rewrite a typical library buildfile (which requires different macros to distinguish between shared/static builds) using this mechanism, in this case, to build two libraries in the same scope: ./: lib{foo}: {hxx cxx}{*-foo} ./: lib{bar}: {hxx cxx}{*-bar} cxx.poptions =+ "-I$out_root" "-I$src_root" lib{foo}: { cxx.poptions += -DFOO cxx.export.poptions = "-I$out_root" "-I$src_root" } liba{foo}: { cxx.poptions += -DLIBFOO_STATIC_BUILD cxx.export.poptions += -DLIBFOO_STATIC } libs{foo}: { cxx.poptions += -DLIBFOO_SHARED_BUILD cxx.export.poptions += -DLIBFOO_SHARED } lib{bar}: { cxx.poptions += -DBAR cxx.export.poptions = "-I$out_root" "-I$src_root" } liba{bar}: { cxx.poptions += -DLIBBAR_STATIC_BUILD cxx.export.poptions += -DLIBBAR_STATIC } libs{bar}: { cxx.poptions += -DLIBBAR_SHARED_BUILD cxx.export.poptions += -DLIBBAR_SHARED } The exact semantics of this mechanism is as-if the binary-specific compile options were set on the synthesized obj/bmi{} targets at the end of the buildfile. One nuance to keep in mind is that target type/pattern-specific assign/append/prepend specified for obj/bmi{} will not be in effect for options specified on lib/exe{}. For example: cxx.poptions += -DSCOPE obj{*}: cxx.poptions += -DTARGET exe{foo}: cxx.poptions += -DFOO Here the effective cxx.poptions for exe{foo} prerequisites will be -DSCOPE -DFOO since exe{foo} does not match the obj{*} pattern. As result, if using this mechanism, remember to include the binary target types in obj{} patterns. For example: {obj exe}{*}: cxx.poptions += -DTARGET | |||||
2024-08-06 | Rename certain target_set::insert() versions to insert_implied() for clarity | Boris Kolpackov | 7 | -57/+64 | |
Also clarify the target_decl documentation. | |||||
2024-07-31 | Add cross-reference note | Boris Kolpackov | 1 | -0/+3 | |
2024-07-31 | Add lookup limit to {scope,target}::lookup_original() | Boris Kolpackov | 9 | -80/+100 | |
2024-07-29 | Fix bug in $string.{contains,ends_with,replace}() (GH issue #405) | Boris Kolpackov | 2 | -2/+4 | |
These functions use the common rfind() helper which contains the bug. | |||||
2024-07-29 | Add scope::lookup_original_info() that provides additional info about lookup | Boris Kolpackov | 4 | -28/+56 | |
2024-07-28 | Factor out and generalize/extend to_stream_quoted(string) | Boris Kolpackov | 3 | -44/+80 | |
2024-06-24 | Fail instead of aborting on src and out directories naming scheme mismatch ↵ | Karen Arutyunov | 2 | -4/+6 | |
(GH issue #394) | |||||
2024-06-20 | Fix crashing of $install.resolve() on absolute paths (GH issue #393) | Karen Arutyunov | 1 | -3/+11 | |
2024-06-19 | Change version to 0.18.0-a.0.z | Boris Kolpackov | 3 | -4/+4 | |
2024-06-17 | Release version 0.17.0v0.17.0 | Boris Kolpackov | 3 | -6/+6 | |
2024-06-17 | Fix bug in integer, boolean value type comparison | Boris Kolpackov | 1 | -3/+3 | |
2024-06-14 | Update config submodule | Boris Kolpackov | 1 | -0/+0 | |
2024-06-14 | Instrument header cache inconsistency assert with additional info (GH issue ↵ | Boris Kolpackov | 1 | -0/+14 | |
#390) | |||||
2024-06-11 | Update NEWS file | Boris Kolpackov | 1 | -0/+391 | |
2024-06-07 | Use combined -L option form for extra system search paths | Boris Kolpackov | 3 | -16/+47 | |
The split one was just too much of an eye-sore in the logs. | |||||
2024-06-07 | Add comment on not adding rpath for /usr/local/lib | Boris Kolpackov | 1 | -0/+18 | |
2024-06-06 | Use -pthread instead of -lpthread | Boris Kolpackov | 2 | -3/+3 | |
2024-06-05 | Improve -rpath duplicate suppression logic even more | Boris Kolpackov | 1 | -2/+11 | |
2024-06-05 | Improve -rpath duplicate suppression logic some more | Boris Kolpackov | 1 | -3/+15 | |
2024-06-05 | Include top-level libraries in -rpath duplicate suppression logic | Boris Kolpackov | 1 | -0/+7 | |
2024-06-04 | Update Apple Clang to vanilla Clang version mapping information | Boris Kolpackov | 1 | -21/+23 | |
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 | |