In UNIX/POSIX, it's the responsibility of the operating system to send
signals to all the processes in the same process group. Since make
doesn't change its process group ever, that means that all make
programs, AND the processes that they invoke (compilers and whatever)
are in the same process group (unless some program that make invokes
explicitly changes its process group, which is not likely for the kinds
of things make would run).
That means that when you ^C, all the processes get a SIGINT, including
all instances of make AND all programs make invokes. In a UNIX/POSIX
system make doesn't need to "forward" any signals, and so there's no
code in make to do that.