I'm looking through the CyanogenMod code to try to get a device running the latest version. In the build/core/binary.mk Makefile, there is a rule that looks like this:
$(gen_c_objects): $(intermediates)/%.o: $(intermediates)/%.c $(yacc_cpps) $(proto_generated_headers) \
$(LOCAL_ADDITIONAL_DEPENDENCIES) \
| $(my_compiler_dependencies)
$(transform-$(PRIVATE_HOST)c-to-o)
Although I'm pretty new to Makefiles, I've never seen a rule of the form A: B: C. I thought it initially meant that C is the prerequisites list (both normal and order-only prereqs) for targets B, and the targets of B are the prerequisites for A, but I realized this couldn't be the case since (I don't think) Make does not have some implicit rules for generating .o files from other .o files.
What does this syntax mean?