Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2022-04-20 | Get rid of unnecessary move() call | Boris Kolpackov | 1 | -1/+1 | |
2022-04-19 | Use target recipe for auxiliary data storage during match-apply | Boris Kolpackov | 5 | -43/+84 | |
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 | 3 | -9/+2 | |
2022-04-19 | Optimize header cache some more by storing hash in key | Boris Kolpackov | 2 | -4/+42 | |
2022-04-19 | Skip find() inside target_set::insert*() if target is unlikely to be there | Boris Kolpackov | 1 | -2/+4 | |
2022-04-15 | Adjust small vector limit in process_libraries() | Boris Kolpackov | 2 | -43/+86 | |
2022-04-15 | Get rid of target::dynamic_type() virtual function | Boris Kolpackov | 1 | -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-14 | Add header cache to cc::compile_rule::enter_header() | Boris Kolpackov | 3 | -32/+193 | |
2022-04-13 | Fix bug in previous commit | Boris Kolpackov | 1 | -1/+1 | |
2022-04-13 | Prune library graph traversal for recursively-binless libraries | Boris Kolpackov | 3 | -57/+213 | |
2022-04-13 | Add automatic interface dependency deduplication in cc::process_libraries() | Boris Kolpackov | 3 | -18/+92 | |
2022-04-07 | Rename {match,execute}() to *_sync(), add *_complete() | Boris Kolpackov | 2 | -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-06 | Work around Clang warnings | Boris Kolpackov | 1 | -0/+4 | |
2022-04-06 | Add support for rule hints | Boris Kolpackov | 9 | -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-30 | Infrastructure for library metadata support | Boris Kolpackov | 3 | -9/+334 | |
2022-03-28 | Respect dry-run in Windows assembly creation logic | Boris Kolpackov | 1 | -3/+8 | |
2022-03-28 | Add ability to customize pkg-config header and library search paths | Boris Kolpackov | 3 | -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-25 | Store bin.whole flag in pkg-config files | Boris Kolpackov | 2 | -14/+47 | |
2022-03-17 | Handle absolute POSIX paths in MinGW GCC search paths | Boris Kolpackov | 1 | -2/+34 | |
2022-03-17 | Diagnose invalid paths in -print-search-dirs output | Boris Kolpackov | 1 | -8/+28 | |
For example, some mis-configured MinGW GCC builds include /mingw/lib. | |||||
2022-03-15 | Don't consider mtime of failed to unmatch prerequisite in ad hoc recipe | Boris Kolpackov | 1 | -1/+2 | |
2022-03-10 | Add reverse_execute_prerequisites() variant | Boris Kolpackov | 1 | -5/+24 | |
2022-03-10 | Remove update variable from source of synthesized dependency | Boris Kolpackov | 1 | -1/+14 | |
2022-03-09 | Parallel implementation of update_during_match_prerequisites() | Boris Kolpackov | 1 | -2/+3 | |
2022-03-08 | Improve performance of update during match for multiple targets | Boris Kolpackov | 1 | -9/+5 | |
2022-03-08 | Update C/C++ headers and ad hoc sources during match by default | Boris Kolpackov | 1 | -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-08 | Add update=execute special value for cases where it's not default | Boris Kolpackov | 1 | -1/+1 | |
2022-03-07 | Add support for update=unmatch|match to ad hoc recipes | Boris Kolpackov | 2 | -7/+15 | |
2022-03-02 | Add update operation-specific variable with unmatch|match additional values | Boris Kolpackov | 3 | -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. | |||||
2022-02-16 | Get rid of stray variable | Boris Kolpackov | 1 | -2/+0 | |
2022-02-15 | Fix stray logic where libue{} was still considered member of libul{} | Boris Kolpackov | 1 | -10/+27 | |
Fixes GitHub issue #179. | |||||
2022-02-15 | Diagnose various misuses of library metadata protocol | Boris Kolpackov | 2 | -0/+13 | |
2022-02-10 | Add note on GNU ar deprecating -T in favor of --thin | Boris Kolpackov | 1 | -0/+3 | |
2022-02-09 | Improve comments | Boris Kolpackov | 1 | -3/+6 | |
2022-02-07 | Use target::as instead of static_cast everywhere | Boris Kolpackov | 1 | -5/+5 | |
2022-02-02 | Redo diagnostics without operator<< in namespace std | Boris Kolpackov | 2 | -0/+5 | |
2022-01-21 | Add another overload of to_target(), declare in functions-name.hxx | Boris Kolpackov | 1 | -3/+2 | |
2022-01-21 | Add search_new() and search_new_locked() variants of search() | Boris Kolpackov | 1 | -2/+2 | |
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 | |
2022-01-10 | Add psapi.lib and iphlpapi.lib to list of Windows system libraries | 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 | 2 | -17/+23 | |
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-24 | Fix bug in attempt to allow calling cc module functions during match | Boris Kolpackov | 1 | -2/+2 | |
2021-11-24 | Allow calling cc module functions during match | Boris Kolpackov | 1 | -2/+8 | |
An ad hoc recipe with dynamic dependency extraction (depdb-dyndep) executes its depdb preamble during match (but after matching all the prerequisites). | |||||
2021-11-23 | Add support for dynamic dependencies in ad hoc Buildscript recipes | Boris Kolpackov | 4 | -838/+140 | |
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. |