cc-wrapper: when cross building, wedge in setting AR, AS, and LD env vars to their cross building versions
I think it's ok to export things which aren't wrapped. The cc-wrapper can be thought of as responsible for all of binutils and the c compiler, only wrapping those binaries which are necessary to interposition---as opposed to all binaries it thinks are relevaant. Conversely, adding the setup hook to the unwrapped compilers would be unforunate as hooks are ugly hacks and the compilers themselves take a long time to rebuild. Better to wholely separate "pure packages" from hacks.
This commit is contained in:
parent
e0492d58a6
commit
c1fb71b74a
@ -61,14 +61,28 @@ let
|
|||||||
# TODO: use @target_tripple@ for consistency
|
# TODO: use @target_tripple@ for consistency
|
||||||
if targetPlatform == hostPlatform
|
if targetPlatform == hostPlatform
|
||||||
then textFile
|
then textFile
|
||||||
else runCommand "sed-nix-env-vars" {} ''
|
else runCommand "sed-nix-env-vars" {} (''
|
||||||
cp ${textFile} $out
|
cp --no-preserve=mode ${textFile} $out
|
||||||
|
|
||||||
sed -i $out \
|
sed -i $out \
|
||||||
-e 's^NIX_^NIX_${infixSalt_}^g' \
|
-e 's^NIX_^NIX_${infixSalt_}^g' \
|
||||||
-e 's^addCVars^addCVars${_infixSalt}^g' \
|
-e 's^addCVars^addCVars${_infixSalt}^g' \
|
||||||
-e 's^\[ -z "\$crossConfig" \]^\[\[ "${builtins.toString (targetPlatform != hostPlatform)}" || -z "$crossConfig" \]\]^g'
|
-e 's^\[ -z "\$crossConfig" \]^\[\[ "${builtins.toString (targetPlatform != hostPlatform)}" || -z "$crossConfig" \]\]^g'
|
||||||
|
|
||||||
|
'' + stdenv.lib.optionalString (textFile == ./setup-hook.sh) ''
|
||||||
|
cat << 'EOF' >> $out
|
||||||
|
for CMD in ar as nm objcopy ranlib strip strings size ld
|
||||||
|
do
|
||||||
|
# which is not part of stdenv, but compgen will do for now
|
||||||
|
if
|
||||||
|
PATH=$_PATH type -p ${prefix}$CMD > /dev/null
|
||||||
|
then
|
||||||
|
export ''$(echo "$CMD" | tr "[:lower:]" "[:upper:]")=${prefix}''${CMD};
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
EOF
|
||||||
|
'' + ''
|
||||||
|
|
||||||
# NIX_ things which we don't both use and define, we revert them
|
# NIX_ things which we don't both use and define, we revert them
|
||||||
#asymmetric=$(
|
#asymmetric=$(
|
||||||
# for pre in "" "\\$"
|
# for pre in "" "\\$"
|
||||||
@ -85,7 +99,7 @@ let
|
|||||||
do
|
do
|
||||||
sed -i $out -E -e "s~NIX_${infixSalt_}$var([^a-zA-Z_]|$)~NIX_$var\1~g"
|
sed -i $out -E -e "s~NIX_${infixSalt_}$var([^a-zA-Z_]|$)~NIX_$var\1~g"
|
||||||
done
|
done
|
||||||
'';
|
'');
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user