aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-06-28Add support for querying out-qualified target-specific variablesBoris Kolpackov9-43/+79
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 Kolpackov16-109/+449
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
2022-05-22Add support for variable patterns in config.config.disfigureBoris Kolpackov3-5/+127
2022-05-20Make $config.origin() also available internally as config::origin()Boris Kolpackov3-28/+59
2022-05-19Add config.config.unload variable to omit loading config.buildBoris Kolpackov1-7/+34
Note that the configuration is still loaded from config.config.load if specified. Note also that similar to config.config.load, only values specified on this project's root scope and global scope are considered.
2022-05-17Add OpenBSD libc detectionBoris Kolpackov1-0/+2
2022-05-17Handle stack size querying on OpenBSDBoris Kolpackov1-1/+13
2022-05-11Add $config.origin() functionBoris Kolpackov1-0/+70
This function can be used to query the origin of a configuration variable value. The result is one of `undefined`, `default`, `buildfile`, or `override`.
2022-05-10Use our own implementation of C++14 threads on MinGWBoris Kolpackov3-27/+49
2022-05-06Minor terminology fix in diagnostics and commentsBoris Kolpackov6-8/+8
2022-05-06Minor terminology fix in documentationBoris Kolpackov1-2/+2
2022-05-05Recognize -pthread as king of -l in *.libsBoris Kolpackov4-38/+56
2022-05-05Allow linking libraries without any sources/headers with hintBoris Kolpackov1-3/+8
This can be useful for creating "metadata libraries".
2022-05-02Don't verify parser replay integrity if exception is being thrownBoris Kolpackov1-3/+21
2022-04-25Rename cmdline to b_cmdline, and options to b_optionsBoris Kolpackov7-204/+204
2022-04-24Omit ignorable change detection for header unitsBoris Kolpackov1-1/+9
Since the checksum ignores preprocessor directives, this may cause us to ignore a change to an exported macro.
2022-04-24Fix bug in previous commitBoris Kolpackov1-1/+1
2022-04-24Recognize ARM64 as MSVC targetBoris Kolpackov1-12/+19
2022-04-21Work around bogus -Wrestrict in GCC 12 (GCC bug #105329)Boris Kolpackov2-4/+10
2022-04-20Fix bug in recursively-binless detection logicBoris Kolpackov1-1/+5
2022-04-20Get rid of unnecessary move() callBoris Kolpackov1-1/+1
2022-04-20Replace match_extra::buffer with more general data storage facilityBoris Kolpackov6-14/+84
2022-04-20Add explicit flag to more efficiently avoid repeated load_root() callsBoris Kolpackov2-20/+23
2022-04-20Add import cacheBoris Kolpackov2-2/+77
2022-04-19Use target recipe for auxiliary data storage during match-applyBoris Kolpackov19-147/+288
In particular, we now have separate auxiliary data storage for inner and outer operations.
2022-04-19Switch to using std::function for target::data_padBoris Kolpackov10-52/+98