aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cc/compile-rule.cxx
AgeCommit message (Collapse)AuthorFilesLines
2023-12-13Fix another instance of module name not being assigned due to deferred failureBoris Kolpackov1-10/+17
2023-12-08Workaround bogus initialized variable warningBoris Kolpackov1-1/+1
2023-12-07Fix bug that led to duplication of module import informationBoris Kolpackov1-1/+7
2023-12-07Add support for compiling MSVC standard library modulesBoris Kolpackov1-41/+144
2023-12-07C++20 named modules support for MSVC, take 2Boris Kolpackov1-101/+77
2023-12-03Search in src for existing prerequisites with unspecified outBoris Kolpackov1-3/+3
2023-11-29Add rule for extracting C and C++ predefsBoris Kolpackov1-0/+6
2023-11-29Minor cleanups in cc::compile_ruleBoris Kolpackov1-6/+3
2023-11-29Complete earlier fix for modules support in ClangBoris Kolpackov1-5/+2
2023-11-27Fix minor incompatibility with C++14Boris Kolpackov1-1/+1
2023-11-27Tweak module name from file name guessing logicBoris Kolpackov1-2/+41
As a heuristics, prefer shorter but exact partition name matches to longer but partial.
2023-11-22Deal with lack of module information due to deferred failureBoris Kolpackov1-9/+17
2023-11-22Fix incorrect _LIBCPP_VERSION macro name in commentsBoris Kolpackov1-1/+1
2023-11-22Add support for `import std` in Clang 17 or later with libc++Boris Kolpackov1-110/+208
2023-11-16Extend comment on Clang's -fmodules-embed-all-files useBoris Kolpackov1-0/+6
2023-11-15Switch from two-step module compilation to -fmodule-output for ClangBoris Kolpackov1-0/+35
2023-11-14Fix module sidebuild logic for ClangBoris Kolpackov1-10/+16
2023-11-09Fix more issues with C++20 named modules support in ClangBoris Kolpackov1-20/+10
2023-11-06Fix basic issues with C++20 named modules support in ClangBoris Kolpackov1-12/+5
Note that modules support now require Clang 16 or later.
2023-11-01Fix incorrect fsdir_rule::perform_update_direct() callsBoris Kolpackov1-1/+1
Also make fsdir_rule::perform_{update,clean}_direct() harder to misuse.
2023-09-11Invoke Clang to produce object files for module partitions similar to interfacesSwat SomeBug1-2/+7
Module interface and implementation partitions are like module interfaces so it's not surprising they require similar compilation steps. See GH PR #328 for background.
2023-08-22Consider *_inc{} target types as headers for rule match purposesBoris Kolpackov1-4/+4
2023-06-22Omit -Wno-gnu-line-marker for Apple Clang 14.0.3Boris Kolpackov1-2/+9
2023-06-14Use dry_run_option instead of dry_run during matchBoris Kolpackov1-1/+1
2023-06-13Disable -Wgnu-line-marker in Clang 15 triggered by -frewrite-includesBoris Kolpackov1-6/+43
See llvm-project issue 63284 for details.
2023-06-07Implement GCC module mapper protocol quoting/escaping (GH issues #203, #228)Boris Kolpackov1-14/+223
2023-06-05Remap Clang -Wunqualified-std-cast-call warning to -Wextra (GH issue #259)Boris Kolpackov1-0/+40
2023-06-02Fix another race in library metadata protocol logicBoris Kolpackov1-0/+8
2023-04-18Add support for Assembler with C Preprocessor (.S) compilationBoris Kolpackov1-31/+42
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-6/+7
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).
2023-04-05Allow creating context with bare minimum of initializationsBoris Kolpackov1-4/+4
This is used by bpkg to detect forwarded configurations without incurring the full context creation overhead.
2022-12-09Enable diagnostics color in GCC and ClangBoris Kolpackov1-2/+24
2022-11-25Fix diag buffer opining logic in cc::compile_ruleBoris Kolpackov1-5/+11
2022-11-23Rework diag_buffer interface to facilitate correct destruction orderBoris Kolpackov1-21/+24
2022-11-22Add support for Objective-C/C++ compilation in cc moduleBoris Kolpackov1-22/+32
2022-11-16Initial low verbosity diagnostics reworkBoris Kolpackov1-1/+1
2022-11-08Make process exit diagnostics consistentBoris Kolpackov1-4/+4
In particular, we now always print error message on non-0 exit except in cases where such exit is ignored.
2022-11-08Work around suspected GCC 12 mis-compilation (bug #107555)Boris Kolpackov1-14/+22
2022-11-08Allow passing fail diag record to diag_buffer::close()Boris Kolpackov1-11/+4
2022-11-08Tighten args const-ness in the run*() function familyBoris Kolpackov1-4/+0
2022-11-08Rework header dependency extraction with diagnostics bufferingBoris Kolpackov1-245/+412
2022-11-08More work on child process diagnostics bufferingBoris Kolpackov1-5/+4
2022-10-27Suppress (potential) bogus GCC 12 -Wrestrict warningsBoris Kolpackov1-3/+3
2022-10-27Initial work on child process diagnostics bufferingBoris Kolpackov1-36/+55
Currently this is implemented for C/C++ compile and link rules.
2022-10-10Preparatory work for public/private variable distinctionBoris Kolpackov1-0/+4
We still always use the public var_pool from context but where required, all access now goes through scope::var_pool().
2022-10-05Check for `-`-spelled cl.exe options in addition to `/`-spelledBoris Kolpackov1-19/+29
2022-07-26Remove unused codeBoris Kolpackov1-66/+0
2022-06-24Add ability to control -I translation in $x.lib_poptions()Boris Kolpackov1-5/+5
2022-06-24Add ability to get common interface options via $x.lib_poptions()Boris Kolpackov1-10/+25
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-06Minor terminology fix in diagnostics and commentsBoris Kolpackov1-1/+1