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)" \ 20a298bbabSSuleiman Souhlal CROSS_COMPILE="" CLANG_CROSS_FLAGS="" EXTRA_CFLAGS="$(HOSTCFLAGS)" 2113e07691SIan Rogers 227962cb9bSJiri OlsaRM ?= rm 23b0dcdcb9SIhor SolodraiHOSTPKG_CONFIG ?= pkg-config 24bf1be903SJean-Philippe BruckerCROSS_COMPILE = 2511bb2f7aSJiri Olsa 26fbbb68deSJiri OlsaOUTPUT ?= $(srctree)/tools/bpf/resolve_btfids/ 27fbbb68deSJiri Olsa 28fbbb68deSJiri OlsaLIBBPF_SRC := $(srctree)/tools/lib/bpf/ 29fbbb68deSJiri OlsaSUBCMD_SRC := $(srctree)/tools/lib/subcmd/ 30fbbb68deSJiri Olsa 31fc6b48f6SJiri OlsaBPFOBJ := $(OUTPUT)/libbpf/libbpf.a 320b46b755SQuentin MonnetLIBBPF_OUT := $(abspath $(dir $(BPFOBJ)))/ 33fc6b48f6SJiri OlsaSUBCMDOBJ := $(OUTPUT)/libsubcmd/libsubcmd.a 34af03299dSIan RogersSUBCMD_OUT := $(abspath $(dir $(SUBCMDOBJ)))/ 35fbbb68deSJiri Olsa 361478994aSQuentin MonnetLIBBPF_DESTDIR := $(LIBBPF_OUT) 371478994aSQuentin MonnetLIBBPF_INCLUDE := $(LIBBPF_DESTDIR)include 381478994aSQuentin Monnet 39af03299dSIan RogersSUBCMD_DESTDIR := $(SUBCMD_OUT) 40af03299dSIan Rogers 41fbbb68deSJiri OlsaBINARY := $(OUTPUT)/resolve_btfids 42fbbb68deSJiri OlsaBINARY_IN := $(BINARY)-in.o 43fbbb68deSJiri Olsa 44fbbb68deSJiri Olsaall: $(BINARY) 45fbbb68deSJiri Olsa 46af03299dSIan Rogersprepare: $(BPFOBJ) $(SUBCMDOBJ) 47af03299dSIan Rogers 481478994aSQuentin Monnet$(OUTPUT) $(OUTPUT)/libsubcmd $(LIBBPF_OUT): 49fbbb68deSJiri Olsa $(call msg,MKDIR,,$@) 50fc6b48f6SJiri Olsa $(Q)mkdir -p $(@) 51fbbb68deSJiri Olsa 52fc6b48f6SJiri Olsa$(SUBCMDOBJ): fixdep FORCE | $(OUTPUT)/libsubcmd 53af03299dSIan Rogers $(Q)$(MAKE) -C $(SUBCMD_SRC) OUTPUT=$(SUBCMD_OUT) \ 5413e07691SIan Rogers DESTDIR=$(SUBCMD_DESTDIR) $(HOST_OVERRIDES) prefix= subdir= \ 55*0bdbed91SThomas Weißschuh $(abspath $@) 56fbbb68deSJiri Olsa 571478994aSQuentin Monnet$(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OUT) 581478994aSQuentin Monnet $(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) OUTPUT=$(LIBBPF_OUT) \ 5913e07691SIan Rogers DESTDIR=$(LIBBPF_DESTDIR) $(HOST_OVERRIDES) prefix= subdir= \ 601478994aSQuentin Monnet $(abspath $@) install_headers 61fbbb68deSJiri Olsa 620e43662eSShen JiaminLIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null) 63b0dcdcb9SIhor Solodrai 64b0dcdcb9SIhor Solodraiifneq ($(filter -static,$(EXTRA_LDFLAGS)),) 65b0dcdcb9SIhor SolodraiLIBELF_LIBS := $(shell $(HOSTPKG_CONFIG) libelf --libs --static 2>/dev/null || echo -lelf -lzstd) 66b0dcdcb9SIhor Solodraielse 670e43662eSShen JiaminLIBELF_LIBS := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf) 68b0dcdcb9SIhor Solodraiendif 690e43662eSShen Jiamin 704021848aSIhor SolodraiZLIB_LIBS := $(shell $(HOSTPKG_CONFIG) zlib --libs 2>/dev/null || echo -lz) 714021848aSIhor Solodrai 72edd75c80SViktor MalikHOSTCFLAGS_resolve_btfids += -g \ 73fbbb68deSJiri Olsa -I$(srctree)/tools/include \ 74fbbb68deSJiri Olsa -I$(srctree)/tools/include/uapi \ 751478994aSQuentin Monnet -I$(LIBBPF_INCLUDE) \ 76*0bdbed91SThomas Weißschuh -I$(srctree)/tools/lib \ 77fb348d4fSIhor Solodrai $(LIBELF_FLAGS) \ 78fb348d4fSIhor Solodrai -Wall -Werror 79fbbb68deSJiri Olsa 80b0dcdcb9SIhor SolodraiLIBS = $(LIBELF_LIBS) $(ZLIB_LIBS) 81fbbb68deSJiri Olsa 82edd75c80SViktor Malikexport srctree OUTPUT HOSTCFLAGS_resolve_btfids Q HOSTCC HOSTLD HOSTAR 83fbbb68deSJiri Olsainclude $(srctree)/tools/build/Makefile.include 84fbbb68deSJiri Olsa 85af03299dSIan Rogers$(BINARY_IN): fixdep FORCE prepare | $(OUTPUT) 8656a2df76SJiri Olsa $(Q)$(MAKE) $(build)=resolve_btfids 87fbbb68deSJiri Olsa 88fbbb68deSJiri Olsa$(BINARY): $(BPFOBJ) $(SUBCMDOBJ) $(BINARY_IN) 89fbbb68deSJiri Olsa $(call msg,LINK,$@) 904021848aSIhor Solodrai $(Q)$(HOSTCC) $(BINARY_IN) $(KBUILD_HOSTLDFLAGS) $(EXTRA_LDFLAGS) -o $@ $(BPFOBJ) $(SUBCMDOBJ) $(LIBS) 91fbbb68deSJiri Olsa 92f2313097SJiri Olsaclean_objects := $(wildcard $(OUTPUT)/*.o \ 93f2313097SJiri Olsa $(OUTPUT)/.*.o.cmd \ 94f2313097SJiri Olsa $(OUTPUT)/.*.o.d \ 951478994aSQuentin Monnet $(LIBBPF_OUT) \ 961478994aSQuentin Monnet $(LIBBPF_DESTDIR) \ 97af03299dSIan Rogers $(SUBCMD_OUT) \ 98af03299dSIan Rogers $(SUBCMD_DESTDIR) \ 99f2313097SJiri Olsa $(OUTPUT)/resolve_btfids) 100f2313097SJiri Olsa 101f2313097SJiri Olsaifneq ($(clean_objects),) 102fc6b48f6SJiri Olsaclean: fixdep-clean 103fbbb68deSJiri Olsa $(call msg,CLEAN,$(BINARY)) 104f2313097SJiri Olsa $(Q)$(RM) -rf $(clean_objects) 105f2313097SJiri Olsaelse 106f2313097SJiri Olsaclean: 107f2313097SJiri Olsaendif 108fbbb68deSJiri Olsa 109fbbb68deSJiri Olsatags: 110fbbb68deSJiri Olsa $(call msg,GEN,,tags) 111fbbb68deSJiri Olsa $(Q)ctags -R . $(LIBBPF_SRC) $(SUBCMD_SRC) 112fbbb68deSJiri Olsa 113fbbb68deSJiri OlsaFORCE: 114fbbb68deSJiri Olsa 115af03299dSIan Rogers.PHONY: all FORCE clean tags prepare 116