#!/bin/bash # Shared architecture detection for build scripts. # Source this file, then call: resolve_arch [target_arch] # # Outputs (exported): # NFPM_ARCH — nfpm/deb/rpm arch name: "amd64" or "arm64" # BUN_TARGET — bun cross-compile target (empty if native build) # ARCH_SUFFIX — filename suffix for cross-compiled binaries (empty if native) _detect_native_arch() { case "$(uname -m)" in x86_64) echo "amd64" ;; aarch64) echo "arm64" ;; arm64) echo "arm64" ;; # macOS reports arm64 *) echo "amd64" ;; # fallback esac } _bun_target_for() { local arch="$1" case "$arch" in amd64) echo "bun-linux-x64" ;; arm64) echo "bun-linux-arm64" ;; esac } _nfpm_download_arch() { local arch="$1" case "$arch" in amd64) echo "x86_64" ;; arm64) echo "arm64" ;; esac } # resolve_arch [override] # override: "amd64" or "arm64" (optional, auto-detects if empty) resolve_arch() { local requested="${1:-}" local native native="$(_detect_native_arch)" if [ -z "$requested" ]; then # Native build NFPM_ARCH="$native" BUN_TARGET="" ARCH_SUFFIX="" else NFPM_ARCH="$requested" if [ "$requested" = "$native" ]; then # Requesting our own arch — native build BUN_TARGET="" ARCH_SUFFIX="" else # Cross-compilation BUN_TARGET="$(_bun_target_for "$requested")" ARCH_SUFFIX="-${requested}" fi fi export NFPM_ARCH BUN_TARGET ARCH_SUFFIX echo " Architecture: ${NFPM_ARCH} (native: ${native}${BUN_TARGET:+, cross-compiling via $BUN_TARGET})" }