diff options
| author | Alejandro Soto <alejandro@34project.org> | 2024-05-22 14:59:29 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2024-05-24 05:58:43 -0600 |
| commit | f544591a74d0f27d5e55261ce50eec562549aad9 (patch) | |
| tree | fab3262d637d3420c594716e258686115969a9ab /mk | |
| parent | 582904f497496ac899cf8697b103372d84279b0a (diff) | |
mk/obj: initial commit
Diffstat (limited to 'mk')
| -rw-r--r-- | mk/cocotb.mk | 2 | ||||
| -rw-r--r-- | mk/cores.mk | 10 | ||||
| -rw-r--r-- | mk/obj.mk | 8 | ||||
| -rw-r--r-- | mk/quartus.mk | 2 | ||||
| -rw-r--r-- | mk/top.mk | 1 | ||||
| -rw-r--r-- | mk/verilator.mk | 4 |
6 files changed, 20 insertions, 7 deletions
diff --git a/mk/cocotb.mk b/mk/cocotb.mk index da87b68..7187773 100644 --- a/mk/cocotb.mk +++ b/mk/cocotb.mk @@ -25,7 +25,7 @@ define target/test/rules .PHONY: $$(rule_top_path)/test - $$(rule_top_path)/test &: $$(vtop_exe) | $$(obj) + $$(rule_top_path)/test &: $$(vtop_exe) $$(call core_objs,$$(rule_top),obj_deps) | $$(obj) $$(call run_no_err,COCOTB) cd $$(obj) && rm -f log.txt results.xml && \ LIBPYTHON_LOC=$$(cocotb_libpython) COCOTB_RESULTS_FILE=results.xml \ PYTHONPATH="$$(subst $$(space),:,$$(strip $$(cocotb_pythonpath) $$$$PYTHONPATH))" \ diff --git a/mk/cores.mk b/mk/cores.mk index 55235ee..d525777 100644 --- a/mk/cores.mk +++ b/mk/cores.mk @@ -17,17 +17,21 @@ core_paths_no_dyn = \ $(let prefix,$(core_info/$(1)/workdir), \ $(foreach path_elem,$(core_info/$(1)/$(2)), \ $(if $(patsubst /%,,$(path_elem)), \ - $(addprefix /$(if $(prefix),$(prefix)/),$(path_elem)), \ + $(addprefix /$(if $(3),$(3)/,$(if $(prefix),$(prefix)/)),$(path_elem)), \ $(path_elem))))))) core_paths = \ - $(call core_paths_no_dyn,$(1),$(2)) $(call core_paths_no_dyn,$(1),$(call target_var,$(2))) + $(call core_paths_no_dyn,$(1),$(2),$(3)) $(call core_paths_no_dyn,$(1),$(call target_var,$(2)),$(3)) + +core_objs = $(call core_paths,$(1),$(2),$(obj)) require_core_paths = \ $(strip \ - $(let val,$(strip $(call core_paths,$(1),$(2))), \ + $(let val,$(strip $(call core_paths,$(1),$(2),$(3))), \ $(if $(val),$(val),$(error core '$(1)' must define '$(2)')))) +require_core_objs = $(call require_core_paths,$(1),$(2),$(obj)) + core_paths_dyn = $(call core_paths,$(1),$(call target_var,$(2))) define add_core_dyn diff --git a/mk/obj.mk b/mk/obj.mk new file mode 100644 index 0000000..1c2baf4 --- /dev/null +++ b/mk/obj.mk @@ -0,0 +1,8 @@ +define add_obj_rules + core_info/$(1)/obj_rules := $$(core_info/$(1)/obj_rules)$$(newline)$$(value obj_rules) +endef + +define hooks/obj + obj_deps := $$(call core_objs,$(1),obj_deps) $$(top_stamp) | $$(obj) + $$(eval $$(call core_info/$(1)/obj_rules)) +endef diff --git a/mk/quartus.mk b/mk/quartus.mk index b61f77a..514c484 100644 --- a/mk/quartus.mk +++ b/mk/quartus.mk @@ -78,7 +78,7 @@ define target/syn/rules $$(call run,FIT) $$(quartus_run)_fit --part=$$(quartus_device) $$(quartus_top) @touch $$@ - $$(obj)/map.stamp: $$(quartus_qpf) + $$(obj)/map.stamp: $$(quartus_qpf) $$(call core_objs,$$(rule_top),obj_deps) $$(call run,MAP) $$(quartus_run)_map --family=$(quartus_family) $$(quartus_top) @touch $$@ @@ -30,6 +30,7 @@ include mk/build.mk include mk/cocotb.mk include mk/cores.mk include mk/cov.mk +include mk/obj.mk include mk/output.mk include mk/peakrdl.mk include mk/quartus.mk diff --git a/mk/verilator.mk b/mk/verilator.mk index e98bef8..1c91e37 100644 --- a/mk/verilator.mk +++ b/mk/verilator.mk @@ -25,8 +25,8 @@ define target/sim/rules .PHONY: $$(rule_top_path)/sim - $$(rule_top_path)/sim: $$(vtop_exe) - $$(call run,RUN) $$< + $$(rule_top_path)/sim: $$(vtop_exe) $$(call core_objs,$$(rule_top),obj_deps) + $$(call run,RUN) cd $$(obj) && vl/Vtop $(call target_entrypoint,$$(rule_top_path)/sim) endef |
