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/cc.mk | |
| parent | cc3eed896e039d3c7088454ed49e483b82fe9917 (diff) | |
mk: implement support for cc, objcopy
Diffstat (limited to '')
| -rw-r--r-- | mk/cc.mk | 32 |
1 files changed, 32 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 |
