Add support for cross compiling to js-ghcjs
This platform doesn't have a C compiler, and so relies and the changes in the previous commit to work.
This commit is contained in:
parent
63bd851e95
commit
c739c420db
|
@ -27,6 +27,8 @@ let
|
||||||
"riscv32-linux" "riscv64-linux"
|
"riscv32-linux" "riscv64-linux"
|
||||||
|
|
||||||
"aarch64-none" "avr-none" "arm-none" "i686-none" "x86_64-none" "powerpc-none" "msp430-none" "riscv64-none" "riscv32-none"
|
"aarch64-none" "avr-none" "arm-none" "i686-none" "x86_64-none" "powerpc-none" "msp430-none" "riscv64-none" "riscv32-none"
|
||||||
|
|
||||||
|
"js-ghcjs"
|
||||||
];
|
];
|
||||||
|
|
||||||
allParsed = map parse.mkSystemFromString all;
|
allParsed = map parse.mkSystemFromString all;
|
||||||
|
|
|
@ -121,9 +121,12 @@ stageFuns: let
|
||||||
postStage = buildPackages: {
|
postStage = buildPackages: {
|
||||||
__raw = true;
|
__raw = true;
|
||||||
stdenv.cc =
|
stdenv.cc =
|
||||||
|
if buildPackages.stdenv.hasCC
|
||||||
|
then
|
||||||
if buildPackages.stdenv.cc.isClang or false
|
if buildPackages.stdenv.cc.isClang or false
|
||||||
then buildPackages.clang
|
then buildPackages.clang
|
||||||
else buildPackages.gcc;
|
else buildPackages.gcc
|
||||||
|
else buildPackages.stdenv.cc;
|
||||||
};
|
};
|
||||||
|
|
||||||
in dfold folder postStage (_: {}) withAllowCustomOverrides
|
in dfold folder postStage (_: {}) withAllowCustomOverrides
|
||||||
|
|
|
@ -51,12 +51,18 @@ in lib.init bootStages ++ [
|
||||||
extraBuildInputs = [ ]; # Old ones run on wrong platform
|
extraBuildInputs = [ ]; # Old ones run on wrong platform
|
||||||
allowedRequisites = null;
|
allowedRequisites = null;
|
||||||
|
|
||||||
|
hasCC = !targetPlatform.isGhcjs;
|
||||||
|
|
||||||
cc = if crossSystem.useiOSPrebuilt or false
|
cc = if crossSystem.useiOSPrebuilt or false
|
||||||
then buildPackages.darwin.iosSdkPkgs.clang
|
then buildPackages.darwin.iosSdkPkgs.clang
|
||||||
else if crossSystem.useAndroidPrebuilt or false
|
else if crossSystem.useAndroidPrebuilt or false
|
||||||
then buildPackages."androidndkPkgs_${crossSystem.ndkVer}".clang
|
then buildPackages."androidndkPkgs_${crossSystem.ndkVer}".clang
|
||||||
else if targetPlatform.isGhcjs
|
else if targetPlatform.isGhcjs
|
||||||
then null
|
# Need to use `throw` so tryEval for splicing works, ugh. Using
|
||||||
|
# `null` or skipping the attribute would cause an eval failure
|
||||||
|
# `tryEval` wouldn't catch, wrecking accessing previous stages
|
||||||
|
# when there is a C compiler and everything should be fine.
|
||||||
|
then throw "no C compile provided for this platform"
|
||||||
else if crossSystem.useLLVM or false
|
else if crossSystem.useLLVM or false
|
||||||
then buildPackages.llvmPackages_8.lldClang
|
then buildPackages.llvmPackages_8.lldClang
|
||||||
else buildPackages.gcc;
|
else buildPackages.gcc;
|
||||||
|
|
Loading…
Reference in a new issue