xref: /openbmc/linux/tools/bpf/runqslower/Makefile (revision a835d38d41ca4f8eab5f97512446212f42f094a1)
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)
99c01546dSAndrii NakryikoCFLAGS := -g -Wall
109c01546dSAndrii Nakryiko
119c01546dSAndrii Nakryiko# Try to detect best kernel BTF source
129c01546dSAndrii NakryikoKERNEL_REL := $(shell uname -r)
13*a835d38dSToke Høiland-JørgensenVMLINUX_BTF_PATHS := /sys/kernel/btf/vmlinux /boot/vmlinux-$(KERNEL_REL)
14*a835d38dSToke Høiland-JørgensenVMLINUX_BTF_PATH := $(or $(VMLINUX_BTF),$(firstword			       \
15*a835d38dSToke Høiland-Jørgensen					  $(wildcard $(VMLINUX_BTF_PATHS))))
169c01546dSAndrii Nakryiko
179c01546dSAndrii Nakryikoabs_out := $(abspath $(OUTPUT))
189c01546dSAndrii Nakryikoifeq ($(V),1)
199c01546dSAndrii NakryikoQ =
209c01546dSAndrii Nakryikomsg =
219c01546dSAndrii Nakryikoelse
229c01546dSAndrii NakryikoQ = @
239c01546dSAndrii Nakryikomsg = @printf '  %-8s %s%s\n' "$(1)" "$(notdir $(2))" "$(if $(3), $(3))";
249c01546dSAndrii NakryikoMAKEFLAGS += --no-print-directory
259c01546dSAndrii Nakryikosubmake_extras := feature_display=0
269c01546dSAndrii Nakryikoendif
279c01546dSAndrii Nakryiko
289c01546dSAndrii Nakryiko.DELETE_ON_ERROR:
299c01546dSAndrii Nakryiko
309c01546dSAndrii Nakryiko.PHONY: all clean runqslower
319c01546dSAndrii Nakryikoall: runqslower
329c01546dSAndrii Nakryiko
339c01546dSAndrii Nakryikorunqslower: $(OUTPUT)/runqslower
349c01546dSAndrii Nakryiko
359c01546dSAndrii Nakryikoclean:
369c01546dSAndrii Nakryiko	$(call msg,CLEAN)
379c01546dSAndrii Nakryiko	$(Q)rm -rf $(OUTPUT) runqslower
389c01546dSAndrii Nakryiko
399c01546dSAndrii Nakryiko$(OUTPUT)/runqslower: $(OUTPUT)/runqslower.o $(OUTPUT)/libbpf.a
409c01546dSAndrii Nakryiko	$(call msg,BINARY,$@)
419c01546dSAndrii Nakryiko	$(Q)$(CC) $(CFLAGS) -lelf -lz $^ -o $@
429c01546dSAndrii Nakryiko
439c01546dSAndrii Nakryiko$(OUTPUT)/runqslower.o: runqslower.h $(OUTPUT)/runqslower.skel.h	      \
449c01546dSAndrii Nakryiko			$(OUTPUT)/runqslower.bpf.o
459c01546dSAndrii Nakryiko
469c01546dSAndrii Nakryiko$(OUTPUT)/runqslower.bpf.o: $(OUTPUT)/vmlinux.h runqslower.h
479c01546dSAndrii Nakryiko
489c01546dSAndrii Nakryiko$(OUTPUT)/%.skel.h: $(OUTPUT)/%.bpf.o | $(BPFTOOL)
499c01546dSAndrii Nakryiko	$(call msg,GEN-SKEL,$@)
509c01546dSAndrii Nakryiko	$(Q)$(BPFTOOL) gen skeleton $< > $@
519c01546dSAndrii Nakryiko
529c01546dSAndrii Nakryiko$(OUTPUT)/%.bpf.o: %.bpf.c $(OUTPUT)/libbpf.a | $(OUTPUT)
539c01546dSAndrii Nakryiko	$(call msg,BPF,$@)
549c01546dSAndrii Nakryiko	$(Q)$(CLANG) -g -O2 -target bpf -I$(OUTPUT) -I$(LIBBPF_SRC)	      \
559c01546dSAndrii Nakryiko		 -c $(filter %.c,$^) -o $@ &&				      \
569c01546dSAndrii Nakryiko	$(LLVM_STRIP) -g $@
579c01546dSAndrii Nakryiko
589c01546dSAndrii Nakryiko$(OUTPUT)/%.o: %.c | $(OUTPUT)
599c01546dSAndrii Nakryiko	$(call msg,CC,$@)
609c01546dSAndrii Nakryiko	$(Q)$(CC) $(CFLAGS) -I$(LIBBPF_SRC) -I$(OUTPUT) -c $(filter %.c,$^) -o $@
619c01546dSAndrii Nakryiko
629c01546dSAndrii Nakryiko$(OUTPUT):
639c01546dSAndrii Nakryiko	$(call msg,MKDIR,$@)
649c01546dSAndrii Nakryiko	$(Q)mkdir -p $(OUTPUT)
659c01546dSAndrii Nakryiko
66*a835d38dSToke Høiland-Jørgensen$(OUTPUT)/vmlinux.h: $(VMLINUX_BTF_PATH) | $(OUTPUT) $(BPFTOOL)
679c01546dSAndrii Nakryiko	$(call msg,GEN,$@)
68*a835d38dSToke Høiland-Jørgensen	$(Q)if [ ! -e "$(VMLINUX_BTF_PATH)" ] ; then \
69*a835d38dSToke Høiland-Jørgensen		echo "Couldn't find kernel BTF; set VMLINUX_BTF to"	       \
70*a835d38dSToke Høiland-Jørgensen			"specify its location." >&2;			       \
71*a835d38dSToke Høiland-Jørgensen		exit 1;\
72*a835d38dSToke Høiland-Jørgensen	fi
73*a835d38dSToke Høiland-Jørgensen	$(Q)$(BPFTOOL) btf dump file $(VMLINUX_BTF_PATH) format c > $@
749c01546dSAndrii Nakryiko
759c01546dSAndrii Nakryiko$(OUTPUT)/libbpf.a: | $(OUTPUT)
769c01546dSAndrii Nakryiko	$(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC)			       \
779c01546dSAndrii Nakryiko		    OUTPUT=$(abs_out)/ $(abs_out)/libbpf.a
789c01546dSAndrii Nakryiko
799c01546dSAndrii Nakryiko$(DEFAULT_BPFTOOL):
809c01546dSAndrii Nakryiko	$(Q)$(MAKE) $(submake_extras) -C ../bpftool			      \
819c01546dSAndrii Nakryiko		    prefix= OUTPUT=$(abs_out)/ DESTDIR=$(abs_out) install
82