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