Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2024-05-14 | Add /Zc:preprocessor in experimental cxx.std mode from MSVC 17.9 (19.39) | Boris Kolpackov | 1 | -0/+6 | |
For background, see: https://developercommunity.visualstudio.com/t/Please-clarify-ifwhen-Zc:preprocessor/10537317 | |||||
2024-05-14 | Map C23/C2X to /std:clatest starting from MSVC 17.9 (19.39) | Boris Kolpackov | 1 | -3/+3 | |
In particular, this option enables C23 typeof support. | |||||
2024-02-26 | Add ability to serialize compilation/linking in cc rules | Boris Kolpackov | 1 | -0/+1 | |
Specifically, both the C/C++ compiler and link rules now recognize the cc.serialize boolean variable which instructs them to compiler/link serially with regards to any other recipe. This is primarily useful when compiling large translation units or linking large binaries that require so much memory that doing that in parallel with other compilation/linking jobs is likely to summon the OOM killer. For example: obj{memory-hog}: cc.serialize = true | |||||
2024-01-10 | Fix bunch of typos | Boris Kolpackov | 1 | -2/+2 | |
2024-01-08 | Add {bin,c,cxx}.types submodules that only register target types | Boris Kolpackov | 2 | -44/+137 | |
2023-12-14 | Allow enabling C++ modules for C++20 and later std.cxx values | Boris Kolpackov | 1 | -89/+236 | |
2023-12-07 | C++20 named modules support for MSVC, take 2 | Boris Kolpackov | 1 | -20/+19 | |
2023-11-29 | Add rule for extracting C and C++ predefs | Boris Kolpackov | 2 | -10/+49 | |
2023-11-09 | Fix more issues with C++20 named modules support in Clang | Boris Kolpackov | 1 | -14/+9 | |
2023-11-06 | Fix basic issues with C++20 named modules support in Clang | Boris Kolpackov | 1 | -1/+11 | |
Note that modules support now require Clang 16 or later. | |||||
2023-08-22 | Consider *_inc{} target types as headers for rule match purposes | Boris Kolpackov | 1 | -0/+1 | |
2023-08-22 | Add abstract c_inc{} and cxx_inc{} target types | Boris Kolpackov | 3 | -3/+36 | |
These abstract base target types are meant for deriving additional target types (for example, Qt moc{}) that can be #include'd in C and C++ translation units, respectively. In particular, only such targets will be considered to reverse-lookup extensions to target types (see dyndep_rule::map_extension() for background). | |||||
2023-07-27 | Recognize cNN/c++NN in addition to NN in c.std/cxx.std | Boris Kolpackov | 1 | -21/+39 | |
Also recognize 23 in addition to 2x for C23. | |||||
2023-06-22 | Map cxx.std=26 to -std=c++2c for GCC and Clang | Boris Kolpackov | 1 | -3/+7 | |
2023-04-21 | Make sure main module_functions entry is after submodules | Boris Kolpackov | 1 | -1/+1 | |
2023-04-18 | Add support for Assembler with C Preprocessor (.S) compilation | Boris Kolpackov | 1 | -0/+4 | |
Specifically, the c module now provides the c.as-cpp submodules which can be loaded in order to register the S{} target type and enable Assembler with C Preprocessor compilation in the c compile rule. For details, refer to "Assembler with C Preprocessor Compilation" in the manual. | |||||
2022-11-22 | Add support for Objective-C/C++ compilation in cc module | Boris Kolpackov | 4 | -4/+79 | |
2022-10-13 | Optimize by going straight to public variable pool where applicable | Boris Kolpackov | 1 | -3/+6 | |
2022-04-15 | Get rid of target::dynamic_type() virtual function | Boris Kolpackov | 1 | -10/+25 | |
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 | 1 | -1/+1 | |
2022-04-06 | Add support for rule hints | Boris Kolpackov | 2 | -6/+5 | |
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-28 | Add ability to customize pkg-config header and library search paths | Boris Kolpackov | 1 | -0/+6 | |
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. | |||||
2021-10-14 | Map latest to -std=c++2b from Clang 13, /std:c++20 from MSVC 16.11 | Boris Kolpackov | 1 | -17/+16 | |
2021-10-04 | Document internal scope functionality | Boris Kolpackov | 1 | -1/+1 | |
2021-10-04 | Optimize internal scope implementation | Boris Kolpackov | 1 | -2/+2 | |
2021-10-04 | Add support for treating specific libraries as always internal | Boris Kolpackov | 1 | -1/+37 | |
2021-10-01 | Add notion of internal scope, translate external -I to -isystem or equivalent | Boris Kolpackov | 1 | -0/+72 | |
2021-07-22 | Update C++ standard mapping for latest versions of compilers | Boris Kolpackov | 1 | -17/+31 | |
2021-05-13 | Rename sys_inc_dirs to sys_hdr_dirs for consistency | Boris Kolpackov | 1 | -4/+4 | |
2021-05-04 | Replace int_ with intf_ and imp_ with impl_ in names | Boris Kolpackov | 2 | -6/+6 | |
2021-04-20 | Track changes to environment in cc rules | Boris Kolpackov | 1 | -0/+1 | |
2021-04-15 | Disable modules support in VC 16.8 and later due to options change | Boris Kolpackov | 1 | -2/+5 | |
See GitHub issue #134 for background. | |||||
2021-02-15 | Cosmetic change | Boris Kolpackov | 1 | -1/+1 | |
2021-02-09 | Allow overriding cxx.features.modules with config.cxx.features.modules | Boris Kolpackov | 1 | -11/+60 | |
2021-01-30 | Rework include translation support | Boris Kolpackov | 1 | -8/+36 | |
See the config.cxx.translate_include variable documentation in cxx/init.cxx for details. | |||||
2021-01-19 | Adjust C++20 modules enablement for GCC | Boris Kolpackov | 1 | -14/+5 | |
2021-01-14 | Pass /Zc:__cplusplus by default starting from VC 15.7 (GitHub issue #107) | Boris Kolpackov | 1 | -0/+11 | |
This can be overridden by passing a variant of this option as part of the compiler mode options. | |||||
2020-12-11 | Add support for module interface-only libraries | Boris Kolpackov | 1 | -0/+2 | |
Also suppress generation of the object file in cases where we don't need it. | |||||
2020-11-30 | Start adapting module mapper to latest GCC protocol | Boris Kolpackov | 1 | -4/+9 | |
2020-07-16 | Save original compiler path/mode in {c,cxx}.config.path/mode | Boris Kolpackov | 1 | -0/+2 | |
It turns out that when propagating {c,cxx}.config in tests we don't want to propagate any options (such as *.std) that have been folded into our project's mode. | |||||
2020-07-13 | Fold translated *.std options into compiler mode options | Boris Kolpackov | 1 | -16/+17 | |
This way they are accessible in ad hoc recipes. | |||||
2020-07-01 | Add *.export.imp_libs to get rid of dual *.export.libs semantics | Boris Kolpackov | 1 | -0/+2 | |
2020-06-22 | Disable Clang C++20 modules support unless explicitly forced | Boris Kolpackov | 1 | -5/+11 | |
2020-06-22 | Add version mapping for Apple Clang 11.0.3 | Boris Kolpackov | 1 | -3/+0 | |
2020-06-12 | Make order of imports stable in saved host build configuration | Boris Kolpackov | 1 | -0/+2 | |
2020-06-02 | Add process_path_ex with program stable name and checksum | Boris Kolpackov | 1 | -4/+4 | |
2020-04-27 | Rework tool importation along with cli module | Boris Kolpackov | 1 | -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)" | |||||
2020-03-31 | Switch to project variable visibility by default | Boris Kolpackov | 1 | -22/+19 | |
2020-02-24 | Work around bug in Clang 10 targeting MSVC in c++2a (LLVM bug #44956) | Boris Kolpackov | 1 | -5/+24 | |
2020-02-21 | Define __cpp_modules=201810 (merged modules) for MSVC 16.4 | Boris Kolpackov | 1 | -8/+11 | |