1 # SPDX-License-Identifier: GPL-2.0 1 # SPDX-License-Identifier: GPL-2.0 2 OUTPUT := .output 2 OUTPUT := .output 3 abs_out := $(abspath $(OUTPUT)) << 4 << 5 CLANG ?= clang 3 CLANG ?= clang 6 LLC ?= llc 4 LLC ?= llc 7 LLVM_STRIP ?= llvm-strip 5 LLVM_STRIP ?= llvm-strip 8 !! 6 DEFAULT_BPFTOOL := $(OUTPUT)/sbin/bpftool 9 TOOLS_PATH := $(abspath ../../../../tools) << 10 BPFTOOL_SRC := $(TOOLS_PATH)/bpf/bpftool << 11 BPFTOOL_OUTPUT := $(abs_out)/bpftool << 12 DEFAULT_BPFTOOL := $(BPFTOOL_OUTPUT)/bootstrap << 13 BPFTOOL ?= $(DEFAULT_BPFTOOL) 7 BPFTOOL ?= $(DEFAULT_BPFTOOL) 14 !! 8 LIBBPF_SRC := $(abspath ../../../../tools/lib/bpf) 15 LIBBPF_SRC := $(TOOLS_PATH)/lib/bpf !! 9 BPFOBJ := $(OUTPUT)/libbpf.a 16 LIBBPF_OUTPUT := $(abs_out)/libbpf !! 10 BPF_INCLUDE := $(OUTPUT) 17 LIBBPF_DESTDIR := $(LIBBPF_OUTPUT) !! 11 INCLUDES := -I$(OUTPUT) -I$(BPF_INCLUDE) -I$(abspath ../../../../tools/lib) \ 18 LIBBPF_INCLUDE := $(LIBBPF_DESTDIR)/include !! 12 -I$(abspath ../../../../tools/include/uapi) 19 BPFOBJ := $(LIBBPF_OUTPUT)/libbpf.a << 20 << 21 INCLUDES := -I$(OUTPUT) -I$(LIBBPF_INCLUDE) -I << 22 CFLAGS := -g -Wall 13 CFLAGS := -g -Wall 23 14 >> 15 abs_out := $(abspath $(OUTPUT)) 24 ifeq ($(V),1) 16 ifeq ($(V),1) 25 Q = 17 Q = 26 msg = 18 msg = 27 else 19 else 28 Q = @ 20 Q = @ 29 msg = @printf ' %-8s %s%s\n' "$(1)" "$(notdir 21 msg = @printf ' %-8s %s%s\n' "$(1)" "$(notdir $(2))" "$(if $(3), $(3))"; 30 MAKEFLAGS += --no-print-directory 22 MAKEFLAGS += --no-print-directory 31 submake_extras := feature_display=0 23 submake_extras := feature_display=0 32 endif 24 endif 33 25 34 .DELETE_ON_ERROR: 26 .DELETE_ON_ERROR: 35 27 36 .PHONY: all clean 28 .PHONY: all clean 37 29 38 all: iterators.lskel-little-endian.h !! 30 all: iterators.skel.h 39 << 40 big: iterators.lskel-big-endian.h << 41 31 42 clean: 32 clean: 43 $(call msg,CLEAN) 33 $(call msg,CLEAN) 44 $(Q)rm -rf $(OUTPUT) iterators 34 $(Q)rm -rf $(OUTPUT) iterators 45 35 46 iterators.lskel-%.h: $(OUTPUT)/%/iterators.bpf !! 36 iterators.skel.h: $(OUTPUT)/iterators.bpf.o | $(BPFTOOL) 47 $(call msg,GEN-SKEL,$@) 37 $(call msg,GEN-SKEL,$@) 48 $(Q)$(BPFTOOL) gen skeleton -L $< > $@ !! 38 $(Q)$(BPFTOOL) gen skeleton $< > $@ >> 39 49 40 50 $(OUTPUT)/%/iterators.bpf.o: iterators.bpf.c $ !! 41 $(OUTPUT)/iterators.bpf.o: iterators.bpf.c $(BPFOBJ) | $(OUTPUT) 51 $(call msg,BPF,$@) 42 $(call msg,BPF,$@) 52 $(Q)mkdir -p $(@D) !! 43 $(Q)$(CLANG) -g -O2 -target bpf $(INCLUDES) \ 53 $(Q)$(CLANG) -g -O2 --target=bpf -m$* << 54 -c $(filter %.c,$^) -o $@ && 44 -c $(filter %.c,$^) -o $@ && \ 55 $(LLVM_STRIP) -g $@ 45 $(LLVM_STRIP) -g $@ 56 46 57 $(OUTPUT) $(LIBBPF_OUTPUT) $(BPFTOOL_OUTPUT): !! 47 $(OUTPUT): 58 $(call msg,MKDIR,$@) 48 $(call msg,MKDIR,$@) 59 $(Q)mkdir -p $@ !! 49 $(Q)mkdir -p $(OUTPUT) 60 50 61 $(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(L !! 51 $(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(OUTPUT) 62 $(Q)$(MAKE) $(submake_extras) -C $(LIB 52 $(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) \ 63 OUTPUT=$(abspath $(dir $@) !! 53 OUTPUT=$(abspath $(dir $@))/ $(abspath $@) 64 DESTDIR=$(LIBBPF_DESTDIR) << 65 54 66 $(DEFAULT_BPFTOOL): | $(BPFTOOL_OUTPUT) !! 55 $(DEFAULT_BPFTOOL): 67 $(Q)$(MAKE) $(submake_extras) -C $(BPF !! 56 $(Q)$(MAKE) $(submake_extras) -C ../../../../tools/bpf/bpftool \ >> 57 prefix= OUTPUT=$(abs_out)/ DESTDIR=$(abs_out) install
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.