diff options
-rw-r--r-- | includes/RtsAPI.h | 20 | ||||
-rw-r--r-- | includes/stg/DLL.h | 7 |
2 files changed, 13 insertions, 14 deletions
diff --git a/includes/RtsAPI.h b/includes/RtsAPI.h index 03dbce22a5..a4d210aab8 100644 --- a/includes/RtsAPI.h +++ b/includes/RtsAPI.h @@ -162,13 +162,19 @@ rts_getSchedStatus (Capability *cap); These are used by foreign export and foreign import "wrapper" stubs. ----------------------------------------------------------------------- */ -// When producing Windows DLLs the compiler needs to know which symbols -// are in the local package/DLL vs external ones. -// DLL_IMPORT_BASE expands to __declspec(dllimport) when we're not compiling -// the the base package. - -DLL_IMPORT_BASE extern StgWord base_GHCziTopHandler_runIO_closure[]; -DLL_IMPORT_BASE extern StgWord base_GHCziTopHandler_runNonIO_closure[]; +// When producing Windows DLLs the we need to know which symbols are in the +// local package/DLL vs external ones. +// +// Note that RtsAPI.h is also included by foreign export stubs in +// the base package itself. +// +#if defined(mingw32_TARGET_OS) && defined(__PIC__) && !defined(COMPILING_BASE_PACKAGE) +__declspec(dllimport) extern StgWord base_GHCziTopHandler_runIO_closure[]; +__declspec(dllimport) extern StgWord base_GHCziTopHandler_runNonIO_closure[]; +#else +extern StgWord base_GHCziTopHandler_runIO_closure[]; +extern StgWord base_GHCziTopHandler_runNonIO_closure[]; +#endif #define runIO_closure base_GHCziTopHandler_runIO_closure #define runNonIO_closure base_GHCziTopHandler_runNonIO_closure diff --git a/includes/stg/DLL.h b/includes/stg/DLL.h index f08d1cd144..245bcd1fbd 100644 --- a/includes/stg/DLL.h +++ b/includes/stg/DLL.h @@ -53,13 +53,6 @@ #endif -#ifdef COMPILING_BASE_PACKAGE -# define DLL_IMPORT_BASE -#else -# define DLL_IMPORT_BASE DLLIMPORT -#endif - - #ifdef COMPILING_STDLIB #define DLL_IMPORT_STDLIB #else |