Makefile 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. # SPDX-License-Identifier: GPL-2.0
  2. include ../scripts/Makefile.include
  3. prefix ?= /usr/local
  4. CC = gcc
  5. LEX = flex
  6. YACC = bison
  7. MAKE = make
  8. INSTALL ?= install
  9. CFLAGS += -Wall -O2
  10. CFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/include/uapi -I$(srctree)/include
  11. ifeq ($(srctree),)
  12. srctree := $(patsubst %/,%,$(dir $(CURDIR)))
  13. srctree := $(patsubst %/,%,$(dir $(srctree)))
  14. endif
  15. ifeq ($(V),1)
  16. Q =
  17. else
  18. Q = @
  19. endif
  20. FEATURE_USER = .bpf
  21. FEATURE_TESTS = libbfd disassembler-four-args
  22. FEATURE_DISPLAY = libbfd disassembler-four-args
  23. check_feat := 1
  24. NON_CHECK_FEAT_TARGETS := clean bpftool_clean
  25. ifdef MAKECMDGOALS
  26. ifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),)
  27. check_feat := 0
  28. endif
  29. endif
  30. ifeq ($(check_feat),1)
  31. ifeq ($(FEATURES_DUMP),)
  32. include $(srctree)/tools/build/Makefile.feature
  33. else
  34. include $(FEATURES_DUMP)
  35. endif
  36. endif
  37. ifeq ($(feature-disassembler-four-args), 1)
  38. CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
  39. endif
  40. $(OUTPUT)%.yacc.c: $(srctree)/tools/bpf/%.y
  41. $(QUIET_BISON)$(YACC) -o $@ -d $<
  42. $(OUTPUT)%.lex.c: $(srctree)/tools/bpf/%.l
  43. $(QUIET_FLEX)$(LEX) -o $@ $<
  44. $(OUTPUT)%.o: $(srctree)/tools/bpf/%.c
  45. $(QUIET_CC)$(COMPILE.c) -o $@ $<
  46. $(OUTPUT)%.yacc.o: $(OUTPUT)%.yacc.c
  47. $(QUIET_CC)$(COMPILE.c) -o $@ $<
  48. $(OUTPUT)%.lex.o: $(OUTPUT)%.lex.c
  49. $(QUIET_CC)$(COMPILE.c) -o $@ $<
  50. PROGS = $(OUTPUT)bpf_jit_disasm $(OUTPUT)bpf_dbg $(OUTPUT)bpf_asm
  51. all: $(PROGS) bpftool
  52. $(OUTPUT)bpf_jit_disasm: CFLAGS += -DPACKAGE='bpf_jit_disasm'
  53. $(OUTPUT)bpf_jit_disasm: $(OUTPUT)bpf_jit_disasm.o
  54. $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ -lopcodes -lbfd -ldl
  55. $(OUTPUT)bpf_dbg: $(OUTPUT)bpf_dbg.o
  56. $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ -lreadline
  57. $(OUTPUT)bpf_asm: $(OUTPUT)bpf_asm.o $(OUTPUT)bpf_exp.yacc.o $(OUTPUT)bpf_exp.lex.o
  58. $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^
  59. $(OUTPUT)bpf_exp.lex.c: $(OUTPUT)bpf_exp.yacc.c
  60. $(OUTPUT)bpf_exp.yacc.o: $(OUTPUT)bpf_exp.yacc.c
  61. $(OUTPUT)bpf_exp.lex.o: $(OUTPUT)bpf_exp.lex.c
  62. clean: bpftool_clean
  63. $(call QUIET_CLEAN, bpf-progs)
  64. $(Q)rm -rf $(OUTPUT)*.o $(OUTPUT)bpf_jit_disasm $(OUTPUT)bpf_dbg \
  65. $(OUTPUT)bpf_asm $(OUTPUT)bpf_exp.yacc.* $(OUTPUT)bpf_exp.lex.*
  66. $(call QUIET_CLEAN, core-gen)
  67. $(Q)rm -f $(OUTPUT)FEATURE-DUMP.bpf
  68. install: $(PROGS) bpftool_install
  69. $(call QUIET_INSTALL, bpf_jit_disasm)
  70. $(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(prefix)/bin
  71. $(Q)$(INSTALL) $(OUTPUT)bpf_jit_disasm $(DESTDIR)$(prefix)/bin/bpf_jit_disasm
  72. $(call QUIET_INSTALL, bpf_dbg)
  73. $(Q)$(INSTALL) $(OUTPUT)bpf_dbg $(DESTDIR)$(prefix)/bin/bpf_dbg
  74. $(call QUIET_INSTALL, bpf_asm)
  75. $(Q)$(INSTALL) $(OUTPUT)bpf_asm $(DESTDIR)$(prefix)/bin/bpf_asm
  76. bpftool:
  77. $(call descend,bpftool)
  78. bpftool_install:
  79. $(call descend,bpftool,install)
  80. bpftool_clean:
  81. $(call descend,bpftool,clean)
  82. .PHONY: all install clean bpftool bpftool_install bpftool_clean