Makefile 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # MyBeacon Native - Build Makefile
  2. # Cross-compilation for ARM (Luckfox Pico Ultra W)
  3. BINDIR := bin
  4. ARMDIR := $(BINDIR)/arm
  5. CMDS := ble-scanner wifi-scanner beacon-daemon
  6. # Build flags
  7. LDFLAGS := -s -w
  8. BUILD_FLAGS := -trimpath -buildvcs=false
  9. # Device settings
  10. DEVICE_IP ?= 192.168.1.100
  11. DEVICE_USER ?= root
  12. .PHONY: all clean native arm deps deploy
  13. # Default: native build
  14. all: native
  15. # Native build (for testing on x86)
  16. native:
  17. @mkdir -p $(BINDIR)
  18. @for cmd in $(CMDS); do \
  19. echo "Building $$cmd (native)..."; \
  20. go build $(BUILD_FLAGS) -ldflags "$(LDFLAGS)" -o $(BINDIR)/$$cmd ./cmd/$$cmd; \
  21. done
  22. @echo "Build complete: $(BINDIR)/"
  23. # ARM cross-compile (pure Go, no CGO needed)
  24. arm:
  25. @mkdir -p $(ARMDIR)
  26. @for cmd in $(CMDS); do \
  27. echo "Building $$cmd (arm)..."; \
  28. CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 \
  29. go build $(BUILD_FLAGS) -ldflags "$(LDFLAGS)" -o $(ARMDIR)/$$cmd ./cmd/$$cmd; \
  30. done
  31. @ls -lh $(ARMDIR)/
  32. @echo "ARM build complete: $(ARMDIR)/"
  33. # Install dependencies
  34. deps:
  35. go mod download
  36. go mod tidy
  37. # Clean
  38. clean:
  39. rm -rf $(BINDIR)
  40. go clean
  41. # Run tests
  42. test:
  43. go test -v ./...
  44. # Format code
  45. fmt:
  46. go fmt ./...
  47. # Lint
  48. lint:
  49. go vet ./...
  50. # Deploy to device via SCP
  51. deploy: arm
  52. @echo "Deploying to $(DEVICE_USER)@$(DEVICE_IP)..."
  53. scp $(ARMDIR)/ble-scanner $(ARMDIR)/wifi-scanner $(ARMDIR)/beacon-daemon \
  54. $(DEVICE_USER)@$(DEVICE_IP):/opt/mybeacon/bin/
  55. @echo "Deploy complete!"
  56. # Create release tarball
  57. release: arm
  58. @mkdir -p release
  59. tar czvf release/mybeacon-arm-$$(date +%Y%m%d).tar.gz \
  60. -C $(ARMDIR) ble-scanner wifi-scanner beacon-daemon
  61. @echo "Release tarball created: release/mybeacon-arm-$$(date +%Y%m%d).tar.gz"
  62. # Show help
  63. help:
  64. @echo "MyBeacon Build System"
  65. @echo ""
  66. @echo "Targets:"
  67. @echo " make native - Build for current platform (default)"
  68. @echo " make arm - Cross-compile for ARM (Luckfox)"
  69. @echo " make deps - Download dependencies"
  70. @echo " make clean - Clean build artifacts"
  71. @echo " make test - Run tests"
  72. @echo " make deploy - Deploy to device (set DEVICE_IP)"
  73. @echo " make release - Create release tarball"
  74. @echo ""
  75. @echo "Variables:"
  76. @echo " DEVICE_IP=x.x.x.x - Device IP for deploy"
  77. @echo " DEVICE_USER=root - Device user for deploy"