nixpkgs/pkgs/development/interpreters/spidermonkey/68.nix
Joerie de Gram 24b26ce79e spidermonkey_91: fix cross compilation
The configurePlatforms mkDerivation parameter needs to be an empty list
to avoid bogus defaults from breaking cross compilation.

Document the parameter to prevent it from being cleaned up.
2021-12-30 14:54:30 +01:00

105 lines
3.0 KiB
Nix

{ lib, stdenv, fetchurl, fetchpatch, autoconf213, pkg-config, perl, python2, python3, zip, buildPackages
, which, readline, zlib, icu, cargo, rustc, llvmPackages }:
with lib;
let
python3Env = buildPackages.python3.withPackages (p: [p.six]);
in stdenv.mkDerivation rec {
pname = "spidermonkey";
version = "68.12.0";
src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz";
sha256 = "1k17pi4zh9hrvkzbw4rzzw879a15hpvwriylp75wl22rl7r2nsdf";
};
patches = [
# Backport a change from Firefox 75 that fixes finding the
# location of clang and libclang.
(fetchpatch {
url = "https://hg.mozilla.org/mozilla-central/raw-rev/ccd1356fc8f1d0bfa9d896e88d3cc924425623da";
sha256 = "005g3mfmal9nw32khrgyiv3221z7pazfhhm2qvgc8d48i2yzj3j0";
})
];
outputs = [ "out" "dev" ];
setOutputFlags = false; # Configure script only understands --includedir
nativeBuildInputs = [
autoconf213
pkg-config
perl
which
python2
zip
cargo
rustc
llvmPackages.llvm
];
buildInputs = [
readline
zlib
icu
];
preConfigure = ''
export CXXFLAGS="-fpermissive"
export LIBXUL_DIST=$out
export PYTHON3="${python3Env.interpreter}"
# We can't build in js/src/, so create a build dir
mkdir obj
cd obj/
configureScript=../js/src/configure
'';
configureFlags = [
# Reccommended by gjs upstream
"--disable-jemalloc"
"--enable-unaligned-private-values"
"--with-intl-api"
"--enable-posix-nspr-emulation"
"--with-system-zlib"
"--with-system-icu"
"--enable-shared-js"
"--enable-readline"
# Fedora and Arch disable optimize, but it doesn't seme to be necessary
# It turns on -O3 which some gcc version had a problem with:
# https://src.fedoraproject.org/rpms/mozjs38/c/761399aba092bcb1299bb4fccfd60f370ab4216e
"--enable-optimize"
"--enable-release"
] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
# Spidermonkey seems to use different host/build terminology for cross
# compilation here.
"--host=${stdenv.buildPlatform.config}"
"--target=${stdenv.hostPlatform.config}"
];
# mkDerivation by default appends --build/--host to configureFlags when cross compiling
# These defaults are bogus for Spidermonkey - avoid passing them by providing an empty list
configurePlatforms = [];
depsBuildBuild = [ buildPackages.stdenv.cc ];
# Remove unnecessary static lib
preFixup = ''
moveToOutput bin/js60-config "$dev"
rm $out/lib/libjs_static.ajs
ln -s $out/bin/js60 $out/bin/js
'';
enableParallelBuilding = true;
meta = with lib; {
description = "Mozilla's JavaScript engine written in C/C++";
homepage = "https://developer.mozilla.org/en/SpiderMonkey";
license = licenses.gpl2; # TODO: MPL/GPL/LGPL tri-license.
maintainers = [ maintainers.abbradar ];
badPlatforms = [ "riscv32-linux" "riscv64-linux" ];
platforms = platforms.linux;
};
}