xref: /openbmc/linux/tools/bpf/resolve_btfids/Makefile (revision 44ad3baf1cca483e418b6aadf2d3994f69e0f16a)
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