From 5e4597f7ab70895496a26c30aadf11353c3928d2 Mon Sep 17 00:00:00 2001 From: "Ben.Lippmeier@anu.edu.au" Date: Wed, 18 Nov 2009 11:05:48 +0000 Subject: [PATCH] Windows DLLs: Don't rely on stg/DLL.h being included in RtsAPI.h --- includes/RtsAPI.h | 20 +++++++++++++------- includes/stg/DLL.h | 7 ------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/includes/RtsAPI.h b/includes/RtsAPI.h index 03dbce2..a4d210a 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 f08d1cd..245bcd1 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 -- 1.7.10.4