Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: GPL-2.0
0002 include ../scripts/Makefile.include
0003 
0004 prefix ?= /usr/local
0005 
0006 LEX = flex
0007 YACC = bison
0008 MAKE = make
0009 INSTALL ?= install
0010 
0011 CFLAGS += -Wall -O2
0012 CFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/tools/include/uapi \
0013           -I$(srctree)/tools/include
0014 
0015 # This will work when bpf is built in tools env. where srctree
0016 # isn't set and when invoked from selftests build, where srctree
0017 # is set to ".". building_out_of_srctree is undefined for in srctree
0018 # builds
0019 ifeq ($(srctree),)
0020 update_srctree := 1
0021 endif
0022 ifndef building_out_of_srctree
0023 update_srctree := 1
0024 endif
0025 ifeq ($(update_srctree),1)
0026 srctree := $(patsubst %/,%,$(dir $(CURDIR)))
0027 srctree := $(patsubst %/,%,$(dir $(srctree)))
0028 endif
0029 
0030 ifeq ($(V),1)
0031   Q =
0032 else
0033   Q = @
0034 endif
0035 
0036 FEATURE_USER = .bpf
0037 FEATURE_TESTS = libbfd disassembler-four-args disassembler-init-styled
0038 FEATURE_DISPLAY = libbfd
0039 
0040 check_feat := 1
0041 NON_CHECK_FEAT_TARGETS := clean bpftool_clean runqslower_clean resolve_btfids_clean
0042 ifdef MAKECMDGOALS
0043 ifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),)
0044   check_feat := 0
0045 endif
0046 endif
0047 
0048 ifeq ($(check_feat),1)
0049 ifeq ($(FEATURES_DUMP),)
0050 include $(srctree)/tools/build/Makefile.feature
0051 else
0052 include $(FEATURES_DUMP)
0053 endif
0054 endif
0055 
0056 ifeq ($(feature-disassembler-four-args), 1)
0057 CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
0058 endif
0059 ifeq ($(feature-disassembler-init-styled), 1)
0060 CFLAGS += -DDISASM_INIT_STYLED
0061 endif
0062 
0063 $(OUTPUT)%.yacc.c: $(srctree)/tools/bpf/%.y
0064         $(QUIET_BISON)$(YACC) -o $@ -d $<
0065 
0066 $(OUTPUT)%.lex.c: $(srctree)/tools/bpf/%.l
0067         $(QUIET_FLEX)$(LEX) -o $@ $<
0068 
0069 $(OUTPUT)%.o: $(srctree)/tools/bpf/%.c
0070         $(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $<
0071 
0072 $(OUTPUT)%.yacc.o: $(OUTPUT)%.yacc.c
0073         $(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $<
0074 $(OUTPUT)%.lex.o: $(OUTPUT)%.lex.c
0075         $(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $<
0076 
0077 PROGS = $(OUTPUT)bpf_jit_disasm $(OUTPUT)bpf_dbg $(OUTPUT)bpf_asm
0078 
0079 all: $(PROGS) bpftool runqslower
0080 
0081 $(OUTPUT)bpf_jit_disasm: CFLAGS += -DPACKAGE='bpf_jit_disasm'
0082 $(OUTPUT)bpf_jit_disasm: $(OUTPUT)bpf_jit_disasm.o
0083         $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ -lopcodes -lbfd -ldl
0084 
0085 $(OUTPUT)bpf_dbg: $(OUTPUT)bpf_dbg.o
0086         $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ -lreadline
0087 
0088 $(OUTPUT)bpf_asm: $(OUTPUT)bpf_asm.o $(OUTPUT)bpf_exp.yacc.o $(OUTPUT)bpf_exp.lex.o
0089         $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^
0090 
0091 $(OUTPUT)bpf_exp.lex.c: $(OUTPUT)bpf_exp.yacc.c
0092 $(OUTPUT)bpf_exp.yacc.o: $(OUTPUT)bpf_exp.yacc.c
0093 $(OUTPUT)bpf_exp.lex.o: $(OUTPUT)bpf_exp.lex.c
0094 
0095 clean: bpftool_clean runqslower_clean resolve_btfids_clean
0096         $(call QUIET_CLEAN, bpf-progs)
0097         $(Q)$(RM) -r -- $(OUTPUT)*.o $(OUTPUT)bpf_jit_disasm $(OUTPUT)bpf_dbg \
0098                $(OUTPUT)bpf_asm $(OUTPUT)bpf_exp.yacc.* $(OUTPUT)bpf_exp.lex.*
0099         $(call QUIET_CLEAN, core-gen)
0100         $(Q)$(RM) -- $(OUTPUT)FEATURE-DUMP.bpf
0101         $(Q)$(RM) -r -- $(OUTPUT)feature
0102 
0103 install: $(PROGS) bpftool_install
0104         $(call QUIET_INSTALL, bpf_jit_disasm)
0105         $(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(prefix)/bin
0106         $(Q)$(INSTALL) $(OUTPUT)bpf_jit_disasm $(DESTDIR)$(prefix)/bin/bpf_jit_disasm
0107         $(call QUIET_INSTALL, bpf_dbg)
0108         $(Q)$(INSTALL) $(OUTPUT)bpf_dbg $(DESTDIR)$(prefix)/bin/bpf_dbg
0109         $(call QUIET_INSTALL, bpf_asm)
0110         $(Q)$(INSTALL) $(OUTPUT)bpf_asm $(DESTDIR)$(prefix)/bin/bpf_asm
0111 
0112 bpftool:
0113         $(call descend,bpftool)
0114 
0115 bpftool_install:
0116         $(call descend,bpftool,install)
0117 
0118 bpftool_clean:
0119         $(call descend,bpftool,clean)
0120 
0121 runqslower:
0122         $(call descend,runqslower)
0123 
0124 runqslower_clean:
0125         $(call descend,runqslower,clean)
0126 
0127 resolve_btfids:
0128         $(call descend,resolve_btfids)
0129 
0130 resolve_btfids_clean:
0131         $(call descend,resolve_btfids,clean)
0132 
0133 .PHONY: all install clean bpftool bpftool_install bpftool_clean \
0134         runqslower runqslower_clean \
0135         resolve_btfids resolve_btfids_clean