aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/bash
AgeCommit message (Collapse)AuthorFilesLines
2023-11-01Use match options for runtime/buildtime distinction when installing librariesBoris Kolpackov2-3/+3
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-07-20Change inner rule/prerequisites match order in install::file_ruleBoris Kolpackov1-1/+9
The old order messed up the for-install signaling logic. See the long comment in install::file_rule::apply_impl() for background and details.
2022-11-16Initial low verbosity diagnostics reworkBoris Kolpackov1-1/+1
2022-10-27Suppress (potential) bogus GCC 12 -Wrestrict warningsBoris Kolpackov1-2/+2
2022-09-02Add ability to specify `in` rule substitution as key-value pairsBoris Kolpackov2-1/+3
2022-08-17Get rid of Clang warningBoris Kolpackov1-0/+2
2022-08-02Make bash.in rule match exe{} without bash{} modules with hintBoris Kolpackov2-8/+9
2022-04-19Use target recipe for auxiliary data storage during match-applyBoris Kolpackov2-29/+34
In particular, we now have separate auxiliary data storage for inner and outer operations.
2022-04-19Switch to using std::function for target::data_padBoris Kolpackov1-2/+2
2022-04-18Avoid locking target set if in load phaseBoris Kolpackov1-0/+3
2022-04-15Get rid of target::dynamic_type() virtual functionBoris Kolpackov1-2/+5
Instead of overriding this function, derived targets must now set the dynamic_type variable to their static_type in their constructor body.
2022-04-06Add support for rule hintsBoris Kolpackov4-12/+14
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-02Add update operation-specific variable with unmatch|match additional valuesBoris Kolpackov1-1/+1
Note that the unmatch (match but do not update) and match (update during match) values are only supported by certain rules (and potentially only for certain prerequisite types). Additionally: - All operation-specific variables are now checked for false as an override for the prerequisite-specific include value. In particular, this can now be used to disable a prerequisite for update, for example: ./: exe{test}: update = false - The cc::link_rule now supports the update=match value for headers and ad hoc prerequisites. In particular, this can be used to make sure all the library headers are updated before matching any of its (or dependent's) object files.
2022-01-26Make bash module install into bin/<project>.bash/ to avoid clashesBoris Kolpackov3-19/+57
Also, expect the first component in the import path to be full project name even in case it has the .bash extension.
2021-11-03Add line processing customization hook to in::ruleBoris Kolpackov2-1/+5
2021-10-07Verify libraries and targets they are linked to a for-install-compatibleBoris Kolpackov1-1/+7
2021-10-07Minor install-related cleanupsBoris Kolpackov1-1/+4
2021-09-14Consistently install prerequisites from any scope by defaultBoris Kolpackov2-24/+2
It is also now possible to adjust this behavior with global config.install.scope override. Valid values for this variable are: project -- only from project strong -- from strong amalgamation weak -- from weak amalgamation global -- from all projects (default)
2021-05-04Replace int_ with intf_ and imp_ with impl_ in namesBoris Kolpackov1-4/+4
2021-03-19Redo entering of src directories into scope_mapBoris Kolpackov1-1/+1
2020-12-14Fix bug in create_new_target_locked()Karen Arutyunov1-1/+1
2020-10-15Add ability to specify fallback value for NULL substitutions with in.nullBoris Kolpackov2-3/+5
2020-09-24Give hints for common causes of "no rule to update ..." errorBoris Kolpackov1-1/+1
2020-07-17Fix race in path/mtime assignment and file_rule::match()Boris Kolpackov1-5/+2
2020-06-26Fix race in library metadata protocolBoris Kolpackov1-1/+1
Specifically, we need to check whether the prerequisite_member is ad hoc before checking whether it is NULL because ad hoc ones are blanked out (set to NULL) during execute.
2020-06-12Make order of imports stable in saved host build configurationBoris Kolpackov1-0/+2
2020-02-07Drop copyright notice from source codeKaren Arutyunov9-9/+0
2020-01-29Rename module_base to module, redo module boot/init argument passingBoris Kolpackov1-2/+1
2020-01-28Use scope::insert_rule()Boris Kolpackov1-16/+12
2020-01-27Improve module loading APIBoris Kolpackov1-2/+1
2019-08-28Make lib{build2} "implied interface dependency" of modulesBoris Kolpackov1-5/+3
This makes our compilation and linking command lines a little bit saner.
2019-08-28Add/update some module descriptionsKaren Arutyunov1-1/+1
2019-08-28Move bin build system module to separate libraryKaren Arutyunov1-0/+4
2019-08-26Make target types project-wideBoris Kolpackov1-2/+3
2019-08-23Introduce notion of build contextBoris Kolpackov2-10/+10
All non-const global state is now in class context and we can now have multiple independent builds going on at the same time.
2019-08-21Cleanup context.hxx and its usageBoris Kolpackov1-4/+6
2019-08-20Add build.version.interfaceBoris Kolpackov1-2/+4
This build system interface version should be embedded into build system modules as load_suffix.
2019-08-15Embed build core version into build system modules as load pathBoris Kolpackov1-4/+9
2019-08-01Move bash build system module to separate libraryKaren Arutyunov9-0/+855