| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- # MyBeacon Native - Build Makefile
- # Cross-compilation for ARM (Luckfox Pico Ultra W)
- BINDIR := bin
- ARMDIR := $(BINDIR)/arm
- CMDS := ble-scanner wifi-scanner beacon-daemon
- # Build flags
- LDFLAGS := -s -w
- BUILD_FLAGS := -trimpath
- # Device settings
- DEVICE_IP ?= 192.168.1.100
- DEVICE_USER ?= root
- .PHONY: all clean native arm deps deploy
- # Default: native build
- all: native
- # Native build (for testing on x86)
- native:
- @mkdir -p $(BINDIR)
- @for cmd in $(CMDS); do \
- echo "Building $$cmd (native)..."; \
- go build $(BUILD_FLAGS) -ldflags "$(LDFLAGS)" -o $(BINDIR)/$$cmd ./cmd/$$cmd; \
- done
- @echo "Build complete: $(BINDIR)/"
- # ARM cross-compile (pure Go, no CGO needed)
- arm:
- @mkdir -p $(ARMDIR)
- @for cmd in $(CMDS); do \
- echo "Building $$cmd (arm)..."; \
- CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 \
- go build $(BUILD_FLAGS) -ldflags "$(LDFLAGS)" -o $(ARMDIR)/$$cmd ./cmd/$$cmd; \
- done
- @ls -lh $(ARMDIR)/
- @echo "ARM build complete: $(ARMDIR)/"
- # Install dependencies
- deps:
- go mod download
- go mod tidy
- # Clean
- clean:
- rm -rf $(BINDIR)
- go clean
- # Run tests
- test:
- go test -v ./...
- # Format code
- fmt:
- go fmt ./...
- # Lint
- lint:
- go vet ./...
- # Deploy to device via SCP
- deploy: arm
- @echo "Deploying to $(DEVICE_USER)@$(DEVICE_IP)..."
- scp $(ARMDIR)/ble-scanner $(ARMDIR)/wifi-scanner $(ARMDIR)/beacon-daemon \
- $(DEVICE_USER)@$(DEVICE_IP):/opt/mybeacon/bin/
- @echo "Deploy complete!"
- # Create release tarball
- release: arm
- @mkdir -p release
- tar czvf release/mybeacon-arm-$$(date +%Y%m%d).tar.gz \
- -C $(ARMDIR) ble-scanner wifi-scanner beacon-daemon
- @echo "Release tarball created: release/mybeacon-arm-$$(date +%Y%m%d).tar.gz"
- # Show help
- help:
- @echo "MyBeacon Build System"
- @echo ""
- @echo "Targets:"
- @echo " make native - Build for current platform (default)"
- @echo " make arm - Cross-compile for ARM (Luckfox)"
- @echo " make deps - Download dependencies"
- @echo " make clean - Clean build artifacts"
- @echo " make test - Run tests"
- @echo " make deploy - Deploy to device (set DEVICE_IP)"
- @echo " make release - Create release tarball"
- @echo ""
- @echo "Variables:"
- @echo " DEVICE_IP=x.x.x.x - Device IP for deploy"
- @echo " DEVICE_USER=root - Device user for deploy"
|