@@ -16,37 +16,48 @@ CURRENT_ARCH=$(go env GOARCH)
1616echo " Current platform: ${CURRENT_OS} /${CURRENT_ARCH} "
1717echo " "
1818
19- # DuckDB requires CGO, so cross-compilation needs native C toolchains.
20- # On macOS: darwin arm64/amd64 work natively; for Linux/Windows install:
21- # brew install filosottile/musl-cross/musl-cross mingw-w64
22- # Or use GitHub Actions for full multi-platform builds (see .github/workflows/release.yml).
19+ # DuckDB requires CGO. Cross-compiling to Linux from macOS doesn't work (DuckDB's
20+ # prebuilt libs need glibc; musl has symbol mismatches). Use Docker for Linux locally.
21+ # Windows: brew install mingw-w64. Full multi-platform: push a tag for GitHub Actions.
2322
2423echo " Building macOS binaries (CGO_ENABLED=1)..."
2524CGO_ENABLED=1 GOOS=darwin GOARCH=amd64 go build -o ${OUTPUT_DIR} /devlog-darwin-amd64 ./cmd/devlog
2625echo " ✓ darwin-amd64"
2726CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 go build -o ${OUTPUT_DIR} /devlog-darwin-arm64 ./cmd/devlog
2827echo " ✓ darwin-arm64"
2928
30- # Try Linux/ Windows builds (requires cross-compilers: brew install filosottile/musl-cross/musl-cross mingw-w64)
29+ # Windows: cross-compile with mingw-w64 ( brew install mingw-w64)
3130echo " "
32- echo " Attempting Linux/Windows builds (may fail without cross-compilers)..."
33-
34- if CC=x86_64-linux-musl-gcc CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -ldflags " -extldflags -static" -trimpath -o ${OUTPUT_DIR} /devlog-linux-amd64 ./cmd/devlog 2> /dev/null; then
35- echo " ✓ linux-amd64"
36- else
37- echo " ⚠ linux-amd64 skipped (no cross-compiler)"
38- fi
39-
40- if CC=aarch64-linux-musl-gcc CGO_ENABLED=1 GOOS=linux GOARCH=arm64 go build -ldflags " -extldflags -static" -trimpath -o ${OUTPUT_DIR} /devlog-linux-arm64 ./cmd/devlog 2> /dev/null; then
41- echo " ✓ linux-arm64"
31+ echo " Building Windows binary..."
32+ if CC=x86_64-w64-mingw32-gcc CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -trimpath -o ${OUTPUT_DIR} /devlog-windows-amd64.exe ./cmd/devlog 2> /dev/null; then
33+ echo " ✓ windows-amd64"
4234else
43- echo " ⚠ linux-arm64 skipped (no cross-compiler )"
35+ echo " ⚠ windows-amd64 skipped (brew install mingw-w64 )"
4436fi
4537
46- if CC=x86_64-w64-mingw32-gcc CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -trimpath -o ${OUTPUT_DIR} /devlog-windows-amd64.exe ./cmd/devlog 2> /dev/null; then
47- echo " ✓ windows-amd64"
38+ # Linux: use Docker (DuckDB needs glibc; cross-compile from macOS doesn't work)
39+ echo " "
40+ echo " Building Linux binaries (via Docker)..."
41+ if command -v docker & > /dev/null; then
42+ if docker run --rm --platform linux/amd64 \
43+ -v " $( pwd) :/app" -w /app \
44+ -e CGO_ENABLED=1 -e GOOS=linux -e GOARCH=amd64 \
45+ golang:1.24 go build -trimpath -o ${OUTPUT_DIR} /devlog-linux-amd64 ./cmd/devlog 2> /dev/null; then
46+ echo " ✓ linux-amd64"
47+ else
48+ echo " ⚠ linux-amd64 failed"
49+ fi
50+ if docker run --rm --platform linux/arm64 \
51+ -v " $( pwd) :/app" -w /app \
52+ -e CGO_ENABLED=1 -e GOOS=linux -e GOARCH=arm64 \
53+ golang:1.24 go build -trimpath -o ${OUTPUT_DIR} /devlog-linux-arm64 ./cmd/devlog 2> /dev/null; then
54+ echo " ✓ linux-arm64"
55+ else
56+ echo " ⚠ linux-arm64 failed"
57+ fi
4858else
49- echo " ⚠ windows-amd64 skipped (no cross-compiler)"
59+ echo " ⚠ linux-amd64 skipped (install Docker, or push tag for GitHub Actions)"
60+ echo " ⚠ linux-arm64 skipped (install Docker, or push tag for GitHub Actions)"
5061fi
5162
5263echo " "
0 commit comments