Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
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 | |
2021-03-16 | Define intermediate build results file cache interface | Boris Kolpackov | 1 | -41/+88 | |
2021-02-11 | Improve module name to file name matching logic | Boris Kolpackov | 1 | -9/+38 | |
2021-02-11 | Use lib{} group for installed libraries in make_header_sidebuild() | Boris Kolpackov | 1 | -23/+18 | |
2021-02-11 | Generalize process_libraries() to allow no picking installed library member | Boris Kolpackov | 1 | -13/+12 | |
2021-02-08 | Get rid of unused lambda capture | Boris Kolpackov | 1 | -1/+1 | |
2021-02-08 | Enter scope src directories into scope map | Boris Kolpackov | 1 | -14/+6 | |
2021-02-03 | Propagate relevant options/prerequisites to header unit sidebuilds | Boris Kolpackov | 1 | -24/+187 | |
2021-01-30 | Rework include translation support | Boris Kolpackov | 1 | -87/+106 | |
See the config.cxx.translate_include variable documentation in cxx/init.cxx for details. | |||||
2020-12-14 | Fix bug in create_new_target_locked() | Karen Arutyunov | 1 | -2/+2 | |
2020-12-11 | Minor module mapper fixes | Boris Kolpackov | 1 | -16/+25 | |
2020-12-11 | Add support for module interface-only libraries | Boris Kolpackov | 1 | -25/+72 | |
Also suppress generation of the object file in cases where we don't need it. | |||||
2020-12-03 | Fix modules support for installed libraries | Boris Kolpackov | 1 | -7/+17 | |
2020-12-01 | Modules-related refactoring | Boris Kolpackov | 1 | -47/+45 | |
2020-11-30 | Fix bug in module mapper | Boris Kolpackov | 1 | -1/+0 | |
2020-11-30 | Add support for module partitions | Boris Kolpackov | 1 | -65/+122 | |
2020-11-30 | Start adapting module mapper to latest GCC protocol | Boris Kolpackov | 1 | -25/+440 | |
2020-11-23 | Suppress duplicates when extracting library options (GitHub issue #114) | Boris Kolpackov | 1 | -27/+50 | |
2020-11-11 | Add ${c,cxx}.lib_{poptions,libs,rpaths}() functions | Boris Kolpackov | 1 | -24/+35 | |
These functions can be used to query library metadata for options and libraries that should be used when compiling/linking dependent targets, similar to how cc::{compile,link}_rule do it. With this support it should be possible to more or less re-create their semantics in ad hoc recipes. | |||||
2020-11-05 | Initial Emscripten support | Boris Kolpackov | 1 | -237/+286 | |
- Target: wasm32-emscripten (wasm32-unknown-emscripten). - Compiler id: clang-emscripten (type clang, variant emscripten, class gcc). - Ability to build executables (.js plus .wasm) and static libraries (.a). Set executable bit on the .js file (so it can be executed with a suitable binfmt interpreter). - Default config.bin.lib for wasm32-emscripten is static instead of both. - Full C++ exception support is enable unless disabled explicitly by the user with -s DISABLE_EXCEPTION_CATCHING=1|2. - The bin module registers the wasm{} target type for wasm32-emscripten. | |||||
2020-11-04 | Minor terminology tweak | Boris Kolpackov | 1 | -1/+1 | |
2020-09-24 | Give hints for common causes of "no rule to update ..." error | Boris Kolpackov | 1 | -2/+2 | |
2020-07-17 | Use -fexternc-nounwind by default for Clang targeting MSVC | Boris Kolpackov | 1 | -5/+27 | |
This option implements the 'c' part in /EHsc and is not a mere optimization; see Clang bug #45021 for details. | |||||
2020-07-13 | Fold translated *.std options into compiler mode options | Boris Kolpackov | 1 | -8/+4 | |
This way they are accessible in ad hoc recipes. | |||||
2020-07-07 | Make sure paths used to insert target are canonicalized | Boris Kolpackov | 1 | -3/+9 | |
2020-07-01 | Add additional diagnostics for unassigned path (GitHub issue #89) | Boris Kolpackov | 1 | -6/+10 | |