1{ lib, fetchFromGitLab, stdenv, llvmPackages_12, cargo, libiconv }:
2
3stdenv.mkDerivation rec {
4 version = "1.5";
5 pname = "tezos-rust-libs";
6 src = fetchFromGitLab {
7 owner = "tezos";
8 repo = "tezos-rust-libs";
9 rev = "v${version}";
10 sha256 = "sha256-SuCqDZDXmWdGI/GN+3nYcUk66jnW5FQQaeTB76/rvaw=";
11 };
12
13 nativeBuildInputs = [ llvmPackages_12.llvm cargo ];
14 propagatedBuildDeps = [ llvmPackages_12.libllvm ];
15 buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
16
17 buildPhase = ''
18 runHook preBuild
19
20 cargo build \
21 --target-dir target-librustzcash \
22 --package librustzcash \
23 --release
24
25 cargo build \
26 --target-dir target-wasmer \
27 --package wasmer-c-api \
28 --no-default-features \
29 --features singlepass,cranelift,wat,middlewares,universal \
30 --release
31
32 runHook postBuild
33 '';
34
35 installPhase = ''
36 runHook preInstall
37
38 mkdir -p $out/lib/tezos-rust-libs/rust
39 cp "librustzcash/include/librustzcash.h" \
40 "target-librustzcash/release/librustzcash.a" \
41 "wasmer-2.3.0/lib/c-api/wasm.h" \
42 "wasmer-2.3.0/lib/c-api/wasmer.h" \
43 "target-wasmer/release/libwasmer.a" \
44 "$out/lib/tezos-rust-libs"
45 cp -r "librustzcash/include/rust" "$out/lib/tezos-rust-libs"
46
47 runHook postInstall
48 '';
49
50 cargoVendorDir = "./vendor";
51}