ebpf_exporter
/
Makefile
85 строк · 2.6 Кб
1.DEFAULT_GOAL := build
2
3BUILD_VAR_PREFIX := github.com/prometheus/common/version
4BUILD_USER := $(shell id -u -n)@$(shell hostname)
5BUILD_DATE := $(shell date --iso-8601=seconds)
6
7ifeq (yes,$(shell which git > /dev/null && test -e .git && echo yes))
8BUILD_VERSION := $(shell git describe --tags)
9BUILD_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
10BUILD_REVISION := $(shell git rev-parse --short HEAD)
11else
12BUILD_VERSION := unknown
13BUILD_BRANCH := unknown
14BUILD_REVISION := unknown
15endif
16
17GO_LDFLAGS_VARS := -X $(BUILD_VAR_PREFIX).Version=$(BUILD_VERSION) \
18-X $(BUILD_VAR_PREFIX).Branch=$(BUILD_BRANCH) \
19-X $(BUILD_VAR_PREFIX).Revision=$(BUILD_REVISION) \
20-X $(BUILD_VAR_PREFIX).BuildUser=$(BUILD_USER) \
21-X $(BUILD_VAR_PREFIX).BuildDate=$(BUILD_DATE)
22
23CLANG_FORMAT_FILES = ${wildcard examples/*.c examples/*.h benchmark/probes/*.c benchmark/probes/*.h}
24
25# * cachestat fails to attach in newer kernels (see code)
26# * kfree_skb doesn't load in ci, possibly due to older verifier
27# * llcstat requires real hardware to attach perf events, which is not present in ci
28# * pci doesn't load in ci, possibly due to older verifier
29# * unix-socket-backlog requires a newer kernel than we have in ci
30CONFIGS_TO_IGNORE_IN_CHECK := cachestat kfree_skb llcstat pci unix-socket-backlog
31CONFIGS_TO_CHECK := $(filter-out $(CONFIGS_TO_IGNORE_IN_CHECK), ${patsubst examples/%.yaml, %, ${wildcard examples/*.yaml}})
32
33export CGO_LDFLAGS := -l bpf
34
35include Makefile.libbpf
36
37GO_TEST_ARGS = -v
38# On aarch64 it's unavailable: FATAL: ThreadSanitizer: unsupported VMA range
39ifneq ($(shell uname -m),aarch64)
40GO_TEST_ARGS += -race
41endif
42
43.PHONY: lint
44lint:
45go mod verify
46golangci-lint run ./...
47
48.PHONY: jsonschema
49jsonschema:
50./scripts/jsonschema.sh
51
52.PHONY: clang-format-check
53clang-format-check:
54./scripts/clang-format-check.sh $(CLANG_FORMAT_FILES)
55
56.PHONY: test
57test: $(LIBBPF_DEPS)
58go test -ldflags='-extldflags "-static"' $(GO_TEST_ARGS) ./...
59
60.PHONY: test-privileged
61test-privileged:
62sudo go test $(GO_TEST_ARGS) ./cgroup
63
64.PHONY: config-check
65config-check:
66sudo ./ebpf_exporter --capabilities.keep=none --config.check --config.strict --config.dir=examples --config.names=$(shell echo $(CONFIGS_TO_CHECK) | tr ' ' ',')
67
68.PHONY: build
69build: build-static
70
71.PHONY: build-static
72build-static:
73$(MAKE) build-binary GO_LDFLAGS='-extldflags "-static"'
74
75.PHONY: build-dynamic
76build-dynamic:
77$(MAKE) build-binary
78
79.PHONY: build-binary
80build-binary: $(LIBBPF_DEPS)
81go build -o ebpf_exporter -v -ldflags="$(GO_LDFLAGS) $(GO_LDFLAGS_VARS)" ./cmd/ebpf_exporter
82
83.PHONY: syscalls
84syscalls:
85go run ./scripts/mksyscalls --strace.version v6.4
86