|
| 1 | +BUILD_DIR=build |
| 2 | +CLI_DIR=${BUILD_DIR}/cli |
| 3 | +DAEMON_DIR=${BUILD_DIR}/daemon |
| 4 | + |
| 5 | +CLI_TARGET_OOS:=linux darwin |
| 6 | +ARCHS:=arm64 amd64 |
| 7 | + |
| 8 | +CLI_TARGET_STRINGS:=$(foreach oos,$(CLI_TARGET_OOS), $(foreach arch,$(ARCHS),${CLI_DIR}/rocketpool-cli-$(oos)-$(arch))) |
| 9 | +DAEMON_TARGET_STRINGS:=$(foreach arch,$(ARCHS),${DAEMON_DIR}/rocketpool-daemon-linux-$(arch)) |
| 10 | + |
| 11 | +MODULES:=$(foreach path,$(shell find . -name go.mod),$(dir $(path))) |
| 12 | +MODULE_GLOBS:=$(foreach module,$(MODULES),$(module)...) |
| 13 | + |
| 14 | +define rocketpool-cli-template |
| 15 | +.PHONY: ${CLI_DIR}/rocketpool-cli-$1-$2 |
| 16 | +${CLI_DIR}/rocketpool-cli-$1-$2: ${CLI_DIR} |
| 17 | + @echo "Building rocketpool-cli-$1-$2" |
| 18 | + CGO_ENABLED=0 GOOS=$1 GOARCH=$2 go build -o $$@ ./rocketpool-cli/rocketpool-cli.go |
| 19 | +endef |
| 20 | + |
| 21 | +.PHONY: all |
| 22 | +all: lint rocketpool-cli rocketpool-daemon |
| 23 | + |
| 24 | +.PHONY: rocketpool-cli |
| 25 | +rocketpool-cli: $(CLI_TARGET_STRINGS) |
| 26 | + |
| 27 | +.PHONY: rocketpool-daemon |
| 28 | +rocketpool-daemon: ${DAEMON_DIR} |
| 29 | + docker build -t rocketpool/smartnode-builder:latest -f docker/smartnode-builder . |
| 30 | + docker run --env OWNER=$(shell id -u):$(shell id -g) --rm -v $(PWD):/src -v $(PWD)/${DAEMON_DIR}:/out -v /tmp/docker-go-build:/root/.cache/go-build rocketpool/smartnode-builder:latest /src/rocketpool/build.sh |
| 31 | + |
| 32 | +${CLI_DIR}: |
| 33 | + mkdir -p ${CLI_DIR} |
| 34 | +${DAEMON_DIR}: |
| 35 | + mkdir -p ${DAEMON_DIR} |
| 36 | + |
| 37 | +$(foreach oos,$(CLI_TARGET_OOS),$(foreach arch,$(ARCHS),$(eval $(call rocketpool-cli-template,$(oos),$(arch))))) |
| 38 | + |
| 39 | +.PHONY: clean |
| 40 | +clean: |
| 41 | + rm -rf build |
| 42 | + |
| 43 | +.PHONY: lint |
| 44 | +lint: |
| 45 | + @echo $(MODULE_GLOBS) |
| 46 | + golangci-lint run --disable-all --enable goimports $(MODULE_GLOBS) |
| 47 | + |
| 48 | +.PHONY: test |
| 49 | +test: |
| 50 | + go test $(MODULE_GLOBS) |
0 commit comments