| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #!/usr/bin/env bash
- set -euo pipefail
- function _print_usage {
- echo "Usage: $0 --target=web|nodejs [--no-container] -- [parameters for .devcontainer/env.sh]"
- echo
- echo "Use target 'web' to build for Threema Desktop and the examples."
- echo "Use target 'nodejs' to build for the bindings tests."
- echo "Use --no-container to not source a devcontainer environment."
- }
- while [[ "$#" -gt 0 ]]; do
- case "$1" in
- -h | --help)
- _print_usage
- exit 0
- ;;
- --target=web)
- _target='web'
- _build_dir='web'
- ;;
- --target=nodejs)
- _target='experimental-nodejs-module'
- _build_dir='nodejs'
- ;;
- --no-container)
- _no_container=1
- ;;
- --)
- shift;
- break
- ;;
- *)
- echo "Unknown parameter passed: $1"
- _print_usage
- exit 1
- ;;
- esac
- shift
- done
- if [[ -z ${_target+x} ]] || [[ -z ${_build_dir+x} ]] ; then
- _print_usage
- exit 1
- fi
- # Clean and load dev container
- cd "$(dirname "$0")/.."
- [[ -d ./build/wasm/$_build_dir ]] && rm -r ./build/wasm/$_build_dir
- if [[ -z ${_no_container+x} ]] ; then
- source ./.devcontainer/env.sh
- fi
- # Build library as WASM
- cargo build \
- -F wasm \
- -p libthreema \
- --target wasm32-unknown-unknown \
- --release
- # Create WASM bindings for Rust code
- wasm-bindgen \
- --split-linked-modules \
- --encode-into always \
- --reference-types \
- --out-dir ./build/wasm/$_build_dir \
- --target $_target \
- ./target/wasm32-unknown-unknown/release/libthreema.wasm
- # Optimise WASM
- wasm-opt \
- ./build/wasm/$_build_dir/libthreema_bg.wasm \
- -o ./build/wasm/$_build_dir/libthreema_bg.wasm \
- -O \
- --enable-reference-types
- # Unload dev container if it was started
- if [[ -z ${_no_container+x} ]] ; then
- deactivate --only-if-started
- fi
|