aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cc/link-rule.hxx
AgeCommit message (Collapse)AuthorFilesLines
2021-10-07Minor install-related cleanupsBoris Kolpackov1-14/+20
2021-08-12Add ${c,cxx}.deduplicate_export_libs() functionBoris Kolpackov1-0/+7
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-12Avoid duplication in Libs/Libs.private in generated .pc filesBoris Kolpackov1-16/+35
2021-08-10Complete process_libraries() duplicate suppression workBoris Kolpackov1-6/+3
2021-08-09Merge library hashing and collection into single traversal passBoris Kolpackov1-11/+2
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-05Implement traversal pruning in process_libraries()Boris Kolpackov1-3/+6
2021-07-01Suppress duplicate libraries in pkg-config filesBoris Kolpackov1-0/+34
2021-06-21Add support for automatic generation of symbol exporting .def fileBoris Kolpackov1-3/+1
2021-05-13Add ${c,cxx}.find_system_{header,library}() functionsBoris Kolpackov1-0/+3
2021-05-06Propagate complete match rules from utility libraries in link ruleBoris Kolpackov1-0/+10
This makes sure mixed-language (e.g., C and C++) utility libraries behave as expected.
2021-05-04Handle duplicate suppression of multi-element libraries (-l foo)Boris Kolpackov1-20/+40
See GitHub issue #114 for context.
2020-12-11Add support for module interface-only librariesBoris Kolpackov1-0/+8
Also suppress generation of the object file in cases where we don't need it.
2020-12-03Add ability to get absolute library paths from ${c,cxx}.lib_libs()Boris Kolpackov1-1/+2
2020-11-24Fix compilation error on older compilers (GCC 4.9, MSVC 14.3)Boris Kolpackov1-4/+4
2020-11-23Suppress duplicates when extracting library options (GitHub issue #114)Boris Kolpackov1-2/+58
2020-11-11Add ${c,cxx}.lib_{poptions,libs,rpaths}() functionsBoris Kolpackov1-19/+27
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-07-14Fix Clang warningBoris Kolpackov1-0/+2
2020-07-13Add ability to extend rule interface in source-compatible mannerBoris Kolpackov1-1/+1
2020-03-20Generate common .pc file in addition to static/staged when installing lib{}Boris Kolpackov1-1/+1
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-02-07Drop copyright notice from source codeKaren Arutyunov1-1/+0
2019-10-29Tighten up versioned libraries clean patternsBoris Kolpackov1-4/+6
2019-10-14Implement MSVC installation discovery for version 15 (2017) and laterKaren Arutyunov1-4/+4
In particular, this removes the requirement to build from the Visual Studio command prompt. Note that since MSVC compiler binaries are target-specific (i.e., there are no -m32/-m64 options nor something like /MACHINE), in this case we default to a 64-bit build (a 32-bit build can still be achieved by running from a suitable command prompt). Finally, this mechanism is also used to find Clang bundled with MSVC.
2019-08-28Move cc build system module to separate libraryKaren Arutyunov1-0/+188