As is already the case for ghc -fPIC. This is needed because ghc -dynamic
means to generate code that is capable of being linked to Haskell shared
libs and for C code the equivalent is -fPIC. Normally C code does not need
-fPIC merely to link to shared libs however Haskell shared libs do not
follow common conventions. In particular the static data cannot be
referenced statically because it cannot be copied by the static linker.
The linker cannot copy them because we do not specify a .size for the
_closure entries (in the .data section) though in principle we could.
import PrelNames ( mAIN, main_RDR_Unqual )
import RdrName ( RdrName, mkRdrUnqual )
import OccName ( mkVarOccFS )
-#ifdef i386_TARGET_ARCH
+#if defined(i386_TARGET_ARCH) || ! defined(mingw32_TARGET_OS)
import StaticFlags ( opt_Static )
#endif
import StaticFlags ( opt_PIC, WayName(..), v_Ways, v_Build_tag,
| otherwise
= []
#else
- | opt_PIC
+ | opt_PIC || not opt_Static
= ["-fPIC", "-U __PIC__", "-D__PIC__"]
| otherwise
= []