3
0
Fork 0
forked from mirrors/nixpkgs
nixpkgs/pkgs/development/libraries/v8/3.16.14.nix
Johannes Bornhold b27932a65b v8-3_16_14 tweaks for the build on darwin
The build was originally failing due to a missing libtool. Trying to add
the buildInput "libtool" did not work out, since a few command line
arguments are not supported. I've applied the same workaround as for
"xcodebuild".

The second change is about the install step, where the path of
"libv8.dylib" was just slightly different.
2016-11-05 22:31:12 +01:00

80 lines
2.3 KiB
Nix

{ stdenv, lib, fetchurl, gyp, readline, python, which, icu, utillinux}:
assert readline != null;
let
arch = if stdenv.isArm
then (if stdenv.is64bit then "arm64" else "arm")
else (if stdenv.is64bit then "x64" else "ia32");
armHardFloat = stdenv.isArm && (stdenv.platform.gcc.float or null) == "hard";
in
stdenv.mkDerivation rec {
name = "v8-${version}";
version = "3.16.14.11";
src = fetchurl {
url = "https://commondatastorage.googleapis.com/chromium-browser-official/"
+ "${name}.tar.bz2";
sha256 = "1gpf2xvhxfs5ll3m2jlslsx9jfjbmrbz55iq362plflrvf8mbxhj";
};
postPatch = ''
sed -i 's/-Werror//' build/standalone.gypi build/common.gypi
'';
configurePhase = stdenv.lib.optionalString stdenv.isDarwin ''
ln -s /usr/bin/xcodebuild $TMPDIR
ln -s /usr/bin/libtool $TMPDIR
export PATH=$TMPDIR:$PATH
'' + ''
PYTHONPATH="tools/generate_shim_headers:$PYTHONPATH" \
${gyp}/bin/gyp \
-f make \
--generator-output="out" \
-Dflock_index=0 \
-Dv8_enable_i18n_support=1 \
-Duse_system_icu=1 \
-Dconsole=readline \
-Dcomponent=shared_library \
-Dv8_target_arch=${arch} \
${lib.optionalString armHardFloat "-Dv8_use_arm_eabi_hardfloat=true"} \
--depth=. -Ibuild/standalone.gypi \
build/all.gyp
'';
nativeBuildInputs = [ which ];
buildInputs = [ readline python icu ] ++ lib.optional stdenv.isLinux utillinux;
NIX_CFLAGS_COMPILE = "-Wno-error";
buildFlags = [
"-C out"
"builddir=$(CURDIR)/Release"
"BUILDTYPE=Release"
];
enableParallelBuilding = true;
installPhase = ''
install -vD out/Release/d8 "$out/bin/d8"
${if stdenv.isDarwin then ''
install -vD out/Release/libv8.dylib "$out/lib/libv8.dylib"
'' else ''
install -vD out/Release/lib.target/libv8.so "$out/lib/libv8.so"
''}
cp -vr include "$out/"
'';
postFixup = if stdenv.isDarwin then ''
install_name_tool -change /usr/local/lib/libv8.dylib $out/lib/libv8.dylib $out/bin/d8
install_name_tool -id $out/lib/libv8.dylib $out/lib/libv8.dylib
'' else null;
meta = with stdenv.lib; {
description = "V8 is Google's open source JavaScript engine";
platforms = platforms.linux ++ platforms.darwin;
license = licenses.bsd3;
};
}