summaryrefslogtreecommitdiffhomepage
path: root/desktop/scripts/pack-universal-win.sh
blob: b3144f27ddb1e61d196973c9e10a296e5b16ddaf (plain)
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
#!/usr/bin/env bash
# shellcheck shell=bash
# Build universal installer for both ARM and x64.

set -eu

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR/../.."

CARGO_TARGET_DIR=${CARGO_TARGET_DIR:-"target"}

# If enabled, build in release mode with optimizations enabled
OPTIMIZE="false"

source scripts/utils/log

echo "Computing build version..."
PRODUCT_VERSION=$(cargo run -q --bin mullvad-version)
log_header "Building universal Windows installer for Mullvad VPN $PRODUCT_VERSION"

while [[ "$#" -gt 0 ]]; do
    case $1 in
        --x64-installer)
            export WIN_X64_INSTALLER="$2"
            shift 2
            ;;
        --arm64-installer)
            export WIN_ARM64_INSTALLER="$2"
            shift 2
            ;;
        --optimize)
            OPTIMIZE="true"
            shift
            ;;
        *)
            log_error "Unknown argument: $1"
            exit 1
            ;;
    esac
done

CARGO_ARGS=()

if [[ "$OPTIMIZE" == "true" ]]; then
    CARGO_ARGS+=(--release)
    RUST_BUILD_MODE="release"
else
    RUST_BUILD_MODE="debug"
fi

if [[ "$OPTIMIZE" == "true" && "$PRODUCT_VERSION" != *"-dev-"* ]]; then
    CARGO_ARGS+=(--locked)
fi

if [[ -z ${WIN_X64_INSTALLER-} ]] || [[ -z ${WIN_ARM64_INSTALLER-} ]]; then
    log_error "Must provide --x64-installer and --arm64-installer"
    exit 1
fi

cargo build "${CARGO_ARGS[@]}" -p windows-installer --target x86_64-pc-windows-msvc

dest="dist/MullvadVPN-${PRODUCT_VERSION}.exe"

cp "$CARGO_TARGET_DIR/x86_64-pc-windows-msvc/${RUST_BUILD_MODE}/windows-installer.exe" "$dest"

log_success "Built universal installer: $dest"