aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/bin
AgeCommit message (Collapse)AuthorFilesLines
2024-02-22Diagnose instead of asserting lib{} group with no membersBoris Kolpackov1-1/+3
Fixes GH issue #361.
2024-01-08Add {bin,c,cxx}.types submodules that only register target typesBoris Kolpackov2-44/+82
2023-12-03Reimplement search_existing() functions via target_type::searchBoris Kolpackov2-5/+5
This allows us to automatically get the target type-specific behavior with regards to the out_only semantics (added in the previous commit) instead of passing it explicitly from each call site.
2023-11-01Use match options for runtime/buildtime distinction when installing librariesBoris Kolpackov1-0/+15
Specifically, now, if a library is installed solely as a prerequisite of an executable (potentially recursively), then only its runtime files are installed omitting everything buildtime-related (static/import libraries, non-versioned symlinks for shared libraries, pkg-config files, headers, etc). If you are familiar with the runtime and -dev/-devel package splits for libraries in Debian/Fedora, this is an analogous semantics.
2023-09-28Don't mark rdata symbols DATA in MSVC .def file (GH issue #315)Boris Kolpackov1-1/+9
2023-08-03Document target types in manual (GH issue #309)Boris Kolpackov1-0/+3
2023-04-21Make sure main module_functions entry is after submodulesBoris Kolpackov1-1/+1
2023-03-22Initial work on relocatable install: config.install.relocatable and rpathBoris Kolpackov1-0/+3
2022-12-06Handle bin.whole when specified for interface dependenciesBoris Kolpackov1-6/+6
2022-12-01Fix corner case in distributing via obj{}, libul{} groupsBoris Kolpackov4-3/+102
2022-11-23Rework diag_buffer interface to facilitate correct destruction orderBoris Kolpackov1-16/+14
2022-11-16Initial low verbosity diagnostics reworkBoris Kolpackov1-1/+5
2022-11-08Make process exit diagnostics consistentBoris Kolpackov1-1/+1
In particular, we now always print error message on non-0 exit except in cases where such exit is ignored.
2022-11-08Tighten args const-ness in the run*() function familyBoris Kolpackov1-3/+0
2022-11-08Rework header dependency extraction with diagnostics bufferingBoris Kolpackov1-4/+4
2022-11-08More work on child process diagnostics bufferingBoris Kolpackov4-65/+157
2022-10-27Initial work on child process diagnostics bufferingBoris Kolpackov1-0/+3
Currently this is implemented for C/C++ compile and link rules.
2022-10-25Adapt to butl::semantic_version API changeKaren Arutyunov1-2/+5
2022-10-13Optimize by going straight to public variable pool where applicableBoris Kolpackov1-6/+21
2022-10-10Preparatory work for public/private variable distinctionBoris Kolpackov1-0/+4
We still always use the public var_pool from context but where required, all access now goes through scope::var_pool().
2022-07-21Make LLVM tools (ar, lld, etc) detection more robustBoris Kolpackov1-6/+18
2022-06-24Make libul{} rule match without hintBoris Kolpackov3-31/+11
In the end, the extra jumping through the hoops doesn't justify the extra safety we gain. The only plausible accidental mistake is making libul{} a dependency of ./ but then we don't prevent the same for libue{}, which also doesn't make much sense. Though, the consequences of doing this for libul{} could be more severe, like messed up for-install'ness. Oh, well, I guess people will just have to pay attention (this could be a good check for the linter we've been thinking about).
2022-06-24Match rule to libul{} with explicit bin.metadata hintBoris Kolpackov5-11/+110
This rule picks, matches, and unmatches (if possible) a member for the purpose of making its metadata (for example, library's poptions, if it's one of the cc libraries) available.
2022-04-15Get rid of target::dynamic_type() virtual functionBoris Kolpackov2-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-06Get rid of stray trailing commasBoris Kolpackov1-6/+6
2022-04-06Add support for rule hintsBoris Kolpackov6-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-11Remove unnecessary header inclusionsBoris Kolpackov1-0/+1
2021-10-27Handle "common symbols" in symbol exporting .def generation ruleBoris Kolpackov1-15/+53
2021-10-14Use tidier pc and def names instead of generic gen for .pc and .def generationBoris Kolpackov1-1/+1
2021-10-11Update bin.lib.version documentationBoris Kolpackov1-3/+0
2021-06-30Complete nm detectionBoris Kolpackov2-7/+22
2021-06-30Move symbol exporting .def file rule to bin.def module, add support for MinGWBoris Kolpackov3-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-21Add support for automatic generation of symbol exporting .def fileBoris Kolpackov6-3/+910
2021-05-04Replace int_ with intf_ and imp_ with impl_ in namesBoris Kolpackov1-2/+2
2021-04-22Incorporate project environment checksum into cc::compiler_info cache keyBoris Kolpackov2-0/+21
2021-04-20Detect environment changes in ad hoc recipesBoris Kolpackov1-8/+20
2021-04-20Disable bunch of bogus GCC warningsBoris Kolpackov1-3/+0
2021-04-07Register environment variables for hermetic build configurationsBoris Kolpackov3-4/+69
2021-01-30Add std::{map, multimap} to types.hxxBoris Kolpackov1-2/+0
Seeing that std::map is becoming a common Buildfile variable type.
2021-01-22Redo bin.lib.version not to require empty keyBoris Kolpackov1-2/+5
2021-01-11Fix libul{} rule diagnosticsBoris Kolpackov3-16/+44
2020-12-15Cache more results of executing programs (compilers, etc)Boris Kolpackov3-55/+111
2020-12-11Add support for module interface-only librariesBoris Kolpackov3-12/+27
Also suppress generation of the object file in cases where we don't need it.
2020-12-04Fix bug in installed libraries matching logicBoris Kolpackov2-3/+7
2020-12-04Mark Buildfile functions as pure or impureBoris Kolpackov1-1/+3
2020-12-03Fix modules support for installed librariesBoris Kolpackov2-7/+3
2020-11-12Assign fixed extensions to wasm{} and pdb{} target typesBoris Kolpackov1-2/+28
2020-11-06Resolve warningBoris Kolpackov1-1/+1
2020-11-06Keep executable bit on .wasm files when installingBoris Kolpackov1-2/+4
2020-11-05Initial Emscripten supportBoris Kolpackov1-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.