Files
pocket-id-pocket-id-2/scripts/development/build-binaries.sh

79 lines
2.2 KiB
Bash
Raw Normal View History

set -eu
cd backend
mkdir -p .bin
# Check for --docker-only flag
DOCKER_ONLY=false
for arg in "$@"; do
if [ "$arg" = "--docker-only" ]; then
DOCKER_ONLY=true
break
fi
done
# Function to build for a specific platform
build_platform() {
target=$1
os=$2
arch=$3
arm_version=${4:-""}
2025-05-17 11:17:55 -07:00
# "sed" is used to remove leading or trailing whitespace characters
pocket_id_version=$(cat ../.version | sed 's/^\s*\|\s*$//g')
# Set the binary extension to exe for Windows
binary_ext=""
if [ "$os" = "windows" ]; then
binary_ext=".exe"
fi
output_dir=".bin/pocket-id-${target}${binary_ext}"
printf "Building %s/%s%s" "$os" "$arch" "$([ -n "$arm_version" ] && echo " GOARM=$arm_version" || echo "")... "
# Build environment variables
2025-05-17 11:17:55 -07:00
env_vars="CGO_ENABLED=0 GOOS=${os} GOARCH=${arch}"
if [ -n "$arm_version" ]; then
env_vars="${env_vars} GOARM=${arm_version}"
fi
# Build the binary
eval "${env_vars} go build \
-ldflags='-X github.com/pocket-id/pocket-id/backend/internal/common.Version=${pocket_id_version} -buildid ${pocket_id_version} -s' \
-o \"${output_dir}\" \
-trimpath \
./cmd"
printf "Done\n"
}
if [ "$DOCKER_ONLY" = true ]; then
echo "Building for Docker platforms only (arm64 and amd64)..."
build_platform "linux-amd64" "linux" "amd64" ""
build_platform "linux-arm64" "linux" "arm64" ""
else
echo "Building for all platforms..."
# linux builds
build_platform "linux-amd64" "linux" "amd64" ""
build_platform "linux-386" "linux" "386" ""
build_platform "linux-arm64" "linux" "arm64" ""
build_platform "linux-armv7" "linux" "arm" "7"
# macOS builds
build_platform "macos-x64" "darwin" "amd64" ""
build_platform "macos-arm64" "darwin" "arm64" ""
# Windows builds
build_platform "windows-x64" "windows" "amd64" ""
build_platform "windows-arm64" "windows" "arm64" ""
# FreeBSD builds
build_platform "freebsd-amd64" "freebsd" "amd64" ""
build_platform "freebsd-arm64" "freebsd" "arm64" ""
# OpenBSD builds
build_platform "openbsd-amd64" "openbsd" "amd64" ""
build_platform "openbsd-arm64" "openbsd" "arm64" ""
fi
echo "Compilation done"