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 msg = 9fbbb68deSJiri Olsaelse 107f3bdbc3SNathan Chancellor ifeq ($(silent),1) 117f3bdbc3SNathan Chancellor msg = 127f3bdbc3SNathan Chancellor else 13fbbb68deSJiri Olsa msg = @printf ' %-8s %s%s\n' "$(1)" "$(notdir $(2))" "$(if $(3), $(3))"; 147f3bdbc3SNathan Chancellor endif 15fbbb68deSJiri Olsa MAKEFLAGS=--no-print-directory 16fbbb68deSJiri Olsaendif 17fbbb68deSJiri Olsa 18e0975ab9SIan Rogers# Overrides for the prepare step libraries. 1913e07691SIan RogersHOST_OVERRIDES := AR="$(HOSTAR)" CC="$(HOSTCC)" LD="$(HOSTLD)" ARCH="$(HOSTARCH)" \ 20*a298bbabSSuleiman Souhlal CROSS_COMPILE="" CLANG_CROSS_FLAGS="" EXTRA_CFLAGS="$(HOSTCFLAGS)" 2113e07691SIan Rogers 227962cb9bSJiri OlsaRM ?= rm 2356a2df76SJiri OlsaHOSTCC ?= gcc 2456a2df76SJiri OlsaHOSTLD ?= ld 2556a2df76SJiri OlsaHOSTAR ?= ar 26bf1be903SJean-Philippe BruckerCROSS_COMPILE = 2711bb2f7aSJiri Olsa 28fbbb68deSJiri OlsaOUTPUT ?= $(srctree)/tools/bpf/resolve_btfids/ 29fbbb68deSJiri Olsa 30fbbb68deSJiri OlsaLIBBPF_SRC := $(srctree)/tools/lib/bpf/ 31fbbb68deSJiri OlsaSUBCMD_SRC := $(srctree)/tools/lib/subcmd/ 32fbbb68deSJiri Olsa 33fc6b48f6SJiri OlsaBPFOBJ := $(OUTPUT)/libbpf/libbpf.a 340b46b755SQuentin MonnetLIBBPF_OUT := $(abspath $(dir $(BPFOBJ)))/ 35fc6b48f6SJiri OlsaSUBCMDOBJ := $(OUTPUT)/libsubcmd/libsubcmd.a 36af03299dSIan RogersSUBCMD_OUT := $(abspath $(dir $(SUBCMDOBJ)))/ 37fbbb68deSJiri Olsa 381478994aSQuentin MonnetLIBBPF_DESTDIR := $(LIBBPF_OUT) 391478994aSQuentin MonnetLIBBPF_INCLUDE := $(LIBBPF_DESTDIR)include 401478994aSQuentin Monnet 41af03299dSIan RogersSUBCMD_DESTDIR := $(SUBCMD_OUT) 42af03299dSIan RogersSUBCMD_INCLUDE := $(SUBCMD_DESTDIR)include 43af03299dSIan Rogers 44fbbb68deSJiri OlsaBINARY := $(OUTPUT)/resolve_btfids 45fbbb68deSJiri OlsaBINARY_IN := $(BINARY)-in.o 46fbbb68deSJiri Olsa 47fbbb68deSJiri Olsaall: $(BINARY) 48fbbb68deSJiri Olsa 49af03299dSIan Rogersprepare: $(BPFOBJ) $(SUBCMDOBJ) 50af03299dSIan Rogers 511478994aSQuentin Monnet$(OUTPUT) $(OUTPUT)/libsubcmd $(LIBBPF_OUT): 52fbbb68deSJiri Olsa $(call msg,MKDIR,,$@) 53fc6b48f6SJiri Olsa $(Q)mkdir -p $(@) 54fbbb68deSJiri Olsa 55fc6b48f6SJiri Olsa$(SUBCMDOBJ): fixdep FORCE | $(OUTPUT)/libsubcmd 56af03299dSIan Rogers $(Q)$(MAKE) -C $(SUBCMD_SRC) OUTPUT=$(SUBCMD_OUT) \ 5713e07691SIan Rogers DESTDIR=$(SUBCMD_DESTDIR) $(HOST_OVERRIDES) prefix= subdir= \ 58af03299dSIan Rogers $(abspath $@) install_headers 59fbbb68deSJiri Olsa 601478994aSQuentin Monnet$(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OUT) 611478994aSQuentin Monnet $(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) OUTPUT=$(LIBBPF_OUT) \ 6213e07691SIan Rogers DESTDIR=$(LIBBPF_DESTDIR) $(HOST_OVERRIDES) prefix= subdir= \ 631478994aSQuentin Monnet $(abspath $@) install_headers 64fbbb68deSJiri Olsa 650e43662eSShen JiaminLIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null) 660e43662eSShen JiaminLIBELF_LIBS := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf) 670e43662eSShen Jiamin 68edd75c80SViktor MalikHOSTCFLAGS_resolve_btfids += -g \ 69fbbb68deSJiri Olsa -I$(srctree)/tools/include \ 70fbbb68deSJiri Olsa -I$(srctree)/tools/include/uapi \ 711478994aSQuentin Monnet -I$(LIBBPF_INCLUDE) \ 72af03299dSIan Rogers -I$(SUBCMD_INCLUDE) \ 730e43662eSShen Jiamin $(LIBELF_FLAGS) 74fbbb68deSJiri Olsa 750e43662eSShen JiaminLIBS = $(LIBELF_LIBS) -lz 76fbbb68deSJiri Olsa 77edd75c80SViktor Malikexport srctree OUTPUT HOSTCFLAGS_resolve_btfids Q HOSTCC HOSTLD HOSTAR 78fbbb68deSJiri Olsainclude $(srctree)/tools/build/Makefile.include 79fbbb68deSJiri Olsa 80af03299dSIan Rogers$(BINARY_IN): fixdep FORCE prepare | $(OUTPUT) 8156a2df76SJiri Olsa $(Q)$(MAKE) $(build)=resolve_btfids 82fbbb68deSJiri Olsa 83fbbb68deSJiri Olsa$(BINARY): $(BPFOBJ) $(SUBCMDOBJ) $(BINARY_IN) 84fbbb68deSJiri Olsa $(call msg,LINK,$@) 8513e07691SIan Rogers $(Q)$(HOSTCC) $(BINARY_IN) $(KBUILD_HOSTLDFLAGS) -o $@ $(BPFOBJ) $(SUBCMDOBJ) $(LIBS) 86fbbb68deSJiri Olsa 87f2313097SJiri Olsaclean_objects := $(wildcard $(OUTPUT)/*.o \ 88f2313097SJiri Olsa $(OUTPUT)/.*.o.cmd \ 89f2313097SJiri Olsa $(OUTPUT)/.*.o.d \ 901478994aSQuentin Monnet $(LIBBPF_OUT) \ 911478994aSQuentin Monnet $(LIBBPF_DESTDIR) \ 92af03299dSIan Rogers $(SUBCMD_OUT) \ 93af03299dSIan Rogers $(SUBCMD_DESTDIR) \ 94f2313097SJiri Olsa $(OUTPUT)/resolve_btfids) 95f2313097SJiri Olsa 96f2313097SJiri Olsaifneq ($(clean_objects),) 97fc6b48f6SJiri Olsaclean: fixdep-clean 98fbbb68deSJiri Olsa $(call msg,CLEAN,$(BINARY)) 99f2313097SJiri Olsa $(Q)$(RM) -rf $(clean_objects) 100f2313097SJiri Olsaelse 101f2313097SJiri Olsaclean: 102f2313097SJiri Olsaendif 103fbbb68deSJiri Olsa 104fbbb68deSJiri Olsatags: 105fbbb68deSJiri Olsa $(call msg,GEN,,tags) 106fbbb68deSJiri Olsa $(Q)ctags -R . $(LIBBPF_SRC) $(SUBCMD_SRC) 107fbbb68deSJiri Olsa 108fbbb68deSJiri OlsaFORCE: 109fbbb68deSJiri Olsa 110af03299dSIan Rogers.PHONY: all FORCE clean tags prepare 111