aboutsummaryrefslogtreecommitdiff
path: root/Makefile.util
diff options
context:
space:
mode:
authorWojciech Kosior <kwojtus@protonmail.com>2020-12-24 09:22:34 +0100
committerWojciech Kosior <kwojtus@protonmail.com>2020-12-24 09:22:34 +0100
commitf122fa70e30a7d7744b38fa22bd1d5aa949e8277 (patch)
tree8d0ed8590eb5bb6cbb85ded102a4e4e440f28913 /Makefile.util
parent6abc6fd5a869976b4e31e12908e835827399deec (diff)
downloadAGH-engineering-thesis-f122fa70e30a7d7744b38fa22bd1d5aa949e8277.tar.gz
AGH-engineering-thesis-f122fa70e30a7d7744b38fa22bd1d5aa949e8277.zip
prepare makefile infrastructure for writing examples
Diffstat (limited to 'Makefile.util')
-rw-r--r--Makefile.util62
1 files changed, 61 insertions, 1 deletions
diff --git a/Makefile.util b/Makefile.util
index 02ad5a3..4abddca 100644
--- a/Makefile.util
+++ b/Makefile.util
@@ -1,4 +1,31 @@
-FILE_LINES = `grep -E '^[[:space:]]*[^[:space:]/]' -c $(1)`
+ifndef PROJ_DIR
+PROJ_DIR := ./
+endif
+
+include $(PROJ_DIR)/Makefile.config
+
+IVFLAGS += -I$(PROJ_DIR)/include/
+
+vpath %.v $(PROJ_DIR)/design/:$(PROJ_DIR)/models/:$(PROJ_DIR)/examples/:.
+vpath %.vh $(PROJ_DIR)/include:.
+vpath %.pcf $(PROJ_DIR):.
+
+FILE_LINES = $(shell grep -E '^[[:space:]]*[^[:space:]/]' -c $(1))
+
+design.json yosys.log : design.v
+ $(YOSYS) -p 'read_verilog -defer $<' \
+ -p 'synth_ice40 -top $(TOPMODULE) -json design.json' \
+ > yosys.log 2>&1
+
+design.asc pnr.log: $(PCF) design.json
+ $(PNR) --hx8k --asc design.asc --pcf $< --json design.json \
+ --package ct256 > pnr.log 2>&1
+
+design.bin : design.asc
+ $(ICEPACK) $< $@
+
+prog : design.bin
+ sudo iceprogduino $<
%.mem : $(PROJ_DIR)/tclasm.tcl %.s.tcl
tclsh $^ > $@
@@ -8,3 +35,36 @@ FILE_LINES = `grep -E '^[[:space:]]*[^[:space:]/]' -c $(1)`
%.wasm : %.wat
$(WAT2WASM) $< -o $@
+
+include $(PROJ_DIR)/tools/Makefile.tools
+
+TOOLS_TARGETS = $(addprefix $(PROJ_DIR)/tools/,$(TOOLS))
+
+$(TOOLS_TARGETS) : $(PROJ_DIR)/tools/% :
+ $(MAKE) -C $(dir $@) $*
+
+FIND_TCLASM_BASE_NAMES = \
+ $(basename $(basename $(shell find $(1) -name "*.s.tcl")))
+
+FIND_WAT_BASE_NAMES = \
+ $(basename $(shell find $(1) -name "*.wat"))
+
+FIND_MEMV_BASE_NAMES = \
+ $(basename $(shell find $(1) -name "*.memv"))
+
+FIND_GENERATED_MEM_BASE_NAMES = \
+ $(call FIND_TCLASM_BASE_NAMES,$(1)) \
+ $(call FIND_WAT_BASE_NAMES,$(1)) \
+ $(call FIND_MEMV_BASE_NAMES,$(1))
+
+FIND_GENERATED_MEM_FILES = \
+ $(addsuffix .mem,$(call FIND_GENERATED_MEM_BASE_NAMES,$(1)))
+
+FIND_GENERATED_WASM_FILES = \
+ $(addsuffix .wasm,$(call FIND_WAT_BASE_NAMES,$(1)))
+
+FIND_GENERATED_FILES = \
+ $(call FIND_GENERATED_MEM_FILES,$(1)) \
+ $(call FIND_GENERATED_WASM_FILES,$(1))
+
+.PHONY : prog