github.com/cilium/cilium@v1.16.2/bpf/tests/Makefile (about) 1 # Copyright Authors of Cilium 2 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 4 include ../../Makefile.defs 5 6 MAKEFLAGS += -r 7 8 CLANG ?= clang 9 10 FLAGS := -I$(ROOT_DIR)/bpf/include -I$(ROOT_DIR)/bpf -D__NR_CPUS__=$(shell nproc --all) -O2 -g 11 12 CLANG_FLAGS := ${FLAGS} --target=bpf -std=gnu99 -nostdinc 13 # eBPF verifier enforces unaligned access checks where necessary, so don't 14 # let clang complain too early. 15 CLANG_FLAGS += -Wall -Wextra -Werror -Wshadow 16 CLANG_FLAGS += -Wno-address-of-packed-member 17 CLANG_FLAGS += -Wno-unknown-warning-option 18 CLANG_FLAGS += -Wno-gnu-variable-sized-type-not-at-end 19 CLANG_FLAGS += -Wimplicit-int-conversion -Wenum-conversion 20 CLANG_FLAGS += -Wimplicit-fallthrough 21 # Create dependency files for each .o file. 22 CLANG_FLAGS += -MD 23 # Mimics the mcpu values set by cilium-agent. See GetBPFCPU(). 24 ifneq ($(KERNEL),54) 25 CLANG_FLAGS += -mcpu=v3 26 else 27 CLANG_FLAGS += -mcpu=v2 28 endif 29 30 .PHONY: all clean run 31 32 TEST_OBJECTS = $(patsubst %.c, %.o, $(wildcard *.c)) 33 34 %.o: %.c $(LIB) 35 @$(ECHO_CC) 36 @# Remove the .o file to force recompilation, only rely on make's caching, not clangs 37 rm -f $@ 38 $(QUIET) ${CLANG} ${CLANG_FLAGS} -c $< -o $@ 39 40 %.ll: %.c $(LIB) 41 @$(ECHO_CC) 42 $(QUIET) ${CLANG} ${CLANG_FLAGS} -c -emit-llvm $< -o $@ 43 44 %.i: %.c $(LIB) 45 @$(ECHO_CC) 46 $(QUIET) ${CLANG} ${CLANG_FLAGS} -E -c $< -o $@ 47 48 all: $(TEST_OBJECTS) 49 50 clean: 51 rm -f $(wildcard *.ll) 52 rm -f $(wildcard *.o) 53 rm -f $(wildcard *.i) 54 rm -f $(wildcard *.d) 55 56 BPF_TEST_FLAGS:= 57 ifneq ($(shell id -u), 0) 58 BPF_TEST_FLAGS += -exec "sudo -E" 59 endif 60 ifeq ($(V),1) 61 BPF_TEST_FLAGS += -test.v 62 endif 63 ifeq ($(COVER),1) 64 ifndef COVERFORMAT 65 COVERFORMAT:=html 66 endif 67 BPF_TEST_FLAGS += -coverage-report $(ROOT_DIR)/bpf-coverage.$(COVERFORMAT) -coverage-format $(COVERFORMAT) 68 ifdef NOCOVER 69 BPF_TEST_FLAGS += -no-test-coverage "$(NOCOVER)" 70 endif 71 endif 72 ifeq ($(INSTRLOG),1) 73 BPF_TEST_FLAGS += -instrumentation-log $(ROOT_DIR)/test/bpf-instrumentation.log 74 endif 75 ifdef RUN 76 BPF_TEST_FLAGS += -run $(RUN) 77 endif 78 ifdef DUMPCTX 79 BPF_TEST_FLAGS += -dump-ctx 80 endif 81 ifdef BPF_TEST_FILE 82 BPF_TEST_FLAGS += -test $(BPF_TEST_FILE) 83 endif 84 85 run: $(TEST_OBJECTS) 86 $(QUIET)$(GO) test ./bpftest -bpf-test-path $(ROOT_DIR)/bpf/tests $(BPF_TEST_FLAGS) 87 88 -include $(TEST_OBJECTS:.o=.d)