aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cc/functions.cxx
AgeCommit message (Collapse)AuthorFilesLines
2022-06-24Add ability to get common interface options via $x.lib_poptions()Boris Kolpackov1-21/+56
Specifically, the output target type may now be omitted for utility libraries (libul{} and libu[eas]{}). In this case, only "common interface" options will be returned for lib{} dependencies. This is primarily useful for obtaining poptions to be passed to tools other than C/C++ compilers (for example, Qt moc).
2022-05-05Recognize -pthread as king of -l in *.libsBoris Kolpackov1-6/+8
2022-04-13Add automatic interface dependency deduplication in cc::process_libraries()Boris Kolpackov1-1/+10
2022-02-15Diagnose various misuses of library metadata protocolBoris Kolpackov1-0/+9
2022-01-21Add another overload of to_target(), declare in functions-name.hxxBoris Kolpackov1-3/+2
2021-11-24Fix bug in attempt to allow calling cc module functions during matchBoris Kolpackov1-2/+2
2021-11-24Allow calling cc module functions during matchBoris Kolpackov1-2/+8
An ad hoc recipe with dynamic dependency extraction (depdb-dyndep) executes its depdb preamble during match (but after matching all the prerequisites).
2021-10-07Verify libraries and targets they are linked to a for-install-compatibleBoris Kolpackov1-1/+1
2021-08-12Add ${c,cxx}.deduplicate_export_libs() functionBoris Kolpackov1-0/+59
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-09Merge library hashing and collection into single traversal passBoris Kolpackov1-5/+7
It turns out this is a lot faster on deeply-dependent libraries like Boost while not having any noticeable differences for "sane" projects.
2021-05-13Add ${c,cxx}.find_system_{header,library}() functionsBoris Kolpackov1-2/+82
2020-12-11Add $cxx.obj_modules() which returns object files for binless modulesBoris Kolpackov1-11/+105
2020-12-04Mark Buildfile functions as pure or impureBoris Kolpackov1-6/+12
2020-12-03Add ability to get absolute library paths from ${c,cxx}.lib_libs()Boris Kolpackov1-2/+7
2020-11-23Suppress duplicates when extracting library options (GitHub issue #114)Boris Kolpackov1-23/+49
2020-11-11Add ${c,cxx}.lib_{poptions,libs,rpaths}() functionsBoris Kolpackov1-0/+231
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.