WriteMakefile returns a MM object which has
has_link_code and
needs_linking. Somehow calling these are your safest bet. If I had to try and do it, I would copy EUMM's WriteMakefile into my script, switch packages, define a new WriteMakefile based off EUMM's but without the flush() at the end, switch packages back to main, , run the makefile.pl with a do(), intercept the returning MM obj in my WriteMakefile, and call needs_linking(). The most complex use of EUMM I've ever seen was in Perl TK, and I did something similar to what I described to you to intercept Tk::MMutil::TkExtMakefile. Note this is not a "static" way of determining whether it needs to be compile, so security issues might be a problem for you.
Another solution would be to generate the makefile, then do backticks on your make tool running in "list commands and do not execute" mode, then parse that looking for your local C compiler.