make: generalize targets for projects in cmd folder
This way we keep just one simple target and can keep separate help messages for shorthand target names. Also adds one for `spiff-workflow`. Now both of these result in the same thing being built: ``` make build/bin/node-canary make node-canary ``` Signed-off-by: Jakub Sokołowski <jakub@status.im>
This commit is contained in:
parent
8608aecdb4
commit
2bebdb406a
67
Makefile
67
Makefile
|
@ -30,7 +30,6 @@ help: ##@other Show this help
|
||||||
@perl -e '$(HELP_FUN)' $(MAKEFILE_LIST)
|
@perl -e '$(HELP_FUN)' $(MAKEFILE_LIST)
|
||||||
|
|
||||||
CGO_CFLAGS = -I/$(JAVA_HOME)/include -I/$(JAVA_HOME)/include/darwin
|
CGO_CFLAGS = -I/$(JAVA_HOME)/include -I/$(JAVA_HOME)/include/darwin
|
||||||
GOBIN = $(dir $(realpath $(firstword $(MAKEFILE_LIST))))build/bin
|
|
||||||
GOPATH ?= $(HOME)/go
|
GOPATH ?= $(HOME)/go
|
||||||
GIT_COMMIT = $(shell git rev-parse --short HEAD)
|
GIT_COMMIT = $(shell git rev-parse --short HEAD)
|
||||||
AUTHOR ?= $(shell git config user.email || echo $$USER)
|
AUTHOR ?= $(shell git config user.email || echo $$USER)
|
||||||
|
@ -81,17 +80,35 @@ HELP_FUN = \
|
||||||
print "\n"; \
|
print "\n"; \
|
||||||
}
|
}
|
||||||
|
|
||||||
statusgo: ##@build Build status-go as statusd server
|
GO_CMD_PATHS := $(filter-out library, $(wildcard cmd/*))
|
||||||
|
GO_CMD_NAMES := $(notdir $(GO_CMD_PATHS))
|
||||||
|
GO_CMD_BUILDS := $(addprefix build/bin/, $(GO_CMD_NAMES))
|
||||||
|
|
||||||
|
all: $(GO_CMD_NAMES)
|
||||||
|
|
||||||
|
.PHONY: $(GO_CMD_NAMES) $(GO_CMD_PATHS) $(GO_CMD_BUILDS)
|
||||||
|
$(GO_CMD_BUILDS): ##@build Build any Go project from cmd folder
|
||||||
go build -mod=vendor -v \
|
go build -mod=vendor -v \
|
||||||
-tags '$(BUILD_TAGS)' $(BUILD_FLAGS) \
|
-tags '$(BUILD_TAGS)' $(BUILD_FLAGS) \
|
||||||
-o $(GOBIN)/statusd ./cmd/statusd
|
-o ./$@ ./cmd/$(notdir $@)
|
||||||
@echo "Compilation done."
|
@echo "Compilation done."
|
||||||
@echo "Run \"build/bin/statusd -h\" to view available commands."
|
@echo "Run \"build/bin/$(notdir $@) -h\" to view available commands."
|
||||||
|
|
||||||
|
bootnode: ##@build Build discovery v5 bootnode using status-go deps
|
||||||
|
bootnode: build/bin/bootnode
|
||||||
|
|
||||||
|
node-canary: ##@build Build P2P node canary using status-go deps
|
||||||
|
node-canary: build/bin/node-canary
|
||||||
|
|
||||||
|
statusgo: ##@build Build status-go as statusd server
|
||||||
|
statusgo: build/bin/statusd
|
||||||
|
statusd: statusgo
|
||||||
|
|
||||||
statusd-prune: ##@statusd-prune Build statusd-prune
|
statusd-prune: ##@statusd-prune Build statusd-prune
|
||||||
go build -tags '$(BUILD_TAGS)' -o $(GOBIN)/statusd-prune -v ./cmd/statusd-prune
|
statusd-prune: build/bin/statusd-prune
|
||||||
@echo "Compilation done."
|
|
||||||
@echo "Run \"build/bin/statusd-prune -h\" to view available commands."
|
spiff-workflow: ##@build Build node for SpiffWorkflow BPMN software
|
||||||
|
spiff-workflow: build/bin/spiff-workflow
|
||||||
|
|
||||||
statusd-prune-docker-image: ##@statusd-prune Build statusd-prune docker image
|
statusd-prune-docker-image: ##@statusd-prune Build statusd-prune docker image
|
||||||
@echo "Building docker image for ststusd-prune..."
|
@echo "Building docker image for ststusd-prune..."
|
||||||
|
@ -101,21 +118,9 @@ statusd-prune-docker-image: ##@statusd-prune Build statusd-prune docker image
|
||||||
-t $(BOOTNODE_IMAGE_NAME):$(DOCKER_IMAGE_CUSTOM_TAG) \
|
-t $(BOOTNODE_IMAGE_NAME):$(DOCKER_IMAGE_CUSTOM_TAG) \
|
||||||
-t $(STATUSD_PRUNE_IMAGE_NAME):latest
|
-t $(STATUSD_PRUNE_IMAGE_NAME):latest
|
||||||
|
|
||||||
bootnode: ##@build Build discovery v5 bootnode using status-go deps
|
|
||||||
go build -v \
|
|
||||||
-tags '$(BUILD_TAGS)' $(BUILD_FLAGS) \
|
|
||||||
-o $(GOBIN)/bootnode ./cmd/bootnode/
|
|
||||||
@echo "Compilation done."
|
|
||||||
|
|
||||||
node-canary: ##@build Build P2P node canary using status-go deps
|
|
||||||
go build -v \
|
|
||||||
-tags '$(BUILD_TAGS)' $(BUILD_FLAGS) \
|
|
||||||
-o $(GOBIN)/node-canary ./cmd/node-canary/
|
|
||||||
@echo "Compilation done."
|
|
||||||
|
|
||||||
statusgo-cross: statusgo-android statusgo-ios
|
statusgo-cross: statusgo-android statusgo-ios
|
||||||
@echo "Full cross compilation done."
|
@echo "Full cross compilation done."
|
||||||
@ls -ld $(GOBIN)/statusgo-*
|
@ls -ld build/bin/statusgo-*
|
||||||
|
|
||||||
statusgo-android: ##@cross-compile Build status-go for Android
|
statusgo-android: ##@cross-compile Build status-go for Android
|
||||||
@echo "Building status-go for Android..."
|
@echo "Building status-go for Android..."
|
||||||
|
@ -143,37 +148,37 @@ statusgo-ios: ##@cross-compile Build status-go for iOS
|
||||||
|
|
||||||
statusgo-library: ##@cross-compile Build status-go as static library for current platform
|
statusgo-library: ##@cross-compile Build status-go as static library for current platform
|
||||||
## cmd/library/README.md explains the magic incantation behind this
|
## cmd/library/README.md explains the magic incantation behind this
|
||||||
mkdir -p $(GOBIN)/statusgo-lib
|
mkdir -p build/bin/statusgo-lib
|
||||||
go run cmd/library/*.go > $(GOBIN)/statusgo-lib/main.go
|
go run cmd/library/*.go > build/bin/statusgo-lib/main.go
|
||||||
@echo "Building static library..."
|
@echo "Building static library..."
|
||||||
go build \
|
go build \
|
||||||
-tags '$(BUILD_TAGS)' \
|
-tags '$(BUILD_TAGS)' \
|
||||||
$(BUILD_FLAGS) \
|
$(BUILD_FLAGS) \
|
||||||
-buildmode=c-archive \
|
-buildmode=c-archive \
|
||||||
-o $(GOBIN)/libstatus.a \
|
-o build/bin/libstatus.a \
|
||||||
$(GOBIN)/statusgo-lib
|
./build/bin/statusgo-lib
|
||||||
@echo "Static library built:"
|
@echo "Static library built:"
|
||||||
@ls -la $(GOBIN)/libstatus.*
|
@ls -la build/bin/libstatus.*
|
||||||
|
|
||||||
statusgo-shared-library: ##@cross-compile Build status-go as shared library for current platform
|
statusgo-shared-library: ##@cross-compile Build status-go as shared library for current platform
|
||||||
## cmd/library/README.md explains the magic incantation behind this
|
## cmd/library/README.md explains the magic incantation behind this
|
||||||
mkdir -p $(GOBIN)/statusgo-lib
|
mkdir -p build/bin/statusgo-lib
|
||||||
go run cmd/library/*.go > $(GOBIN)/statusgo-lib/main.go
|
go run cmd/library/*.go > build/bin/statusgo-lib/main.go
|
||||||
@echo "Building shared library..."
|
@echo "Building shared library..."
|
||||||
$(GOBIN_SHARED_LIB_CFLAGS) $(GOBIN_SHARED_LIB_CGO_LDFLAGS) go build \
|
$(GOBIN_SHARED_LIB_CFLAGS) $(GOBIN_SHARED_LIB_CGO_LDFLAGS) go build \
|
||||||
-tags '$(BUILD_TAGS)' \
|
-tags '$(BUILD_TAGS)' \
|
||||||
$(BUILD_FLAGS) \
|
$(BUILD_FLAGS) \
|
||||||
-buildmode=c-shared \
|
-buildmode=c-shared \
|
||||||
-o $(GOBIN)/libstatus.$(GOBIN_SHARED_LIB_EXT) \
|
-o build/bin/libstatus.$(GOBIN_SHARED_LIB_EXT) \
|
||||||
$(GOBIN)/statusgo-lib
|
./build/bin/statusgo-lib
|
||||||
ifeq ($(detected_OS),Linux)
|
ifeq ($(detected_OS),Linux)
|
||||||
cd $(GOBIN) && \
|
cd build/bin && \
|
||||||
ls -lah . && \
|
ls -lah . && \
|
||||||
mv ./libstatus.$(GOBIN_SHARED_LIB_EXT) ./libstatus.$(GOBIN_SHARED_LIB_EXT).0 && \
|
mv ./libstatus.$(GOBIN_SHARED_LIB_EXT) ./libstatus.$(GOBIN_SHARED_LIB_EXT).0 && \
|
||||||
ln -s ./libstatus.$(GOBIN_SHARED_LIB_EXT).0 ./libstatus.$(GOBIN_SHARED_LIB_EXT)
|
ln -s ./libstatus.$(GOBIN_SHARED_LIB_EXT).0 ./libstatus.$(GOBIN_SHARED_LIB_EXT)
|
||||||
endif
|
endif
|
||||||
@echo "Shared library built:"
|
@echo "Shared library built:"
|
||||||
@ls -la $(GOBIN)/libstatus.*
|
@ls -la build/bin/libstatus.*
|
||||||
|
|
||||||
docker-image: ##@docker Build docker image (use DOCKER_IMAGE_NAME to set the image name)
|
docker-image: ##@docker Build docker image (use DOCKER_IMAGE_NAME to set the image name)
|
||||||
@echo "Building docker image..."
|
@echo "Building docker image..."
|
||||||
|
|
Loading…
Reference in New Issue