70 lines
1.5 KiB
Makefile
70 lines
1.5 KiB
Makefile
#!/usr/bin/make -f
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
# (c) 2024, Konstantin Demin
|
|
|
|
SHELL :=/bin/sh
|
|
.SHELLFLAGS :=-ec
|
|
|
|
.NOTPARALLEL:
|
|
|
|
BIN := publish-nexus
|
|
|
|
OUTDIR ?= .
|
|
OUTSFX ?=
|
|
OUTBIN ?= $(OUTDIR)/$(BIN)$(OUTSFX)
|
|
|
|
export GO ?= go
|
|
export CGO_ENABLED ?= 0
|
|
TAGS ?=
|
|
LDFLAGS ?=
|
|
GO_BUILDFLAGS ?=
|
|
GO_LDFLAGS := -w $(LDFLAGS)
|
|
|
|
comma :=,
|
|
ifeq ($(RELMODE),1)
|
|
## not ready yet
|
|
# TAGS := nodebug$(if $(strip $(TAGS)),$(comma)$(strip $(TAGS)))
|
|
GO_LDFLAGS += -s
|
|
endif
|
|
|
|
.PHONY: all
|
|
all: build
|
|
|
|
.PHONY: clean build dev-build ci-clean
|
|
|
|
clean:
|
|
$(if $(wildcard $(OUTBIN)),rm -fv $(OUTBIN),:)
|
|
|
|
build: $(OUTBIN)
|
|
|
|
test_git = git -c log.showsignature=false show -s --format=%H:%ct
|
|
|
|
$(OUTBIN):
|
|
@:; \
|
|
GO_BUILDFLAGS='$(strip $(GO_BUILDFLAGS))' ; \
|
|
if ! $(test_git) >/dev/null 2>&1 ; then \
|
|
echo "!!! git information is asbent !!!" >&2 ; \
|
|
GO_BUILDFLAGS="-buildvcs=false $${GO_BUILDFLAGS}" ; \
|
|
fi ; \
|
|
for i in $$(seq 1 3) ; do \
|
|
if $(GO) get ; then break ; fi ; \
|
|
done ; \
|
|
$(GO) build -o $@ \
|
|
$${GO_BUILDFLAGS} \
|
|
$(if $(strip $(TAGS)),-tags '$(strip $(TAGS))') \
|
|
$(if $(strip $(GO_LDFLAGS)),-ldflags '$(strip $(GO_LDFLAGS))') \
|
|
$(if $(VERBOSE),-v) ; \
|
|
$(GO) version -m $@
|
|
|
|
dev-build: GO_BUILDFLAGS := -race $(GO_BUILDFLAGS)
|
|
dev-build: CGO_ENABLED := 1
|
|
dev-build: RELMODE := 0
|
|
dev-build: build
|
|
|
|
ci-clean:
|
|
for d in '$(shell $(GO) env GOCACHE)' '$(shell $(GO) env GOMODCACHE)' ; do \
|
|
[ -n "$$d" ] || continue ; \
|
|
[ -d "$$d" ] || continue ; \
|
|
rm -rf "$$d" ; \
|
|
done
|