# SRC_ROOT is the top of the source tree. SRC_ROOT := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) ALL_SRC := $(shell find . -name '*.go' \ -not -path '*/third_party/*' \ -type f | sort) # All source code and documents. Used in spell check. ALL_SRC_AND_DOC := $(shell find . \( -name "*.md" -o -name "*.go" -o -name "*.yaml" \) \ -type f | sort) # ALL_PKGS is used with 'go cover' ALL_PKGS := $(shell go list $(sort $(dir $(ALL_SRC))) 2>/dev/null) # build tags required by any component should be defined as an independent variables and later added to GO_BUILD_TAGS below GO_BUILD_TAGS="" GOTEST_OPT?= -race -timeout 300s --tags=$(GO_BUILD_TAGS) GOTEST_INTEGRATION_OPT?= -race -timeout 60s GOTEST_OPT_WITH_COVERAGE = $(GOTEST_OPT) -coverprofile=coverage.txt -covermode=atomic GOTEST_OPT_WITH_INTEGRATION=$(GOTEST_INTEGRATION_OPT) -v -tags=integration,$(GO_BUILD_TAGS) -run=Integration -coverprofile=integration-coverage.txt -covermode=atomic GOTEST=go test GOOS=$(shell go env GOOS) GOARCH=$(shell go env GOARCH) ADDLICENCESE= addlicense MISSPELL=misspell -error MISSPELL_CORRECTION=misspell -w LINT=golangci-lint IMPI=impi # BUILD_TYPE should be one of (dev, release). BUILD_TYPE?=release all-pkgs: @echo $(ALL_PKGS) | tr ' ' '\n' | sort all-srcs: @echo $(ALL_SRC) | tr ' ' '\n' | sort .DEFAULT_GOAL := common .PHONY: common common: checklicense checkdoc impi lint misspell .PHONY: test test: $(GOTEST) $(GOTEST_OPT) ./... .PHONY: do-unit-tests-with-cover do-unit-tests-with-cover: @echo "running go unit test ./... + coverage in `pwd`" @$(GOTEST) $(GOTEST_OPT_WITH_COVERAGE) ./... go tool cover -html=coverage.txt -o coverage.html .PHONY: do-integration-tests-with-cover do-integration-tests-with-cover: @echo "running go integration test ./... + coverage in `pwd`" @$(GOTEST) $(GOTEST_OPT_WITH_INTEGRATION) ./... @if [ -e integration-coverage.txt ]; then \ go tool cover -html=integration-coverage.txt -o integration-coverage.html; \ fi .PHONY: benchmark benchmark: $(GOTEST) -bench=. -run=notests --tags=$(GO_BUILD_TAGS) $(ALL_PKGS) .PHONY: addlicense addlicense: @ADDLICENCESEOUT=`$(ADDLICENCESE) -y "" -c 'The OpenTelemetry Authors' $(ALL_SRC) 2>&1`; \ if [ "$$ADDLICENCESEOUT" ]; then \ echo "$(ADDLICENCESE) FAILED => add License errors:\n"; \ echo "$$ADDLICENCESEOUT\n"; \ exit 1; \ else \ echo "Add License finished successfully"; \ fi .PHONY: checklicense checklicense: @ADDLICENCESEOUT=`$(ADDLICENCESE) -check $(ALL_SRC) 2>&1`; \ if [ "$$ADDLICENCESEOUT" ]; then \ echo "$(ADDLICENCESE) FAILED => add License errors:\n"; \ echo "$$ADDLICENCESEOUT\n"; \ echo "Use 'make addlicense' to fix this."; \ exit 1; \ else \ echo "Check License finished successfully"; \ fi .PHONY: fmt fmt: gofmt -w -s ./ goimports -w -local github.com/open-telemetry/opentelemetry-collector-contrib ./ .PHONY: lint lint: $(LINT) run --allow-parallel-runners .PHONY: misspell misspell: $(MISSPELL) $(ALL_SRC_AND_DOC) .PHONY: misspell-correction misspell-correction: $(MISSPELL_CORRECTION) $(ALL_SRC_AND_DOC) .PHONY: impi impi: @$(IMPI) --local github.com/open-telemetry/opentelemetry-collector-contrib --scheme stdThirdPartyLocal ./... .PHONY: dep dep: go mod download