122 lines
2.7 KiB
Makefile
122 lines
2.7 KiB
Makefile
export GO111MODULE=off
|
|
|
|
GO ?= go
|
|
GO_BUILD=$(GO) build
|
|
# Go module support: set `-mod=vendor` to use the vendored sources
|
|
ifeq ($(shell go help mod >/dev/null 2>&1 && echo true), true)
|
|
GO_BUILD=GO111MODULE=on $(GO) build -mod=vendor
|
|
endif
|
|
BUILDTAGS :=
|
|
DESTDIR ?=
|
|
PREFIX := /usr/local
|
|
CONFIGDIR := ${PREFIX}/share/containers
|
|
PROJECT := github.com/containers/common
|
|
|
|
# If GOPATH not specified, use one in the local directory
|
|
ifeq ($(GOPATH),)
|
|
export GOPATH := $(CURDIR)/_output
|
|
unexport GOBIN
|
|
endif
|
|
FIRST_GOPATH := $(firstword $(subst :, ,$(GOPATH)))
|
|
GOPKGDIR := $(FIRST_GOPATH)/src/$(PROJECT)
|
|
GOPKGBASEDIR ?= $(shell dirname "$(GOPKGDIR)")
|
|
|
|
GOBIN := $(shell $(GO) env GOBIN)
|
|
ifeq ($(GOBIN),)
|
|
GOBIN := $(FIRST_GOPATH)/bin
|
|
endif
|
|
|
|
define go-get
|
|
env GO111MODULE=off \
|
|
$(GO) get -u ${1}
|
|
endef
|
|
|
|
define go-build
|
|
GOOS=$(1) GOARCH=$(2) $(GO) build -tags "$(3)" ./...
|
|
endef
|
|
|
|
.PHONY:
|
|
build-cross:
|
|
$(call go-build,linux,386,${BUILDTAGS})
|
|
$(call go-build,linux,arm,${BUILDTAGS})
|
|
$(call go-build,linux,arm64,${BUILDTAGS})
|
|
$(call go-build,linux,ppc64le,${BUILDTAGS})
|
|
$(call go-build,linux,s390x,${BUILDTAGS})
|
|
$(call go-build,darwin,amd64,${BUILDTAGS})
|
|
$(call go-build,windows,amd64,remote ${BUILDTAGS})
|
|
$(call go-build,windows,386,remote ${BUILDTAGS})
|
|
|
|
.PHONY: all
|
|
all: build-amd64 build-386
|
|
|
|
.PHONY: build
|
|
build: build-amd64 build-386
|
|
|
|
.PHONY: build-amd64
|
|
build-amd64:
|
|
GOARCH=amd64 $(GO_BUILD) ./...
|
|
|
|
.PHONY: build-386
|
|
build-386:
|
|
ifneq ($(shell uname -s), Darwin)
|
|
GOARCH=386 $(GO_BUILD) ./...
|
|
endif
|
|
|
|
.PHONY: docs
|
|
docs:
|
|
$(MAKE) -C docs
|
|
|
|
.PHONY: validate
|
|
validate: build/golangci-lint
|
|
./build/golangci-lint run
|
|
./tools/validate_seccomp.sh ./pkg/seccomp
|
|
|
|
vendor-in-container:
|
|
podman run --privileged --rm --env HOME=/root -v `pwd`:/src -w /src golang make vendor
|
|
|
|
.PHONY: vendor
|
|
vendor:
|
|
GO111MODULE=on $(GO) mod tidy
|
|
GO111MODULE=on $(GO) mod vendor
|
|
GO111MODULE=on $(GO) mod verify
|
|
|
|
.PHONY: install.tools
|
|
install.tools: build/golangci-lint .install.md2man
|
|
|
|
build/golangci-lint:
|
|
export \
|
|
VERSION=v1.30.0 \
|
|
URL=https://raw.githubusercontent.com/golangci/golangci-lint \
|
|
BINDIR=build && \
|
|
curl -sfL $$URL/$$VERSION/install.sh | sh -s $$VERSION
|
|
|
|
|
|
.install.md2man:
|
|
if [ ! -x "$(GOBIN)/go-md2man" ]; then \
|
|
$(call go-get,github.com/cpuguy83/go-md2man); \
|
|
fi
|
|
|
|
.PHONY: install
|
|
install:
|
|
install -d ${DESTDIR}/${CONFIGDIR}
|
|
install -m 0644 pkg/config/containers.conf ${DESTDIR}/${CONFIGDIR}/containers.conf
|
|
|
|
$(MAKE) -C docs install
|
|
|
|
.PHONY: test
|
|
test: test-unit
|
|
|
|
.PHONY: test-unit
|
|
test-unit:
|
|
go test -v $(PROJECT)/pkg/...
|
|
go test --tags remote,seccomp -v $(PROJECT)/pkg/...
|
|
|
|
clean: ## Clean artifacts
|
|
$(MAKE) -C docs clean
|
|
find . -name \*~ -delete
|
|
find . -name \#\* -delete
|
|
|
|
.PHONY: seccomp.json
|
|
seccomp.json: $(sources)
|
|
$(GO) run ./cmd/seccomp/generate.go
|