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) $@)