summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
Diffstat (limited to 'mk')
-rw-r--r--mk/cc.mk32
-rw-r--r--mk/objcopy.mk11
-rw-r--r--mk/top.mk3
3 files changed, 46 insertions, 0 deletions
diff --git a/mk/cc.mk b/mk/cc.mk
new file mode 100644
index 0000000..36e16b2
--- /dev/null
+++ b/mk/cc.mk
@@ -0,0 +1,32 @@
+cc_srcs = $(call require_core_paths,$(1),cc_files)
+cc_objs = $(call cc_srcs_to_objs,$(1),$(call cc_srcs,$(1)))
+cc_srcs_to_objs = $(addsuffix .o,$(addprefix $(obj)/cc/$(1)/,$(basename $(notdir $(2)))))
+
+define hooks/cc
+ define obj_rules
+ cc_binary := $$(call require_core_objs,$(1),ld_binary)
+
+ $$(cc_binary): | $$(obj)/cc/$(1)
+ $$(cc_binary): $$(call cc_objs,$(1)) $$(obj_deps)
+ $$(call run,LD,$$@) $$(core_info/$(1)/cross)gcc \
+ $$(core_info/$(1)/cc_flags) $$(core_info/$(1)/ld_flags) \
+ $$(call cc_objs,$(1)) -o $$@
+
+ $$(obj)/cc/$(1): $$(obj)
+ @mkdir -p $$@
+ endef
+
+ $$(eval $$(call add_obj_rules,$(1)))
+
+ $$(foreach src,$$(call cc_srcs,$(1)), \
+ $$(eval $$(call cc_unit_rule,$(1),$$(src),$$(call cc_srcs_to_objs,$(1),$$(src)))))
+endef
+
+define cc_unit_rule
+ define obj_rules
+ $(3): $(2) $$(obj_deps)
+ $$(call run,CC,$$<) $(core_info/$(1)/cross)gcc $(core_info/$(1)/cc_flags) -c $$< -o $$@
+ endef
+
+ $$(eval $$(call add_obj_rules,$(1)))
+endef
diff --git a/mk/objcopy.mk b/mk/objcopy.mk
new file mode 100644
index 0000000..8face7d
--- /dev/null
+++ b/mk/objcopy.mk
@@ -0,0 +1,11 @@
+objcopy_src = $(call require_core_objs,$(1),objcopy_src)
+objcopy_obj = $(call require_core_objs,$(1),objcopy_obj)
+
+define hooks/objcopy
+ define obj_rules
+ $$(call objcopy_obj,$(1)): $$(call objcopy_src,$(1)) $$(obj_deps)
+ $$(call run,OBJCOPY,$$@) $$(core_info/$(1)/cross)objcopy -O binary $$< $$@
+ endef
+
+ $$(eval $$(call add_obj_rules,$(1)))
+endef
diff --git a/mk/top.mk b/mk/top.mk
index c81d04d..1e31d3f 100644
--- a/mk/top.mk
+++ b/mk/top.mk
@@ -27,10 +27,13 @@ $(foreach flag,$(subst $(comma),$(space),$(enable)),$(eval override enable_$(fla
$(foreach flag,$(subst $(comma),$(space),$(disable)),$(eval override enable_$(flag) :=))
include mk/build.mk
+include mk/cc.mk
include mk/cocotb.mk
include mk/cores.mk
include mk/cov.mk
+include mk/makehex.mk
include mk/obj.mk
+include mk/objcopy.mk
include mk/output.mk
include mk/peakrdl.mk
include mk/quartus.mk