summary refs log tree commit diff
path: root/pkgs/development/web
diff options
context:
space:
mode:
authorNick Cao <nickcao@nichi.co>2021-11-29 10:14:55 +0800
committerNick Cao <nickcao@nichi.co>2022-03-22 09:15:49 +0800
commit13d37eab6cdd8c4803cac5866a7aba9a7ad4bcde (patch)
treef99c6aae1b9a605f80a087f1d92ea3823e6f1cfa /pkgs/development/web
parentffbe82639bd8aaff18ec63e4ce5955c60aad81f8 (diff)
downloadnixpkgs-13d37eab6cdd8c4803cac5866a7aba9a7ad4bcde.tar
nixpkgs-13d37eab6cdd8c4803cac5866a7aba9a7ad4bcde.tar.gz
nixpkgs-13d37eab6cdd8c4803cac5866a7aba9a7ad4bcde.tar.bz2
nixpkgs-13d37eab6cdd8c4803cac5866a7aba9a7ad4bcde.tar.lz
nixpkgs-13d37eab6cdd8c4803cac5866a7aba9a7ad4bcde.tar.xz
nixpkgs-13d37eab6cdd8c4803cac5866a7aba9a7ad4bcde.tar.zst
nixpkgs-13d37eab6cdd8c4803cac5866a7aba9a7ad4bcde.zip
nodejs: fix cross compilation
Diffstat (limited to 'pkgs/development/web')
-rw-r--r--pkgs/development/web/nodejs/nodejs.nix21
1 files changed, 18 insertions, 3 deletions
diff --git a/pkgs/development/web/nodejs/nodejs.nix b/pkgs/development/web/nodejs/nodejs.nix
index 1e05850884c..317de55ada5 100644
--- a/pkgs/development/web/nodejs/nodejs.nix
+++ b/pkgs/development/web/nodejs/nodejs.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchurl, openssl, python, zlib, libuv, util-linux, http-parser
-, pkg-config, which
+, pkg-config, which, buildPackages
 # for `.pkgs` attribute
 , callPackage
 # Updater dependencies
@@ -50,6 +50,10 @@ let
       inherit sha256;
     };
 
+    CC_host = "cc";
+    CXX_host = "c++";
+    depsBuildBuild = [ buildPackages.stdenv.cc openssl libuv zlib ];
+
     buildInputs = optionals stdenv.isDarwin [ CoreServices ApplicationServices ]
       ++ [ zlib libuv openssl http-parser icu ];
 
@@ -69,12 +73,23 @@ let
       "--cross-compiling"
       "--without-intl"
       "--without-snapshot"
+      "--dest-cpu=${let platform = stdenv.hostPlatform; in
+                    if      platform.isAarch32 then "arm"
+                    else if platform.isAarch64 then "arm64"
+                    else if platform.isMips32 && platform.isLittleEndian then "mipsel"
+                    else if platform.isMips32 && !platform.isLittleEndian then "mips"
+                    else if platform.isMips64 && platform.isLittleEndian then "mips64el"
+                    else if platform.isPower && platform.is32bit then "ppc"
+                    else if platform.isPower && platform.is64bit then "ppc64"
+                    else if platform.isx86_64 then "x86_64"
+                    else if platform.isx86_32 then "x86"
+                    else if platform.isS390 && platform.is64bit then "s390x"
+                    else if platform.isRiscV && platform.is64bit then "riscv64"
+                    else throw "unsupported cpu ${stdenv.hostPlatform.uname.processor}"}"
     ]) ++ (optionals (isCross && isAarch32 && hasAttr "fpu" gcc) [
       "--with-arm-fpu=${gcc.fpu}"
     ]) ++ (optionals (isCross && isAarch32 && hasAttr "float-abi" gcc) [
       "--with-arm-float-abi=${gcc.float-abi}"
-    ]) ++ (optionals (isCross && isAarch32) [
-      "--dest-cpu=arm"
     ]) ++ extraConfigFlags;
 
     configurePlatforms = [];