···4# that case, it is cheaper/better to not repeat this step and let the forked
5# wrapped binary just inherit the work of the forker's wrapper script.
67-# Accumulate prefixes for taking in the right input parameters. See setup-hook
00000000000000000000008# for details.
9-declare -a role_prefixes=()
10-if [[ -n "${NIX_CC_WRAPPER_@infixSalt@_TARGET_BUILD:-}" ]]; then
11- role_prefixes+=(_BUILD)
12fi
13-if [[ -n "${NIX_CC_WRAPPER_@infixSalt@_TARGET_HOST:-}" ]]; then
14- role_prefixes+=('')
15fi
16-if [[ -n "${NIX_CC_WRAPPER_@infixSalt@_TARGET_TARGET:-}" ]]; then
17- role_prefixes+=(_TARGET)
18fi
1920-# For each role we serve, we accumulate the input parameters into our own
21-# cc-wrapper-derivation-specific environment variables.
22-for pre in "${role_prefixes[@]}"; do
23- # We need to mangle names for hygiene, but also take parameters/overrides
24- # from the environment.
25- slurpUnsalted () {
26- case "$1" in
27- CC_WRAPPER_*)
28- local firstPre=NIX_CC_WRAPPER_
29- local varname="${1#CC_WRAPPER_}"
30- ;;
31- LD_WRAPPER_*)
32- local firstPre=NIX_LD_WRAPPER_
33- local varname="${1#LD_WRAPPER_}"
34- ;;
35- *)
36- local firstPre=NIX_
37- local varname="$1"
38- ;;
39- esac
40- local inputVar="${firstPre}${pre}${varname}"
41- local outputVar="${firstPre}@infixSalt@_${varname}"
42- local delimiter=''
43- if [[ -n "${!outputVar:-}" && -n "${!inputVar:-}" ]]; then
44- delimiter=' '
45 fi
46- # Easiest to just do this to deal with either the input or (old) output.
47- set +u
48- export ${outputVar}+="${delimiter}${!inputVar}"
49- set -u
50- }
51-52- slurpUnsalted CC_WRAPPER_START_HOOK
53- slurpUnsalted CC_WRAPPER_EXEC_HOOK
54- slurpUnsalted LD_WRAPPER_START_HOOK
55- slurpUnsalted LD_WRAPPER_EXEC_HOOK
56-57- slurpUnsalted CFLAGS_COMPILE
58- slurpUnsalted CFLAGS_LINK
59- slurpUnsalted CXXSTDLIB_COMPILE
60- slurpUnsalted CXXSTDLIB_LINK
61- slurpUnsalted GNATFLAGS_COMPILE
62- slurpUnsalted IGNORE_LD_THROUGH_GCC
63- slurpUnsalted LDFLAGS
64- slurpUnsalted LDFLAGS_BEFORE
65- slurpUnsalted LDFLAGS_AFTER
66- slurpUnsalted LDFLAGS_HARDEN
67-68- slurpUnsalted SET_BUILD_ID
69- slurpUnsalted DONT_SET_RPATH
70- slurpUnsalted ENFORCE_NO_NATIVE
71done
72-unset -f slurpUnsalted
7374# `-B@out@/bin' forces cc to use ld-wrapper.sh when calling ld.
75-export NIX_@infixSalt@_CFLAGS_COMPILE="-B@out@/bin/ $NIX_@infixSalt@_CFLAGS_COMPILE"
7677# Export and assign separately in order that a failing $(..) will fail
78# the script.
7980if [ -e @out@/nix-support/libc-cflags ]; then
81- export NIX_@infixSalt@_CFLAGS_COMPILE
82 NIX_@infixSalt@_CFLAGS_COMPILE="$(< @out@/nix-support/libc-cflags) $NIX_@infixSalt@_CFLAGS_COMPILE"
83fi
8485if [ -e @out@/nix-support/cc-cflags ]; then
86- export NIX_@infixSalt@_CFLAGS_COMPILE
87 NIX_@infixSalt@_CFLAGS_COMPILE="$(< @out@/nix-support/cc-cflags) $NIX_@infixSalt@_CFLAGS_COMPILE"
88fi
8990if [ -e @out@/nix-support/gnat-cflags ]; then
91- export NIX_@infixSalt@_GNATFLAGS_COMPILE
92 NIX_@infixSalt@_GNATFLAGS_COMPILE="$(< @out@/nix-support/gnat-cflags) $NIX_@infixSalt@_GNATFLAGS_COMPILE"
93fi
9495if [ -e @out@/nix-support/libc-ldflags ]; then
96- export NIX_@infixSalt@_LDFLAGS
97 NIX_@infixSalt@_LDFLAGS+=" $(< @out@/nix-support/libc-ldflags)"
98fi
99100if [ -e @out@/nix-support/cc-ldflags ]; then
101- export NIX_@infixSalt@_LDFLAGS
102 NIX_@infixSalt@_LDFLAGS+=" $(< @out@/nix-support/cc-ldflags)"
103fi
104105if [ -e @out@/nix-support/libc-ldflags-before ]; then
106- export NIX_@infixSalt@_LDFLAGS_BEFORE
107 NIX_@infixSalt@_LDFLAGS_BEFORE="$(< @out@/nix-support/libc-ldflags-before) $NIX_@infixSalt@_LDFLAGS_BEFORE"
108fi
109110-# That way forked processes don't againt extend these environment variables
111export NIX_CC_WRAPPER_@infixSalt@_FLAGS_SET=1
···4# that case, it is cheaper/better to not repeat this step and let the forked
5# wrapped binary just inherit the work of the forker's wrapper script.
67+var_templates=(
8+ NIX_CC_WRAPPER+START_HOOK
9+ NIX_CC_WRAPPER+EXEC_HOOK
10+ NIX_LD_WRAPPER+START_HOOK
11+ NIX_LD_WRAPPER+EXEC_HOOK
12+13+ NIX+CFLAGS_COMPILE
14+ NIX+CFLAGS_LINK
15+ NIX+CXXSTDLIB_COMPILE
16+ NIX+CXXSTDLIB_LINK
17+ NIX+GNATFLAGS_COMPILE
18+ NIX+IGNORE_LD_THROUGH_GCC
19+ NIX+LDFLAGS
20+ NIX+LDFLAGS_BEFORE
21+ NIX+LDFLAGS_AFTER
22+ NIX+LDFLAGS_HARDEN
23+24+ NIX+SET_BUILD_ID
25+ NIX+DONT_SET_RPATH
26+ NIX+ENFORCE_NO_NATIVE
27+)
28+29+# Accumulate infixes for taking in the right input parameters. See setup-hook
30# for details.
31+declare -a role_infixes=()
32+if [ "${NIX_CC_WRAPPER_@infixSalt@_TARGET_BUILD:-}" ]; then
33+ role_infixes+=(_BUILD_)
34fi
35+if [ "${NIX_CC_WRAPPER_@infixSalt@_TARGET_HOST:-}" ]; then
36+ role_infixes+=(_)
37fi
38+if [ "${NIX_CC_WRAPPER_@infixSalt@_TARGET_TARGET:-}" ]; then
39+ role_infixes+=(_TARGET_)
40fi
4142+# We need to mangle names for hygiene, but also take parameters/overrides
43+# from the environment.
44+for var in "${var_templates[@]}"; do
45+ outputVar="${var/+/_@infixSalt@_}"
46+ export ${outputVar}+=''
47+ # For each role we serve, we accumulate the input parameters into our own
48+ # cc-wrapper-derivation-specific environment variables.
49+ for infix in "${role_infixes[@]}"; do
50+ inputVar="${var/+/${infix}}"
51+ if [ -v "$inputVar" ]; then
52+ export ${outputVar}+="${!outputVar:+ }${!inputVar}"
0000000000000053 fi
54+ done
00000000000000000000000055done
05657# `-B@out@/bin' forces cc to use ld-wrapper.sh when calling ld.
58+NIX_@infixSalt@_CFLAGS_COMPILE="-B@out@/bin/ $NIX_@infixSalt@_CFLAGS_COMPILE"
5960# Export and assign separately in order that a failing $(..) will fail
61# the script.
6263if [ -e @out@/nix-support/libc-cflags ]; then
064 NIX_@infixSalt@_CFLAGS_COMPILE="$(< @out@/nix-support/libc-cflags) $NIX_@infixSalt@_CFLAGS_COMPILE"
65fi
6667if [ -e @out@/nix-support/cc-cflags ]; then
068 NIX_@infixSalt@_CFLAGS_COMPILE="$(< @out@/nix-support/cc-cflags) $NIX_@infixSalt@_CFLAGS_COMPILE"
69fi
7071if [ -e @out@/nix-support/gnat-cflags ]; then
072 NIX_@infixSalt@_GNATFLAGS_COMPILE="$(< @out@/nix-support/gnat-cflags) $NIX_@infixSalt@_GNATFLAGS_COMPILE"
73fi
7475if [ -e @out@/nix-support/libc-ldflags ]; then
076 NIX_@infixSalt@_LDFLAGS+=" $(< @out@/nix-support/libc-ldflags)"
77fi
7879if [ -e @out@/nix-support/cc-ldflags ]; then
080 NIX_@infixSalt@_LDFLAGS+=" $(< @out@/nix-support/cc-ldflags)"
81fi
8283if [ -e @out@/nix-support/libc-ldflags-before ]; then
084 NIX_@infixSalt@_LDFLAGS_BEFORE="$(< @out@/nix-support/libc-ldflags-before) $NIX_@infixSalt@_LDFLAGS_BEFORE"
85fi
8687+# That way forked processes will not extend these environment variables again.
88export NIX_CC_WRAPPER_@infixSalt@_FLAGS_SET=1