diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2022-11-22 10:42:51 +0100 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2022-11-23 12:55:39 +0100 |
commit | b7367940f27a1059fd84ca5b463f7214b003dfb2 (patch) | |
tree | a8f407670ee5f2354f8cb4fbe17858c037b63a4b /doc/concepts | |
parent | 8bbccf0b88bed8f211b1de4a7440843f70a13472 (diff) | |
download | justbuild-b7367940f27a1059fd84ca5b463f7214b003dfb2.tar.gz |
Document the configuration transition in configure
The built-in rule configure carries out a full configuration
transition. While this is useful in quite a few situations,
care has to be taken to avoid conflicts on dependencies also
used in other ways by the calling target. Document this more
clearly in the documentation.
Diffstat (limited to 'doc/concepts')
-rw-r--r-- | doc/concepts/built-in-rules.org | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/doc/concepts/built-in-rules.org b/doc/concepts/built-in-rules.org index 28784193..14c48ec5 100644 --- a/doc/concepts/built-in-rules.org +++ b/doc/concepts/built-in-rules.org @@ -136,3 +136,19 @@ evaluating the given target, and thereby performs a configuration transition. It forwards all results (artifacts/runfiles/provides map) of the configured target to the upper context. The result of a target that uses this rule is the result of the target given in the ~"target"~ field (the configured target). + +As a full configuration transition is performed, the same care has +to be taken when using this rule as when writing a configuration +transition in a rule. Typically, this rule is used only at a +top-level target of a project and configures only variables internally +to the project. In any case, when using non-internal targets as +dependencies (i.e., targets that a caller of the ~"configure"~ +potentially might use as well), care should be taken that those +are only used in the initial configuration. Such preservation of +the configuraiton is necessary to avoid conflicts, if the targets +depended upon are visible in the ~"configure"~ target itself, e.g., +as link dependency (which almost always happens when depending on a +library). Even if a non-internal target depended upon is not visible +in the ~"configure"~ target itself, requesting it in a modified +configuration causes additional overhead by increasing the target +graph and potentially the action graph. |