diff options
| author | Alejandro Soto <alejandro@34project.org> | 2024-05-22 15:01:02 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2024-05-24 05:58:43 -0600 |
| commit | 3ac78307acfb919271587c3638a20f644f524658 (patch) | |
| tree | 023a64d6b2ac013b98992cbbe2536537b9082e79 /mk | |
| parent | cc3eed896e039d3c7088454ed49e483b82fe9917 (diff) | |
mk: implement support for cc, objcopy
Diffstat (limited to 'mk')
| -rw-r--r-- | mk/cc.mk | 32 | ||||
| -rw-r--r-- | mk/objcopy.mk | 11 | ||||
| -rw-r--r-- | mk/top.mk | 3 |
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 @@ -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 |
