Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
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 | 1 | -28/+134 | |
2023-12-07 | C++20 named modules support for MSVC, take 2 | Boris Kolpackov | 1 | -2/+1 | |
2023-11-29 | Add rule for extracting C and C++ predefs | Boris Kolpackov | 1 | -11/+48 | |
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 | 1 | -1/+2 | |
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 | -13/+33 | |
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 | -1/+6 | |
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/+41 | |
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 | 1 | -0/+47 | |
2022-10-13 | Optimize by going straight to public variable pool where applicable | Boris Kolpackov | 1 | -1/+4 | |
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 | 1 | -1/+0 | |
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-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/+5 | |
2021-10-01 | Add notion of internal scope, translate external -I to -isystem or equivalent | Boris Kolpackov | 1 | -2/+14 | |
2021-07-22 | Add note on new /std:c11 and /std:c17 MSVC options | Boris Kolpackov | 1 | -0/+5 | |
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 | 1 | -2/+2 | |
2021-04-20 | Track changes to environment in cc rules | Boris Kolpackov | 1 | -0/+1 | |
2021-01-30 | Rework include translation support | Boris Kolpackov | 1 | -4/+6 | |
See the config.cxx.translate_include variable documentation in cxx/init.cxx for details. | |||||
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-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 | -9/+5 | |
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-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 | -13/+11 | |
2020-02-24 | Work around bug in Clang 10 targeting MSVC in c++2a (LLVM bug #44956) | Boris Kolpackov | 1 | -1/+5 | |
2020-02-07 | Drop copyright notice from source code | Karen Arutyunov | 1 | -1/+0 | |
2020-02-03 | Add header/library search paths from compiler mode to sys_*_dirs | Boris Kolpackov | 1 | -3/+6 | |
2020-01-29 | Rename module_base to module, redo module boot/init argument passing | Boris Kolpackov | 1 | -22/+14 | |
2020-01-28 | Use scope::var_pool() | Boris Kolpackov | 1 | -67/+67 | |
2020-01-27 | Improve module loading API | Boris Kolpackov | 1 | -8/+6 | |
2019-11-05 | Add support for supplying MSVC IFCPATH equivalent | Boris Kolpackov | 1 | -0/+1 | |
2019-11-05 | Recognize latest C (2x) and C++ (2b) standards | Boris Kolpackov | 1 | -8/+14 | |
2019-10-21 | Add more information on C and C++ compiler mode options to manual | Boris Kolpackov | 1 | -0/+2 | |
2019-10-18 | Add ability to specify "compiler mode" options as part of config.{c,cxx} | Boris Kolpackov | 1 | -1/+3 | |
Such options are (normally) not overridden by buildfiles and are passed last (after cc.coptions and {c,cxx}.coptions) in the resulting command lines. They are also cross-hinted between config.c and config.cxx. For example: $ b config.cxx="g++ -m64" | |||||
2019-10-11 | Add support for clang-cl | Boris Kolpackov | 1 | -5/+11 | |
The compiler type is `msvc`, variant `clang`. | |||||
2019-10-07 | Pass MSVC system library search paths to linker if LIB envvar is unset | Boris Kolpackov | 1 | -5/+5 | |
2019-09-18 | Rename importable_headers variable to translatable_headers | Boris Kolpackov | 1 | -2/+2 | |
This name aligns better with the post-Cologne importable/translatable semantics. | |||||
2019-08-28 | Move c build system module to separate library | Karen Arutyunov | 1 | -0/+375 | |