build.sh

1.5 KB · raw

1#!/bin/sh2# Koh's four release targets use the pinned V compiler; Linux binaries are static musl builds.3set -eu4[ "$(v version)" = 'V 0.5.2 b9a2d87' ] || { echo 'Koh requires V 0.5.2 b9a2d87' >&2; exit 1; }5target=${KOH_TARGET:-macos-aarch64}6mkdir -p build/releases7case "$target" in8  macos-aarch64|macos-x86_64)9    [ "$(uname -s)" = Darwin ] || { echo 'macOS releases require the Apple SDK on macOS' >&2; exit 1; }10    case "$target" in macos-aarch64) arch=arm64; cpu=arm64 ;; *) arch=x64; cpu=x86_64 ;; esac11    v -prod -d use_bundled_libgc -arch "$arch" -cflags "-arch $cpu -mmacosx-version-min=11.0" -o "build/releases/koh-$target" src/koh.v12    codesign -f -s - "build/releases/koh-$target"13    ;;14  linux-aarch64|linux-x86_64)15    command -v zig >/dev/null 2>&1 || { echo 'Linux cross builds require Zig on PATH' >&2; exit 1; }16    case "$target" in linux-aarch64) arch=arm64; triple=aarch64-linux-musl ;; *) arch=x64; triple=x86_64-linux-musl ;; esac17    compiler="$PWD/build/cc-$target"18    printf '#!/bin/sh\nexec zig cc -target %s "$@"\n' "$triple" > "$compiler"19    chmod 755 "$compiler"20    v -prod -d use_bundled_libgc -os linux -arch "$arch" -musl -cc "$compiler" -o "build/releases/koh-$target" src/koh.v21    zig objcopy --strip-all "build/releases/koh-$target" "build/releases/koh-$target.stripped"22    chmod 755 "build/releases/koh-$target.stripped"23    mv -f "build/releases/koh-$target.stripped" "build/releases/koh-$target"24    ;;25  *) echo "unsupported release target: $target" >&2; exit 1 ;;26esac