Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2022-04-15 | Get rid of target::dynamic_type() virtual function | Boris Kolpackov | 2 | -53/+131 | |
Instead of overriding this function, derived targets must now set the dynamic_type variable to their static_type in their constructor body. | |||||
2022-04-06 | Get rid of stray trailing commas | Boris Kolpackov | 1 | -6/+6 | |
2022-04-06 | Add support for rule hints | Boris Kolpackov | 6 | -38/+39 | |
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-02-11 | Remove unnecessary header inclusions | Boris Kolpackov | 1 | -0/+1 | |
2021-10-27 | Handle "common symbols" in symbol exporting .def generation rule | Boris Kolpackov | 1 | -15/+53 | |
2021-10-14 | Use tidier pc and def names instead of generic gen for .pc and .def generation | Boris Kolpackov | 1 | -1/+1 | |
2021-10-11 | Update bin.lib.version documentation | Boris Kolpackov | 1 | -3/+0 | |
2021-06-30 | Complete nm detection | Boris Kolpackov | 2 | -7/+22 | |
2021-06-30 | Move symbol exporting .def file rule to bin.def module, add support for MinGW | Boris Kolpackov | 3 | -153/+284 | |
The bin.def module is automatically loaded by the c and cxx modules for the *-win32-msvc target architecture. This allows automatically exporting all symbols for all Windows targets using the following setup (showing for cxx in this example): lib{foo}: libul{foo}: {hxx cxx}{**} ... lib{foo}: def{foo}: include = ($cxx.target.system == 'win32-msvc') def{foo}: libul{foo} if ($cxx.target.system == 'mingw32') cxx.loptions += -Wl,--export-all-symbols That is, we use the .def file generation for MSVC and the built-in support (--export-all-symbols) for MinGW. But it is also possible to use the .def file generation for MinGW. In this case we need to explicitly load the bin.def module (which should be done after loading c or cxx) and using the following setup: using bin.def # In root.build. lib{foo}: libul{foo}: {hxx cxx}{**} ... lib{foo}: def{foo}: include = ($cxx.target.class == 'windows') def{foo}: libul{foo} | |||||
2021-06-21 | Add support for automatic generation of symbol exporting .def file | Boris Kolpackov | 6 | -3/+910 | |
2021-05-04 | Replace int_ with intf_ and imp_ with impl_ in names | Boris Kolpackov | 1 | -2/+2 | |
2021-04-22 | Incorporate project environment checksum into cc::compiler_info cache key | Boris Kolpackov | 2 | -0/+21 | |
2021-04-20 | Detect environment changes in ad hoc recipes | Boris Kolpackov | 1 | -8/+20 | |
2021-04-20 | Disable bunch of bogus GCC warnings | Boris Kolpackov | 1 | -3/+0 | |
2021-04-07 | Register environment variables for hermetic build configurations | Boris Kolpackov | 3 | -4/+69 | |
2021-01-30 | Add std::{map, multimap} to types.hxx | Boris Kolpackov | 1 | -2/+0 | |
Seeing that std::map is becoming a common Buildfile variable type. | |||||
2021-01-22 | Redo bin.lib.version not to require empty key | Boris Kolpackov | 1 | -2/+5 | |
2021-01-11 | Fix libul{} rule diagnostics | Boris Kolpackov | 3 | -16/+44 | |
2020-12-15 | Cache more results of executing programs (compilers, etc) | Boris Kolpackov | 3 | -55/+111 | |
2020-12-11 | Add support for module interface-only libraries | Boris Kolpackov | 3 | -12/+27 | |
Also suppress generation of the object file in cases where we don't need it. | |||||
2020-12-04 | Fix bug in installed libraries matching logic | Boris Kolpackov | 2 | -3/+7 | |
2020-12-04 | Mark Buildfile functions as pure or impure | Boris Kolpackov | 1 | -1/+3 | |
2020-12-03 | Fix modules support for installed libraries | Boris Kolpackov | 2 | -7/+3 | |
2020-11-12 | Assign fixed extensions to wasm{} and pdb{} target types | Boris Kolpackov | 1 | -2/+28 | |
2020-11-06 | Resolve warning | Boris Kolpackov | 1 | -1/+1 | |
2020-11-06 | Keep executable bit on .wasm files when installing | Boris Kolpackov | 1 | -2/+4 | |
2020-11-05 | Initial Emscripten support | Boris Kolpackov | 1 | -138/+153 | |
- 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-08-24 | Use representation when passing target_triplet as hint | Boris Kolpackov | 1 | -1/+1 | |
2020-07-13 | Add ability to extend rule interface in source-compatible manner | Boris Kolpackov | 1 | -2/+2 | |
2020-06-18 | Complete NetBSD compatibility | Boris Kolpackov | 2 | -1/+6 | |
2020-06-18 | Add NetBSD compatibility | magenbluten | 1 | -1/+1 | |
2020-06-16 | Add $bin.link_member() function | Boris Kolpackov | 5 | -32/+138 | |
Given a linker output target type ("exe", "lib[as]", or "libu[eas]") return the target type of lib{} group member ("liba" or "libs") that will be picked when linking a lib{} group to this target type. | |||||
2020-06-16 | Move common functionality from cc to bin | Boris Kolpackov | 6 | -49/+265 | |
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 | -14/+16 | |
2020-05-22 | Make template definition available in all translation units where used | Boris Kolpackov | 2 | -2/+2 | |
We were trying to be clever but GCC 10's IPA-SRA optimization didn't like it. | |||||
2020-04-27 | Rework tool importation along with cli module | Boris Kolpackov | 1 | -1/+1 | |
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-04-11 | Pass LC_ALL=C when extracting locale-dependent information in bin module on ↵ | Karen Arutyunov | 1 | -9/+50 | |
POSIX | |||||
2020-03-31 | Fix bug in install_path() call (Windows-specific) | Boris Kolpackov | 1 | -2/+6 | |
2020-03-31 | Switch to project variable visibility by default | Boris Kolpackov | 1 | -30/+27 | |
2020-03-20 | Generate common .pc file in addition to static/staged when installing lib{} | Boris Kolpackov | 1 | -1/+1 | |
The common .pc file is produced by ignoring any static/shared-specific poptions and splitting loptions/libs into Libs/Libs.private. It is "best effort", in a sense that it's not guaranteed to be sufficient in all cases, but it will probably cover the majority of cases, even on Windows, thanks to automatic dllimport'ing of functions. | |||||
2020-03-17 | Rework config::{omitted,required,optional}() into unified config_lookup() | Boris Kolpackov | 1 | -72/+76 | |
2020-03-11 | Minor config variable lookup cleanups | Boris Kolpackov | 1 | -4/+4 | |
2020-02-24 | Extract version for lld-link | Boris Kolpackov | 3 | -8/+52 | |
2020-02-07 | Drop copyright notice from source code | Karen Arutyunov | 11 | -11/+0 | |
2020-01-29 | Rename module_base to module, redo module boot/init argument passing | Boris Kolpackov | 1 | -30/+21 | |
2020-01-28 | Use scope::var_pool() | Boris Kolpackov | 1 | -12/+12 | |
2020-01-28 | Use scope::insert_rule() | Boris Kolpackov | 1 | -2/+2 | |
2020-01-27 | See through lib{} group during dist | Boris Kolpackov | 2 | -3/+11 | |
2020-01-27 | Improve module loading API | Boris Kolpackov | 1 | -26/+12 | |