#!/usr/bin/env bash set -uo pipefail #MISE description="Build Go binary for distribution" BIN_BASENAME="dist/md-social" TARGETS="darwin-arm64 darwin-amd64 linux-arm64 linux-amd64 windows-amd64" COMMIT="${COMMIT:-$(git rev-parse --short HEAD 2>/dev/null || echo unknown)}" DATE_ISO="${DATE_ISO:-$(date -u +%Y-%m-%dT%H:%M:%SZ)}" CGO_ENABLED="${CGO:-0}" BASE_LDFLAGS="-s -w -X main.commit=${COMMIT} -X main.date=${DATE_ISO}" [[ -n "${LDFLAGS:-}" ]] && BASE_LDFLAGS="${BASE_LDFLAGS} ${LDFLAGS}" for target in ${TARGETS}; do IFS=- read -r GOOS GOARCH VARIANT <<< "${target}" GOARM_FLAG="" if [[ "${GOARCH}" == "arm" ]]; then GOARM="7" fi EXT="" [[ "${GOOS}" == "windows" ]] && EXT=".exe" OUT="${BIN_BASENAME}-${GOOS}-${GOARCH}" [[ -n "${GOARM_FLAG}" ]] && OUT="${OUT}v${GOARM}" OUT="${OUT}${EXT}" echo "-> ${GOOS}/${GOARCH}${GOARM_FLAG:+ (GOARM=${GOARM})} -> ${OUT}" env CGO_ENABLED="${CGO_ENABLED}" GOOS="${GOOS}" GOARCH="${GOARCH}" ${GOARM_FLAG} \ go build -trimpath -ldflags "${BASE_LDFLAGS}" -o "${OUT}" . done