mirror of
https://github.com/penpot/penpot.git
synced 2025-12-23 22:48:40 -05:00
106 lines
2.6 KiB
Bash
106 lines
2.6 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# --------------------
|
|
# Build configuration
|
|
# --------------------
|
|
|
|
_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
export CURRENT_VERSION="${CURRENT_VERSION:-develop}"
|
|
export BUILD_NAME="${BUILD_NAME:-graph-wasm}"
|
|
export CARGO_BUILD_TARGET="${CARGO_BUILD_TARGET:-wasm32-unknown-emscripten}"
|
|
# Keep the emscripten cache in-repo so system cache cleaners do not wipe it.
|
|
export EM_CACHE="${EM_CACHE:-${_SCRIPT_DIR}/.emsdk_cache}"
|
|
export CARGO_TARGET_DIR="${CARGO_TARGET_DIR:-${_SCRIPT_DIR}/target}"
|
|
if [[ -z "${CARGO_INCREMENTAL:-}" && "${NODE_ENV:-}" != "production" ]]; then
|
|
export CARGO_INCREMENTAL=1
|
|
fi
|
|
if [[ -z "${RUSTC_WRAPPER:-}" ]] && command -v sccache >/dev/null 2>&1; then
|
|
export RUSTC_WRAPPER=sccache
|
|
fi
|
|
export CRATE_CC_NO_DEFAULTS=1
|
|
|
|
# BUILD_MODE
|
|
if [[ "${NODE_ENV:-}" == "production" ]]; then
|
|
BUILD_MODE=release
|
|
else
|
|
BUILD_MODE="${1:-debug}"
|
|
fi
|
|
export BUILD_MODE
|
|
|
|
# --------------------
|
|
# Emscripten memory
|
|
# --------------------
|
|
|
|
export EM_INITIAL_HEAP=$((256 * 1024 * 1024))
|
|
export EM_MAXIMUM_MEMORY=$((4 * 1024 * 1024 * 1024))
|
|
export EM_MEMORY_GROWTH_GEOMETRIC_STEP=0.8
|
|
export EM_MALLOC=dlmalloc
|
|
|
|
# --------------------
|
|
# Flags
|
|
# --------------------
|
|
|
|
EMCC_COMMON_FLAGS=(
|
|
--no-entry
|
|
-sASSERTIONS=1
|
|
-sALLOW_TABLE_GROWTH=1
|
|
-sALLOW_MEMORY_GROWTH=1
|
|
-sINITIAL_HEAP=$EM_INITIAL_HEAP
|
|
-sMEMORY_GROWTH_GEOMETRIC_STEP=$EM_MEMORY_GROWTH_GEOMETRIC_STEP
|
|
-sMAXIMUM_MEMORY=$EM_MAXIMUM_MEMORY
|
|
-sERROR_ON_UNDEFINED_SYMBOLS=0
|
|
-sDISABLE_EXCEPTION_CATCHING=0
|
|
-sEXPORT_NAME=createGraphModule
|
|
-sEXPORTED_RUNTIME_METHODS=stringToUTF8,HEAPU8
|
|
-sENVIRONMENT=web
|
|
-sMODULARIZE=1
|
|
-sEXPORT_ES6=1
|
|
)
|
|
|
|
export RUSTFLAGS="-C link-arg=-sEXPORTED_FUNCTIONS=@${_SCRIPT_DIR}/exports.txt -C link-arg=-sEXPORT_ALL=0"
|
|
|
|
# Mode-specific flags
|
|
if [[ "$BUILD_MODE" == "release" ]]; then
|
|
export EMCC_CFLAGS="-Os ${EMCC_COMMON_FLAGS[*]}"
|
|
CARGO_PARAMS=(--release "${@:2}")
|
|
else
|
|
export EMCC_CFLAGS="-g -sVERBOSE=1 -sMALLOC=$EM_MALLOC ${EMCC_COMMON_FLAGS[*]}"
|
|
CARGO_PARAMS=("${@:2}")
|
|
fi
|
|
|
|
export CARGO_PARAMS
|
|
|
|
# --------------------
|
|
# Tasks
|
|
# --------------------
|
|
|
|
clean() {
|
|
cargo clean
|
|
}
|
|
|
|
setup() {
|
|
:
|
|
}
|
|
|
|
build() {
|
|
cargo build "${CARGO_PARAMS[@]}"
|
|
}
|
|
|
|
copy_artifacts() {
|
|
local dest=$1
|
|
local base="target/$CARGO_BUILD_TARGET/$BUILD_MODE"
|
|
|
|
mkdir -p "$dest"
|
|
|
|
cp "$base/graph_wasm.js" "$dest/$BUILD_NAME.js"
|
|
cp "$base/graph_wasm.wasm" "$dest/$BUILD_NAME.wasm"
|
|
|
|
sed -i "s/graph_wasm.wasm/$BUILD_NAME.wasm?version=$CURRENT_VERSION/g" \
|
|
"$dest/$BUILD_NAME.js"
|
|
}
|
|
|
|
copy_shared_artifact() {
|
|
:
|
|
}
|