Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2023-11-01 | Fix incorrect fsdir_rule::perform_update_direct() calls | Boris Kolpackov | 1 | -1/+1 | |
Also make fsdir_rule::perform_{update,clean}_direct() harder to misuse. | |||||
2023-09-11 | Invoke Clang to produce object files for module partitions similar to interfaces | Swat SomeBug | 1 | -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-22 | Consider *_inc{} target types as headers for rule match purposes | Boris Kolpackov | 1 | -4/+4 | |
2023-06-22 | Omit -Wno-gnu-line-marker for Apple Clang 14.0.3 | Boris Kolpackov | 1 | -2/+9 | |
2023-06-14 | Use dry_run_option instead of dry_run during match | Boris Kolpackov | 1 | -1/+1 | |
2023-06-13 | Disable -Wgnu-line-marker in Clang 15 triggered by -frewrite-includes | Boris Kolpackov | 1 | -6/+43 | |
See llvm-project issue 63284 for details. | |||||
2023-06-07 | Implement GCC module mapper protocol quoting/escaping (GH issues #203, #228) | Boris Kolpackov | 1 | -14/+223 | |
2023-06-05 | Remap Clang -Wunqualified-std-cast-call warning to -Wextra (GH issue #259) | Boris Kolpackov | 1 | -0/+40 | |
2023-06-02 | Fix another race in library metadata protocol logic | Boris Kolpackov | 1 | -0/+8 | |
2023-04-18 | Add support for Assembler with C Preprocessor (.S) compilation | Boris Kolpackov | 1 | -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-10 | Fix inconsistent /usr/local/{include,lib} search | Boris Kolpackov | 1 | -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-05 | Allow creating context with bare minimum of initializations | Boris Kolpackov | 1 | -4/+4 | |
This is used by bpkg to detect forwarded configurations without incurring the full context creation overhead. | |||||
2022-12-09 | Enable diagnostics color in GCC and Clang | Boris Kolpackov | 1 | -2/+24 | |
2022-11-25 | Fix diag buffer opining logic in cc::compile_rule | Boris Kolpackov | 1 | -5/+11 | |
2022-11-23 | Rework diag_buffer interface to facilitate correct destruction order | Boris Kolpackov | 1 | -21/+24 | |
2022-11-22 | Add support for Objective-C/C++ compilation in cc module | Boris Kolpackov | 1 | -22/+32 | |
2022-11-16 | Initial low verbosity diagnostics rework | Boris Kolpackov | 1 | -1/+1 | |
2022-11-08 | Make process exit diagnostics consistent | Boris Kolpackov | 1 | -4/+4 | |
In particular, we now always print error message on non-0 exit except in cases where such exit is ignored. | |||||
2022-11-08 | Work around suspected GCC 12 mis-compilation (bug #107555) | Boris Kolpackov | 1 | -14/+22 | |
2022-11-08 | Allow passing fail diag record to diag_buffer::close() | Boris Kolpackov | 1 | -11/+4 | |
2022-11-08 | Tighten args const-ness in the run*() function family | Boris Kolpackov | 1 | -4/+0 | |
2022-11-08 | Rework header dependency extraction with diagnostics buffering | Boris Kolpackov | 1 | -245/+412 | |
2022-11-08 | More work on child process diagnostics buffering | Boris Kolpackov | 1 | -5/+4 | |
2022-10-27 | Suppress (potential) bogus GCC 12 -Wrestrict warnings | Boris Kolpackov | 1 | -3/+3 | |
2022-10-27 | Initial work on child process diagnostics buffering | Boris Kolpackov | 1 | -36/+55 | |
Currently this is implemented for C/C++ compile and link rules. | |||||
2022-10-10 | Preparatory work for public/private variable distinction | Boris Kolpackov | 1 | -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-05 | Check for `-`-spelled cl.exe options in addition to `/`-spelled | Boris Kolpackov | 1 | -19/+29 | |
2022-07-26 | Remove unused code | Boris Kolpackov | 1 | -66/+0 | |
2022-06-24 | Add ability to control -I translation in $x.lib_poptions() | Boris Kolpackov | 1 | -5/+5 | |
2022-06-24 | Add ability to get common interface options via $x.lib_poptions() | Boris Kolpackov | 1 | -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-06 | Minor terminology fix in diagnostics and comments | Boris Kolpackov | 1 | -1/+1 | |
2022-04-24 | Omit ignorable change detection for header units | Boris Kolpackov | 1 | -1/+9 | |
Since the checksum ignores preprocessor directives, this may cause us to ignore a change to an exported macro. | |||||
2022-04-19 | Use target recipe for auxiliary data storage during match-apply | Boris Kolpackov | 1 | -15/+26 | |
In particular, we now have separate auxiliary data storage for inner and outer operations. | |||||
2022-04-19 | Switch to using std::function for target::data_pad | Boris Kolpackov | 1 | -3/+0 | |
2022-04-19 | Optimize header cache some more by storing hash in key | Boris Kolpackov | 1 | -3/+19 | |
2022-04-19 | Skip find() inside target_set::insert*() if target is unlikely to be there | Boris Kolpackov | 1 | -2/+4 | |
2022-04-14 | Add header cache to cc::compile_rule::enter_header() | Boris Kolpackov | 1 | -28/+175 | |
2022-04-07 | Rename {match,execute}() to *_sync(), add *_complete() | Boris Kolpackov | 1 | -1/+1 | |
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-06 | Add support for rule hints | Boris Kolpackov | 1 | -1/+1 | |
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-07 | Add support for update=unmatch|match to ad hoc recipes | Boris Kolpackov | 1 | -3/+9 | |
2022-02-07 | Use target::as instead of static_cast everywhere | Boris Kolpackov | 1 | -5/+5 | |
2022-01-17 | Use UTF-8 as default input/source charset for C/C++ compilation | Boris Kolpackov | 1 | -27/+89 | |
2022-01-11 | Add note on MSVC warning C4819 | Boris Kolpackov | 1 | -0/+2 | |
2021-12-17 | Add TODO comment | Boris Kolpackov | 1 | -0/+5 | |
2021-12-14 | Clarify comment | Boris Kolpackov | 1 | -3/+2 | |
2021-12-06 | Recognize absolute Windows paths in make parser | Boris Kolpackov | 1 | -9/+20 | |
2021-11-30 | Add support for dynamic dependencies as byproduct of script body | Boris Kolpackov | 1 | -16/+22 | |
Specifically, the `depdb dyndep` builtin now has the --byproduct option (which must come first). In this mode only the --file input is supported. For example: obje{hello.o}: cxx{hello} {{ o = $path($>) t = $(o).t depdb dyndep --byproduct --what=header --default-type=h --file $t diag c++ ($<[0]) $cxx.path $cxx.poptions $cc.poptions $cc.coptions $cxx.coptions $cxx.mode -o $o -MD -MF $t -c $path($<[0]) }} Naturally, this mode does not support dynamic auto-generated prerequisites. If present, such prerequisites must be specified statically in the buildfile. Note also that the --default-prereq-type option has been rename to --default-type. | |||||
2021-11-28 | Avoid unnecessary work in depdb::close() if using static check_mtime() | Boris Kolpackov | 1 | -1/+1 | |
2021-11-28 | Generalize depdb::touch functionality to support custom timestamp | Boris Kolpackov | 1 | -1/+1 | |
2021-11-23 | Add support for dynamic dependencies in ad hoc Buildscript recipes | Boris Kolpackov | 1 | -725/+123 | |
Specifically, add the new `depdb dyndep` builtin that can be used to extract dynamic dependencies from a program run or a file. For example: obje{hello.o}: cxx{hello} {{ s = $path($<[0]) depdb dyndep $cxx.poptions $cc.poptions --what=header --default-prereq-type=h -- $cxx.path $cxx.poptions $cc.poptions $cxx.mode -M -MG $s diag c++ ($<[0]) o = $path($>) $cxx.path $cxx.poptions $cc.poptions $cc.coptions $cxx.coptions $cxx.mode -o $o -c $s }} Currently only the `make` dependency format is supported. |