aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cc/common.hxx
AgeCommit message (Collapse)AuthorFilesLines
2023-08-22Consider *_inc{} target types as headers for rule match purposesBoris Kolpackov1-7/+10
2023-04-18Add support for Assembler with C Preprocessor (.S) compilationBoris Kolpackov1-2/+15
Specifically, the c module now provides the c.as-cpp submodules which can be loaded in order to register the S{} target type and enable Assembler with C Preprocessor compilation in the c compile rule. For details, refer to "Assembler with C Preprocessor Compilation" in the manual.
2023-04-10Fix inconsistent /usr/local/{include,lib} searchBoris Kolpackov1-4/+8
In particular, we were adding -L/usr/local/lib which means it is considered before built-in directories (/usr/lib, etc) but in our own library search code we were considering it after (because we were storing it at the end of sys_lib_dirs). Now in both sys_{hdr,lib}_dirs we store /usr/local/{include,lib} after mode and before built-in directories. Note that as part of this fix we now pass -isystem /usr/local/include instead of -idirafter (which is consistent with the -L behavior and also the customarily expected semantics).
2022-12-09Enable diagnostics color in GCC and ClangBoris Kolpackov1-0/+5
2022-12-05Skip common .pc file for binless if found but rejected binful (GH issues #235)Boris Kolpackov1-2/+5
2022-11-22Add support for Objective-C/C++ compilation in cc moduleBoris Kolpackov1-5/+24
2022-08-17Handle another "in *.export.libs but not in prerequisites" caseBoris Kolpackov1-0/+5
Also, enable this check even if proc_lib is not specified unless in the execute phase.
2022-06-28Complete support for saving/loading library metadata to/from pkg-config filesBoris Kolpackov1-5/+5
2022-06-24Allow ad hoc rules not to list targets that are updated during matchBoris Kolpackov1-0/+5
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 get common interface options via $x.lib_poptions()Boris Kolpackov1-1/+5
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-04-15Adjust small vector limit in process_libraries()Boris Kolpackov1-3/+20
2022-04-13Add automatic interface dependency deduplication in cc::process_libraries()Boris Kolpackov1-1/+2
2022-04-06Add support for rule hintsBoris Kolpackov1-6/+3
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 Kolpackov1-2/+4
2022-03-28Add ability to customize pkg-config header and library search pathsBoris Kolpackov1-0/+3
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.
2021-10-07Verify libraries and targets they are linked to a for-install-compatibleBoris Kolpackov1-1/+1
2021-10-04Optimize internal scope implementationBoris Kolpackov1-8/+10
2021-10-04Add support for treating specific libraries as always internalBoris Kolpackov1-0/+6
2021-10-01Add notion of internal scope, translate external -I to -isystem or equivalentBoris Kolpackov1-0/+15
2021-08-11Optimize process_libraries() some moreBoris Kolpackov1-1/+1
2021-08-05Implement traversal pruning in process_libraries()Boris Kolpackov1-2/+2
2021-08-05Add resolved library cache, use in cc::process_libraries()Boris Kolpackov1-1/+13
2021-05-13Rename sys_inc_dirs to sys_hdr_dirs for consistencyBoris Kolpackov1-10/+10
2021-05-04Replace int_ with intf_ and imp_ with impl_ in namesBoris Kolpackov1-2/+2
2021-05-04Handle duplicate suppression of multi-element libraries (-l foo)Boris Kolpackov1-1/+3
See GitHub issue #114 for context.
2021-04-20Track changes to environment in cc rulesBoris Kolpackov1-0/+4
2021-02-11Generalize process_libraries() to allow no picking installed library memberBoris Kolpackov1-8/+8
2021-01-30Rework include translation supportBoris Kolpackov1-5/+5
See the config.cxx.translate_include variable documentation in cxx/init.cxx for details.
2020-12-11Add support for module interface-only librariesBoris Kolpackov1-0/+12
Also suppress generation of the object file in cases where we don't need it.
2020-07-16Save original compiler path/mode in {c,cxx}.config.path/modeBoris Kolpackov1-0/+2
It turns out that when propagating {c,cxx}.config in tests we don't want to propagate any options (such as *.std) that have been folded into our project's mode.
2020-07-13Fold translated *.std options into compiler mode optionsBoris Kolpackov1-4/+0
This way they are accessible in ad hoc recipes.
2020-07-01Add *.export.imp_libs to get rid of dual *.export.libs semanticsBoris Kolpackov1-0/+2
2020-05-22Fix bug in previous commitBoris Kolpackov1-1/+1
2020-05-22Make template definition available in all translation units where usedBoris Kolpackov1-1/+3
We were trying to be clever but GCC 10's IPA-SRA optimization didn't like it.
2020-04-13Add ../share/pkgconfig/ search directory by default on LinuxBoris Kolpackov1-1/+1
2020-02-07Drop copyright notice from source codeKaren Arutyunov1-1/+0
2020-02-03Add header/library search paths from compiler mode to sys_*_dirsBoris Kolpackov1-9/+19
2020-01-31Propagate installed library out (tag) when converting to nameBoris Kolpackov1-1/+2
2020-01-31Tag installed library targets with linker pathBoris Kolpackov1-2/+3
This makes sure we get different targets for different toolchains.
2019-11-05Add support for supplying MSVC IFCPATH equivalentBoris Kolpackov1-3/+5
2019-10-18Add ability to specify "compiler mode" options as part of config.{c,cxx}Boris Kolpackov1-1/+4
Such options are (normally) not overridden by buildfiles and are passed last (after cc.coptions and {c,cxx}.coptions) in the resulting command lines. They are also cross-hinted between config.c and config.cxx. For example: $ b config.cxx="g++ -m64"
2019-10-11Add support for clang-clBoris Kolpackov1-5/+15
The compiler type is `msvc`, variant `clang`.
2019-09-18Rename importable_headers variable to translatable_headersBoris Kolpackov1-4/+5
This name aligns better with the post-Cologne importable/translatable semantics.
2019-08-28Move cc build system module to separate libraryKaren Arutyunov1-0/+358