forked from kairi003/qpdf-wasm-esm
-
Notifications
You must be signed in to change notification settings - Fork 1
/
build.sh
executable file
·73 lines (65 loc) · 1.7 KB
/
build.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/bash
set -euo pipefail
fn_git_clean() {
git clean -xdf
git checkout .
}
OUT_DIR="$PWD/out"
ROOT="$PWD"
EMCC_FLAGS_DEBUG="-Os -g3"
EMCC_FLAGS_RELEASE="-Oz -flto"
export CPPFLAGS="-I$OUT_DIR/include"
export LDFLAGS="-L$OUT_DIR/lib"
export PKG_CONFIG_PATH="$OUT_DIR/lib/pkgconfig"
export EM_PKG_CONFIG_PATH="$PKG_CONFIG_PATH"
export CFLAGS="$EMCC_FLAGS_RELEASE"
export CXXFLAGS="$CFLAGS"
mkdir -p "$OUT_DIR"
cd "$ROOT/lib/zlib"
fn_git_clean
emconfigure ./configure --prefix="$OUT_DIR" --static
emmake make -j install
cd "$ROOT/lib/jpeg-turbo"
fn_git_clean
patch -p1 < ../../patches/jpeg-turbo.patch
emcmake cmake . \
-DCMAKE_INSTALL_PREFIX="$OUT_DIR" \
-DENABLE_SHARED=off \
-DWITH_SIMD=0 \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_FLAGS="$CFLAGS"
emmake make -j install
cd "$ROOT/lib/qpdf"
fn_git_clean
emcmake cmake -S . -B build \
-DCMAKE_INSTALL_PREFIX="$OUT_DIR" \
-DRANDOM_DEVICE="/dev/random"
# `-j` needs to be adjusted manually
# setting to `nproc` crashes my system
cmake --build build # -j5
mkdir -p "$ROOT/dist"
emcc \
$LDFLAGS \
$CPPFLAGS \
$CFLAGS \
$CXXFLAGS \
--closure 1 \
--pre-js "$ROOT/js/pre.js" \
--post-js "$ROOT/js/post.js" \
-s WASM_BIGINT=1 \
-s ALLOW_MEMORY_GROWTH=1 \
-s EXPORTED_RUNTIME_METHODS='["callMain","FS","NODEFS","WORKERFS","ENV"]' \
-s INCOMING_MODULE_JS_API='["noInitialRun","noFSInit","locateFile","preRun","print","printErr"]' \
-s NO_DISABLE_EXCEPTION_CATCHING=1 \
-s MODULARIZE=1 \
-s EXPORT_ES6=1 \
-s EXPORT_NAME="qpdf" \
-s SINGLE_FILE=1 \
-o "$ROOT/dist/qpdf.mjs" \
"$ROOT/lib/qpdf/build/libqpdf/libqpdf.a" \
"$ROOT/lib/qpdf/qpdf/qpdf.cc" \
-I "$ROOT/lib/qpdf/include" \
-lnodefs.js \
-lworkerfs.js \
-lz \
-ljpeg