-define objs_asl_template
-$(obj)/$(1)%.o: src/$(1)%.asl
- @printf " IASL $$(subst $(top)/,,$$(@))\n"
- $(CPP) -D__ACPI__ -P $(CPPFLAGS) -include $(obj)/config.h -I$(src) -I$(src)/mainboard/$(MAINBOARDDIR) $$< -o $$(basename $$@).asl
- iasl -p $$(basename $$@) -tc $$(basename $$@).asl
- mv $$(basename $$@).hex $$(basename $$@).c
- $(CC) $$(CFLAGS) $$(if $$(subst dsdt,,$$(basename $$(notdir $$@))), -DAmlCode=AmlCode_$$(basename $$(notdir $$@))) -c -o $$@ $$(basename $$@).c
-endef
-
-define objs_c_template
-$(obj)/$(1)%.o: $(1)%.c $(obj)/config.h
- @printf " CC $$(subst $$(obj)/,,$$(@))\n"
- $(CC) $$(CFLAGS) -c -o $$@ $$<
-
-$(obj)/$(1)%.o: src/$(1)%.c $(obj)/config.h
- @printf " CC $$(subst $$(obj)/,,$$(@))\n"
- $(CC) $$(CFLAGS) -c -o $$@ $$<
-endef
-
-define objs_S_template
-$(obj)/$(1)%.o: $(1)%.S $(obj)/config.h
- @printf " CC $$(subst $$(obj)/,,$$(@))\n"
- $(CC) -DASSEMBLY $$(CFLAGS) -c -o $$@ $$<
-
-$(obj)/$(1)%.o: src/$(1)%.S $(obj)/config.h
- @printf " CC $$(subst $$(obj)/,,$$(@))\n"
- $(CC) -DASSEMBLY $$(CFLAGS) -c -o $$@ $$<
-endef
-
-define initobjs_c_template
-$(obj)/$(1)%.initobj.o: src/$(1)%.c $(obj)/config.h
- @printf " CC $$(subst $$(obj)/,,$$(@))\n"
- $(CC) $$(CFLAGS) -c -o $$@ $$<
-endef
+src-to-obj=$(addsuffix .$(1).o, $(basename $(patsubst src/%, $(obj)/%, $($(1)-srcs))))
+$(foreach class,$(classes),$(eval $(class)-objs:=$(call src-to-obj,$(class))))