blob: 6796e0a6e46cfcde97e81a4dab62c6d58a7e68a1 [file] [log] [blame] [edit]
include common.mk
.DEFAULT_GOAL := all
all: $(OUT_PACKAGES)/FBInstruction/Instruction.py
# flatc actually generates two files, Instruction.py and Instructions.py. make
# 4.3 supports `&:` for multiple targets, but it's probably not wise to depend
# on such a new version of make, so instead we use Instruction.py as a sentinel
# for both files.
$(OUT_PACKAGES)/FBInstruction/Instruction.py: config/instruction.fbs | $(OUT_PACKAGES)
$(FLATC) -o $(OUT_PACKAGES) --python $<
$(OUT_PACKAGES):
mkdir -p $@
ifneq "$(wildcard $(ROOTDIR)/toolchain/riscv-opcodes)" ""
# Regenerate the pipe-maps for RISC-V, based on the opcodes from the
# riscv-opcodes repo. The associated pipes are copied from the old json file.
RISCV_EXTS := $(shell find $(ROOTDIR)/toolchain/riscv-opcodes -maxdepth 1 -name 'opcodes-*' -printf '%f\n' | cut -d- -f2-)
riscv_pipe_maps: $(RISCV_EXTS:%=pipe_maps/riscv/%.json)
.PHONY: riscv_pipe_maps
endif
pipe_maps/riscv/%.json: $(ROOTDIR)/toolchain/riscv-opcodes/opcodes-%
$(PYTHON) $(IMPORT_RISCV_OPCODES) $(if $(wildcard $@),-m $@) -n $@.new $<
mv $@.new $@
# INTERNAL: See more details at go/pip-install-remediation
upgrade-requirements.txt:
pip-compile --generate-hashes --upgrade requirements.in
.PHONY: requirements.txt
# Use pylint 2.13.9
lint:
$(PYLINT) tbm/*.py
.PHONY:lint
type-check:
$(PYTYPE) tbm/tbm.py tbm/gentrace-spike.py tbm/merge-counters.py
.PHONY: type-check
# After running pytype you can merge the inferred types into the .py files.
# `make merge-pyi` will merge to all files.
# `make merge-pyi-<module>` will merge only to module.
define merge-pyi
merge-pyi-$(1):
$(MERGE_PYI) -i $(2) $(3)
.PHONY: merge-pyi-$(1)
merge-pyi: merge-pyi-$(1)
endef
.PHONY: merge-pyi
$(foreach py,$(wildcard tbm/*.py),\
$(eval name = $(basename $(notdir $(py))))\
$(eval pyi = .pytype/pyi/$(name).pyi)\
$(if $(wildcard $(pyi)),\
$(eval $(call merge-pyi,$(name),$(py),$(pyi)))))
clean:
$(RM) $(OUT_PACKAGES)/FBInstruction/Instruction.py
$(RM) $(OUT_PACKAGES)/FBInstruction/Instructions.py
$(RM) -r __pycache__
$(RM) -r .pytype
.PHONY: clean