162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ciinclude ../scripts/Makefile.include 362306a36Sopenharmony_ci 462306a36Sopenharmony_ciprefix ?= /usr/local 562306a36Sopenharmony_ci 662306a36Sopenharmony_ciLEX = flex 762306a36Sopenharmony_ciYACC = bison 862306a36Sopenharmony_ciMAKE = make 962306a36Sopenharmony_ciINSTALL ?= install 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciCFLAGS += -Wall -O2 1262306a36Sopenharmony_ciCFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/tools/include/uapi \ 1362306a36Sopenharmony_ci -I$(srctree)/tools/include 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci# This will work when bpf is built in tools env. where srctree 1662306a36Sopenharmony_ci# isn't set and when invoked from selftests build, where srctree 1762306a36Sopenharmony_ci# is set to ".". building_out_of_srctree is undefined for in srctree 1862306a36Sopenharmony_ci# builds 1962306a36Sopenharmony_ciifeq ($(srctree),) 2062306a36Sopenharmony_ciupdate_srctree := 1 2162306a36Sopenharmony_ciendif 2262306a36Sopenharmony_ciifndef building_out_of_srctree 2362306a36Sopenharmony_ciupdate_srctree := 1 2462306a36Sopenharmony_ciendif 2562306a36Sopenharmony_ciifeq ($(update_srctree),1) 2662306a36Sopenharmony_cisrctree := $(patsubst %/,%,$(dir $(CURDIR))) 2762306a36Sopenharmony_cisrctree := $(patsubst %/,%,$(dir $(srctree))) 2862306a36Sopenharmony_ciendif 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ciifeq ($(V),1) 3162306a36Sopenharmony_ci Q = 3262306a36Sopenharmony_cielse 3362306a36Sopenharmony_ci Q = @ 3462306a36Sopenharmony_ciendif 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ciFEATURE_USER = .bpf 3762306a36Sopenharmony_ciFEATURE_TESTS = libbfd disassembler-four-args disassembler-init-styled 3862306a36Sopenharmony_ciFEATURE_DISPLAY = libbfd 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_cicheck_feat := 1 4162306a36Sopenharmony_ciNON_CHECK_FEAT_TARGETS := clean bpftool_clean runqslower_clean resolve_btfids_clean 4262306a36Sopenharmony_ciifdef MAKECMDGOALS 4362306a36Sopenharmony_ciifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),) 4462306a36Sopenharmony_ci check_feat := 0 4562306a36Sopenharmony_ciendif 4662306a36Sopenharmony_ciendif 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ciifeq ($(check_feat),1) 4962306a36Sopenharmony_ciifeq ($(FEATURES_DUMP),) 5062306a36Sopenharmony_ciinclude $(srctree)/tools/build/Makefile.feature 5162306a36Sopenharmony_cielse 5262306a36Sopenharmony_ciinclude $(FEATURES_DUMP) 5362306a36Sopenharmony_ciendif 5462306a36Sopenharmony_ciendif 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ciifeq ($(feature-disassembler-four-args), 1) 5762306a36Sopenharmony_ciCFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE 5862306a36Sopenharmony_ciendif 5962306a36Sopenharmony_ciifeq ($(feature-disassembler-init-styled), 1) 6062306a36Sopenharmony_ciCFLAGS += -DDISASM_INIT_STYLED 6162306a36Sopenharmony_ciendif 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci$(OUTPUT)%.yacc.c: $(srctree)/tools/bpf/%.y 6462306a36Sopenharmony_ci $(QUIET_BISON)$(YACC) -o $@ -d $< 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci$(OUTPUT)%.lex.c: $(srctree)/tools/bpf/%.l 6762306a36Sopenharmony_ci $(QUIET_FLEX)$(LEX) -o $@ $< 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci$(OUTPUT)%.o: $(srctree)/tools/bpf/%.c 7062306a36Sopenharmony_ci $(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $< 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci$(OUTPUT)%.yacc.o: $(OUTPUT)%.yacc.c 7362306a36Sopenharmony_ci $(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $< 7462306a36Sopenharmony_ci$(OUTPUT)%.lex.o: $(OUTPUT)%.lex.c 7562306a36Sopenharmony_ci $(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $< 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ciPROGS = $(OUTPUT)bpf_jit_disasm $(OUTPUT)bpf_dbg $(OUTPUT)bpf_asm 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ciall: $(PROGS) bpftool runqslower 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci$(OUTPUT)bpf_jit_disasm: CFLAGS += -DPACKAGE='bpf_jit_disasm' 8262306a36Sopenharmony_ci$(OUTPUT)bpf_jit_disasm: $(OUTPUT)bpf_jit_disasm.o 8362306a36Sopenharmony_ci $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ -lopcodes -lbfd -ldl 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci$(OUTPUT)bpf_dbg: $(OUTPUT)bpf_dbg.o 8662306a36Sopenharmony_ci $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ -lreadline 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci$(OUTPUT)bpf_asm: $(OUTPUT)bpf_asm.o $(OUTPUT)bpf_exp.yacc.o $(OUTPUT)bpf_exp.lex.o 8962306a36Sopenharmony_ci $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci$(OUTPUT)bpf_exp.lex.c: $(OUTPUT)bpf_exp.yacc.c 9262306a36Sopenharmony_ci$(OUTPUT)bpf_exp.yacc.o: $(OUTPUT)bpf_exp.yacc.c 9362306a36Sopenharmony_ci$(OUTPUT)bpf_exp.lex.o: $(OUTPUT)bpf_exp.lex.c 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ciclean: bpftool_clean runqslower_clean resolve_btfids_clean 9662306a36Sopenharmony_ci $(call QUIET_CLEAN, bpf-progs) 9762306a36Sopenharmony_ci $(Q)$(RM) -r -- $(OUTPUT)*.o $(OUTPUT)bpf_jit_disasm $(OUTPUT)bpf_dbg \ 9862306a36Sopenharmony_ci $(OUTPUT)bpf_asm $(OUTPUT)bpf_exp.yacc.* $(OUTPUT)bpf_exp.lex.* 9962306a36Sopenharmony_ci $(call QUIET_CLEAN, core-gen) 10062306a36Sopenharmony_ci $(Q)$(RM) -- $(OUTPUT)FEATURE-DUMP.bpf 10162306a36Sopenharmony_ci $(Q)$(RM) -r -- $(OUTPUT)feature 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ciinstall: $(PROGS) bpftool_install 10462306a36Sopenharmony_ci $(call QUIET_INSTALL, bpf_jit_disasm) 10562306a36Sopenharmony_ci $(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(prefix)/bin 10662306a36Sopenharmony_ci $(Q)$(INSTALL) $(OUTPUT)bpf_jit_disasm $(DESTDIR)$(prefix)/bin/bpf_jit_disasm 10762306a36Sopenharmony_ci $(call QUIET_INSTALL, bpf_dbg) 10862306a36Sopenharmony_ci $(Q)$(INSTALL) $(OUTPUT)bpf_dbg $(DESTDIR)$(prefix)/bin/bpf_dbg 10962306a36Sopenharmony_ci $(call QUIET_INSTALL, bpf_asm) 11062306a36Sopenharmony_ci $(Q)$(INSTALL) $(OUTPUT)bpf_asm $(DESTDIR)$(prefix)/bin/bpf_asm 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_cibpftool: 11362306a36Sopenharmony_ci $(call descend,bpftool) 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_cibpftool_install: 11662306a36Sopenharmony_ci $(call descend,bpftool,install) 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_cibpftool_clean: 11962306a36Sopenharmony_ci $(call descend,bpftool,clean) 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_cirunqslower: 12262306a36Sopenharmony_ci $(call descend,runqslower) 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_cirunqslower_clean: 12562306a36Sopenharmony_ci $(call descend,runqslower,clean) 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ciresolve_btfids: 12862306a36Sopenharmony_ci $(call descend,resolve_btfids) 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ciresolve_btfids_clean: 13162306a36Sopenharmony_ci $(call descend,resolve_btfids,clean) 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ci.PHONY: all install clean bpftool bpftool_install bpftool_clean \ 13462306a36Sopenharmony_ci runqslower runqslower_clean \ 13562306a36Sopenharmony_ci resolve_btfids resolve_btfids_clean 136