aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cc
AgeCommit message (Collapse)AuthorFilesLines
2022-07-02Add note on version we save in pkg-config filesBoris Kolpackov1-0/+14
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 Kolpackov1-2/+2
2022-06-29Make sure we generate common pkg-config file for only liba{}/libs{}Boris Kolpackov1-2/+19
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 Kolpackov1-174/+222
2022-06-28Complete support for saving/loading library metadata to/from pkg-config filesBoris Kolpackov5-167/+308
2022-06-24Allow ad hoc rules not to list targets that are updated during matchBoris Kolpackov3-8/+19
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-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 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-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-17Add OpenBSD libc detectionBoris Kolpackov1-0/+2
2022-05-06Minor terminology fix in diagnostics and commentsBoris Kolpackov1-1/+1
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-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-20Fix bug in recursively-binless detection logicBoris Kolpackov1-1/+5
2022-04-20Get rid of unnecessary move() callBoris Kolpackov1-1/+1
2022-04-19Use target recipe for auxiliary data storage during match-applyBoris Kolpackov5-43/+84
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 Kolpackov3-9/+2
2022-04-19Optimize header cache some more by storing hash in keyBoris Kolpackov2-4/+42
2022-04-19Skip find() inside target_set::insert*() if target is unlikely to be thereBoris Kolpackov1-2/+4
2022-04-15Adjust small vector limit in process_libraries()Boris Kolpackov2-43/+86
2022-04-15Get rid of target::dynamic_type() virtual functionBoris Kolpackov1-12/+30
Instead of overriding this function, derived targets must now set the dynamic_type variable to their static_type in their constructor body.
2022-04-14Add header cache to cc::compile_rule::enter_header()Boris Kolpackov3-32/+193
2022-04-13Fix bug in previous commitBoris Kolpackov1-1/+1
2022-04-13Prune library graph traversal for recursively-binless librariesBoris Kolpackov3-57/+213
2022-04-13Add automatic interface dependency deduplication in cc::process_libraries()Boris Kolpackov3-18/+92
2022-04-07Rename {match,execute}() to *_sync(), add *_complete()Boris Kolpackov2-2/+2
In particular, the match() rename makes sure it doesn't clash with rule::match() which, after removal of the hint argument in simple_rule, has exactly the same signature, thus making it error-prone to calling recursively.
2022-04-06Work around Clang warningsBoris Kolpackov1-0/+4
2022-04-06Add support for rule hintsBoris Kolpackov9-45/+43
A rule hint is a target attribute, for example: [rule_hint=cxx] exe{hello}: c{hello} Rule hints can be used to resolve ambiguity when multiple rules match the same target as well as to override an unambiguous match.
2022-03-30Infrastructure for library metadata supportBoris Kolpackov3-9/+334
2022-03-28Respect dry-run in Windows assembly creation logicBoris Kolpackov1-3/+8
2022-03-28Add ability to customize pkg-config header and library search pathsBoris Kolpackov3-11/+46
Specifically, {cc,c,cxx}.pkgconfig.{include,lib} variables specify header (-I) and library (-L) search paths to use in the generated .pc files instead of the default install.{include,lib}. Relative paths are resolved as install paths.
2022-03-25Store bin.whole flag in pkg-config filesBoris Kolpackov2-14/+47
2022-03-17Handle absolute POSIX paths in MinGW GCC search pathsBoris Kolpackov1-2/+34
2022-03-17Diagnose invalid paths in -print-search-dirs outputBoris Kolpackov1-8/+28
For example, some mis-configured MinGW GCC builds include /mingw/lib.
2022-03-15Don't consider mtime of failed to unmatch prerequisite in ad hoc recipeBoris Kolpackov1-1/+2
2022-03-10Add reverse_execute_prerequisites() variantBoris Kolpackov1-5/+24
2022-03-10Remove update variable from source of synthesized dependencyBoris Kolpackov1-1/+14
2022-03-09Parallel implementation of update_during_match_prerequisites()Boris Kolpackov1-2/+3
2022-03-08Improve performance of update during match for multiple targetsBoris Kolpackov1-9/+5
2022-03-08Update C/C++ headers and ad hoc sources during match by defaultBoris Kolpackov1-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-08Add update=execute special value for cases where it's not defaultBoris Kolpackov1-1/+1
2022-03-07Add support for update=unmatch|match to ad hoc recipesBoris Kolpackov2-7/+15
2022-03-02Add update operation-specific variable with unmatch|match additional valuesBoris Kolpackov3-13/+97
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.