aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cc/compile-rule.cxx
AgeCommit message (Collapse)AuthorFilesLines
2021-12-14Clarify commentBoris Kolpackov1-3/+2
2021-12-06Recognize absolute Windows paths in make parserBoris Kolpackov1-9/+20
2021-11-30Add support for dynamic dependencies as byproduct of script bodyBoris Kolpackov1-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-28Avoid unnecessary work in depdb::close() if using static check_mtime()Boris Kolpackov1-1/+1
2021-11-28Generalize depdb::touch functionality to support custom timestampBoris Kolpackov1-1/+1
2021-11-23Add support for dynamic dependencies in ad hoc Buildscript recipesBoris Kolpackov1-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-16Minor optimizations in cc::compile_ruleBoris Kolpackov1-5/+4
2021-11-08Incorporate derived target types into generated header logicBoris Kolpackov1-3/+25
2021-11-05Keep multiple prefixless entries for generated header mappingBoris Kolpackov1-33/+72
2021-10-07Verify libraries and targets they are linked to a for-install-compatibleBoris Kolpackov1-0/+1
2021-10-05Get rid of no longer necessary diagnosticsBoris Kolpackov1-38/+2
2021-10-04Optimize internal scope implementationBoris Kolpackov1-13/+9
2021-10-04Add support for treating specific libraries as always internalBoris Kolpackov1-6/+27
2021-10-01Add notion of internal scope, translate external -I to -isystem or equivalentBoris Kolpackov1-28/+244
2021-09-20Improve MSVC /showIncludes output handlingBoris Kolpackov1-13/+35
2021-08-10Complete process_libraries() duplicate suppression workBoris Kolpackov1-24/+45
2021-08-09Merge library hashing and collection into single traversal passBoris Kolpackov1-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-05Implement traversal pruning in process_libraries()Boris Kolpackov1-19/+38
2021-05-13Rename sys_inc_dirs to sys_hdr_dirs for consistencyBoris Kolpackov1-13/+13
2021-05-13Add ${c,cxx}.find_system_{header,library}() functionsBoris Kolpackov1-0/+15
2021-05-06See through utility libraries when looking for module interfacesBoris Kolpackov1-48/+61
2021-05-04Handle duplicate suppression of multi-element libraries (-l foo)Boris Kolpackov1-4/+5
See GitHub issue #114 for context.
2021-04-20Track changes to environment in cc rulesBoris Kolpackov1-1/+6
2021-04-07Register environment variables for hermetic build configurationsBoris Kolpackov1-1/+1
2021-03-20Don't create file cache entry for non-existent .ii fileBoris Kolpackov1-1/+7
2021-03-19Redo entering of src directories into scope_mapBoris Kolpackov1-10/+20
2021-03-18Move file_cache::write:close() call to correct place in cc::compile_ruleBoris Kolpackov1-7/+5
2021-03-16Define intermediate build results file cache interfaceBoris Kolpackov1-41/+88
2021-02-11Improve module name to file name matching logicBoris Kolpackov1-9/+38
2021-02-11Use lib{} group for installed libraries in make_header_sidebuild()Boris Kolpackov1-23/+18
2021-02-11Generalize process_libraries() to allow no picking installed library memberBoris Kolpackov1-13/+12
2021-02-08Get rid of unused lambda captureBoris Kolpackov1-1/+1
2021-02-08Enter scope src directories into scope mapBoris Kolpackov1-14/+6
2021-02-03Propagate relevant options/prerequisites to header unit sidebuildsBoris Kolpackov1-24/+187
2021-01-30Rework include translation supportBoris Kolpackov1-87/+106
See the config.cxx.translate_include variable documentation in cxx/init.cxx for details.
2020-12-14Fix bug in create_new_target_locked()Karen Arutyunov1-2/+2
2020-12-11Minor module mapper fixesBoris Kolpackov1-16/+25
2020-12-11Add support for module interface-only librariesBoris Kolpackov1-25/+72
Also suppress generation of the object file in cases where we don't need it.
2020-12-03Fix modules support for installed librariesBoris Kolpackov1-7/+17
2020-12-01Modules-related refactoringBoris Kolpackov1-47/+45
2020-11-30Fix bug in module mapperBoris Kolpackov1-1/+0
2020-11-30Add support for module partitionsBoris Kolpackov1-65/+122
2020-11-30Start adapting module mapper to latest GCC protocolBoris Kolpackov1-25/+440
2020-11-23Suppress duplicates when extracting library options (GitHub issue #114)Boris Kolpackov1-27/+50
2020-11-11Add ${c,cxx}.lib_{poptions,libs,rpaths}() functionsBoris Kolpackov1-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-05Initial Emscripten supportBoris Kolpackov1-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-04Minor terminology tweakBoris Kolpackov1-1/+1
2020-09-24Give hints for common causes of "no rule to update ..." errorBoris Kolpackov1-2/+2
2020-07-17Use -fexternc-nounwind by default for Clang targeting MSVCBoris Kolpackov1-5/+27
This option implements the 'c' part in /EHsc and is not a mere optimization; see Clang bug #45021 for details.
2020-07-13Fold translated *.std options into compiler mode optionsBoris Kolpackov1-8/+4
This way they are accessible in ad hoc recipes.