github.com/datadog/cilium@v1.6.12/bpf/Makefile.bpf (about) 1 FLAGS := -I$(ROOT_DIR)/bpf/include -I$(ROOT_DIR)/bpf -D__NR_CPUS__=$(shell nproc) -O2 -g 2 3 CLANG_FLAGS := ${FLAGS} -target bpf -emit-llvm 4 # eBPF verifier enforces unaligned access checks where necessary, so don't 5 # let clang complain too early. 6 CLANG_FLAGS += -Wall -Werror -Wno-address-of-packed-member -Wno-unknown-warning-option 7 LLC_FLAGS := -march=bpf -mcpu=probe -mattr=dwarfris 8 9 LIB := $(shell find $(ROOT_DIR)/bpf -name '*.h') 10 BPF_C := $(patsubst %.o,%.c,$(BPF)) 11 BPF_ASM := $(patsubst %.o,%.s,$(BPF)) 12 13 CLANG ?= clang 14 LLC ?= llc 15 HOSTCC ?= gcc 16 17 # Define all at the top here so that Makefiles which include this one will hit 18 # the 'all' target first (which we expect to be overridden by the includer). 19 all: 20 21 %.ll: %.c $(LIB) 22 @$(ECHO_CC) 23 $(QUIET) ${CLANG} ${CLANG_FLAGS} -c $< -o $@ 24 25 %.s: %.ll 26 @$(ECHO_CC) 27 $(QUIET) ${LLC} $(LLC_FLAGS) -filetype=asm -o $@ $(patsubst %.s,%.ll,$@) 28 29 check: 30 @$(ECHO_CHECK)/*.c 31 $(QUIET) spatch --sp-file $(ROOT_DIR)/contrib/coccinelle/null.cocci --dir . --include-headers 32 $(QUIET) sparse -Wsparse-all ${FLAGS} $(ROOT_DIR)/$(RELATIVE_DIR)/*.c 33 $(QUIET) $(CLANG) ${CLANG_FLAGS} --analyze $(ROOT_DIR)/$(RELATIVE_DIR)/*.c 34 $(QUIET) $(foreach SUBDIR,$(SUBDIRS), \ 35 $(MAKE) -C $(SUBDIR) $@) 36 37 preprocess: $(LIB) 38 $(QUIET) $(foreach TARGET,$(shell find $(ROOT_DIR)/$(RELATIVE_DIR)/ -name 'bpf_*.c'), \ 39 echo " GEN $(patsubst %.c,%.i,${TARGET})"; \ 40 ${CLANG} $(FLAGS) -E -target bpf -c ${TARGET} -o $(patsubst %.c,%.i,${TARGET}); ) 41 $(QUIET) $(foreach SUBDIR,$(SUBDIRS), \ 42 $(MAKE) -C $(SUBDIR) $@) 43 44 assembly: $(BPF_C) $(LIB) $(BPF_ASM) 45 $(QUIET) $(foreach SUBDIR,$(SUBDIRS), \ 46 $(MAKE) -C $(SUBDIR) $@)