Files
clip-sync/Makefile
T
bruno 5655573fc8
CI / Lint (push) Failing after 14m46s
CI / Test (push) Failing after 4m23s
CI / Build (darwin/amd64) (push) Skipped
CI / Build (linux/amd64) (push) Skipped
CI / Build (windows/amd64) (push) Skipped
CI / Build (darwin/arm64) (push) Skipped
CI / Build (linux/arm64) (push) Skipped
CI / Build (windows/arm64) (push) Skipped
CI / Release (push) Skipped
feat: implémentation complete v0.1.0 — daemon de sync clipboard bidirectionnel
2026-08-08 15:47:22 -04:00

91 lines
3.3 KiB
Makefile

# clip-sync Makefile
# Cross-compilation, tests, release.
BINARY := clip-sync
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "0.1.0")
LDFLAGS := -s -w -X main.version=$(VERSION)
BUILD_DIR := bin
GOOSES := linux windows darwin
GOARCHES := amd64 arm64
.DEFAULT_GOAL := build
# ── Build ──────────────────────────────────────────────────────────────
.PHONY: build
build:
@mkdir -p $(BUILD_DIR)
CGO_ENABLED=0 go build -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(BINARY) .
# ── Cross-compile ──────────────────────────────────────────────────────
.PHONY: release
release:
@mkdir -p $(BUILD_DIR)
@for os in $(GOOSES); do \
for arch in $(GOARCHES); do \
echo "Building $$os/$$arch..."; \
GOOS=$$os GOARCH=$$arch CGO_ENABLED=0 go build \
-ldflags "$(LDFLAGS)" \
-o $(BUILD_DIR)/$(BINARY)-$$os-$$arch$(if $(filter windows,$$os),.exe,) \
.; \
done; \
done
@echo "Release builds in $(BUILD_DIR)/:"
@ls -lh $(BUILD_DIR)
# ── Test ───────────────────────────────────────────────────────────────
.PHONY: test
test:
go test ./... -count=1 -timeout 60s
.PHONY: test-verbose
test-verbose:
go test ./... -v -count=1 -timeout 60s
.PHONY: test-race
test-race:
go test ./... -race -count=1 -timeout 120s
.PHONY: test-cover
test-cover:
go test ./... -coverprofile=coverage.out -count=1 -timeout 60s
go tool cover -func=coverage.out
# ── Lint ───────────────────────────────────────────────────────────────
.PHONY: lint
lint:
golangci-lint run ./...
# ── Clean ──────────────────────────────────────────────────────────────
.PHONY: clean
clean:
rm -rf $(BUILD_DIR) coverage.out
# ── Install (local dev) ────────────────────────────────────────────────
.PHONY: install
install: build
install -m 755 $(BUILD_DIR)/$(BINARY) $(HOME)/.local/bin/$(BINARY)
# ── Help ────────────────────────────────────────────────────────────────
.PHONY: help
help:
@echo "clip-sync Makefile"
@echo ""
@echo " build Build for current platform"
@echo " release Cross-compile all platforms (linux/windows/darwin, amd64/arm64)"
@echo " test Run all tests"
@echo " test-verbose Run tests with verbose output"
@echo " test-race Run tests with race detector"
@echo " test-cover Run tests with coverage report"
@echo " lint Run golangci-lint"
@echo " clean Remove build artifacts"
@echo " install Install binary to ~/.local/bin/"
@echo " help Show this help"