docs.sheetjs.com/tests/engines/jsc-cpp.sh
2026-03-05 00:25:10 -05:00

67 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# https://docs.sheetjs.com/docs/demos/engines/jsc#c
OS="$(uname -s)"
ARCH="$(uname -m)"
case "$OS" in
Darwin|Linux) ;;
*) echo "unsupported OS: $OS"; exit 1 ;;
esac
cd /tmp
# rm -rf sheetjs-jsc
mkdir -p sheetjs-jsc
cd sheetjs-jsc
if [[ ! -d "WebKit" ]]; then git clone https://github.com/WebKit/WebKit.git WebKit; fi
cd WebKit
git checkout "WebKit-7623.1.14.14.11"
cd ..
cd WebKit
case "$OS" in
Darwin)
# NOTE: this was needed in WebKit-7623.1.14.14.11
perl -0777 -i -pe 's/#if HAVE\(MACH_EXCEPTIONS\).*?#endif\n*/\n/gs' "Source/JavaScriptCore/API/tests/ExecutionTimeLimitTest.cpp"
env CFLAGS="-Wno-error=all -Wno-deprecated-declarations -Wno-unused-parameter" \
CXXFLAGS="-Wno-error=all -Wno-deprecated-declarations -Wno-unused-parameter" \
LDFLAGS="-framework Foundation" \
Tools/Scripts/build-webkit --jsc-only \
--cmakeargs="-Wno-error=all -DENABLE_STATIC_JSC=ON -DCMAKE_C_FLAGS=\"-Wno-error=all -Wno-deprecated-declarations -Wno-unused-parameter\" -DCMAKE_CXX_FLAGS=\"-Wno-error=all -Wno-deprecated-declarations -Wno-unused-parameter\"" \
--make-args="-Wno-error=all -Wno-deprecated-declarations -Wno-unused-parameter" \
--no-jit \
--no-webassembly
;;
Linux)
env CFLAGS="-Wno-error=all -Wno-error=volatile-register-var -Wno-dangling-reference" \
CXXFLAGS="-Wno-error=all -Wno-error=volatile-register-var -Wno-dangling-reference" \
Tools/Scripts/build-webkit --jsc-only \
--cmakeargs="-Wno-error=all -Wno-error=volatile-register-var -DENABLE_STATIC_JSC=ON -DUSE_THIN_ARCHIVES=OFF" \
--make-args="-j1 -Wno-error=all -Wno-error=volatile-register-var" \
-j1 \
--no-jit \
--no-webassembly
;;
esac
cd ..
ln -sfn WebKit/WebKitBuild/JSCOnly/Release Release
curl -LO https://docs.sheetjs.com/jsc/sheetjs-jsc.c
curl -LO https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js
curl -LO https://docs.sheetjs.com/pres.numbers
case "$OS" in
Darwin) g++ -o sheetjs-jsc sheetjs-jsc.c -IRelease/JavaScriptCore/Headers -LRelease/lib -lbmalloc -licucore -lWTF -lJavaScriptCore -IRelease/JavaScriptCore/Headers -framework Foundation ;;
Linux) g++ -o sheetjs-jsc sheetjs-jsc.c -IRelease/JavaScriptCore/Headers -LRelease/lib -lJavaScriptCore -lWTF -lbmalloc -licui18n -licuuc -latomic -IRelease/JavaScriptCore/Headers ;;
esac
./sheetjs-jsc pres.numbers
npx -y xlsx-cli sheetjsw.xlsb