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)