|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# A script to build the release artifacts of Wasmtime into the `target`
|
|
|
|
# directory. For now this is the CLI and the C API. Note that this script only
|
|
|
|
# produces the artifacts through Cargo and doesn't package things up. That's
|
|
|
|
# intended for the `build-tarballs.sh` script.
|
|
|
|
#
|
|
|
|
# This script takes a Rust target as its first input and optionally a parameter
|
|
|
|
# afterwards which can be "-min" to indicate that a minimal build should be
|
|
|
|
# produced with as many features as possible stripped out.
|
|
|
|
|
|
|
|
set -ex
|
|
|
|
|
|
|
|
build=$1
|
|
|
|
target=$2
|
|
|
|
|
|
|
|
# Default build flags for release artifacts. Leave debugging for
|
|
|
|
# builds-from-source which have richer information anyway, and additionally the
|
|
|
|
# CLI won't benefit from catching unwinds and neither will the C API so use
|
|
|
|
# panic=abort in both situations.
|
|
|
|
export CARGO_PROFILE_RELEASE_STRIP=debuginfo
|
|
|
|
export CARGO_PROFILE_RELEASE_PANIC=abort
|
|
|
|
|
|
|
|
if [[ "$build" = *-min ]]; then
|
|
|
|
# Configure a whole bunch of compile-time options which help reduce the size
|
|
|
|
# of the binary artifact produced.
|
|
|
|
export CARGO_PROFILE_RELEASE_OPT_LEVEL=s
|
|
|
|
export RUSTFLAGS="-Zlocation-detail=none $RUSTFLAGS"
|
|
|
|
export CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1
|
|
|
|
export CARGO_PROFILE_RELEASE_LTO=true
|
|
|
|
build_std=-Zbuild-std=std,panic_abort
|
|
|
|
build_std_features=-Zbuild-std-features=std_detect_dlsym_getauxval
|
|
|
|
flags="$build_std $build_std_features --no-default-features --features disable-logging"
|
|
|
|
cmake_flags="-DWASMTIME_DISABLE_ALL_FEATURES=ON"
|
|
|
|
cmake_flags="$cmake_flags -DWASMTIME_FEATURE_DISABLE_LOGGING=ON"
|
|
|
|
cmake_flags="$cmake_flags -DWASMTIME_USER_CARGO_BUILD_OPTIONS:LIST=$build_std;$build_std_features"
|
|
|
|
else
|
|
|
|
# For release builds the CLI is built a bit more feature-ful than the Cargo
|
|
|
|
# defaults to provide artifacts that can do as much as possible.
|
|
|
|
bin_flags="--features all-arch,component-model"
|
|
|
|
fi
|
|
|
|
|
|
|
|
cargo build --release $flags --target $target -p wasmtime-cli $bin_flags --features run
|
|
|
|
|
|
|
|
mkdir -p target/c-api-build
|
|
|
|
cd target/c-api-build
|
|
|
|
cmake \
|
|
|
|
../../crates/c-api \
|
|
|
|
$cmake_flags \
|
|
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
|
|
-DWASMTIME_TARGET=$target \
|
|
|
|
-DCMAKE_INSTALL_PREFIX=../c-api-install \
|
|
|
|
-DCMAKE_INSTALL_LIBDIR=../c-api-install/lib
|
|
|
|
cmake --build . --target install
|