Makefile 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. # SPDX-License-Identifier: GPL-2.0-only
  2. include ../../scripts/Makefile.include
  3. include ../../scripts/Makefile.arch
  4. srctree := $(abspath $(CURDIR)/../../../)
  5. ifeq ($(V),1)
  6. Q =
  7. msg =
  8. else
  9. Q = @
  10. ifeq ($(silent),1)
  11. msg =
  12. else
  13. msg = @printf ' %-8s %s%s\n' "$(1)" "$(notdir $(2))" "$(if $(3), $(3))";
  14. endif
  15. MAKEFLAGS=--no-print-directory
  16. endif
  17. # Overrides for the prepare step libraries.
  18. HOST_OVERRIDES := AR="$(HOSTAR)" CC="$(HOSTCC)" LD="$(HOSTLD)" ARCH="$(HOSTARCH)" \
  19. CROSS_COMPILE="" EXTRA_CFLAGS="$(HOSTCFLAGS)"
  20. RM ?= rm
  21. HOSTCC ?= gcc
  22. HOSTLD ?= ld
  23. HOSTAR ?= ar
  24. CROSS_COMPILE =
  25. OUTPUT ?= $(srctree)/tools/bpf/resolve_btfids/
  26. LIBBPF_SRC := $(srctree)/tools/lib/bpf/
  27. SUBCMD_SRC := $(srctree)/tools/lib/subcmd/
  28. BPFOBJ := $(OUTPUT)/libbpf/libbpf.a
  29. LIBBPF_OUT := $(abspath $(dir $(BPFOBJ)))/
  30. SUBCMDOBJ := $(OUTPUT)/libsubcmd/libsubcmd.a
  31. SUBCMD_OUT := $(abspath $(dir $(SUBCMDOBJ)))/
  32. LIBBPF_DESTDIR := $(LIBBPF_OUT)
  33. LIBBPF_INCLUDE := $(LIBBPF_DESTDIR)include
  34. SUBCMD_DESTDIR := $(SUBCMD_OUT)
  35. SUBCMD_INCLUDE := $(SUBCMD_DESTDIR)include
  36. BINARY := $(OUTPUT)/resolve_btfids
  37. BINARY_IN := $(BINARY)-in.o
  38. all: $(BINARY)
  39. prepare: $(BPFOBJ) $(SUBCMDOBJ)
  40. $(OUTPUT) $(OUTPUT)/libsubcmd $(LIBBPF_OUT):
  41. $(call msg,MKDIR,,$@)
  42. $(Q)mkdir -p $(@)
  43. $(SUBCMDOBJ): fixdep FORCE | $(OUTPUT)/libsubcmd
  44. $(Q)$(MAKE) -C $(SUBCMD_SRC) OUTPUT=$(SUBCMD_OUT) \
  45. DESTDIR=$(SUBCMD_DESTDIR) $(HOST_OVERRIDES) prefix= subdir= \
  46. $(abspath $@) install_headers
  47. $(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OUT)
  48. $(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) OUTPUT=$(LIBBPF_OUT) \
  49. DESTDIR=$(LIBBPF_DESTDIR) $(HOST_OVERRIDES) prefix= subdir= \
  50. $(abspath $@) install_headers
  51. LIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null)
  52. LIBELF_LIBS := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf)
  53. HOSTCFLAGS_resolve_btfids += -g \
  54. -I$(srctree)/tools/include \
  55. -I$(srctree)/tools/include/uapi \
  56. -I$(LIBBPF_INCLUDE) \
  57. -I$(SUBCMD_INCLUDE) \
  58. $(LIBELF_FLAGS)
  59. LIBS = $(LIBELF_LIBS) -lz
  60. export srctree OUTPUT HOSTCFLAGS_resolve_btfids Q HOSTCC HOSTLD HOSTAR
  61. include $(srctree)/tools/build/Makefile.include
  62. $(BINARY_IN): fixdep FORCE prepare | $(OUTPUT)
  63. $(Q)$(MAKE) $(build)=resolve_btfids
  64. $(BINARY): $(BPFOBJ) $(SUBCMDOBJ) $(BINARY_IN)
  65. $(call msg,LINK,$@)
  66. $(Q)$(HOSTCC) $(BINARY_IN) $(KBUILD_HOSTLDFLAGS) -o $@ $(BPFOBJ) $(SUBCMDOBJ) $(LIBS)
  67. clean_objects := $(wildcard $(OUTPUT)/*.o \
  68. $(OUTPUT)/.*.o.cmd \
  69. $(OUTPUT)/.*.o.d \
  70. $(LIBBPF_OUT) \
  71. $(LIBBPF_DESTDIR) \
  72. $(SUBCMD_OUT) \
  73. $(SUBCMD_DESTDIR) \
  74. $(OUTPUT)/resolve_btfids)
  75. ifneq ($(clean_objects),)
  76. clean: fixdep-clean
  77. $(call msg,CLEAN,$(BINARY))
  78. $(Q)$(RM) -rf $(clean_objects)
  79. else
  80. clean:
  81. endif
  82. tags:
  83. $(call msg,GEN,,tags)
  84. $(Q)ctags -R . $(LIBBPF_SRC) $(SUBCMD_SRC)
  85. FORCE:
  86. .PHONY: all FORCE clean tags prepare