aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cc/compile-rule.cxx
AgeCommit message (Collapse)AuthorFilesLines
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.
2020-07-07Make sure paths used to insert target are canonicalizedBoris Kolpackov1-3/+9
2020-07-01Add additional diagnostics for unassigned path (GitHub issue #89)Boris Kolpackov1-6/+10
2020-07-01Add additional diagnostics for disappearing header (GitHub issue #80)Boris Kolpackov1-0/+16
2020-06-26Handle #import in MSVC /showIncludes outputBoris Kolpackov1-7/+28
2020-06-25Fix warningBoris Kolpackov1-1/+1
2020-06-25Add more instrumentation for unassigned path raceBoris Kolpackov1-14/+41
2020-06-24Fix trace and clarify commentsBoris Kolpackov1-9/+12
2020-06-09Move C++ modules sidebuild to build/cc/build/modules/ subdirectoryBoris Kolpackov1-1/+1
2020-06-08Hash ad hoc prerequsites for ad hoc recipe change detectionBoris Kolpackov1-1/+1
2020-05-27Initial support for ad hoc recipes (still work in progress)Boris Kolpackov1-7/+7
2020-04-27Rework tool importation along with cli moduleBoris Kolpackov1-3/+3
Specifically, now config.<tool> (like config.cli) is handled by the import machinery (it is like a shorter alias for config.import.<tool>.<tool>.exe that we already had). And the cli module now uses that instead of custom logic. This also adds support for uniform tool metadata extraction that is handled by the import machinery. As a result, a tool that follows the "build2 way" can be imported with metadata by the buildfile and/or corresponding module without any tool-specific code or brittleness associated with parsing --version or similar outputs. See the cli tool/module for details. Finally, two new flavors of the import directive are now supported: import! triggers immediate importation skipping any rule-specific logic while import? is optional import (analogous to using?). Note that optional import is always immediate. There is also the import-specific metadata attribute which can be specified for these two import flavors in order to trigger metadata importation. For example: import? [metadata] cli = cli%exe{cli} if ($cli != [null]) info "cli version $($cli:cli.version)"