Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
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. | |||||
2021-11-16 | Minor optimizations in cc::compile_rule | Boris Kolpackov | 1 | -5/+4 | |
2021-11-08 | Incorporate derived target types into generated header logic | Boris Kolpackov | 1 | -3/+25 | |
2021-11-05 | Keep multiple prefixless entries for generated header mapping | Boris Kolpackov | 1 | -33/+72 | |
2021-10-07 | Verify libraries and targets they are linked to a for-install-compatible | Boris Kolpackov | 1 | -0/+1 | |
2021-10-05 | Get rid of no longer necessary diagnostics | Boris Kolpackov | 1 | -38/+2 | |
2021-10-04 | Optimize internal scope implementation | Boris Kolpackov | 1 | -13/+9 | |
2021-10-04 | Add support for treating specific libraries as always internal | Boris Kolpackov | 1 | -6/+27 | |
2021-10-01 | Add notion of internal scope, translate external -I to -isystem or equivalent | Boris Kolpackov | 1 | -28/+244 | |
2021-09-20 | Improve MSVC /showIncludes output handling | Boris Kolpackov | 1 | -13/+35 | |
2021-08-10 | Complete process_libraries() duplicate suppression work | Boris Kolpackov | 1 | -24/+45 | |
2021-08-09 | Merge library hashing and collection into single traversal pass | Boris Kolpackov | 1 | -2/+2 | |
It turns out this is a lot faster on deeply-dependent libraries like Boost while not having any noticeable differences for "sane" projects. | |||||
2021-08-05 | Implement traversal pruning in process_libraries() | Boris Kolpackov | 1 | -19/+38 | |
2021-05-13 | Rename sys_inc_dirs to sys_hdr_dirs for consistency | Boris Kolpackov | 1 | -13/+13 | |
2021-05-13 | Add ${c,cxx}.find_system_{header,library}() functions | Boris Kolpackov | 1 | -0/+15 | |
2021-05-06 | See through utility libraries when looking for module interfaces | Boris Kolpackov | 1 | -48/+61 | |
2021-05-04 | Handle duplicate suppression of multi-element libraries (-l foo) | Boris Kolpackov | 1 | -4/+5 | |
See GitHub issue #114 for context. | |||||
2021-04-20 | Track changes to environment in cc rules | Boris Kolpackov | 1 | -1/+6 | |
2021-04-07 | Register environment variables for hermetic build configurations | Boris Kolpackov | 1 | -1/+1 | |
2021-03-20 | Don't create file cache entry for non-existent .ii file | Boris Kolpackov | 1 | -1/+7 | |
2021-03-19 | Redo entering of src directories into scope_map | Boris Kolpackov | 1 | -10/+20 | |
2021-03-18 | Move file_cache::write:close() call to correct place in cc::compile_rule | Boris Kolpackov | 1 | -7/+5 | |