^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) include ../../scripts/Makefile.include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) include ../../scripts/Makefile.arch
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) srctree := $(abspath $(CURDIR)/../../../)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) ifeq ($(V),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) Q =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) msg =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) Q = @
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) ifeq ($(silent),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) msg =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) msg = @printf ' %-8s %s%s\n' "$(1)" "$(notdir $(2))" "$(if $(3), $(3))";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) MAKEFLAGS=--no-print-directory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) # always use the host compiler
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) AR = $(HOSTAR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) CC = $(HOSTCC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) LD = $(HOSTLD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) ARCH = $(HOSTARCH)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) RM ?= rm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) OUTPUT ?= $(srctree)/tools/bpf/resolve_btfids/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) LIBBPF_SRC := $(srctree)/tools/lib/bpf/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) SUBCMD_SRC := $(srctree)/tools/lib/subcmd/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) BPFOBJ := $(OUTPUT)/libbpf/libbpf.a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) SUBCMDOBJ := $(OUTPUT)/libsubcmd/libsubcmd.a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) BINARY := $(OUTPUT)/resolve_btfids
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) BINARY_IN := $(BINARY)-in.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) all: $(BINARY)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) $(OUTPUT) $(OUTPUT)/libbpf $(OUTPUT)/libsubcmd:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) $(call msg,MKDIR,,$@)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) $(Q)mkdir -p $(@)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) $(SUBCMDOBJ): fixdep FORCE | $(OUTPUT)/libsubcmd
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) $(Q)$(MAKE) -C $(SUBCMD_SRC) OUTPUT=$(abspath $(dir $@))/ $(abspath $@)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) $(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(OUTPUT)/libbpf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) $(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) OUTPUT=$(abspath $(dir $@))/ $(abspath $@)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) CFLAGS := -g \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) -I$(srctree)/tools/include \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) -I$(srctree)/tools/include/uapi \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) -I$(LIBBPF_SRC) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) -I$(SUBCMD_SRC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) LIBS = -lelf -lz
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) export srctree OUTPUT CFLAGS Q
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) include $(srctree)/tools/build/Makefile.include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) $(BINARY_IN): fixdep FORCE | $(OUTPUT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) $(Q)$(MAKE) $(build)=resolve_btfids
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) $(BINARY): $(BPFOBJ) $(SUBCMDOBJ) $(BINARY_IN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) $(call msg,LINK,$@)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) $(Q)$(CC) $(BINARY_IN) $(LDFLAGS) -o $@ $(BPFOBJ) $(SUBCMDOBJ) $(LIBS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) clean_objects := $(wildcard $(OUTPUT)/*.o \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) $(OUTPUT)/.*.o.cmd \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) $(OUTPUT)/.*.o.d \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) $(OUTPUT)/libbpf \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) $(OUTPUT)/libsubcmd \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) $(OUTPUT)/resolve_btfids)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) ifneq ($(clean_objects),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) clean: fixdep-clean
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) $(call msg,CLEAN,$(BINARY))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) $(Q)$(RM) -rf $(clean_objects)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) clean:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) tags:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) $(call msg,GEN,,tags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) $(Q)ctags -R . $(LIBBPF_SRC) $(SUBCMD_SRC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) FORCE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) .PHONY: all FORCE clean tags