tangled
alpha
login
or
join now
tjh.dev
/
nixpkgs
Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
0
fork
atom
overview
issues
pulls
pipelines
emscripten: 3.1.24 -> 3.1.41
Will Cohen
2 years ago
0761348e
1850284e
+22
-35
3 changed files
expand all
collapse all
unified
split
pkgs
development
compilers
emscripten
0001-emulate-clang-sysroot-include-logic.patch
default.nix
top-level
all-packages.nix
+7
-7
pkgs/development/compilers/emscripten/0001-emulate-clang-sysroot-include-logic.patch
···
1
-
From 67f54fde2b1683aae3800f7a86a4e507c1125be8 Mon Sep 17 00:00:00 2001
2
From: Yureka <yuka@yuka.dev>
3
Date: Sat, 7 Aug 2021 09:16:46 +0200
4
Subject: [PATCH] emulate clang 'sysroot + /include' logic
···
20
1 file changed, 6 insertions(+), 1 deletion(-)
21
22
diff --git a/emcc.py b/emcc.py
23
-
index 999314afc..0e23c066c 100755
24
--- a/emcc.py
25
+++ b/emcc.py
26
-
@@ -759,7 +759,12 @@ def emsdk_ldflags(user_args):
27
28
29
def emsdk_cflags(user_args):
30
-
- cflags = ['--sysroot=' + shared.Cache.get_sysroot(absolute=True)]
31
+ cflags = [
32
-
+ '--sysroot=' + shared.Cache.get_sysroot(absolute=True),
33
+ '-resource-dir=@resourceDir@',
34
-
+ '-idirafter' + shared.Cache.get_sysroot(absolute=True) + os.path.join('/include'),
35
+ '-iwithsysroot' + os.path.join('/include','c++','v1')
36
+ ]
37
38
def array_contains_any_of(hay, needles):
39
for n in needles:
40
--
41
-
2.32.0
42
···
1
+
From 4bbbb640934aa653bcfec0335798b77a8935b815 Mon Sep 17 00:00:00 2001
2
From: Yureka <yuka@yuka.dev>
3
Date: Sat, 7 Aug 2021 09:16:46 +0200
4
Subject: [PATCH] emulate clang 'sysroot + /include' logic
···
20
1 file changed, 6 insertions(+), 1 deletion(-)
21
22
diff --git a/emcc.py b/emcc.py
23
+
index ba8d1b556..7d89644c5 100755
24
--- a/emcc.py
25
+++ b/emcc.py
26
+
@@ -883,7 +883,12 @@ def parse_s_args(args):
27
28
29
def emsdk_cflags(user_args):
30
+
- cflags = ['--sysroot=' + cache.get_sysroot(absolute=True)]
31
+ cflags = [
32
+
+ '--sysroot=' + cache.get_sysroot(absolute=True),
33
+ '-resource-dir=@resourceDir@',
34
+
+ '-idirafter' + cache.get_sysroot(absolute=True) + os.path.join('/include'),
35
+ '-iwithsysroot' + os.path.join('/include','c++','v1')
36
+ ]
37
38
def array_contains_any_of(hay, needles):
39
for n in needles:
40
--
41
+
2.40.0
42
+14
-27
pkgs/development/compilers/emscripten/default.nix
···
1
{ lib, stdenv, fetchFromGitHub, python3, nodejs, closurecompiler
2
, jre, binaryen
3
, llvmPackages
4
-
, symlinkJoin, makeWrapper, substituteAll, fetchpatch
5
, buildNpmPackage
6
, emscripten
7
}:
8
9
stdenv.mkDerivation rec {
10
pname = "emscripten";
11
-
version = "3.1.24";
12
13
llvmEnv = symlinkJoin {
14
name = "emscripten-llvm-${version}";
···
19
name = "emscripten-node-modules-${version}";
20
inherit pname version src;
21
22
-
npmDepsHash = "sha256-ejuHR2BpAUStWjuvQuGE6ko4byF4GBl6FJBshxlknQk=";
23
24
dontBuild = true;
25
···
32
src = fetchFromGitHub {
33
owner = "emscripten-core";
34
repo = "emscripten";
35
-
sha256 = "sha256-1jW6ThxK6dThOO90l4Mc5yehVF3tI4HWipBWZAOztrk=";
36
rev = version;
37
};
38
···
42
patches = [
43
(substituteAll {
44
src = ./0001-emulate-clang-sysroot-include-logic.patch;
45
-
resourceDir = "${llvmEnv}/lib/clang/${llvmPackages.release_version}/";
46
-
})
47
-
# https://github.com/emscripten-core/emscripten/pull/18219
48
-
(fetchpatch {
49
-
url = "https://github.com/emscripten-core/emscripten/commit/afbc14950f021513c59cbeaced8807ef8253530a.patch";
50
-
sha256 = "sha256-+gJNTQJng9rWcGN3GAcMBB0YopKPnRp/r8CN9RSTClU=";
51
-
})
52
-
# https://github.com/emscripten-core/emscripten/pull/18220
53
-
(fetchpatch {
54
-
url = "https://github.com/emscripten-core/emscripten/commit/852982318f9fb692ba1dd1173f62e1eb21ae61ca.patch";
55
-
sha256 = "sha256-hmIOtpRx3PD3sDAahUcreSydydqcdSqArYvyLGgUgd8=";
56
})
57
];
58
···
68
sed -i '/^def/!s/root_is_writable()/True/' tools/config.py
69
sed -i "/^def check_sanity/a\\ return" tools/shared.py
70
71
-
# required for wasm2c
72
-
ln -s ${nodeModules} node_modules
73
-
74
echo "EMSCRIPTEN_ROOT = '$out/share/emscripten'" > .emscripten
75
echo "LLVM_ROOT = '${llvmEnv}/bin'" >> .emscripten
76
echo "NODE_JS = '${nodejs}/bin/node'" >> .emscripten
···
108
109
# precompile libc (etc.) in all variants:
110
pushd $TMPDIR
111
-
echo 'int __main_argc_argv() { return 42; }' >test.c
112
for LTO in -flto ""; do
113
-
# wasm2c doesn't work with PIC
114
-
$out/bin/emcc -s WASM2C -s STANDALONE_WASM $LTO test.c
115
-
116
for BIND in "" "--bind"; do
117
-
for MT in "" "-s USE_PTHREADS"; do
118
-
for RELOCATABLE in "" "-s RELOCATABLE"; do
119
-
$out/bin/emcc $RELOCATABLE $BIND $MT $LTO test.c
120
-
done
121
-
done
0
0
0
122
done
123
done
124
popd
···
1
{ lib, stdenv, fetchFromGitHub, python3, nodejs, closurecompiler
2
, jre, binaryen
3
, llvmPackages
4
+
, symlinkJoin, makeWrapper, substituteAll
5
, buildNpmPackage
6
, emscripten
7
}:
8
9
stdenv.mkDerivation rec {
10
pname = "emscripten";
11
+
version = "3.1.41";
12
13
llvmEnv = symlinkJoin {
14
name = "emscripten-llvm-${version}";
···
19
name = "emscripten-node-modules-${version}";
20
inherit pname version src;
21
22
+
npmDepsHash = "sha256-QlKm6UvPUa7+VJ9ZvXdxYZzK+U96Ju/oAHPhZ/hyv/I=";
23
24
dontBuild = true;
25
···
32
src = fetchFromGitHub {
33
owner = "emscripten-core";
34
repo = "emscripten";
35
+
sha256 = "sha256-yQZrAQfNZZd65a14AFObrLrBzePBDnK0J87oTEB1Dcw=";
36
rev = version;
37
};
38
···
42
patches = [
43
(substituteAll {
44
src = ./0001-emulate-clang-sysroot-include-logic.patch;
45
+
resourceDir = "${llvmEnv}/lib/clang/16/";
0
0
0
0
0
0
0
0
0
0
46
})
47
];
48
···
58
sed -i '/^def/!s/root_is_writable()/True/' tools/config.py
59
sed -i "/^def check_sanity/a\\ return" tools/shared.py
60
0
0
0
61
echo "EMSCRIPTEN_ROOT = '$out/share/emscripten'" > .emscripten
62
echo "LLVM_ROOT = '${llvmEnv}/bin'" >> .emscripten
63
echo "NODE_JS = '${nodejs}/bin/node'" >> .emscripten
···
95
96
# precompile libc (etc.) in all variants:
97
pushd $TMPDIR
98
+
echo 'int __main_argc_argv( int a, int b ) { return 42; }' >test.c
99
for LTO in -flto ""; do
0
0
0
100
for BIND in "" "--bind"; do
101
+
# starting with emscripten 3.1.32+,
102
+
# if pthreads and relocatable are both used,
103
+
# _emscripten_thread_exit_joinable must be exported
104
+
# (see https://github.com/emscripten-core/emscripten/pull/18376)
105
+
# TODO: get library cache to build with both enabled and function exported
106
+
$out/bin/emcc $LTO $BIND test.c
107
+
$out/bin/emcc $LTO $BIND -s RELOCATABLE test.c
108
+
$out/bin/emcc $LTO $BIND -s USE_PTHREADS test.c
109
done
110
done
111
popd
+1
-1
pkgs/top-level/all-packages.nix
···
7385
easeprobe = callPackage ../tools/misc/easeprobe { };
7386
7387
emscripten = callPackage ../development/compilers/emscripten {
7388
-
llvmPackages = llvmPackages_14;
7389
};
7390
7391
emscriptenPackages = recurseIntoAttrs (callPackage ./emscripten-packages.nix { });
···
7385
easeprobe = callPackage ../tools/misc/easeprobe { };
7386
7387
emscripten = callPackage ../development/compilers/emscripten {
7388
+
llvmPackages = llvmPackages_16;
7389
};
7390
7391
emscriptenPackages = recurseIntoAttrs (callPackage ./emscripten-packages.nix { });