mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-25 23:23:07 +00:00
76 lines
2.3 KiB
Bash
76 lines
2.3 KiB
Bash
|
# Since the same derivation can be depend on in multiple ways, we need to
|
||
|
# accumulate *each* role (i.e. host and target platforms relative the depending
|
||
|
# derivation) in which the derivation is used.
|
||
|
#
|
||
|
# The role is intened to be use as part of other variables names like
|
||
|
# - $NIX_${role_pre}_SOMETHING
|
||
|
# - $NIX_SOMETHING_${role_post}
|
||
|
|
||
|
function getRole() {
|
||
|
case $1 in
|
||
|
-1)
|
||
|
role_pre='BUILD_'
|
||
|
role_post='_FOR_BUILD'
|
||
|
;;
|
||
|
0)
|
||
|
role_pre=''
|
||
|
role_post=''
|
||
|
;;
|
||
|
1)
|
||
|
role_pre='TARGET_'
|
||
|
role_post='_FOR_TARGET'
|
||
|
;;
|
||
|
*)
|
||
|
echo "@name@: used as improper sort of dependency" >2
|
||
|
return 1
|
||
|
;;
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
# `hostOffset` describes how the host platform of the package is slid relative
|
||
|
# to the depending package. `targetOffset` likewise describes the target
|
||
|
# platform of the package. Both are brought into scope of the setup hook defined
|
||
|
# for dependency whose setup hook is being processed relative to the package
|
||
|
# being built.
|
||
|
|
||
|
function getHostRole() {
|
||
|
getRole "$hostOffset"
|
||
|
}
|
||
|
function getTargetRole() {
|
||
|
getRole "$targetOffset"
|
||
|
}
|
||
|
|
||
|
# `depHostOffset` describes how the host platform of the dependencies are slid
|
||
|
# relative to the depending package. `depTargetOffset` likewise describes the
|
||
|
# target platform of dependenices. Both are brought into scope of the
|
||
|
# environment hook defined for the dependency being applied relative to the
|
||
|
# package being built.
|
||
|
|
||
|
function getHostRoleEnvHook() {
|
||
|
getRole "$depHostOffset"
|
||
|
}
|
||
|
function getTargetRoleEnvHook() {
|
||
|
getRole "$depTargetOffset"
|
||
|
}
|
||
|
|
||
|
# This variant is inteneded specifically for code-prodocing tool wrapper scripts
|
||
|
# `NIX_@wrapperName@_@infixSalt@_TARGET_*` tracks this (needs to be an exported
|
||
|
# env var so can't use fancier data structures).
|
||
|
function getTargetRoleWrapper() {
|
||
|
case $targetOffset in
|
||
|
-1)
|
||
|
export NIX_@wrapperName@_@infixSalt@_TARGET_BUILD=1
|
||
|
;;
|
||
|
0)
|
||
|
export NIX_@wrapperName@_@infixSalt@_TARGET_HOST=1
|
||
|
;;
|
||
|
1)
|
||
|
export NIX_@wrapperName@_@infixSalt@_TARGET_TARGET=1
|
||
|
;;
|
||
|
*)
|
||
|
echo "@name@: used as improper sort of dependency" >2
|
||
|
return 1
|
||
|
;;
|
||
|
esac
|
||
|
}
|