aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/install/rule.cxx
AgeCommit message (Collapse)AuthorFilesLines
2023-11-03Work around lack of definition for static constexpr some moreBoris Kolpackov1-2/+4
2023-11-03Work around lack of definition for static constexprBoris Kolpackov1-2/+2
During bootstrap we compile in C++14 where it is not implicitly inline.
2023-11-01Use match options for runtime/buildtime distinction when installing librariesBoris Kolpackov1-93/+322
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/+32
The old order messed up the for-install signaling logic. See the long comment in install::file_rule::apply_impl() for background and details.
2023-06-15Remove stray whitespace from "uninstall" command nameBoris Kolpackov1-3/+3
2023-06-01Add inner_recipe for expressivenessBoris Kolpackov1-1/+1
2023-04-04Remove global override restriction from config.install.filterBoris Kolpackov1-8/+6
2023-04-04Add support for installation filtering (GH issue #147)Boris Kolpackov1-21/+45
2023-03-23Add support for relocatable installation in $install.resolve()Boris Kolpackov1-9/+37
2023-03-23Add support for relocatable installation manifestBoris Kolpackov1-18/+7
2023-03-01Add support for installation manifestBoris Kolpackov1-9/+32
2022-12-08Normalize extracted header/library search directories (GH issue #235)Boris Kolpackov1-3/+5
2022-11-23Rework diag_buffer interface to facilitate correct destruction orderBoris Kolpackov1-4/+4
2022-11-16Initial low verbosity diagnostics reworkBoris Kolpackov1-38/+104
2022-11-08Make process exit diagnostics consistentBoris Kolpackov1-8/+22
In particular, we now always print error message on non-0 exit except in cases where such exit is ignored.
2022-11-08More work on child process diagnostics bufferingBoris Kolpackov1-6/+11
2022-10-13Improve diagnosticsBoris Kolpackov1-0/+12
2022-10-13Switch to public/private variables modelBoris Kolpackov1-22/+23
Now unqualified variables are project-private and can be typified.
2022-05-23Cache build.host value in contextBoris Kolpackov1-2/+2
2022-04-19Switch recipe from std::function to butl::move_only_function_exBoris Kolpackov1-1/+1
2022-04-07Rename {match,execute}() to *_sync(), add *_complete()Boris Kolpackov1-5/+5
In particular, the match() rename makes sure it doesn't clash with rule::match() which, after removal of the hint argument in simple_rule, has exactly the same signature, thus making it error-prone to calling recursively.
2022-04-06Add support for rule hintsBoris Kolpackov1-6/+6
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-21Filter out exe{} prerequisites in install group rule similar to file ruleBoris Kolpackov1-0/+19
2022-03-07Fix operation-specific variables logic for inner/outer operationsBoris Kolpackov1-8/+17
2022-03-02Add update operation-specific variable with unmatch|match additional valuesBoris Kolpackov1-10/+26
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 Kolpackov1-1/+0
Also, expect the first component in the import path to be full project name even in case it has the .bash extension.
2021-11-04Do not apply install scope to update-for-install pre-operationBoris Kolpackov1-2/+2
2021-10-07Allow forcing installation of exe{} prerequisites of file targetsBoris Kolpackov1-1/+8
This can be achieved with prerequisite-specific install=true, for example: exe{foo}: exe{bar}: install = true # foo runs bar
2021-10-07Minor install-related cleanupsBoris Kolpackov1-2/+9
2021-10-06Do not install exe{} prerequisites of file targetsBoris Kolpackov1-0/+3
2021-09-28Adapt to libbutl headers extension change from .mxx to .hxxKaren Arutyunov1-1/+1
2021-09-14Consistently install prerequisites from any scope by defaultBoris Kolpackov1-14/+29
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)
2020-12-01Add clarifying commentBoris Kolpackov1-2/+3
2020-11-30Don't fail if unable to remove empty directory on uninstallBoris Kolpackov1-3/+15
2020-08-25Add missing move() callBoris Kolpackov1-1/+3
2020-07-09Relax prerequisite filtering semantics of aliases in test and install rulesBoris Kolpackov1-2/+1
2020-06-25Add more instrumentation for unassigned path raceBoris Kolpackov1-2/+2
2020-04-30Rename target::member to target::adhoc_memberBoris Kolpackov1-2/+6
2020-03-20Don't install ad hoc members with nonexistent timestampBoris Kolpackov1-3/+3
2020-03-20Don't install ad hoc members with unassigned pathsBoris Kolpackov1-8/+23
2020-03-17Adapt install_l() to mkanylink() semantics changeKaren Arutyunov1-8/+1
Now mkanylink() always interprets a relative target from the link directory.
2020-02-07Drop copyright notice from source codeKaren Arutyunov1-1/+0
2019-10-29Regularize and make accessible install/uninstall primitivesBoris Kolpackov1-32/+27
2019-08-23Introduce notion of build contextBoris Kolpackov1-9/+15
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-0/+1
2019-08-15Redo Windows implementation of install_l() to use uninstall_f()Boris Kolpackov1-52/+58
2019-08-15Fix bug in Windows implementation of install_l()Boris Kolpackov1-3/+3
2019-08-15Fix bug in mkanylink() usageBoris Kolpackov1-1/+9
2019-08-15Implement libs_paths symlinking support on WindowsBoris Kolpackov1-3/+41
Also, temporarily enable libs_paths::link on Windows for testing.
2019-07-05Move config, dist, test, and install modules into libraryKaren Arutyunov1-0/+1223