1fbbb68deSJiri Olsa# SPDX-License-Identifier: GPL-2.0-only 2fbbb68deSJiri Olsainclude ../../scripts/Makefile.include 3dc3652d3SJiri Olsainclude ../../scripts/Makefile.arch 4fbbb68deSJiri Olsa 57962cb9bSJiri Olsasrctree := $(abspath $(CURDIR)/../../../) 6fbbb68deSJiri Olsa 7fbbb68deSJiri Olsaifeq ($(V),1) 8fbbb68deSJiri Olsa Q = 9fbbb68deSJiri Olsa msg = 10fbbb68deSJiri Olsaelse 11fbbb68deSJiri Olsa Q = @ 127f3bdbc3SNathan Chancellor ifeq ($(silent),1) 137f3bdbc3SNathan Chancellor msg = 147f3bdbc3SNathan Chancellor else 15fbbb68deSJiri Olsa msg = @printf ' %-8s %s%s\n' "$(1)" "$(notdir $(2))" "$(if $(3), $(3))"; 167f3bdbc3SNathan Chancellor endif 17fbbb68deSJiri Olsa MAKEFLAGS=--no-print-directory 18fbbb68deSJiri Olsaendif 19fbbb68deSJiri Olsa 20e0975ab9SIan Rogers# Overrides for the prepare step libraries. 2113e07691SIan RogersHOST_OVERRIDES := AR="$(HOSTAR)" CC="$(HOSTCC)" LD="$(HOSTLD)" ARCH="$(HOSTARCH)" \ 22*37a75cd8SSuleiman Souhlal CROSS_COMPILE="" CLANG_CROSS_FLAGS="" EXTRA_CFLAGS="$(HOSTCFLAGS)" 2313e07691SIan Rogers 247962cb9bSJiri OlsaRM ?= rm 2556a2df76SJiri OlsaHOSTCC ?= gcc 2656a2df76SJiri OlsaHOSTLD ?= ld 2756a2df76SJiri OlsaHOSTAR ?= ar 28bf1be903SJean-Philippe BruckerCROSS_COMPILE = 2911bb2f7aSJiri Olsa 30fbbb68deSJiri OlsaOUTPUT ?= $(srctree)/tools/bpf/resolve_btfids/ 31fbbb68deSJiri Olsa 32fbbb68deSJiri OlsaLIBBPF_SRC := $(srctree)/tools/lib/bpf/ 33fbbb68deSJiri OlsaSUBCMD_SRC := $(srctree)/tools/lib/subcmd/ 34fbbb68deSJiri Olsa 35fc6b48f6SJiri OlsaBPFOBJ := $(OUTPUT)/libbpf/libbpf.a 360b46b755SQuentin MonnetLIBBPF_OUT := $(abspath $(dir $(BPFOBJ)))/ 37fc6b48f6SJiri OlsaSUBCMDOBJ := $(OUTPUT)/libsubcmd/libsubcmd.a 38af03299dSIan RogersSUBCMD_OUT := $(abspath $(dir $(SUBCMDOBJ)))/ 39fbbb68deSJiri Olsa 401478994aSQuentin MonnetLIBBPF_DESTDIR := $(LIBBPF_OUT) 411478994aSQuentin MonnetLIBBPF_INCLUDE := $(LIBBPF_DESTDIR)include 421478994aSQuentin Monnet 43af03299dSIan RogersSUBCMD_DESTDIR := $(SUBCMD_OUT) 44af03299dSIan RogersSUBCMD_INCLUDE := $(SUBCMD_DESTDIR)include 45af03299dSIan Rogers 46fbbb68deSJiri OlsaBINARY := $(OUTPUT)/resolve_btfids 47fbbb68deSJiri OlsaBINARY_IN := $(BINARY)-in.o 48fbbb68deSJiri Olsa 49fbbb68deSJiri Olsaall: $(BINARY) 50fbbb68deSJiri Olsa 51af03299dSIan Rogersprepare: $(BPFOBJ) $(SUBCMDOBJ) 52af03299dSIan Rogers 531478994aSQuentin Monnet$(OUTPUT) $(OUTPUT)/libsubcmd $(LIBBPF_OUT): 54fbbb68deSJiri Olsa $(call msg,MKDIR,,$@) 55fc6b48f6SJiri Olsa $(Q)mkdir -p $(@) 56fbbb68deSJiri Olsa 57fc6b48f6SJiri Olsa$(SUBCMDOBJ): fixdep FORCE | $(OUTPUT)/libsubcmd 58af03299dSIan Rogers $(Q)$(MAKE) -C $(SUBCMD_SRC) OUTPUT=$(SUBCMD_OUT) \ 5913e07691SIan Rogers DESTDIR=$(SUBCMD_DESTDIR) $(HOST_OVERRIDES) prefix= subdir= \ 60af03299dSIan Rogers $(abspath $@) install_headers 61fbbb68deSJiri Olsa 621478994aSQuentin Monnet$(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OUT) 631478994aSQuentin Monnet $(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) OUTPUT=$(LIBBPF_OUT) \ 6413e07691SIan Rogers DESTDIR=$(LIBBPF_DESTDIR) $(HOST_OVERRIDES) prefix= subdir= \ 651478994aSQuentin Monnet $(abspath $@) install_headers 66fbbb68deSJiri Olsa 670e43662eSShen JiaminLIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null) 680e43662eSShen JiaminLIBELF_LIBS := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf) 690e43662eSShen Jiamin 70edd75c80SViktor MalikHOSTCFLAGS_resolve_btfids += -g \ 71fbbb68deSJiri Olsa -I$(srctree)/tools/include \ 72fbbb68deSJiri Olsa -I$(srctree)/tools/include/uapi \ 731478994aSQuentin Monnet -I$(LIBBPF_INCLUDE) \ 74af03299dSIan Rogers -I$(SUBCMD_INCLUDE) \ 750e43662eSShen Jiamin $(LIBELF_FLAGS) 76fbbb68deSJiri Olsa 770e43662eSShen JiaminLIBS = $(LIBELF_LIBS) -lz 78fbbb68deSJiri Olsa 79edd75c80SViktor Malikexport srctree OUTPUT HOSTCFLAGS_resolve_btfids Q HOSTCC HOSTLD HOSTAR 80fbbb68deSJiri Olsainclude $(srctree)/tools/build/Makefile.include 81fbbb68deSJiri Olsa 82af03299dSIan Rogers$(BINARY_IN): fixdep FORCE prepare | $(OUTPUT) 8356a2df76SJiri Olsa $(Q)$(MAKE) $(build)=resolve_btfids 84fbbb68deSJiri Olsa 85fbbb68deSJiri Olsa$(BINARY): $(BPFOBJ) $(SUBCMDOBJ) $(BINARY_IN) 86fbbb68deSJiri Olsa $(call msg,LINK,$@) 8713e07691SIan Rogers $(Q)$(HOSTCC) $(BINARY_IN) $(KBUILD_HOSTLDFLAGS) -o $@ $(BPFOBJ) $(SUBCMDOBJ) $(LIBS) 88fbbb68deSJiri Olsa 89f2313097SJiri Olsaclean_objects := $(wildcard $(OUTPUT)/*.o \ 90f2313097SJiri Olsa $(OUTPUT)/.*.o.cmd \ 91f2313097SJiri Olsa $(OUTPUT)/.*.o.d \ 921478994aSQuentin Monnet $(LIBBPF_OUT) \ 931478994aSQuentin Monnet $(LIBBPF_DESTDIR) \ 94af03299dSIan Rogers $(SUBCMD_OUT) \ 95af03299dSIan Rogers $(SUBCMD_DESTDIR) \ 96f2313097SJiri Olsa $(OUTPUT)/resolve_btfids) 97f2313097SJiri Olsa 98f2313097SJiri Olsaifneq ($(clean_objects),) 99fc6b48f6SJiri Olsaclean: fixdep-clean 100fbbb68deSJiri Olsa $(call msg,CLEAN,$(BINARY)) 101f2313097SJiri Olsa $(Q)$(RM) -rf $(clean_objects) 102f2313097SJiri Olsaelse 103f2313097SJiri Olsaclean: 104f2313097SJiri Olsaendif 105fbbb68deSJiri Olsa 106fbbb68deSJiri Olsatags: 107fbbb68deSJiri Olsa $(call msg,GEN,,tags) 108fbbb68deSJiri Olsa $(Q)ctags -R . $(LIBBPF_SRC) $(SUBCMD_SRC) 109fbbb68deSJiri Olsa 110fbbb68deSJiri OlsaFORCE: 111fbbb68deSJiri Olsa 112af03299dSIan Rogers.PHONY: all FORCE clean tags prepare 113