#!/bin/bash set -euo pipefail SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" APP_ROOT_DIR="$(dirname "$SCRIPT_DIR")" ROOT_DIR="$(dirname "$(dirname "$SCRIPT_DIR")")" . "$APP_ROOT_DIR/config.sh" function usage { cat >&2 <&2 usage ;; esac done ;; a) arch="$OPTARG" ;; q) quick_build=1 ;; \?) echo "Invalid option: -$OPTARG" >&2 exit 1 ;; esac done # Derive platform from host if not provided if [[ -z $platform ]]; then case "$(uname -s)" in Darwin) platform="m" ;; Linux) platform="l" ;; CYGWIN*|MINGW*) platform="w" ;; esac fi # Handle architecture rules if [[ $platform = "m" ]]; then # No arch for Mac — ignore anything provided if [[ -n $arch ]]; then echo "Ignoring -a $arch for Mac build (universal binary)" >&2 fi arch="" else # Windows / Linux: derive arch if not supplied if [[ -z $arch ]]; then case "$(uname -m)" in arm64|aarch64) arch="arm64" ;; x86_64) arch="x64" ;; i?86) arch="i686" ;; esac fi fi CHANNEL="source" hash=$(git -C "$ROOT_DIR" rev-parse --short HEAD) build_dir=$(mktemp -d) cleanup() { rm -rf "$build_dir"; } trap cleanup EXIT "$SCRIPT_DIR/prepare_build" -s "$ROOT_DIR/build" -o "$build_dir" -c "$CHANNEL" -m "$hash" build_cmd=("$APP_ROOT_DIR/build.sh" -d "$build_dir" -p "$platform" -c "$CHANNEL" -s) [[ -n $arch ]] && build_cmd+=( -a "$arch" ) [[ $devtools -eq 1 ]] && build_cmd+=( -t ) [[ $quick_build -eq 1 ]] && build_cmd+=( -q ) "${build_cmd[@]}" echo Done