aboutsummaryrefslogtreecommitdiff
path: root/libbuild2
AgeCommit message (Collapse)AuthorFilesLines
2022-07-20Tweak diagnosticsBoris Kolpackov1-1/+1
2022-07-20Adjust conditional dependency declaration warning logicBoris Kolpackov2-13/+19
Now instead of ignoring imported stuff (which turned out to be racy), we only consider conditions up to the include boundary. The thinking here is that an included (but not sourced) buildfile is a standalone entity (e.g., imported project but also could be just a side-included buildfile). Note that unfortunately we will still be issuing warnings in imported projects since there is no straightforward way to know what is being distributed and what is not while parsing.
2022-07-20Adjust to match libpkg-config interface/semantics changesBoris Kolpackov1-5/+25
2022-07-19Warn about conditional dependency declarations during distributionBoris Kolpackov2-0/+51
2022-07-19Fix bug in target::matched()Boris Kolpackov2-7/+7
2022-07-17Map VC 17 to runtime version 14.3Boris Kolpackov2-3/+6
2022-07-13Work around "storing address of local variable" warning issued by GCC 12Boris Kolpackov1-1/+1
The warning is issued inside the target_lock's move constructor so we sidestep the whole thing by avoiding the call to the move constructor.
2022-07-08Fix script::parser::need_cmdline_relex()Karen Arutyunov1-1/+1
2022-07-07Use new cmdline type for canned command lines in {Build,Test}scriptBoris Kolpackov12-73/+389
2022-07-07Fix incorrect function family assignment for $target.process_path()Boris Kolpackov1-1/+1
2022-07-05Drop unused lambda captureBoris Kolpackov1-2/+1
2022-07-05Switch to using libpkg-config instead of libpkgconf by defaultBoris Kolpackov3-7/+276
The use of (now deprecated) libpkgconf is still possible by setting config.build2.libpkgconf to true. Note that libpkgconf is known to have issues on Windows and Mac OS so this should only be used on Linux and maybe BSDs. Also note that we will only keep this until upstream (again) breaks backwards compatibility at which point we will drop this support.
2022-07-05Recognize special .for_install variable suffix in library user metadataBoris Kolpackov2-26/+95
2022-07-04Work around VC16 issueBoris Kolpackov1-0/+2
2022-07-04Factor libpkgconf-based pkgconfig implementation to separate source fileBoris Kolpackov3-461/+499
2022-07-02Minor cleanups in class pkgconf implementationBoris Kolpackov1-22/+32
2022-07-02Add note on version we save in pkg-config filesBoris Kolpackov1-0/+14
2022-07-01Regenerate options parsing filesKaren Arutyunov4-47/+162
2022-07-01Ignore Provides when loading pkg-config informationBoris Kolpackov1-0/+1
Without this flag, on encountering an unknown package, libpkgconf will load *all* pkg-config files it can find in order to see if any of them provide it.
2022-06-29Work around MSVC 14.3 issuesBoris Kolpackov2-3/+3
2022-06-29Make sure we generate common pkg-config file for only liba{}/libs{}Boris Kolpackov5-8/+44
2022-06-29Save cc.type in pkg-config filesBoris Kolpackov2-5/+30
2022-06-29Rework pkg-config variable naming, use build2.metadata as general indicatorBoris Kolpackov2-178/+228
2022-06-28Complete support for saving/loading library metadata to/from pkg-config filesBoris Kolpackov5-167/+308
2022-06-28Add support for querying out-qualified target-specific variablesBoris Kolpackov7-35/+68
2022-06-28Handle out-qualified prerequisitesBoris Kolpackov1-6/+20
2022-06-28Add support for rule-specific import phase 2Boris Kolpackov6-41/+184
For example: import! [metadata, rule_hint=cxx.link] lib = libhello%lib{hello}
2022-06-24Allow ad hoc rules not to list targets that are updated during matchBoris Kolpackov10-37/+136
For example, this allows a Qt moc rule not to list generated headers from libQtCore since they are pre-generated by the library.
2022-06-24Make libul{} rule match without hintBoris Kolpackov3-31/+11
In the end, the extra jumping through the hoops doesn't justify the extra safety we gain. The only plausible accidental mistake is making libul{} a dependency of ./ but then we don't prevent the same for libue{}, which also doesn't make much sense. Though, the consequences of doing this for libul{} could be more severe, like messed up for-install'ness. Oh, well, I guess people will just have to pay attention (this could be a good check for the linter we've been thinking about).
2022-06-24Add ability to control -I translation in $x.lib_poptions()Boris Kolpackov3-11/+22
2022-06-24Add ability to get common interface options via $x.lib_poptions()Boris Kolpackov8-66/+169
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-06-24Match rule to libul{} with explicit bin.metadata hintBoris Kolpackov5-11/+110
This rule picks, matches, and unmatches (if possible) a member for the purpose of making its metadata (for example, library's poptions, if it's one of the cc libraries) available.
2022-06-24Match libraries before update for install prerequisites in cc::link_ruleBoris Kolpackov1-4/+11
2022-06-23Handle empty entries in GCC -print-search-dirsBoris Kolpackov1-7/+12
2022-06-23Minor enhancements to algorithmsBoris Kolpackov3-20/+82
2022-06-22Add missing match_data() destructorBoris Kolpackov1-0/+5
2022-06-21Add --trace-{match,execute} optionsBoris Kolpackov14-105/+420
These options can be used to understand which dependency chain causes matching or execution of a particular target.
2022-06-17Add ability to ignore subprojects in create_bootstrap_outer()Boris Kolpackov3-6/+7
2022-06-14Add note to parser::lookup_variable() descriptionBoris Kolpackov1-0/+4
2022-06-14Tighten value::extra usage in config moduleBoris Kolpackov4-5/+10
Specifically, only values marked with 1 are treated as default leaving other values for use for other purposes.
2022-06-06Add another config::origin() overloadBoris Kolpackov2-2/+15
2022-06-03Reset value::extra on variable_map value change/version incrementBoris Kolpackov5-7/+25
The reset on each modification semantics is used to implement the default value distinction as currently done in the config module but later probably will be done for ?= and $origin().
2022-06-03Add another variable_map::insert() overloadBoris Kolpackov1-0/+6
2022-06-03Expose type name to value_type mapping function in parserBoris Kolpackov2-4/+13
2022-06-03Move config::variable_visibility to separate types.hxx headerBoris Kolpackov2-8/+27
2022-05-27Don't pass --format to OpenBSD tar (ustar is default)Boris Kolpackov1-22/+25
2022-05-23Detect cross-linking and pass -rpath-link in addition to -rpathBoris Kolpackov1-7/+69
According to the GNU ld documentation (and painful practical experience), -rpath does not always imply -rpath-link for cross-linkers.
2022-05-23Cache build.host value in contextBoris Kolpackov6-7/+12
2022-05-23Add ability to iterate over variable poolBoris Kolpackov1-7/+14
2022-05-23Add config::origin(const variable&) overloadBoris Kolpackov2-9/+23