Skip to content

Commit 4ebfb30

Browse files
committed
1 parent b7dfdfe commit 4ebfb30

File tree

2 files changed

+107
-12
lines changed

2 files changed

+107
-12
lines changed

scripts/emsdk-fetch.sh

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ then
4646
# wget https://raw.githubusercontent.com/paradust7/minetest-wasm/main/emsdk_emcc.patch
4747
# patch -p1 < emsdk_emcc.patch
4848

49+
50+
# fix mouse position for 3D canvas
51+
wget https://patch-diff.githubusercontent.com/raw/emscripten-core/emscripten/pull/20442.diff
52+
patch -p1 < 20442.diff
53+
4954
# https://github.com/paradust7/minetest-wasm/blob/main/emsdk_dirperms.patch
5055
patch -p1 <<END
5156
--- emsdk-orig/upstream/emscripten/system/lib/wasmfs/wasmfs.cpp 2022-07-29 17:22:28.000000000 +0000
@@ -94,7 +99,6 @@ END
9499
END
95100

96101

97-
98102
popd
99103
fi
100104
fi
@@ -185,7 +189,7 @@ then
185189
# -mcpu=generic would activate those https://reviews.llvm.org/D125728
186190
# https://github.com/emscripten-core/emscripten/pull/17689
187191
188-
CPU="-mnontrapping-fptoint -mno-reference-types -mno-sign-ext -mno-mutable-globals -m32"
192+
CPU="-sSUPPORT_LONGJMP=emscripten -mnontrapping-fptoint -mno-reference-types -mno-sign-ext -mno-mutable-globals -m32"
189193
else
190194
CPU="-mcpu=bleeding-edge -m32"
191195
fi

scripts/wasisdk-fetch.sh

Lines changed: 101 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,21 @@
33

44
if [[ -z ${WASISDK+z} ]]
55
then
6+
pushd ${SDKROOT:-/opt/python-wasm-sdk}
67
. ${CONFIG:-config}
78

89
export WASISDK="${SDKROOT}/wasisdk"
910
export WASI_SDK_PREFIX="${WASISDK}/upstream"
11+
export WASI_SYSROOT="${WASI_SDK_PREFIX}/share/wasi-sysroot"
1012

1113

1214

1315
if [ -d ${WASI_SDK_PREFIX} ]
1416
then
1517
echo "
1618
* using wasisdk from $(realpath wasisdk/upstream)
17-
with sys python $SYS_PYTHON
19+
with sys python $SYS_PYTHON and host python $HPY
20+
1821
" 1>&2
1922
else
2023
pushd wasisdk
@@ -31,28 +34,116 @@ then
3134
ln ${SDKROOT}/wasisdk/bin/wasi ${SDKROOT}/wasisdk/bin/wasi-c++
3235
popd
3336

37+
$HPIP install cmake wasmtime
38+
39+
# /opt/python-wasm-sdk/devices/x86_64/usr/lib/python3.11/site-packages/cmake/data/share/cmake-3.27/Modules/Platform/
40+
cp -v wasisdk/share/cmake/WASI.cmake ${SDKROOT}/devices/$(arch)/usr/lib/python${PYBUILD}/site-packages/cmake/data/share/cmake-*/Modules/Platform/
41+
42+
cat > ${SDKROOT}/devices/$(arch)/usr/lib/python${PYBUILD}/site-packages/cmake/data/share/cmake-*/Modules/Platform/WASI.cmake <<END
43+
# Cmake toolchain description file for the Makefile
44+
45+
set(CMAKE_TOOLCHAIN_FILE ${WASISDK}/share/cmake/wasi-sdk.cmake)
46+
47+
# This is arbitrary, AFAIK, for now.
48+
cmake_minimum_required(VERSION 3.5.0)
49+
set(CMAKE_SYSTEM_NAME WASI)
50+
set(CMAKE_SYSTEM_VERSION 1)
51+
set(CMAKE_SYSTEM_PROCESSOR wasm32)
52+
set(triple wasm32-wasi)
53+
54+
set(WASI True)
55+
option(BUILD_SHARED_LIBS "Build using shared libraries" OFF)
56+
set_property(GLOBAL PROPERTY CXX_EXCEPTIONS OFF)
57+
set_property(GLOBAL PROPERTY CXX_RTTI OFF)
58+
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
59+
set(COMPILER_SUPPORTS_FEXCEPTIONS FALSE)
60+
#add_compile_options(-fpic)
61+
#add_compile_options(-fno-exceptions)
62+
63+
64+
# Make HandleLLVMOptions.cmake happy.
65+
# TODO(sbc): We should probably fix llvm or libcxxabi instead.
66+
# See: https://reviews.llvm.org/D33753
67+
# set(UNIX 1)
68+
69+
set(CMAKE_CROSSCOMPILING 1)
70+
71+
72+
if(WIN32)
73+
set(WASI_HOST_EXE_SUFFIX ".exe")
74+
else()
75+
set(WASI_HOST_EXE_SUFFIX "")
76+
endif()
77+
78+
set(CMAKE_C_COMPILER ${WASISDK}/bin/wasi-c)
79+
set(CMAKE_CXX_COMPILER ${WASISDK}/bin/wasi-c++)
80+
set(CMAKE_ASM_COMPILER ${WASI_SDK_PREFIX}/bin/clang\${WASI_HOST_EXE_SUFFIX})
81+
set(CMAKE_AR ${WASI_SDK_PREFIX}/bin/llvm-ar\${WASI_HOST_EXE_SUFFIX})
82+
set(CMAKE_RANLIB ${WASI_SDK_PREFIX}/bin/llvm-ranlib\${WASI_HOST_EXE_SUFFIX})
83+
set(CMAKE_C_COMPILER_TARGET \${triple})
84+
set(CMAKE_CXX_COMPILER_TARGET \${triple})
85+
set(CMAKE_ASM_COMPILER_TARGET \${triple})
86+
87+
# Don't look in the sysroot for executables to run during the build
88+
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
89+
# Only look in the sysroot (not in the host paths) for the rest
90+
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
91+
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
92+
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
93+
94+
END
95+
96+
pushd ${WASI_SYSROOT}
97+
wget "https://github.com/vmware-labs/webassembly-language-runtimes/releases/download/libs%2Flibpng%2F1.6.39%2B20230629-ccb4cb0/libpng-1.6.39-wasi-sdk-20.0.tar.gz" -O-| tar xvfz -
98+
wget "https://github.com/vmware-labs/webassembly-language-runtimes/releases/download/libs%2Fzlib%2F1.2.13%2B20230623-2993864/libz-1.2.13-wasi-sdk-20.0.tar.gz" -O-| tar xvfz -
99+
popd
100+
101+
34102
fi
35103

104+
popd
105+
36106
export PATH="${WASISDK}/bin:${WASI_SDK_PREFIX}/bin:$PATH"
37107

38-
export WASI_SYSROOT="${WASI_SDK_PREFIX}/share/wasi-sysroot"
108+
export PREFIX="${SDKROOT}/devices/wasi/usr"
39109

40-
export CC="${WASISDK}/bin/wasi-c"
41-
export CPP="${WASISDK}/bin/wasi-cpp"
42-
export CXX="${WASISDK}/bin/wasi++"
110+
# instruct pkg-config to use wasi target root
111+
export PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig:${WASI_SYSROOT}/lib/wasm32-wasi/pkgconfig"
112+
113+
# for thirparty prebuilts .pc in sdk
114+
export PKG_CONFIG_LIBDIR="${WASI_SYSROOT}/lib/wasm32-wasi/pkgconfig:${WASI_SYSROOT}/share/pkgconfig"
115+
export PKG_CONFIG_SYSROOT_DIR="${WASI_SYSROOT}"
116+
117+
118+
export PS1="[PyDK:wasi] \w $ "
43119

44120

45121
export LDSHARED="${WASI_SDK_PREFIX}/bin/wasm-ld"
46122
export AR="${WASI_SDK_PREFIX}/bin/llvm-ar"
47123
export RANLIB="${WASI_SDK_PREFIX}/bin/ranlib"
48124

125+
WASI_CFG="--sysroot=${WASI_SDK_PREFIX}/share/wasi-sysroot -I${WASISDK}/hotfix"
126+
WASI_DEF="-D_WASI_EMULATED_MMAN -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_PROCESS_CLOCKS -D_WASI_EMULATED_GETPID"
49127

50-
# instruct pkg-config to use wasi target root
51-
export PKG_CONFIG_PATH="${SDKROOT}/devices/wasi/usr/lib/pkgconfig"
128+
# wasi assembly
129+
WASI_ALL="${WASI_CFG} ${WASI_DEF} -fPIC -fno-rtti -fno-exceptions"
130+
131+
132+
WASI_ALL="$WASI_ALL -Wno-unused-but-set-variable -Wno-unused-command-line-argument -Wno-unsupported-floating-point-opt"
133+
134+
# wasi linking
135+
WASI_LNK="-lwasi-emulated-getpid -lwasi-emulated-mman -lwasi-emulated-signal -lwasi-emulated-process-clocks -lc++experimental -fno-exceptions"
136+
137+
# export CC="${WASISDK}/bin/wasi-c"
138+
# export CPP="${WASISDK}/bin/wasi-cpp"
139+
# export CXX="${WASISDK}/bin/wasi++"
140+
141+
CXX_lIBS="-lc++ -lc++abi -lc++experimental"
142+
143+
export CC="${WASI_SDK_PREFIX}/bin/clang ${WASI_ALL}"
144+
export CXX="${WASI_SDK_PREFIX}/bin/clang++ ${WASI_ALL} ${CXX_lIBS}"
145+
export CPP="${WASI_SDK_PREFIX}/bin/clang-cpp ${WASI_CFG} ${WASI_DEF}"
52146

53-
# for thirparty prebuilts .pc in sdk
54-
export PKG_CONFIG_LIBDIR="${WASI_SYSROOT}/lib/pkgconfig:${WASI_SYSROOT}/share/pkgconfig"
55-
export PKG_CONFIG_SYSROOT_DIR="${WASI_SYSROOT}"
56147

57148

58149

0 commit comments

Comments
 (0)