fb982666e3
Bpftool build is broken with binutils version 2.29 and later. The cause is commit 003ca0fd2286 ("Refactor disassembler selection") in the binutils repo, which changed the disassembler() function signature. Fix this by adding a new "feature" to the tools/build/features infrastructure and make it responsible for decision which disassembler() function signature to use. Signed-off-by: Roman Gushchin <guro@fb.com> Cc: Jakub Kicinski <jakub.kicinski@netronome.com> Cc: Alexei Starovoitov <ast@kernel.org> Cc: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
77 lines
1.6 KiB
Makefile
77 lines
1.6 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
prefix = /usr
|
|
|
|
CC = gcc
|
|
LEX = flex
|
|
YACC = bison
|
|
MAKE = make
|
|
|
|
CFLAGS += -Wall -O2
|
|
CFLAGS += -D__EXPORTED_HEADERS__ -I../../include/uapi -I../../include
|
|
|
|
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
|
|
|
|
%.yacc.c: %.y
|
|
$(YACC) -o $@ -d $<
|
|
|
|
%.lex.c: %.l
|
|
$(LEX) -o $@ $<
|
|
|
|
all: bpf_jit_disasm bpf_dbg bpf_asm bpftool
|
|
|
|
bpf_jit_disasm : CFLAGS += -DPACKAGE='bpf_jit_disasm'
|
|
bpf_jit_disasm : LDLIBS = -lopcodes -lbfd -ldl
|
|
bpf_jit_disasm : bpf_jit_disasm.o
|
|
|
|
bpf_dbg : LDLIBS = -lreadline
|
|
bpf_dbg : bpf_dbg.o
|
|
|
|
bpf_asm : LDLIBS =
|
|
bpf_asm : bpf_asm.o bpf_exp.yacc.o bpf_exp.lex.o
|
|
bpf_exp.lex.o : bpf_exp.yacc.c
|
|
|
|
clean: bpftool_clean
|
|
rm -rf *.o bpf_jit_disasm bpf_dbg bpf_asm bpf_exp.yacc.* bpf_exp.lex.*
|
|
|
|
install: bpftool_install
|
|
install bpf_jit_disasm $(prefix)/bin/bpf_jit_disasm
|
|
install bpf_dbg $(prefix)/bin/bpf_dbg
|
|
install bpf_asm $(prefix)/bin/bpf_asm
|
|
|
|
bpftool:
|
|
$(MAKE) -C bpftool
|
|
|
|
bpftool_install:
|
|
$(MAKE) -C bpftool install
|
|
|
|
bpftool_clean:
|
|
$(MAKE) -C bpftool clean
|
|
|
|
.PHONY: bpftool FORCE
|