mirror of
https://gitcode.com/JianFeeeee/homeagent-sdk.git
synced 2026-09-20 17:08:01 +00:00
- Supports linux/amd64, linux/arm64, darwin/amd64, darwin/arm64, windows/amd64, and 'all' for matrix build
64 lines
1.8 KiB
Bash
Executable File
64 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
PROJECT_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
BUILD_DIR="${PROJECT_ROOT}/build"
|
|
VERSION="${VERSION:-$(git -C "$PROJECT_ROOT" describe --tags --dirty 2>/dev/null || echo "0.7.1")}"
|
|
GO="${GO:-$(command -v go 2>/dev/null || echo "/home/jianf/go1.26.5/go/bin/go")}"
|
|
GOCACHE="${GOCACHE:-}"
|
|
GOPATH="${GOPATH:-}"
|
|
|
|
TARGET="${1:-native}"
|
|
COMPONENT="${2:-all}"
|
|
|
|
case "$TARGET" in
|
|
native) GOOS="" GOARCH="" ;;
|
|
linux/amd64) GOOS=linux GOARCH=amd64 ;;
|
|
linux/arm64) GOOS=linux GOARCH=arm64 ;;
|
|
darwin/amd64) GOOS=darwin GOARCH=amd64 ;;
|
|
darwin/arm64) GOOS=darwin GOARCH=arm64 ;;
|
|
windows/amd64) GOOS=windows GOARCH=amd64 ;;
|
|
all)
|
|
"$0" linux/amd64 "$COMPONENT"
|
|
"$0" linux/arm64 "$COMPONENT"
|
|
"$0" darwin/amd64 "$COMPONENT"
|
|
"$0" darwin/arm64 "$COMPONENT"
|
|
"$0" windows/amd64 "$COMPONENT"
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown target: $TARGET"
|
|
echo "Usage: $0 [native|linux/amd64|linux/arm64|darwin/amd64|darwin/arm64|windows/amd64|all] [all|plugindev]"
|
|
exit 1
|
|
esac
|
|
|
|
if [ -n "${GOOS:-}" ]; then
|
|
SUFFIX="${GOOS}_${GOARCH}"
|
|
export GOOS GOARCH
|
|
fi
|
|
export CGO_ENABLED=0
|
|
[ -n "$GOCACHE" ] && export GOCACHE
|
|
[ -n "$GOPATH" ] && export GOPATH
|
|
|
|
mkdir -p "$BUILD_DIR"
|
|
|
|
build_plugindev() {
|
|
local src="tools/plugindev"
|
|
local out="$BUILD_DIR/plugindev${SUFFIX:+_$SUFFIX}"
|
|
if [ "$GOOS" = "windows" ]; then out="${out}.exe"; fi
|
|
|
|
echo "[BUILD] plugindev ${GOOS:-linux}/${GOARCH:-amd64} → $out"
|
|
cd "$PROJECT_ROOT/$src"
|
|
"$GO" build -trimpath -ldflags "-X gitcode.com/JianFeeeee/homeagent-sdk/meta.Version=${VERSION}" \
|
|
-o "$out" .
|
|
echo " OK ($(du -h "$out" | cut -f1))"
|
|
cd "$PROJECT_ROOT"
|
|
}
|
|
|
|
case "$COMPONENT" in
|
|
all|plugindev) build_plugindev ;;
|
|
*)
|
|
echo "Unknown component: $COMPONENT"
|
|
exit 1
|
|
esac
|