I think that in some cases, libtool tries to do too much. I've run into a
number of cases which would have just worked if libtool had passed the
arguments to gcc without modification, but it insists on filtering
stuff in
complex ways. For example, gcc -print-search-dirs doesn't admit to
searching
/usr/lib/w32api, so any attempt to link with a w32api library when
cross-compiling with -mno-cygwin (which means the Cygwin-specific hack in
libtool.m4 doesn't get activated) fails. Now, admittedly, gcc is probably
wrong in not showing all its search dirs correctly, but sometimes I wish
libtool trusted the compiler more.
mebbe. But that's another discussion.
Your larger point is still subject for a (different) discussion, but one
small issue: a *very* recent patch to libtool CVS allows passing
arguments to gcc. so, CC='gcc -mno-cygwin -L/usr/lib/w32api' is okay
now. [there was an earlier patch that specifically allowed -mXXXXX
options; the newer one lets anything go]