Makefile 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. .PHONY: build clean tidy run serve build-all build-linux build-darwin build-windows build-with-ble
  2. BINARY_NAME=opencode-monitor
  3. VERSION=$(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
  4. GO?=go
  5. build:
  6. $(GO) mod tidy
  7. $(GO) build -ldflags "-X main.Version=$(VERSION)" -o bin/$(BINARY_NAME) ./cmd/monitor
  8. clean:
  9. rm -rf bin/ dist/
  10. tidy:
  11. $(GO) mod tidy
  12. run: build
  13. ./bin/$(BINARY_NAME) monitor --ports 4096
  14. serve: build
  15. ./bin/$(BINARY_NAME) serve --addr :8080
  16. monitor-with-api: build
  17. ./bin/$(BINARY_NAME) monitor --ports 4096 --api-addr :8080
  18. config-list: build
  19. ./bin/$(BINARY_NAME) config list
  20. config-set: build
  21. ./bin/$(BINARY_NAME) config set --broker tcp://127.0.0.1:1883
  22. build-all: build-linux build-darwin build-windows
  23. build-linux:
  24. @echo "Building for Linux..."
  25. @mkdir -p dist
  26. GOOS=linux GOARCH=amd64 $(GO) build -ldflags "-X main.Version=$(VERSION)" -o dist/$(BINARY_NAME)-linux-amd64 ./cmd/monitor
  27. GOOS=linux GOARCH=arm64 $(GO) build -ldflags "-X main.Version=$(VERSION)" -o dist/$(BINARY_NAME)-linux-arm64 ./cmd/monitor
  28. build-darwin:
  29. @echo "Building for macOS..."
  30. @mkdir -p dist
  31. GOOS=darwin GOARCH=amd64 $(GO) build -ldflags "-X main.Version=$(VERSION)" -o dist/$(BINARY_NAME)-darwin-amd64 ./cmd/monitor
  32. GOOS=darwin GOARCH=arm64 $(GO) build -ldflags "-X main.Version=$(VERSION)" -o dist/$(BINARY_NAME)-darwin-arm64 ./cmd/monitor
  33. build-windows:
  34. @echo "Building for Windows..."
  35. @mkdir -p dist
  36. GOOS=windows GOARCH=amd64 $(GO) build -ldflags "-X main.Version=$(VERSION)" -o dist/$(BINARY_NAME)-windows-amd64.exe ./cmd/monitor
  37. GOOS=windows GOARCH=arm64 $(GO) build -ldflags "-X main.Version=$(VERSION)" -o dist/$(BINARY_NAME)-windows-arm64.exe ./cmd/monitor
  38. release: build-all
  39. @echo "Creating release archives..."
  40. @cd dist && tar -czf $(BINARY_NAME)-linux-amd64.tar.gz $(BINARY_NAME)-linux-amd64
  41. @cd dist && tar -czf $(BINARY_NAME)-linux-arm64.tar.gz $(BINARY_NAME)-linux-arm64
  42. @cd dist && tar -czf $(BINARY_NAME)-darwin-amd64.tar.gz $(BINARY_NAME)-darwin-amd64
  43. @cd dist && tar -czf $(BINARY_NAME)-darwin-arm64.tar.gz $(BINARY_NAME)-darwin-arm64
  44. @cd dist && zip -q $(BINARY_NAME)-windows-amd64.zip $(BINARY_NAME)-windows-amd64.exe
  45. @cd dist && zip -q $(BINARY_NAME)-windows-arm64.zip $(BINARY_NAME)-windows-arm64.exe
  46. @echo "Release archives created in dist/"
  47. build-with-ble:
  48. @echo "Step 1: Building BLE relay with PyInstaller..."
  49. python -m PyInstaller --onefile --name ble_relay --distpath bin --specpath build --workpath build scripts/ble_relay.py
  50. @echo "Step 2: Copying BLE relay for embedding..."
  51. cp bin/ble_relay cmd/monitor/ble_relay
  52. @echo "Step 3: Building Go binary with BLE embedded..."
  53. $(GO) mod tidy
  54. $(GO) build -tags ble -ldflags "-X main.Version=$(VERSION)" -o bin/$(BINARY_NAME) ./cmd/monitor
  55. @echo "Step 4: Cleaning up..."
  56. rm -f cmd/monitor/ble_relay
  57. @echo "Done: bin/$(BINARY_NAME)"