summaryrefslogtreecommitdiff
path: root/mk/cc.mk
blob: 36e16b25e53d10a728cefd4f578609e23405d33b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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