xref: /linux/tools/bpf/resolve_btfids/Makefile (revision 2c4a1f3fe03edab80db66688360685031802160a)
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