#!/bin/sh # Compile le binaire pour les plateformes usuelles, dans dist/. # # Aucune dépendance : CGO_ENABLED=0 produit un exécutable statique, qui ne # réclame ni glibc ni runtime sur la machine où il atterrit. C'est ce qui # permet de déposer le binaire dans un dossier synchronisé et de le lancer # tel quel, quelle que soit la distribution. # # ./build.sh toutes les plateformes # ./build.sh local seulement la machine courante, pour tester vite set -eu cd "$(dirname "$0")" mkdir -p dist # -s -w retirent la table des symboles et les infos de debug : environ 30 % # de moins à synchroniser à chaque version. DRAPEAUX='-s -w' construire() { os=$1 arch=$2 suffixe=${3:-} sortie="dist/frise-$os-$arch$suffixe" CGO_ENABLED=0 GOOS="$os" GOARCH="$arch" go build -ldflags="$DRAPEAUX" -o "$sortie" . printf '%-28s %s\n' "$sortie" "$(du -h "$sortie" | cut -f1)" } go test ./... if [ "${1:-}" = local ]; then CGO_ENABLED=0 go build -ldflags="$DRAPEAUX" -o dist/frise . printf '%-28s %s\n' dist/frise "$(du -h dist/frise | cut -f1)" exit 0 fi construire linux amd64 construire linux arm64 construire windows amd64 .exe construire darwin amd64 # Mac Intel construire darwin arm64 # Apple Silicon