xref: /openbmc/linux/tools/bpf/runqslower/Makefile (revision b6580cd8999d4f6846db9f6daa0b759c75aff33e)
19c01546dSAndrii Nakryiko# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
29c01546dSAndrii NakryikoOUTPUT := .output
39c01546dSAndrii NakryikoCLANG := clang
49c01546dSAndrii NakryikoLLC := llc
59c01546dSAndrii NakryikoLLVM_STRIP := llvm-strip
69c01546dSAndrii NakryikoDEFAULT_BPFTOOL := $(OUTPUT)/sbin/bpftool
79c01546dSAndrii NakryikoBPFTOOL ?= $(DEFAULT_BPFTOOL)
89c01546dSAndrii NakryikoLIBBPF_SRC := $(abspath ../../lib/bpf)
9*b6580cd8SToke Høiland-JørgensenBPFOBJ := $(OUTPUT)/libbpf.a
10*b6580cd8SToke Høiland-JørgensenBPF_INCLUDE := $(OUTPUT)
11*b6580cd8SToke Høiland-JørgensenINCLUDES := -I$(BPF_INCLUDE) -I$(OUTPUT) -I$(abspath ../../lib)
129c01546dSAndrii NakryikoCFLAGS := -g -Wall
139c01546dSAndrii Nakryiko
149c01546dSAndrii Nakryiko# Try to detect best kernel BTF source
159c01546dSAndrii NakryikoKERNEL_REL := $(shell uname -r)
16a835d38dSToke Høiland-JørgensenVMLINUX_BTF_PATHS := /sys/kernel/btf/vmlinux /boot/vmlinux-$(KERNEL_REL)
17a835d38dSToke Høiland-JørgensenVMLINUX_BTF_PATH := $(or $(VMLINUX_BTF),$(firstword			       \
18a835d38dSToke Høiland-Jørgensen					  $(wildcard $(VMLINUX_BTF_PATHS))))
199c01546dSAndrii Nakryiko
209c01546dSAndrii Nakryikoabs_out := $(abspath $(OUTPUT))
219c01546dSAndrii Nakryikoifeq ($(V),1)
229c01546dSAndrii NakryikoQ =
239c01546dSAndrii Nakryikomsg =
249c01546dSAndrii Nakryikoelse
259c01546dSAndrii NakryikoQ = @
269c01546dSAndrii Nakryikomsg = @printf '  %-8s %s%s\n' "$(1)" "$(notdir $(2))" "$(if $(3), $(3))";
279c01546dSAndrii NakryikoMAKEFLAGS += --no-print-directory
289c01546dSAndrii Nakryikosubmake_extras := feature_display=0
299c01546dSAndrii Nakryikoendif
309c01546dSAndrii Nakryiko
319c01546dSAndrii Nakryiko.DELETE_ON_ERROR:
329c01546dSAndrii Nakryiko
339c01546dSAndrii Nakryiko.PHONY: all clean runqslower
349c01546dSAndrii Nakryikoall: runqslower
359c01546dSAndrii Nakryiko
369c01546dSAndrii Nakryikorunqslower: $(OUTPUT)/runqslower
379c01546dSAndrii Nakryiko
389c01546dSAndrii Nakryikoclean:
399c01546dSAndrii Nakryiko	$(call msg,CLEAN)
409c01546dSAndrii Nakryiko	$(Q)rm -rf $(OUTPUT) runqslower
419c01546dSAndrii Nakryiko
42*b6580cd8SToke Høiland-Jørgensen$(OUTPUT)/runqslower: $(OUTPUT)/runqslower.o $(BPFOBJ)
439c01546dSAndrii Nakryiko	$(call msg,BINARY,$@)
449c01546dSAndrii Nakryiko	$(Q)$(CC) $(CFLAGS) -lelf -lz $^ -o $@
459c01546dSAndrii Nakryiko
469c01546dSAndrii Nakryiko$(OUTPUT)/runqslower.o: runqslower.h $(OUTPUT)/runqslower.skel.h	      \
479c01546dSAndrii Nakryiko			$(OUTPUT)/runqslower.bpf.o
489c01546dSAndrii Nakryiko
499c01546dSAndrii Nakryiko$(OUTPUT)/runqslower.bpf.o: $(OUTPUT)/vmlinux.h runqslower.h
509c01546dSAndrii Nakryiko
519c01546dSAndrii Nakryiko$(OUTPUT)/%.skel.h: $(OUTPUT)/%.bpf.o | $(BPFTOOL)
529c01546dSAndrii Nakryiko	$(call msg,GEN-SKEL,$@)
539c01546dSAndrii Nakryiko	$(Q)$(BPFTOOL) gen skeleton $< > $@
549c01546dSAndrii Nakryiko
55*b6580cd8SToke Høiland-Jørgensen$(OUTPUT)/%.bpf.o: %.bpf.c $(BPFOBJ) | $(OUTPUT)
569c01546dSAndrii Nakryiko	$(call msg,BPF,$@)
575b554ce5SToke Høiland-Jørgensen	$(Q)$(CLANG) -g -O2 -target bpf $(INCLUDES)			      \
589c01546dSAndrii Nakryiko		 -c $(filter %.c,$^) -o $@ &&				      \
599c01546dSAndrii Nakryiko	$(LLVM_STRIP) -g $@
609c01546dSAndrii Nakryiko
619c01546dSAndrii Nakryiko$(OUTPUT)/%.o: %.c | $(OUTPUT)
629c01546dSAndrii Nakryiko	$(call msg,CC,$@)
635b554ce5SToke Høiland-Jørgensen	$(Q)$(CC) $(CFLAGS) $(INCLUDES) -c $(filter %.c,$^) -o $@
649c01546dSAndrii Nakryiko
659c01546dSAndrii Nakryiko$(OUTPUT):
669c01546dSAndrii Nakryiko	$(call msg,MKDIR,$@)
679c01546dSAndrii Nakryiko	$(Q)mkdir -p $(OUTPUT)
689c01546dSAndrii Nakryiko
69a835d38dSToke Høiland-Jørgensen$(OUTPUT)/vmlinux.h: $(VMLINUX_BTF_PATH) | $(OUTPUT) $(BPFTOOL)
709c01546dSAndrii Nakryiko	$(call msg,GEN,$@)
71a835d38dSToke Høiland-Jørgensen	$(Q)if [ ! -e "$(VMLINUX_BTF_PATH)" ] ; then \
72a835d38dSToke Høiland-Jørgensen		echo "Couldn't find kernel BTF; set VMLINUX_BTF to"	       \
73a835d38dSToke Høiland-Jørgensen			"specify its location." >&2;			       \
74a835d38dSToke Høiland-Jørgensen		exit 1;\
75a835d38dSToke Høiland-Jørgensen	fi
76a835d38dSToke Høiland-Jørgensen	$(Q)$(BPFTOOL) btf dump file $(VMLINUX_BTF_PATH) format c > $@
779c01546dSAndrii Nakryiko
78*b6580cd8SToke Høiland-Jørgensen$(BPFOBJ): | $(OUTPUT)
799c01546dSAndrii Nakryiko	$(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC)			       \
80*b6580cd8SToke Høiland-Jørgensen		    OUTPUT=$(abspath $(dir $@))/ $(abspath $@)
819c01546dSAndrii Nakryiko
829c01546dSAndrii Nakryiko$(DEFAULT_BPFTOOL):
839c01546dSAndrii Nakryiko	$(Q)$(MAKE) $(submake_extras) -C ../bpftool			      \
849c01546dSAndrii Nakryiko		    prefix= OUTPUT=$(abs_out)/ DESTDIR=$(abs_out) install
85