Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2022-03-10 | Add reverse_execute_prerequisites() variant | Boris Kolpackov | 1 | -5/+24 | |
2022-03-10 | Remove update variable from source of synthesized dependency | Boris Kolpackov | 1 | -1/+14 | |
2022-03-09 | Parallel implementation of update_during_match_prerequisites() | Boris Kolpackov | 1 | -2/+3 | |
2022-03-08 | Improve performance of update during match for multiple targets | Boris Kolpackov | 1 | -9/+5 | |
2022-03-08 | Update C/C++ headers and ad hoc sources during match by default | Boris Kolpackov | 1 | -19/+50 | |
Essentially, all headers as well as ad hoc headers and sources are now treated by the cc::link_rule as if they had update=match unless explicit update=execute is specified. | |||||
2022-03-08 | Add update=execute special value for cases where it's not default | Boris Kolpackov | 1 | -1/+1 | |
2022-03-07 | Add support for update=unmatch|match to ad hoc recipes | Boris Kolpackov | 1 | -4/+6 | |
2022-03-02 | Add update operation-specific variable with unmatch|match additional values | Boris Kolpackov | 1 | -10/+94 | |
Note that the unmatch (match but do not update) and match (update during match) values are only supported by certain rules (and potentially only for certain prerequisite types). Additionally: - All operation-specific variables are now checked for false as an override for the prerequisite-specific include value. In particular, this can now be used to disable a prerequisite for update, for example: ./: exe{test}: update = false - The cc::link_rule now supports the update=match value for headers and ad hoc prerequisites. In particular, this can be used to make sure all the library headers are updated before matching any of its (or dependent's) object files. | |||||
2022-02-16 | Get rid of stray variable | Boris Kolpackov | 1 | -2/+0 | |
2022-02-15 | Fix stray logic where libue{} was still considered member of libul{} | Boris Kolpackov | 1 | -10/+27 | |
Fixes GitHub issue #179. | |||||
2022-02-10 | Add note on GNU ar deprecating -T in favor of --thin | Boris Kolpackov | 1 | -0/+3 | |
2022-02-09 | Improve comments | Boris Kolpackov | 1 | -3/+6 | |
2022-01-21 | Add search_new() and search_new_locked() variants of search() | Boris Kolpackov | 1 | -2/+2 | |
2021-11-04 | Do not apply install scope to update-for-install pre-operation | Boris Kolpackov | 1 | -0/+7 | |
2021-10-16 | Skip regenerating .pc files during uninstall | Boris Kolpackov | 1 | -1/+2 | |
2021-10-07 | Verify libraries and targets they are linked to a for-install-compatible | Boris Kolpackov | 1 | -3/+23 | |
2021-09-28 | Adapt to libbutl headers extension change from .mxx to .hxx | Karen Arutyunov | 1 | -1/+1 | |
2021-09-09 | Handle Emscripten -pthread mode | Boris Kolpackov | 1 | -0/+15 | |
2021-08-12 | Add ${c,cxx}.deduplicate_export_libs() function | Boris Kolpackov | 1 | -0/+86 | |
This function deduplicates interface library dependencies by removing libraries that are also interface dependencies of the specified libraries. This can result in significantly better build performance for heavily interface-interdependent library families (for example, like Boost). Typical usage: import intf_libs = ... import intf_libs += ... ... import intf_libs += ... intf_libs = $cxx.deduplicate_export_libs($intf_libs) | |||||
2021-08-09 | Merge library hashing and collection into single traversal pass | Boris Kolpackov | 1 | -212/+95 | |
It turns out this is a lot faster on deeply-dependent libraries like Boost while not having any noticeable differences for "sane" projects. | |||||
2021-08-05 | Implement traversal pruning in process_libraries() | Boris Kolpackov | 1 | -29/+55 | |
2021-07-01 | Suppress duplicate libraries in pkg-config files | Boris Kolpackov | 1 | -27/+1 | |
2021-05-28 | Tie loose ends in target type/pattern-specific matching | Boris Kolpackov | 1 | -5/+7 | |
2021-05-13 | Add ${c,cxx}.find_system_{header,library}() functions | Boris Kolpackov | 1 | -0/+131 | |
2021-05-06 | Propagate complete match rules from utility libraries in link rule | Boris Kolpackov | 1 | -80/+72 | |
This makes sure mixed-language (e.g., C and C++) utility libraries behave as expected. | |||||
2021-05-04 | Handle duplicate suppression of multi-element libraries (-l foo) | Boris Kolpackov | 1 | -54/+68 | |
See GitHub issue #114 for context. | |||||
2021-04-20 | Track changes to environment in cc rules | Boris Kolpackov | 1 | -4/+7 | |
2021-04-09 | Adjust to butl::process::quite_argument() interface change | Boris Kolpackov | 1 | -1/+1 | |
2021-02-11 | Generalize process_libraries() to allow no picking installed library member | Boris Kolpackov | 1 | -11/+13 | |
2021-02-03 | Propagate relevant options/prerequisites to header unit sidebuilds | Boris Kolpackov | 1 | -0/+2 | |
2021-01-30 | Add std::{map, multimap} to types.hxx | Boris Kolpackov | 1 | -2/+0 | |
Seeing that std::map is becoming a common Buildfile variable type. | |||||
2021-01-30 | Rework include translation support | Boris Kolpackov | 1 | -1/+1 | |
See the config.cxx.translate_include variable documentation in cxx/init.cxx for details. | |||||
2021-01-22 | Redo bin.lib.version not to require empty key | Boris Kolpackov | 1 | -3/+9 | |
2020-12-14 | Fix incorrect assert in condition | Boris Kolpackov | 1 | -2/+2 | |
2020-12-11 | Add $cxx.obj_modules() which returns object files for binless modules | Boris Kolpackov | 1 | -0/+5 | |
2020-12-11 | Add support for module interface-only libraries | Boris Kolpackov | 1 | -34/+142 | |
Also suppress generation of the object file in cases where we don't need it. | |||||
2020-12-03 | Add ability to get absolute library paths from ${c,cxx}.lib_libs() | Boris Kolpackov | 1 | -4/+9 | |
2020-11-23 | Suppress duplicates when extracting library options (GitHub issue #114) | Boris Kolpackov | 1 | -35/+127 | |
2020-11-17 | Omit default extensions for target types that now have fixed extensions | Boris Kolpackov | 1 | -2/+2 | |
2020-11-11 | Add ${c,cxx}.lib_{poptions,libs,rpaths}() functions | Boris Kolpackov | 1 | -36/+36 | |
These functions can be used to query library metadata for options and libraries that should be used when compiling/linking dependent targets, similar to how cc::{compile,link}_rule do it. With this support it should be possible to more or less re-create their semantics in ad hoc recipes. | |||||
2020-11-05 | Initial Emscripten support | Boris Kolpackov | 1 | -0/+44 | |
- Target: wasm32-emscripten (wasm32-unknown-emscripten). - Compiler id: clang-emscripten (type clang, variant emscripten, class gcc). - Ability to build executables (.js plus .wasm) and static libraries (.a). Set executable bit on the .js file (so it can be executed with a suitable binfmt interpreter). - Default config.bin.lib for wasm32-emscripten is static instead of both. - Full C++ exception support is enable unless disabled explicitly by the user with -s DISABLE_EXCEPTION_CATCHING=1|2. - The bin module registers the wasm{} target type for wasm32-emscripten. | |||||
2020-08-12 | Adjust linker arguments for LTO parallelization | Matthew Krupcale | 1 | -0/+54 | |
GCC 10+ and Clang 4+ support controlling the number of LTO threads/jobs used during linking. Use the build2 scheduler to allocate up to the number of hardware threads to the GCC or Clang linker processes when -flto=auto or -flto=thin is specified, respectively. Otherwise, GCC or Clang will attempt to spawn the number of hardware threads detected for each linker process, which could result in up to n^2 linker threads on a CPU with n hardware threads. | |||||
2020-07-13 | Fold translated *.std options into compiler mode options | Boris Kolpackov | 1 | -1/+0 | |
This way they are accessible in ad hoc recipes. | |||||
2020-06-16 | Move common functionality from cc to bin | Boris Kolpackov | 1 | -1/+1 | |
2020-05-27 | Initial support for ad hoc recipes (still work in progress) | Boris Kolpackov | 1 | -19/+5 | |
2020-03-20 | Generate common .pc file in addition to static/staged when installing lib{} | Boris Kolpackov | 1 | -9/+49 | |
The common .pc file is produced by ignoring any static/shared-specific poptions and splitting loptions/libs into Libs/Libs.private. It is "best effort", in a sense that it's not guaranteed to be sufficient in all cases, but it will probably cover the majority of cases, even on Windows, thanks to automatic dllimport'ing of functions. | |||||
2020-03-17 | Rename all find*(variable) to lookup*(variable) | Boris Kolpackov | 1 | -6/+6 | |
Now we consistently use term "lookup" for variable value lookup. At some point we should also rename type lookup to binding and get rid of all the lookup_type aliases. | |||||
2020-03-10 | Force hard links inside backlinked DLL assembly directory | Boris Kolpackov | 1 | -1/+2 | |
Windows does not allow the manifest file inside to be a symlink for some (probably security) reasons. | |||||
2020-02-24 | Disable /WHOLEARCHIVE workaround for lld-link 9.0.1 and later | Boris Kolpackov | 1 | -9/+16 | |
2020-02-07 | Drop copyright notice from source code | Karen Arutyunov | 1 | -1/+0 | |