Forcing options to a particular phaseforcing GHC-phase options
- Options can be forced through to a particlar compilation
+ Options can be forced through to a particular compilation
phase, using the following flags:
@@ -214,16 +214,6 @@
- option
-
-
-
- Pass option to the
- dependency generator.
-
-
-
- option
@@ -412,7 +402,7 @@ $ cat foo.hspp
This symbol is defined when pre-processing Haskell
(input) and pre-processing C (GHC output). Since GHC from
- verion 4.00 now supports concurrent haskell by default,
+ version 4.00 now supports concurrent haskell by default,
this symbol is always defined.
@@ -652,12 +642,10 @@ $ cat foo.hspp
Generate position-independent code (code that can be put into
- shared libraries). This currently works on Mac OS X; it works on
- PowerPC Linux when using the native code generator (-fasm).
- It is not quite ready to be used yet for x86 Linux.
- On Windows, position-independent code is never used,
- and on PowerPC64 Linux, position-independent code is always used,
- so the flag is a no-op on those platforms.
+ shared libraries). This currently works on Linux x86 and x86-64 when
+ using the native code generator (-fasm).
+ On Windows, position-independent code is never used
+ so the flag is a no-op on that platform.
@@ -669,8 +657,8 @@ $ cat foo.hspp
When generating code, assume that entities imported from a
different package will reside in a different shared library or
binary.
- Note that this option also causes GHC to use shared libraries
- when linking.
+ Note that using this option when linking causes GHC to link
+ against shared libraries.
@@ -835,8 +823,10 @@ $ cat foo.hspp
- This flag switches to shared Haskell libraries for
- linking. See on how to
+ This flag tells GHC to link against shared Haskell libraries.
+ This flag only affects the selection of dependent libraries, not
+ the form of the current target (see -shared).
+ See on how to
create them.Note that this option also has an effect on
@@ -873,6 +863,19 @@ $ cat foo.hspp
+
+
+
+
+
+
+
+ This flag selects one of a number of modes for finding shared
+ libraries at runtime. See for
+ a description of each mode.
+
+
+
@@ -976,23 +979,11 @@ $ cat foo.hspp
machine. See .
The ability to make a foreign call that does not
- block all other Haskell threads.
-
- The ability to invoke foreign exported Haskell
- functions from multiple OS threads.
+ block all other Haskell threads, and to invoke
+ foreign-exported Haskell functions from multiple OS
+ threads. See .
-
- With , calls to foreign
- functions are made using the same OS thread that created the
- Haskell thread (if it was created by a call to a foreign
- exported Haskell function), or an arbitrary OS thread
- otherwise (if the Haskell thread was created by
- forkIO).
-
- More details on the use of "bound threads" in the
- threaded runtime can be found in the Control.Concurrent module.
@@ -1061,6 +1052,28 @@ $ cat foo.hspp
/>).
+
+
+
+
+
+
+
+
+ DLLs on Windows are typically linked to by linking to a corresponding
+ .lib or .dll.a - the so-called import library.
+ GHC will typically generate such a file for every DLL you create by compiling in
+ -shared mode. However, sometimes you don't want to pay the
+ disk-space cost of creating this import library, which can be substantial - it
+ might require as much space as the code itself, as Haskell DLLs tend to export
+ lots of symbols.
+
+ As long as you are happy to only be able to link to the DLL using
+ GetProcAddress and friends, you can supply the
+ flag to disable the creation of the import
+ library entirely.
+
+