1
1
# SPDX-License-Identifier: GPL-2.0
2
- prefix = /usr
2
+ include ../scripts/Makefile.include
3
+
4
+ prefix ?= /usr/local
3
5
4
6
CC = gcc
5
7
LEX = flex
6
8
YACC = bison
7
9
MAKE = make
10
+ INSTALL ?= install
8
11
9
12
CFLAGS += -Wall -O2
10
- CFLAGS += -D__EXPORTED_HEADERS__ -I../../ include/uapi -I../.. /include
13
+ CFLAGS += -D__EXPORTED_HEADERS__ -I$( srctree ) / include/uapi -I$( srctree ) /include
11
14
12
15
ifeq ($(srctree ) ,)
13
16
srctree := $(patsubst % /,% ,$(dir $(CURDIR ) ) )
14
17
srctree := $(patsubst % /,% ,$(dir $(srctree ) ) )
15
18
endif
16
19
20
+ ifeq ($(V ) ,1)
21
+ Q =
22
+ else
23
+ Q = @
24
+ endif
25
+
17
26
FEATURE_USER = .bpf
18
27
FEATURE_TESTS = libbfd disassembler-four-args
19
28
FEATURE_DISPLAY = libbfd disassembler-four-args
@@ -38,40 +47,57 @@ ifeq ($(feature-disassembler-four-args), 1)
38
47
CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
39
48
endif
40
49
41
- % .yacc.c : % .y
42
- $(YACC ) -o $@ -d $<
50
+ $( OUTPUT ) % .yacc.c : $( srctree ) /tools/bpf/ % .y
51
+ $(QUIET_BISON )$( YACC ) -o $@ -d $<
43
52
44
- % .lex.c : % .l
45
- $(LEX ) -o $@ $<
53
+ $( OUTPUT ) % .lex.c : $( srctree ) /tools/bpf/ % .l
54
+ $(QUIET_FLEX )$( LEX ) -o $@ $<
46
55
47
- all : bpf_jit_disasm bpf_dbg bpf_asm bpftool
56
+ $(OUTPUT ) % .o : $(srctree ) /tools/bpf/% .c
57
+ $(QUIET_CC )$(COMPILE.c ) -o $@ $<
48
58
49
- bpf_jit_disasm : CFLAGS += -DPACKAGE='bpf_jit_disasm'
50
- bpf_jit_disasm : LDLIBS = -lopcodes -lbfd -ldl
51
- bpf_jit_disasm : bpf_jit_disasm.o
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 $@ $<
52
63
53
- bpf_dbg : LDLIBS = -lreadline
54
- bpf_dbg : bpf_dbg.o
64
+ PROGS = $(OUTPUT ) bpf_jit_disasm $(OUTPUT ) bpf_dbg $(OUTPUT ) bpf_asm
55
65
56
- bpf_asm : LDLIBS =
57
- bpf_asm : bpf_asm.o bpf_exp.yacc.o bpf_exp.lex.o
58
- bpf_exp.lex.o : bpf_exp.yacc.c
66
+ all : $(PROGS ) bpftool
59
67
60
- clean : bpftool_clean
61
- rm -rf * .o bpf_jit_disasm bpf_dbg bpf_asm bpf_exp.yacc.* bpf_exp.lex.*
68
+ $(OUTPUT ) bpf_jit_disasm : CFLAGS += -DPACKAGE='bpf_jit_disasm'
69
+ $(OUTPUT ) bpf_jit_disasm : $(OUTPUT ) bpf_jit_disasm.o
70
+ $(QUIET_LINK )$(CC ) $(CFLAGS ) -o $@ $^ -lopcodes -lbfd -ldl
62
71
63
- install : bpftool_install
64
- install bpf_jit_disasm $(prefix ) /bin/bpf_jit_disasm
65
- install bpf_dbg $(prefix ) /bin/bpf_dbg
66
- install bpf_asm $(prefix ) /bin/bpf_asm
72
+ $(OUTPUT ) bpf_dbg : $(OUTPUT ) bpf_dbg.o
73
+ $(QUIET_LINK )$(CC ) $(CFLAGS ) -o $@ $^ -lreadline
74
+
75
+ $(OUTPUT ) bpf_asm : $(OUTPUT ) bpf_asm.o $(OUTPUT ) bpf_exp.yacc.o $(OUTPUT ) bpf_exp.lex.o
76
+ $(QUIET_LINK )$(CC ) $(CFLAGS ) -o $@ $^
77
+
78
+ $(OUTPUT ) bpf_exp.lex.c : $(OUTPUT ) bpf_exp.yacc.c
79
+
80
+ clean : bpftool_clean
81
+ $(call QUIET_CLEAN, bpf-progs)
82
+ $(Q ) rm -rf $(OUTPUT ) * .o $(OUTPUT ) bpf_jit_disasm $(OUTPUT ) bpf_dbg \
83
+ $(OUTPUT ) bpf_asm $(OUTPUT ) bpf_exp.yacc.* $(OUTPUT ) bpf_exp.lex.*
84
+
85
+ install : $(PROGS ) bpftool_install
86
+ $(call QUIET_INSTALL, bpf_jit_disasm)
87
+ $(Q )$(INSTALL ) -m 0755 -d $(DESTDIR )$(prefix ) /bin
88
+ $(Q )$(INSTALL ) $(OUTPUT ) bpf_jit_disasm $(DESTDIR )$(prefix ) /bin/bpf_jit_disasm
89
+ $(call QUIET_INSTALL, bpf_dbg)
90
+ $(Q )$(INSTALL ) $(OUTPUT ) bpf_dbg $(DESTDIR )$(prefix ) /bin/bpf_dbg
91
+ $(call QUIET_INSTALL, bpf_asm)
92
+ $(Q )$(INSTALL ) $(OUTPUT ) bpf_asm $(DESTDIR )$(prefix ) /bin/bpf_asm
67
93
68
94
bpftool :
69
- $(MAKE ) -C bpftool
95
+ $(call descend, bpftool)
70
96
71
97
bpftool_install :
72
- $(MAKE ) -C bpftool install
98
+ $(call descend, bpftool, install)
73
99
74
100
bpftool_clean :
75
- $(MAKE ) -C bpftool clean
101
+ $(call descend, bpftool, clean)
76
102
77
103
.PHONY : bpftool FORCE
0 commit comments