diff options
Diffstat (limited to 'mk/cc.mk')
| -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 |
