]>
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 | 5 | |
3f356385 DB |
6 | LEX = flex |
7 | YACC = bison | |
71bb428f | 8 | MAKE = make |
fde68c5b | 9 | INSTALL ?= install |
e306e2c1 | 10 | |
d7475de5 | 11 | CFLAGS += -Wall -O2 |
f143c11b WD |
12 | CFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/tools/include/uapi \ |
13 | -I$(srctree)/tools/include | |
d7475de5 | 14 | |
55d554f5 SK |
15 | # This will work when bpf is built in tools env. where srctree |
16 | # isn't set and when invoked from selftests build, where srctree | |
17 | # is set to ".". building_out_of_srctree is undefined for in srctree | |
18 | # builds | |
a89b2cbf QM |
19 | ifeq ($(srctree),) |
20 | update_srctree := 1 | |
21 | endif | |
55d554f5 | 22 | ifndef building_out_of_srctree |
a89b2cbf QM |
23 | update_srctree := 1 |
24 | endif | |
25 | ifeq ($(update_srctree),1) | |
fb982666 RG |
26 | srctree := $(patsubst %/,%,$(dir $(CURDIR))) |
27 | srctree := $(patsubst %/,%,$(dir $(srctree))) | |
28 | endif | |
29 | ||
a50b7f8c JB |
30 | ifeq ($(V),1) |
31 | Q = | |
32 | else | |
33 | Q = @ | |
34 | endif | |
35 | ||
fb982666 RG |
36 | FEATURE_USER = .bpf |
37 | FEATURE_TESTS = libbfd disassembler-four-args | |
38 | FEATURE_DISPLAY = libbfd disassembler-four-args | |
39 | ||
40 | check_feat := 1 | |
1eb832ac | 41 | NON_CHECK_FEAT_TARGETS := clean bpftool_clean runqslower_clean resolve_btfids_clean |
fb982666 RG |
42 | ifdef MAKECMDGOALS |
43 | ifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),) | |
44 | check_feat := 0 | |
45 | endif | |
46 | endif | |
47 | ||
48 | ifeq ($(check_feat),1) | |
49 | ifeq ($(FEATURES_DUMP),) | |
50 | include $(srctree)/tools/build/Makefile.feature | |
51 | else | |
52 | include $(FEATURES_DUMP) | |
53 | endif | |
54 | endif | |
55 | ||
56 | ifeq ($(feature-disassembler-four-args), 1) | |
57 | CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE | |
58 | endif | |
59 | ||
5a8997f2 | 60 | $(OUTPUT)%.yacc.c: $(srctree)/tools/bpf/%.y |
a50b7f8c | 61 | $(QUIET_BISON)$(YACC) -o $@ -d $< |
3f356385 | 62 | |
5a8997f2 | 63 | $(OUTPUT)%.lex.c: $(srctree)/tools/bpf/%.l |
a50b7f8c | 64 | $(QUIET_FLEX)$(LEX) -o $@ $< |
3f356385 | 65 | |
5a8997f2 | 66 | $(OUTPUT)%.o: $(srctree)/tools/bpf/%.c |
d70a6be1 | 67 | $(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $< |
a50b7f8c JB |
68 | |
69 | $(OUTPUT)%.yacc.o: $(OUTPUT)%.yacc.c | |
d70a6be1 | 70 | $(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $< |
a50b7f8c | 71 | $(OUTPUT)%.lex.o: $(OUTPUT)%.lex.c |
d70a6be1 | 72 | $(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $< |
5a8997f2 | 73 | |
6c071008 JB |
74 | PROGS = $(OUTPUT)bpf_jit_disasm $(OUTPUT)bpf_dbg $(OUTPUT)bpf_asm |
75 | ||
9c01546d | 76 | all: $(PROGS) bpftool runqslower |
e306e2c1 | 77 | |
5a8997f2 | 78 | $(OUTPUT)bpf_jit_disasm: CFLAGS += -DPACKAGE='bpf_jit_disasm' |
5a8997f2 | 79 | $(OUTPUT)bpf_jit_disasm: $(OUTPUT)bpf_jit_disasm.o |
a50b7f8c | 80 | $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ -lopcodes -lbfd -ldl |
e306e2c1 | 81 | |
5a8997f2 | 82 | $(OUTPUT)bpf_dbg: $(OUTPUT)bpf_dbg.o |
a50b7f8c | 83 | $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ -lreadline |
fd981e3c | 84 | |
5a8997f2 | 85 | $(OUTPUT)bpf_asm: $(OUTPUT)bpf_asm.o $(OUTPUT)bpf_exp.yacc.o $(OUTPUT)bpf_exp.lex.o |
a50b7f8c JB |
86 | $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ |
87 | ||
ef8ba83b | 88 | $(OUTPUT)bpf_exp.lex.c: $(OUTPUT)bpf_exp.yacc.c |
9c299a32 JF |
89 | $(OUTPUT)bpf_exp.yacc.o: $(OUTPUT)bpf_exp.yacc.c |
90 | $(OUTPUT)bpf_exp.lex.o: $(OUTPUT)bpf_exp.lex.c | |
3f356385 | 91 | |
1eb832ac | 92 | clean: bpftool_clean runqslower_clean resolve_btfids_clean |
a50b7f8c | 93 | $(call QUIET_CLEAN, bpf-progs) |
fbdb620b | 94 | $(Q)$(RM) -r -- $(OUTPUT)*.o $(OUTPUT)bpf_jit_disasm $(OUTPUT)bpf_dbg \ |
5a8997f2 | 95 | $(OUTPUT)bpf_asm $(OUTPUT)bpf_exp.yacc.* $(OUTPUT)bpf_exp.lex.* |
cc5b3403 | 96 | $(call QUIET_CLEAN, core-gen) |
fbdb620b QM |
97 | $(Q)$(RM) -- $(OUTPUT)FEATURE-DUMP.bpf |
98 | $(Q)$(RM) -r -- $(OUTPUT)feature | |
e306e2c1 | 99 | |
9c01546d | 100 | install: $(PROGS) bpftool_install runqslower_install |
a50b7f8c JB |
101 | $(call QUIET_INSTALL, bpf_jit_disasm) |
102 | $(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(prefix)/bin | |
103 | $(Q)$(INSTALL) $(OUTPUT)bpf_jit_disasm $(DESTDIR)$(prefix)/bin/bpf_jit_disasm | |
104 | $(call QUIET_INSTALL, bpf_dbg) | |
105 | $(Q)$(INSTALL) $(OUTPUT)bpf_dbg $(DESTDIR)$(prefix)/bin/bpf_dbg | |
106 | $(call QUIET_INSTALL, bpf_asm) | |
107 | $(Q)$(INSTALL) $(OUTPUT)bpf_asm $(DESTDIR)$(prefix)/bin/bpf_asm | |
71bb428f JK |
108 | |
109 | bpftool: | |
58416c37 | 110 | $(call descend,bpftool) |
71bb428f JK |
111 | |
112 | bpftool_install: | |
58416c37 | 113 | $(call descend,bpftool,install) |
71bb428f JK |
114 | |
115 | bpftool_clean: | |
58416c37 | 116 | $(call descend,bpftool,clean) |
71bb428f | 117 | |
9c01546d AN |
118 | runqslower: |
119 | $(call descend,runqslower) | |
120 | ||
121 | runqslower_install: | |
122 | $(call descend,runqslower,install) | |
123 | ||
124 | runqslower_clean: | |
125 | $(call descend,runqslower,clean) | |
126 | ||
33a57ce0 JO |
127 | resolve_btfids: |
128 | $(call descend,resolve_btfids) | |
129 | ||
130 | resolve_btfids_clean: | |
131 | $(call descend,resolve_btfids,clean) | |
132 | ||
9c01546d | 133 | .PHONY: all install clean bpftool bpftool_install bpftool_clean \ |
33a57ce0 JO |
134 | runqslower runqslower_install runqslower_clean \ |
135 | resolve_btfids resolve_btfids_clean |