summaryrefslogtreecommitdiff
path: root/vendor/github.com/cilium/ebpf/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/cilium/ebpf/Makefile')
-rw-r--r--vendor/github.com/cilium/ebpf/Makefile67
1 files changed, 67 insertions, 0 deletions
diff --git a/vendor/github.com/cilium/ebpf/Makefile b/vendor/github.com/cilium/ebpf/Makefile
new file mode 100644
index 000000000..5d4195833
--- /dev/null
+++ b/vendor/github.com/cilium/ebpf/Makefile
@@ -0,0 +1,67 @@
+# The development version of clang is distributed as the 'clang' binary,
+# while stable/released versions have a version number attached.
+# Pin the default clang to a stable version.
+CLANG ?= clang-11
+CFLAGS := -target bpf -O2 -g -Wall -Werror $(CFLAGS)
+
+# Obtain an absolute path to the directory of the Makefile.
+# Assume the Makefile is in the root of the repository.
+REPODIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
+UIDGID := $(shell stat -c '%u:%g' ${REPODIR})
+
+IMAGE := $(shell cat ${REPODIR}/testdata/docker/IMAGE)
+VERSION := $(shell cat ${REPODIR}/testdata/docker/VERSION)
+
+# clang <8 doesn't tag relocs properly (STT_NOTYPE)
+# clang 9 is the first version emitting BTF
+TARGETS := \
+ testdata/loader-clang-7 \
+ testdata/loader-clang-9 \
+ testdata/loader-clang-11 \
+ testdata/invalid_map \
+ testdata/raw_tracepoint \
+ testdata/invalid_map_static \
+ testdata/initialized_btf_map \
+ testdata/strings \
+ internal/btf/testdata/relocs
+
+.PHONY: all clean docker-all docker-shell
+
+.DEFAULT_TARGET = docker-all
+
+# Build all ELF binaries using a Dockerized LLVM toolchain.
+docker-all:
+ docker run --rm --user "${UIDGID}" \
+ -v "${REPODIR}":/ebpf -w /ebpf --env MAKEFLAGS \
+ "${IMAGE}:${VERSION}" \
+ make all
+
+# (debug) Drop the user into a shell inside the Docker container as root.
+docker-shell:
+ docker run --rm -ti \
+ -v "${REPODIR}":/ebpf -w /ebpf \
+ "${IMAGE}:${VERSION}"
+
+clean:
+ -$(RM) testdata/*.elf
+ -$(RM) internal/btf/testdata/*.elf
+
+all: $(addsuffix -el.elf,$(TARGETS)) $(addsuffix -eb.elf,$(TARGETS))
+
+testdata/loader-%-el.elf: testdata/loader.c
+ $* $(CFLAGS) -mlittle-endian -c $< -o $@
+
+testdata/loader-%-eb.elf: testdata/loader.c
+ $* $(CFLAGS) -mbig-endian -c $< -o $@
+
+%-el.elf: %.c
+ $(CLANG) $(CFLAGS) -mlittle-endian -c $< -o $@
+
+%-eb.elf : %.c
+ $(CLANG) $(CFLAGS) -mbig-endian -c $< -o $@
+
+# Usage: make VMLINUX=/path/to/vmlinux vmlinux-btf
+.PHONY: vmlinux-btf
+vmlinux-btf: internal/btf/testdata/vmlinux-btf.gz
+internal/btf/testdata/vmlinux-btf.gz: $(VMLINUX)
+ objcopy --dump-section .BTF=/dev/stdout "$<" /dev/null | gzip > "$@"