1 # SPDX-License-Identifier: GPL-2.0
2 include ..
/scripts
/Makefile.
include
13 CFLAGS
+= -D__EXPORTED_HEADERS__
-I
$(srctree
)/include/uapi
-I
$(srctree
)/include
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
22 ifndef building_out_of_srctree
25 ifeq ($(update_srctree
),1)
26 srctree
:= $(patsubst %/,%,$(dir $(CURDIR
)))
27 srctree
:= $(patsubst %/,%,$(dir $(srctree
)))
37 FEATURE_TESTS
= libbfd disassembler-four-args
38 FEATURE_DISPLAY
= libbfd disassembler-four-args
41 NON_CHECK_FEAT_TARGETS
:= clean bpftool_clean runqslower_clean
43 ifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS
),$(MAKECMDGOALS
)),)
48 ifeq ($(check_feat
),1)
49 ifeq ($(FEATURES_DUMP
),)
50 include $(srctree
)/tools
/build
/Makefile.feature
52 include $(FEATURES_DUMP
)
56 ifeq ($(feature-disassembler-four-args
), 1)
57 CFLAGS
+= -DDISASM_FOUR_ARGS_SIGNATURE
60 $(OUTPUT
)%.
yacc.c
: $(srctree
)/tools
/bpf
/%.y
61 $(QUIET_BISON
)$(YACC
) -o
$@
-d
$<
63 $(OUTPUT
)%.
lex.c
: $(srctree
)/tools
/bpf
/%.l
64 $(QUIET_FLEX
)$(LEX
) -o
$@
$<
66 $(OUTPUT
)%.o
: $(srctree
)/tools
/bpf
/%.c
67 $(QUIET_CC
)$(COMPILE.c
) -o
$@
$<
69 $(OUTPUT
)%.
yacc.o
: $(OUTPUT
)%.
yacc.c
70 $(QUIET_CC
)$(COMPILE.c
) -o
$@
$<
71 $(OUTPUT
)%.
lex.o
: $(OUTPUT
)%.
lex.c
72 $(QUIET_CC
)$(COMPILE.c
) -o
$@
$<
74 PROGS
= $(OUTPUT
)bpf_jit_disasm
$(OUTPUT
)bpf_dbg
$(OUTPUT
)bpf_asm
76 all: $(PROGS
) bpftool runqslower
78 $(OUTPUT
)bpf_jit_disasm
: CFLAGS
+= -DPACKAGE
='bpf_jit_disasm'
79 $(OUTPUT
)bpf_jit_disasm
: $(OUTPUT
)bpf_jit_disasm.o
80 $(QUIET_LINK
)$(CC
) $(CFLAGS
) -o
$@
$^
-lopcodes
-lbfd
-ldl
82 $(OUTPUT
)bpf_dbg
: $(OUTPUT
)bpf_dbg.o
83 $(QUIET_LINK
)$(CC
) $(CFLAGS
) -o
$@
$^
-lreadline
85 $(OUTPUT
)bpf_asm
: $(OUTPUT
)bpf_asm.o
$(OUTPUT
)bpf_exp.
yacc.o
$(OUTPUT
)bpf_exp.
lex.o
86 $(QUIET_LINK
)$(CC
) $(CFLAGS
) -o
$@
$^
88 $(OUTPUT
)bpf_exp.
lex.c
: $(OUTPUT
)bpf_exp.
yacc.c
89 $(OUTPUT
)bpf_exp.
yacc.o
: $(OUTPUT
)bpf_exp.
yacc.c
90 $(OUTPUT
)bpf_exp.
lex.o
: $(OUTPUT
)bpf_exp.
lex.c
92 clean: bpftool_clean runqslower_clean
93 $(call QUIET_CLEAN
, bpf-progs
)
94 $(Q
)$(RM
) -r
-- $(OUTPUT
)*.o
$(OUTPUT
)bpf_jit_disasm
$(OUTPUT
)bpf_dbg \
95 $(OUTPUT
)bpf_asm
$(OUTPUT
)bpf_exp.
yacc.
* $(OUTPUT
)bpf_exp.
lex.
*
96 $(call QUIET_CLEAN
, core-gen
)
97 $(Q
)$(RM
) -- $(OUTPUT
)FEATURE-DUMP.bpf
98 $(Q
)$(RM
) -r
-- $(OUTPUT
)feature
100 install: $(PROGS
) bpftool_install runqslower_install
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
110 $(call descend
,bpftool
)
113 $(call descend
,bpftool
,install)
116 $(call descend
,bpftool
,clean)
119 $(call descend
,runqslower
)
122 $(call descend
,runqslower
,install)
125 $(call descend
,runqslower
,clean)
127 .PHONY
: all install clean bpftool bpftool_install bpftool_clean \
128 runqslower runqslower_install runqslower_clean