162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ciOUTPUT := .output 362306a36Sopenharmony_ciabs_out := $(abspath $(OUTPUT)) 462306a36Sopenharmony_ci 562306a36Sopenharmony_ciCLANG ?= clang 662306a36Sopenharmony_ciLLC ?= llc 762306a36Sopenharmony_ciLLVM_STRIP ?= llvm-strip 862306a36Sopenharmony_ci 962306a36Sopenharmony_ciTOOLS_PATH := $(abspath ../../../../tools) 1062306a36Sopenharmony_ciBPFTOOL_SRC := $(TOOLS_PATH)/bpf/bpftool 1162306a36Sopenharmony_ciBPFTOOL_OUTPUT := $(abs_out)/bpftool 1262306a36Sopenharmony_ciDEFAULT_BPFTOOL := $(BPFTOOL_OUTPUT)/bootstrap/bpftool 1362306a36Sopenharmony_ciBPFTOOL ?= $(DEFAULT_BPFTOOL) 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ciLIBBPF_SRC := $(TOOLS_PATH)/lib/bpf 1662306a36Sopenharmony_ciLIBBPF_OUTPUT := $(abs_out)/libbpf 1762306a36Sopenharmony_ciLIBBPF_DESTDIR := $(LIBBPF_OUTPUT) 1862306a36Sopenharmony_ciLIBBPF_INCLUDE := $(LIBBPF_DESTDIR)/include 1962306a36Sopenharmony_ciBPFOBJ := $(LIBBPF_OUTPUT)/libbpf.a 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ciINCLUDES := -I$(OUTPUT) -I$(LIBBPF_INCLUDE) -I$(TOOLS_PATH)/include/uapi 2262306a36Sopenharmony_ciCFLAGS := -g -Wall 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ciVMLINUX_BTF_PATHS ?= $(if $(O),$(O)/vmlinux) \ 2562306a36Sopenharmony_ci $(if $(KBUILD_OUTPUT),$(KBUILD_OUTPUT)/vmlinux) \ 2662306a36Sopenharmony_ci ../../../../vmlinux \ 2762306a36Sopenharmony_ci /sys/kernel/btf/vmlinux \ 2862306a36Sopenharmony_ci /boot/vmlinux-$(shell uname -r) 2962306a36Sopenharmony_ciVMLINUX_BTF ?= $(abspath $(firstword $(wildcard $(VMLINUX_BTF_PATHS)))) 3062306a36Sopenharmony_ciifeq ($(VMLINUX_BTF),) 3162306a36Sopenharmony_ci$(error Cannot find a vmlinux for VMLINUX_BTF at any of "$(VMLINUX_BTF_PATHS)") 3262306a36Sopenharmony_ciendif 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ciifeq ($(V),1) 3562306a36Sopenharmony_ciQ = 3662306a36Sopenharmony_cimsg = 3762306a36Sopenharmony_cielse 3862306a36Sopenharmony_ciQ = @ 3962306a36Sopenharmony_cimsg = @printf ' %-8s %s%s\n' "$(1)" "$(notdir $(2))" "$(if $(3), $(3))"; 4062306a36Sopenharmony_ciMAKEFLAGS += --no-print-directory 4162306a36Sopenharmony_cisubmake_extras := feature_display=0 4262306a36Sopenharmony_ciendif 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci.DELETE_ON_ERROR: 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci.PHONY: all clean 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ciall: entrypoints.lskel.h 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ciclean: 5162306a36Sopenharmony_ci $(call msg,CLEAN) 5262306a36Sopenharmony_ci $(Q)rm -rf $(OUTPUT) entrypoints 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_cientrypoints.lskel.h: $(OUTPUT)/entrypoints.bpf.o | $(BPFTOOL) 5562306a36Sopenharmony_ci $(call msg,GEN-SKEL,$@) 5662306a36Sopenharmony_ci $(Q)$(BPFTOOL) gen skeleton -L $< > $@ 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci$(OUTPUT)/entrypoints.bpf.o: entrypoints.bpf.c $(OUTPUT)/vmlinux.h $(BPFOBJ) | $(OUTPUT) 6062306a36Sopenharmony_ci $(call msg,BPF,$@) 6162306a36Sopenharmony_ci $(Q)$(CLANG) -g -O2 --target=bpf $(INCLUDES) \ 6262306a36Sopenharmony_ci -c $(filter %.c,$^) -o $@ && \ 6362306a36Sopenharmony_ci $(LLVM_STRIP) -g $@ 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci$(OUTPUT)/vmlinux.h: $(VMLINUX_BTF) $(BPFTOOL) | $(INCLUDE_DIR) 6662306a36Sopenharmony_ciifeq ($(VMLINUX_H),) 6762306a36Sopenharmony_ci $(call msg,GEN,,$@) 6862306a36Sopenharmony_ci $(Q)$(BPFTOOL) btf dump file $(VMLINUX_BTF) format c > $@ 6962306a36Sopenharmony_cielse 7062306a36Sopenharmony_ci $(call msg,CP,,$@) 7162306a36Sopenharmony_ci $(Q)cp "$(VMLINUX_H)" $@ 7262306a36Sopenharmony_ciendif 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci$(OUTPUT) $(LIBBPF_OUTPUT) $(BPFTOOL_OUTPUT): 7562306a36Sopenharmony_ci $(call msg,MKDIR,$@) 7662306a36Sopenharmony_ci $(Q)mkdir -p $@ 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_ci$(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OUTPUT) 7962306a36Sopenharmony_ci $(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) \ 8062306a36Sopenharmony_ci OUTPUT=$(abspath $(dir $@))/ prefix= \ 8162306a36Sopenharmony_ci DESTDIR=$(LIBBPF_DESTDIR) $(abspath $@) install_headers 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ciifeq ($(CROSS_COMPILE),) 8462306a36Sopenharmony_ci$(DEFAULT_BPFTOOL): $(BPFOBJ) | $(BPFTOOL_OUTPUT) 8562306a36Sopenharmony_ci $(Q)$(MAKE) $(submake_extras) -C $(BPFTOOL_SRC) \ 8662306a36Sopenharmony_ci OUTPUT=$(BPFTOOL_OUTPUT)/ \ 8762306a36Sopenharmony_ci LIBBPF_BOOTSTRAP_OUTPUT=$(LIBBPF_OUTPUT)/ \ 8862306a36Sopenharmony_ci LIBBPF_BOOTSTRAP_DESTDIR=$(LIBBPF_DESTDIR)/ bootstrap 8962306a36Sopenharmony_cielse 9062306a36Sopenharmony_ci$(DEFAULT_BPFTOOL): | $(BPFTOOL_OUTPUT) 9162306a36Sopenharmony_ci $(Q)$(MAKE) $(submake_extras) -C $(BPFTOOL_SRC) \ 9262306a36Sopenharmony_ci OUTPUT=$(BPFTOOL_OUTPUT)/ bootstrap 9362306a36Sopenharmony_ciendif 94