Makefile 2.1 KB
Newer Older
1
# SPDX-License-Identifier: GPL-2.0
2 3
include ../scripts/Makefile.include

4
prefix ?= /usr/local
5 6

CC = gcc
7 8
LEX = flex
YACC = bison
J
Jakub Kicinski 已提交
9
MAKE = make
10
INSTALL ?= install
11

12
CFLAGS += -Wall -O2
13
CFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/include/uapi -I$(srctree)/include
14

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
ifeq ($(srctree),)
srctree := $(patsubst %/,%,$(dir $(CURDIR)))
srctree := $(patsubst %/,%,$(dir $(srctree)))
endif

FEATURE_USER = .bpf
FEATURE_TESTS = libbfd disassembler-four-args
FEATURE_DISPLAY = libbfd disassembler-four-args

check_feat := 1
NON_CHECK_FEAT_TARGETS := clean bpftool_clean
ifdef MAKECMDGOALS
ifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),)
  check_feat := 0
endif
endif

ifeq ($(check_feat),1)
ifeq ($(FEATURES_DUMP),)
include $(srctree)/tools/build/Makefile.feature
else
include $(FEATURES_DUMP)
endif
endif

ifeq ($(feature-disassembler-four-args), 1)
CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
endif

44
$(OUTPUT)%.yacc.c: $(srctree)/tools/bpf/%.y
45 46
	$(YACC) -o $@ -d $<

47
$(OUTPUT)%.lex.c: $(srctree)/tools/bpf/%.l
48 49
	$(LEX) -o $@ $<

50 51 52
$(OUTPUT)%.o: $(srctree)/tools/bpf/%.c
	$(COMPILE.c) -o $@ $<

53 54 55
PROGS = $(OUTPUT)bpf_jit_disasm $(OUTPUT)bpf_dbg $(OUTPUT)bpf_asm

all: $(PROGS) bpftool
56

57 58 59
$(OUTPUT)bpf_jit_disasm: CFLAGS += -DPACKAGE='bpf_jit_disasm'
$(OUTPUT)bpf_jit_disasm: LDLIBS = -lopcodes -lbfd -ldl
$(OUTPUT)bpf_jit_disasm: $(OUTPUT)bpf_jit_disasm.o
60

61 62
$(OUTPUT)bpf_dbg: LDLIBS = -lreadline
$(OUTPUT)bpf_dbg: $(OUTPUT)bpf_dbg.o
63

64 65 66
$(OUTPUT)bpf_asm: LDLIBS =
$(OUTPUT)bpf_asm: $(OUTPUT)bpf_asm.o $(OUTPUT)bpf_exp.yacc.o $(OUTPUT)bpf_exp.lex.o
$(OUTPUT)bpf_exp.lex.o: $(OUTPUT)bpf_exp.yacc.c
67

J
Jakub Kicinski 已提交
68
clean: bpftool_clean
69 70
	rm -rf $(OUTPUT)*.o $(OUTPUT)bpf_jit_disasm $(OUTPUT)bpf_dbg \
	       $(OUTPUT)bpf_asm $(OUTPUT)bpf_exp.yacc.* $(OUTPUT)bpf_exp.lex.*
71

72
install: $(PROGS) bpftool_install
73 74 75 76
	$(INSTALL) -m 0755 -d $(DESTDIR)$(prefix)/bin
	$(INSTALL) $(OUTPUT)bpf_jit_disasm $(DESTDIR)$(prefix)/bin/bpf_jit_disasm
	$(INSTALL) $(OUTPUT)bpf_dbg $(DESTDIR)$(prefix)/bin/bpf_dbg
	$(INSTALL) $(OUTPUT)bpf_asm $(DESTDIR)$(prefix)/bin/bpf_asm
J
Jakub Kicinski 已提交
77 78 79 80 81 82 83 84 85 86 87

bpftool:
	$(MAKE) -C bpftool

bpftool_install:
	$(MAKE) -C bpftool install

bpftool_clean:
	$(MAKE) -C bpftool clean

.PHONY: bpftool FORCE