From 3ac78307acfb919271587c3638a20f644f524658 Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Wed, 22 May 2024 15:01:02 -0600 Subject: mk: implement support for cc, objcopy --- mk/cc.mk | 32 ++++++++++++++++++++++++++++++++ mk/objcopy.mk | 11 +++++++++++ mk/top.mk | 3 +++ 3 files changed, 46 insertions(+) create mode 100644 mk/cc.mk create mode 100644 mk/objcopy.mk 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 -- cgit v1.2.3