18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ciinclude ../scripts/Makefile.include 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ciprefix ?= /usr/local 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ciLEX = flex 78c2ecf20Sopenharmony_ciYACC = bison 88c2ecf20Sopenharmony_ciMAKE = make 98c2ecf20Sopenharmony_ciINSTALL ?= install 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ciCFLAGS += -Wall -O2 128c2ecf20Sopenharmony_ciCFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/tools/include/uapi \ 138c2ecf20Sopenharmony_ci -I$(srctree)/tools/include 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci# This will work when bpf is built in tools env. where srctree 168c2ecf20Sopenharmony_ci# isn't set and when invoked from selftests build, where srctree 178c2ecf20Sopenharmony_ci# is set to ".". building_out_of_srctree is undefined for in srctree 188c2ecf20Sopenharmony_ci# builds 198c2ecf20Sopenharmony_ciifeq ($(srctree),) 208c2ecf20Sopenharmony_ciupdate_srctree := 1 218c2ecf20Sopenharmony_ciendif 228c2ecf20Sopenharmony_ciifndef building_out_of_srctree 238c2ecf20Sopenharmony_ciupdate_srctree := 1 248c2ecf20Sopenharmony_ciendif 258c2ecf20Sopenharmony_ciifeq ($(update_srctree),1) 268c2ecf20Sopenharmony_cisrctree := $(patsubst %/,%,$(dir $(CURDIR))) 278c2ecf20Sopenharmony_cisrctree := $(patsubst %/,%,$(dir $(srctree))) 288c2ecf20Sopenharmony_ciendif 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ciifeq ($(V),1) 318c2ecf20Sopenharmony_ci Q = 328c2ecf20Sopenharmony_cielse 338c2ecf20Sopenharmony_ci Q = @ 348c2ecf20Sopenharmony_ciendif 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ciFEATURE_USER = .bpf 378c2ecf20Sopenharmony_ciFEATURE_TESTS = libbfd disassembler-four-args 388c2ecf20Sopenharmony_ciFEATURE_DISPLAY = libbfd disassembler-four-args 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_cicheck_feat := 1 418c2ecf20Sopenharmony_ciNON_CHECK_FEAT_TARGETS := clean bpftool_clean runqslower_clean resolve_btfids_clean 428c2ecf20Sopenharmony_ciifdef MAKECMDGOALS 438c2ecf20Sopenharmony_ciifeq ($(filter-out $(NON_CHECK_FEAT_TARGETS),$(MAKECMDGOALS)),) 448c2ecf20Sopenharmony_ci check_feat := 0 458c2ecf20Sopenharmony_ciendif 468c2ecf20Sopenharmony_ciendif 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ciifeq ($(check_feat),1) 498c2ecf20Sopenharmony_ciifeq ($(FEATURES_DUMP),) 508c2ecf20Sopenharmony_ciinclude $(srctree)/tools/build/Makefile.feature 518c2ecf20Sopenharmony_cielse 528c2ecf20Sopenharmony_ciinclude $(FEATURES_DUMP) 538c2ecf20Sopenharmony_ciendif 548c2ecf20Sopenharmony_ciendif 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ciifeq ($(feature-disassembler-four-args), 1) 578c2ecf20Sopenharmony_ciCFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE 588c2ecf20Sopenharmony_ciendif 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci$(OUTPUT)%.yacc.c: $(srctree)/tools/bpf/%.y 618c2ecf20Sopenharmony_ci $(QUIET_BISON)$(YACC) -o $@ -d $< 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ci$(OUTPUT)%.lex.c: $(srctree)/tools/bpf/%.l 648c2ecf20Sopenharmony_ci $(QUIET_FLEX)$(LEX) -o $@ $< 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ci$(OUTPUT)%.o: $(srctree)/tools/bpf/%.c 678c2ecf20Sopenharmony_ci $(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $< 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci$(OUTPUT)%.yacc.o: $(OUTPUT)%.yacc.c 708c2ecf20Sopenharmony_ci $(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $< 718c2ecf20Sopenharmony_ci$(OUTPUT)%.lex.o: $(OUTPUT)%.lex.c 728c2ecf20Sopenharmony_ci $(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $< 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ciPROGS = $(OUTPUT)bpf_jit_disasm $(OUTPUT)bpf_dbg $(OUTPUT)bpf_asm 758c2ecf20Sopenharmony_ci 768c2ecf20Sopenharmony_ciall: $(PROGS) bpftool runqslower 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ci$(OUTPUT)bpf_jit_disasm: CFLAGS += -DPACKAGE='bpf_jit_disasm' 798c2ecf20Sopenharmony_ci$(OUTPUT)bpf_jit_disasm: $(OUTPUT)bpf_jit_disasm.o 808c2ecf20Sopenharmony_ci $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ -lopcodes -lbfd -ldl 818c2ecf20Sopenharmony_ci 828c2ecf20Sopenharmony_ci$(OUTPUT)bpf_dbg: $(OUTPUT)bpf_dbg.o 838c2ecf20Sopenharmony_ci $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ -lreadline 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_ci$(OUTPUT)bpf_asm: $(OUTPUT)bpf_asm.o $(OUTPUT)bpf_exp.yacc.o $(OUTPUT)bpf_exp.lex.o 868c2ecf20Sopenharmony_ci $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ 878c2ecf20Sopenharmony_ci 888c2ecf20Sopenharmony_ci$(OUTPUT)bpf_exp.lex.c: $(OUTPUT)bpf_exp.yacc.c 898c2ecf20Sopenharmony_ci$(OUTPUT)bpf_exp.yacc.o: $(OUTPUT)bpf_exp.yacc.c 908c2ecf20Sopenharmony_ci$(OUTPUT)bpf_exp.lex.o: $(OUTPUT)bpf_exp.lex.c 918c2ecf20Sopenharmony_ci 928c2ecf20Sopenharmony_ciclean: bpftool_clean runqslower_clean resolve_btfids_clean 938c2ecf20Sopenharmony_ci $(call QUIET_CLEAN, bpf-progs) 948c2ecf20Sopenharmony_ci $(Q)$(RM) -r -- $(OUTPUT)*.o $(OUTPUT)bpf_jit_disasm $(OUTPUT)bpf_dbg \ 958c2ecf20Sopenharmony_ci $(OUTPUT)bpf_asm $(OUTPUT)bpf_exp.yacc.* $(OUTPUT)bpf_exp.lex.* 968c2ecf20Sopenharmony_ci $(call QUIET_CLEAN, core-gen) 978c2ecf20Sopenharmony_ci $(Q)$(RM) -- $(OUTPUT)FEATURE-DUMP.bpf 988c2ecf20Sopenharmony_ci $(Q)$(RM) -r -- $(OUTPUT)feature 998c2ecf20Sopenharmony_ci 1008c2ecf20Sopenharmony_ciinstall: $(PROGS) bpftool_install 1018c2ecf20Sopenharmony_ci $(call QUIET_INSTALL, bpf_jit_disasm) 1028c2ecf20Sopenharmony_ci $(Q)$(INSTALL) -m 0755 -d $(DESTDIR)$(prefix)/bin 1038c2ecf20Sopenharmony_ci $(Q)$(INSTALL) $(OUTPUT)bpf_jit_disasm $(DESTDIR)$(prefix)/bin/bpf_jit_disasm 1048c2ecf20Sopenharmony_ci $(call QUIET_INSTALL, bpf_dbg) 1058c2ecf20Sopenharmony_ci $(Q)$(INSTALL) $(OUTPUT)bpf_dbg $(DESTDIR)$(prefix)/bin/bpf_dbg 1068c2ecf20Sopenharmony_ci $(call QUIET_INSTALL, bpf_asm) 1078c2ecf20Sopenharmony_ci $(Q)$(INSTALL) $(OUTPUT)bpf_asm $(DESTDIR)$(prefix)/bin/bpf_asm 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_cibpftool: 1108c2ecf20Sopenharmony_ci $(call descend,bpftool) 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_cibpftool_install: 1138c2ecf20Sopenharmony_ci $(call descend,bpftool,install) 1148c2ecf20Sopenharmony_ci 1158c2ecf20Sopenharmony_cibpftool_clean: 1168c2ecf20Sopenharmony_ci $(call descend,bpftool,clean) 1178c2ecf20Sopenharmony_ci 1188c2ecf20Sopenharmony_cirunqslower: 1198c2ecf20Sopenharmony_ci $(call descend,runqslower) 1208c2ecf20Sopenharmony_ci 1218c2ecf20Sopenharmony_cirunqslower_clean: 1228c2ecf20Sopenharmony_ci $(call descend,runqslower,clean) 1238c2ecf20Sopenharmony_ci 1248c2ecf20Sopenharmony_ciresolve_btfids: 1258c2ecf20Sopenharmony_ci $(call descend,resolve_btfids) 1268c2ecf20Sopenharmony_ci 1278c2ecf20Sopenharmony_ciresolve_btfids_clean: 1288c2ecf20Sopenharmony_ci $(call descend,resolve_btfids,clean) 1298c2ecf20Sopenharmony_ci 1308c2ecf20Sopenharmony_ci.PHONY: all install clean bpftool bpftool_install bpftool_clean \ 1318c2ecf20Sopenharmony_ci runqslower runqslower_clean \ 1328c2ecf20Sopenharmony_ci resolve_btfids resolve_btfids_clean 133