blob: c8ec0ae16bf03af4c40f08b06dcea2b7e24e4b9e [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001# SPDX-License-Identifier: GPL-2.0
Daniel Borkmanne306e2c2013-03-20 12:11:47 +00002prefix = /usr
3
4CC = gcc
Daniel Borkmann3f356382013-12-11 23:43:44 +01005LEX = flex
6YACC = bison
Jakub Kicinski71bb4282017-10-04 20:10:04 -07007MAKE = make
Daniel Borkmanne306e2c2013-03-20 12:11:47 +00008
Kamal Mostafad7475de2015-11-11 14:24:27 -08009CFLAGS += -Wall -O2
10CFLAGS += -D__EXPORTED_HEADERS__ -I../../include/uapi -I../../include
11
Roman Gushchinfb982662017-12-27 19:16:29 +000012ifeq ($(srctree),)
13srctree := $(patsubst %/,%,$(dir $(CURDIR)))
14srctree := $(patsubst %/,%,$(dir $(srctree)))
15endif
16
17FEATURE_USER = .bpf
18FEATURE_TESTS = libbfd disassembler-four-args
19FEATURE_DISPLAY = libbfd disassembler-four-args
20
21check_feat := 1
22NON_CHECK_FEAT_TARGETS := clean bpftool_clean
23ifdef MAKECMDGOALS
24ifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),)
25 check_feat := 0
26endif
27endif
28
29ifeq ($(check_feat),1)
30ifeq ($(FEATURES_DUMP),)
31include $(srctree)/tools/build/Makefile.feature
32else
33include $(FEATURES_DUMP)
34endif
35endif
36
37ifeq ($(feature-disassembler-four-args), 1)
38CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
39endif
40
Daniel Borkmann3f356382013-12-11 23:43:44 +010041%.yacc.c: %.y
42 $(YACC) -o $@ -d $<
43
44%.lex.c: %.l
45 $(LEX) -o $@ $<
46
Jakub Kicinski71bb4282017-10-04 20:10:04 -070047all: bpf_jit_disasm bpf_dbg bpf_asm bpftool
Daniel Borkmanne306e2c2013-03-20 12:11:47 +000048
Kamal Mostafad7475de2015-11-11 14:24:27 -080049bpf_jit_disasm : CFLAGS += -DPACKAGE='bpf_jit_disasm'
Daniel Borkmanne306e2c2013-03-20 12:11:47 +000050bpf_jit_disasm : LDLIBS = -lopcodes -lbfd -ldl
51bpf_jit_disasm : bpf_jit_disasm.o
52
Daniel Borkmannfd981e32013-12-11 23:43:43 +010053bpf_dbg : LDLIBS = -lreadline
54bpf_dbg : bpf_dbg.o
55
Daniel Borkmann3f356382013-12-11 23:43:44 +010056bpf_asm : LDLIBS =
57bpf_asm : bpf_asm.o bpf_exp.yacc.o bpf_exp.lex.o
58bpf_exp.lex.o : bpf_exp.yacc.c
59
Jakub Kicinski71bb4282017-10-04 20:10:04 -070060clean: bpftool_clean
Daniel Borkmann3f356382013-12-11 23:43:44 +010061 rm -rf *.o bpf_jit_disasm bpf_dbg bpf_asm bpf_exp.yacc.* bpf_exp.lex.*
Daniel Borkmanne306e2c2013-03-20 12:11:47 +000062
Jakub Kicinski71bb4282017-10-04 20:10:04 -070063install: bpftool_install
Daniel Borkmanne306e2c2013-03-20 12:11:47 +000064 install bpf_jit_disasm $(prefix)/bin/bpf_jit_disasm
Daniel Borkmannfd981e32013-12-11 23:43:43 +010065 install bpf_dbg $(prefix)/bin/bpf_dbg
Daniel Borkmann3f356382013-12-11 23:43:44 +010066 install bpf_asm $(prefix)/bin/bpf_asm
Jakub Kicinski71bb4282017-10-04 20:10:04 -070067
68bpftool:
69 $(MAKE) -C bpftool
70
71bpftool_install:
72 $(MAKE) -C bpftool install
73
74bpftool_clean:
75 $(MAKE) -C bpftool clean
76
77.PHONY: bpftool FORCE