diff options
author | Ian Lynagh <igloo@earth.li> | 2011-03-23 21:16:51 +0000 |
---|---|---|
committer | Ian Lynagh <igloo@earth.li> | 2011-03-23 21:16:51 +0000 |
commit | 4a2a508bb6adf33f9f3e99baa85f73f0fc18c832 (patch) | |
tree | 6be59cf25fc00f2303c26cb075b0a726e0c006b8 | |
parent | 90d7a88f304ddff15f31f9b1edb86b452679583b (diff) | |
download | haskell-4a2a508bb6adf33f9f3e99baa85f73f0fc18c832.tar.gz |
Document new hsc2hs flags, and use the --cross-safe flag when we're compiling
Patch from Brian Bloniarz
-rw-r--r-- | docs/users_guide/utils.xml | 51 | ||||
-rw-r--r-- | mk/config.mk.in | 1 |
2 files changed, 52 insertions, 0 deletions
diff --git a/docs/users_guide/utils.xml b/docs/users_guide/utils.xml index 0c7f0f6131..109cc01752 100644 --- a/docs/users_guide/utils.xml +++ b/docs/users_guide/utils.xml @@ -270,6 +270,34 @@ tags: </varlistentry> <varlistentry> + <term><literal>-k</literal> or + <literal>––keep-files</literal></term> + <listitem> + <para>Proceed as normal, but do not delete any intermediate files.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>-x</literal> or + <literal>––cross-compile</literal></term> + <listitem> + <para>Activate cross-compilation mode (see <xref linkend="hsc2hs_cross"/>).</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>––cross-safe</literal></term> + <listitem> + <para>Restrict the .hsc directives to those supported by the + <literal>--cross-compile</literal> mode (see <xref linkend="hsc2hs_cross"/>). + This should be useful if your <literal>.hsc</literal> files + must be safely cross-compiled and you wish to keep + non-cross-compilable constructs from creeping into them.</para> + </listitem> + </varlistentry> + + + <varlistentry> <term><literal>-?</literal> or <literal>––help</literal></term> <listitem> <para>Display a summary of the available flags and exit successfully.</para> @@ -544,6 +572,29 @@ tags: </sect2> + <sect2 id="hsc2hs_cross"> + <title>Cross-compilation</title> + + <para><command>hsc2hs</command> normally operates by creating, compiling, + and running a C program. That approach doesn't work when cross-compiling -- + in this case, the C compiler's generates code for the target machine, + not the host machine. For this situation, there's + a special mode <command>hsc2hs --cross-compile</command> which can generate + the .hs by extracting information from compilations only -- specifically, + whether or not compilation fails. + </para> + + <para>Only a subset of <literal>.hsc</literal> syntax is supported by + <literal>--cross-compile</literal>. The following are unsupported: + <itemizedlist> + <listitem><literal>#{const_str}</literal></listitem> + <listitem><literal>#{let}</literal></listitem> + <listitem><literal>#{def}</literal></listitem> + <listitem>Custom constructs</listitem> + </itemizedlist> + </para> + </sect2> + </sect1> </chapter> diff --git a/mk/config.mk.in b/mk/config.mk.in index 4204c7b5f5..948f805736 100644 --- a/mk/config.mk.in +++ b/mk/config.mk.in @@ -560,6 +560,7 @@ ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux" CONF_CC_OPTS += -G0 endif +SRC_HSC2HS_OPTS += --cross-safe SRC_HSC2HS_OPTS += $(addprefix --cflag=,$(filter-out -O,$(SRC_CC_OPTS) $(CONF_CC_OPTS_STAGE0))) SRC_HSC2HS_OPTS += $(foreach d,$(GMP_INCLUDE_DIRS),-I$(d)) |