162306a36Sopenharmony_ci# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) 262306a36Sopenharmony_ciinclude ../../scripts/Makefile.include 362306a36Sopenharmony_ci 462306a36Sopenharmony_ciOUTPUT ?= $(abspath .output)/ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ciBPFTOOL_OUTPUT := $(OUTPUT)bpftool/ 762306a36Sopenharmony_ciDEFAULT_BPFTOOL := $(BPFTOOL_OUTPUT)bootstrap/bpftool 862306a36Sopenharmony_ciBPFTOOL ?= $(DEFAULT_BPFTOOL) 962306a36Sopenharmony_ciLIBBPF_SRC := $(abspath ../../lib/bpf) 1062306a36Sopenharmony_ciBPFOBJ_OUTPUT := $(OUTPUT)libbpf/ 1162306a36Sopenharmony_ciBPFOBJ := $(BPFOBJ_OUTPUT)libbpf.a 1262306a36Sopenharmony_ciBPF_DESTDIR := $(BPFOBJ_OUTPUT) 1362306a36Sopenharmony_ciBPF_INCLUDE := $(BPF_DESTDIR)/include 1462306a36Sopenharmony_ciINCLUDES := -I$(OUTPUT) -I$(BPF_INCLUDE) -I$(abspath ../../include/uapi) 1562306a36Sopenharmony_ciCFLAGS := -g -Wall $(CLANG_CROSS_FLAGS) 1662306a36Sopenharmony_ciCFLAGS += $(EXTRA_CFLAGS) 1762306a36Sopenharmony_ciLDFLAGS += $(EXTRA_LDFLAGS) 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci# Try to detect best kernel BTF source 2062306a36Sopenharmony_ciKERNEL_REL := $(shell uname -r) 2162306a36Sopenharmony_ciVMLINUX_BTF_PATHS := $(if $(O),$(O)/vmlinux) \ 2262306a36Sopenharmony_ci $(if $(KBUILD_OUTPUT),$(KBUILD_OUTPUT)/vmlinux) \ 2362306a36Sopenharmony_ci ../../../vmlinux /sys/kernel/btf/vmlinux \ 2462306a36Sopenharmony_ci /boot/vmlinux-$(KERNEL_REL) 2562306a36Sopenharmony_ciVMLINUX_BTF_PATH := $(or $(VMLINUX_BTF),$(firstword \ 2662306a36Sopenharmony_ci $(wildcard $(VMLINUX_BTF_PATHS)))) 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ciifeq ($(V),1) 2962306a36Sopenharmony_ciQ = 3062306a36Sopenharmony_cielse 3162306a36Sopenharmony_ciQ = @ 3262306a36Sopenharmony_ciMAKEFLAGS += --no-print-directory 3362306a36Sopenharmony_cisubmake_extras := feature_display=0 3462306a36Sopenharmony_ciendif 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci.DELETE_ON_ERROR: 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci.PHONY: all clean runqslower libbpf_hdrs 3962306a36Sopenharmony_ciall: runqslower 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_cirunqslower: $(OUTPUT)/runqslower 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ciclean: 4462306a36Sopenharmony_ci $(call QUIET_CLEAN, runqslower) 4562306a36Sopenharmony_ci $(Q)$(RM) -r $(BPFOBJ_OUTPUT) $(BPFTOOL_OUTPUT) 4662306a36Sopenharmony_ci $(Q)$(RM) $(OUTPUT)*.o $(OUTPUT)*.d 4762306a36Sopenharmony_ci $(Q)$(RM) $(OUTPUT)*.skel.h $(OUTPUT)vmlinux.h 4862306a36Sopenharmony_ci $(Q)$(RM) $(OUTPUT)runqslower 4962306a36Sopenharmony_ci $(Q)$(RM) -r .output 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_cilibbpf_hdrs: $(BPFOBJ) 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci$(OUTPUT)/runqslower: $(OUTPUT)/runqslower.o $(BPFOBJ) 5462306a36Sopenharmony_ci $(QUIET_LINK)$(CC) $(CFLAGS) $^ -lelf -lz -o $@ 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci$(OUTPUT)/runqslower.o: runqslower.h $(OUTPUT)/runqslower.skel.h \ 5762306a36Sopenharmony_ci $(OUTPUT)/runqslower.bpf.o | libbpf_hdrs 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci$(OUTPUT)/runqslower.bpf.o: $(OUTPUT)/vmlinux.h runqslower.h | libbpf_hdrs 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci$(OUTPUT)/%.skel.h: $(OUTPUT)/%.bpf.o | $(BPFTOOL) 6262306a36Sopenharmony_ci $(QUIET_GEN)$(BPFTOOL) gen skeleton $< > $@ 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci$(OUTPUT)/%.bpf.o: %.bpf.c $(BPFOBJ) | $(OUTPUT) 6562306a36Sopenharmony_ci $(QUIET_GEN)$(CLANG) -g -O2 --target=bpf $(INCLUDES) \ 6662306a36Sopenharmony_ci -c $(filter %.c,$^) -o $@ && \ 6762306a36Sopenharmony_ci $(LLVM_STRIP) -g $@ 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci$(OUTPUT)/%.o: %.c | $(OUTPUT) 7062306a36Sopenharmony_ci $(QUIET_CC)$(CC) $(CFLAGS) $(INCLUDES) -c $(filter %.c,$^) -o $@ 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci$(OUTPUT) $(BPFOBJ_OUTPUT) $(BPFTOOL_OUTPUT): 7362306a36Sopenharmony_ci $(QUIET_MKDIR)mkdir -p $@ 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci$(OUTPUT)/vmlinux.h: $(VMLINUX_BTF_PATH) | $(OUTPUT) $(BPFTOOL) 7662306a36Sopenharmony_ciifeq ($(VMLINUX_H),) 7762306a36Sopenharmony_ci $(Q)if [ ! -e "$(VMLINUX_BTF_PATH)" ] ; then \ 7862306a36Sopenharmony_ci echo "Couldn't find kernel BTF; set VMLINUX_BTF to" \ 7962306a36Sopenharmony_ci "specify its location." >&2; \ 8062306a36Sopenharmony_ci exit 1;\ 8162306a36Sopenharmony_ci fi 8262306a36Sopenharmony_ci $(QUIET_GEN)$(BPFTOOL) btf dump file $(VMLINUX_BTF_PATH) format c > $@ 8362306a36Sopenharmony_cielse 8462306a36Sopenharmony_ci $(Q)cp "$(VMLINUX_H)" $@ 8562306a36Sopenharmony_ciendif 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci$(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(BPFOBJ_OUTPUT) 8862306a36Sopenharmony_ci $(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) OUTPUT=$(BPFOBJ_OUTPUT) \ 8962306a36Sopenharmony_ci DESTDIR=$(BPFOBJ_OUTPUT) prefix= $(abspath $@) install_headers 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci$(DEFAULT_BPFTOOL): | $(BPFTOOL_OUTPUT) 9262306a36Sopenharmony_ci $(Q)$(MAKE) $(submake_extras) -C ../bpftool OUTPUT=$(BPFTOOL_OUTPUT) bootstrap 93