
I got curious, so I went to have a look at the nhc-bugs archives -- seems like what's at the root of it all is that the following ghc invocation:
ghc -package lang -package posix -c \ -o /tmp/nhc98-1.12/targets/ix86-CYGWIN_NT-5.0/obj/hmake/QSort.o \ QSort.hs
Assembler messages: FATAL: Can't create \ \tmp\nhc98-1.12\targets\ix86-CYGWIN_NT-5.0\obj\hmake\QSort.o
This is a known 'usability bug' with GHC - it doesn't check that the directory portion of the '-o' file exists, but just merrily hands it off to the assembler, which barfs with the above unfriendly message.
So, for whatever reason, that /tmp/... directory doesn't exist.
Question: which assembler is being called there? In a standalone GHC, that can't be the cygwin assembler, so, unless the call is routed via the cygwin shell, the assembler is unlikely to know about cygwin's file system. When I encountered that problem, a simple fix was to add the necessary prefix to turn the cygwin path into a native path: c:/cygwin/tmp/nhc... neither GHC nor cygwin have trouble with that path, and the assembler was happy as well. Claus