gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

Makefile (3689B)


      1 # The development version of clang is distributed as the 'clang' binary,
      2 # while stable/released versions have a version number attached.
      3 # Pin the default clang to a stable version.
      4 CLANG ?= clang-14
      5 STRIP ?= llvm-strip-14
      6 OBJCOPY ?= llvm-objcopy-14
      7 CFLAGS := -O2 -g -Wall -Werror $(CFLAGS)
      8 
      9 CI_KERNEL_URL ?= https://github.com/cilium/ci-kernels/raw/master/
     10 
     11 # Obtain an absolute path to the directory of the Makefile.
     12 # Assume the Makefile is in the root of the repository.
     13 REPODIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
     14 UIDGID := $(shell stat -c '%u:%g' ${REPODIR})
     15 
     16 # Prefer podman if installed, otherwise use docker.
     17 # Note: Setting the var at runtime will always override.
     18 CONTAINER_ENGINE ?= $(if $(shell command -v podman), podman, docker)
     19 CONTAINER_RUN_ARGS ?= $(if $(filter ${CONTAINER_ENGINE}, podman), --log-driver=none, --user "${UIDGID}")
     20 
     21 IMAGE := $(shell cat ${REPODIR}/testdata/docker/IMAGE)
     22 VERSION := $(shell cat ${REPODIR}/testdata/docker/VERSION)
     23 
     24 
     25 # clang <8 doesn't tag relocs properly (STT_NOTYPE)
     26 # clang 9 is the first version emitting BTF
     27 TARGETS := \
     28 	testdata/loader-clang-7 \
     29 	testdata/loader-clang-9 \
     30 	testdata/loader-$(CLANG) \
     31 	testdata/btf_map_init \
     32 	testdata/invalid_map \
     33 	testdata/raw_tracepoint \
     34 	testdata/invalid_map_static \
     35 	testdata/invalid_btf_map_init \
     36 	testdata/strings \
     37 	testdata/freplace \
     38 	testdata/iproute2_map_compat \
     39 	testdata/map_spin_lock \
     40 	testdata/subprog_reloc \
     41 	testdata/fwd_decl \
     42 	btf/testdata/relocs \
     43 	btf/testdata/relocs_read \
     44 	btf/testdata/relocs_read_tgt
     45 
     46 .PHONY: all clean container-all container-shell generate
     47 
     48 .DEFAULT_TARGET = container-all
     49 
     50 # Build all ELF binaries using a containerized LLVM toolchain.
     51 container-all:
     52 	${CONTAINER_ENGINE} run --rm ${CONTAINER_RUN_ARGS} \
     53 		-v "${REPODIR}":/ebpf -w /ebpf --env MAKEFLAGS \
     54 		--env CFLAGS="-fdebug-prefix-map=/ebpf=." \
     55 		--env HOME="/tmp" \
     56 		"${IMAGE}:${VERSION}" \
     57 		$(MAKE) all
     58 
     59 # (debug) Drop the user into a shell inside the container as root.
     60 container-shell:
     61 	${CONTAINER_ENGINE} run --rm -ti \
     62 		-v "${REPODIR}":/ebpf -w /ebpf \
     63 		"${IMAGE}:${VERSION}"
     64 
     65 clean:
     66 	-$(RM) testdata/*.elf
     67 	-$(RM) btf/testdata/*.elf
     68 
     69 format:
     70 	find . -type f -name "*.c" | xargs clang-format -i
     71 
     72 all: format $(addsuffix -el.elf,$(TARGETS)) $(addsuffix -eb.elf,$(TARGETS)) generate
     73 	ln -srf testdata/loader-$(CLANG)-el.elf testdata/loader-el.elf
     74 	ln -srf testdata/loader-$(CLANG)-eb.elf testdata/loader-eb.elf
     75 
     76 # $BPF_CLANG is used in go:generate invocations.
     77 generate: export BPF_CLANG := $(CLANG)
     78 generate: export BPF_CFLAGS := $(CFLAGS)
     79 generate:
     80 	go generate ./cmd/bpf2go/test
     81 	go generate ./internal/sys
     82 	cd examples/ && go generate ./...
     83 
     84 testdata/loader-%-el.elf: testdata/loader.c
     85 	$* $(CFLAGS) -target bpfel -c $< -o $@
     86 	$(STRIP) -g $@
     87 
     88 testdata/loader-%-eb.elf: testdata/loader.c
     89 	$* $(CFLAGS) -target bpfeb -c $< -o $@
     90 	$(STRIP) -g $@
     91 
     92 %-el.elf: %.c
     93 	$(CLANG) $(CFLAGS) -target bpfel -c $< -o $@
     94 	$(STRIP) -g $@
     95 
     96 %-eb.elf : %.c
     97 	$(CLANG) $(CFLAGS) -target bpfeb -c $< -o $@
     98 	$(STRIP) -g $@
     99 
    100 .PHONY: generate-btf
    101 generate-btf: KERNEL_VERSION?=5.18
    102 generate-btf:
    103 	$(eval TMP := $(shell mktemp -d))
    104 	curl -fL "$(CI_KERNEL_URL)/linux-$(KERNEL_VERSION).bz" -o "$(TMP)/bzImage"
    105 	./testdata/extract-vmlinux "$(TMP)/bzImage" > "$(TMP)/vmlinux"
    106 	$(OBJCOPY) --dump-section .BTF=/dev/stdout "$(TMP)/vmlinux" /dev/null | gzip > "btf/testdata/vmlinux.btf.gz"
    107 	curl -fL "$(CI_KERNEL_URL)/linux-$(KERNEL_VERSION)-selftests-bpf.tgz" -o "$(TMP)/selftests.tgz"
    108 	tar -xf "$(TMP)/selftests.tgz" --to-stdout tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.ko | \
    109 		$(OBJCOPY) --dump-section .BTF="btf/testdata/btf_testmod.btf" - /dev/null
    110 	$(RM) -r "$(TMP)"