Some punctuation in the warning message would help.  As it stands, I have six nouns in a row before %s exists; I'm not sure which nouns are modifying the others (so serving an adjectival role) and which are actually being the nouns they are.  I finally conclude that something like "Warning (function: makerule): target file %s exists and is not a plain file" might be what you meant.