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.
@@ -668,10 +658,7 @@ $ cat foo.hspp
When generating code, assume that entities imported from a
different package will reside in a different shared library or
- binary. This currently works on Mac OS X; it works on PowerPC Linux when
- using the native code generator. As with ,
- x86 Linux support is not quite ready yet. Windows is not supported,
- and it is a no-op on PowerPC64 Linux.
+ binary.Note that this option also causes GHC to use shared libraries
when linking.
@@ -838,10 +825,10 @@ $ cat foo.hspp
- Tell the linker to use shared Haskell libraries, if
- available (this option is only supported on Mac OS X at the
- moment, and also note that your distribution of GHC may
- not have been supplied with shared libraries).
+ This flag switches to shared Haskell libraries for
+ linking. See on how to
+ create them.
+
Note that this option also has an effect on
code generation (see above).
@@ -849,6 +836,49 @@ $ cat foo.hspp
+
+
+
+
+ Instead of creating an executable, GHC produces a
+ shared object with this linker flag. Depending on the
+ operating system target, this might be an ELF DSO, a Windows
+ DLL, or a Mac OS dylib. GHC hides the operating system
+ details beneath this uniform flag.
+
+ The flags / control whether the
+ resulting shared object links statically or dynamically to
+ Haskell package libraries given as option. Non-Haskell
+ libraries are linked as gcc would regularly link it on your
+ system, e.g. on most ELF system the linker uses the dynamic
+ libraries when found.
+
+ Object files linked into shared objects must be
+ compiled with , see
+
+ When creating shared objects for Haskell packages, the
+ shared object must be named properly, so that GHC recognizes
+ the shared object when linked against this package. See
+ shared object name mangling.
+
+
+
+
+
+
+
+
+
+
+ This flag selects one of a number of modes for finding shared
+ libraries at runtime. See for
+ a description of each mode.
+
+
+
+
+
+ specifying your own main function
@@ -949,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.