Found the problem. There's nothing wrong with the Windows build
system per se. The problem is that emacs-23.2 tarball comes with a
src/buildobj.h from a Unix system where it was tarred, which is
baaaaad, and not only on Windows. This causes Make not to create
src/buildobj.h as suitable for the actual build on the target
platform, and the rest is history.
I've just installed a fix in the emacs-23 branch (revno 100091 and a
followup change in 100092) to exclude this file from the tarball.
To fix this locally, just remove src/buildobj.h and rebuild Emacs.