cross-build 'unlit' and 'hp2ps' for stage2 install
authorSergei Trofimovich <slyfox@gentoo.org>
Sat, 8 Apr 2017 09:02:34 +0000 (10:02 +0100)
committerSergei Trofimovich <slyfox@gentoo.org>
Sat, 8 Apr 2017 09:58:41 +0000 (10:58 +0100)
In navive build case it does not matter much if we build
'unlit' and 'hp2ps' tools with ghc-stage0 or ghc-stage1:
both GHCs are native compilers and both tools are written
in C (have no haskell code).

But in cross-case the difference is substantial:
In Stag1Only=YES case we need to install native tools built
by ghc-stage0/${host}-cc.
In Stag1Only=NO  case we need to install cross-built tools
built by ghc-stage1/${target}-cc.

Before this change GHC did not have a rule to build cross-built
'unlit' and 'hp2ps'.

The change adds cross-built 'unlit' and 'hp2ps' as 'dist-install'
targets.

'inplace/lib/bin/unlit.bin' target is unchanged and still contains
native binary.

As a result this change allows cross-building and packaging whole
GHC for target platform!

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
utils/hp2ps/ghc.mk
utils/unlit/ghc.mk

index f6e01ec..21ce87d 100644 (file)
@@ -10,6 +10,7 @@
 #
 # -----------------------------------------------------------------------------
 
+# stage0
 utils/hp2ps_dist_C_SRCS          = AreaBelow.c Curves.c Error.c Main.c \
                                    Reorder.c TopTwenty.c AuxFile.c Deviation.c \
                                    HpFile.c Marks.c Scale.c TraceElement.c \
@@ -17,11 +18,27 @@ utils/hp2ps_dist_C_SRCS          = AreaBelow.c Curves.c Error.c Main.c \
                                    Utilities.c
 utils/hp2ps_dist_EXTRA_LIBRARIES = m
 utils/hp2ps_dist_PROGNAME        = hp2ps
-utils/hp2ps_dist_INSTALL         = YES
 utils/hp2ps_dist_INSTALL_INPLACE = YES
 utils/hp2ps_dist_SHELL_WRAPPER              = YES
 utils/hp2ps_dist_INSTALL_SHELL_WRAPPER_NAME = hp2ps
 
 utils/hp2ps_CC_OPTS += $(addprefix -I,$(GHC_INCLUDE_DIRS))
 
+# stage 1
+utils/hp2ps_dist-install_C_SRCS = $(utils/hp2ps_dist_C_SRCS)
+utils/hp2ps_dist-install_EXTRA_LIBRARIES = $(utils/hp2ps_dist_EXTRA_LIBRARIES)
+utils/hp2ps_dist-install_PROGNAME        = $(utils/hp2ps_dist_PROGNAME)
+utils/hp2ps_dist-install_INSTALL_INPLACE = NO
+utils/hp2ps_dist-install_SHELL_WRAPPER              = YES
+utils/hp2ps_dist-install_INSTALL_SHELL_WRAPPER_NAME = $(utils/hp2ps_dist_INSTALL_SHELL_WRAPPER_NAME)
+
+ifeq "$(Stage1Only)" "YES"
+utils/hp2ps_dist_INSTALL         = YES
+utils/hp2ps_dist-install_INSTALL = NO
+else
+utils/hp2ps_dist_INSTALL         = NO
+utils/hp2ps_dist-install_INSTALL = YES
+endif
+
 $(eval $(call build-prog,utils/hp2ps,dist,0))
+$(eval $(call build-prog,utils/hp2ps,dist-install,1))
index e947989..8911f4e 100644 (file)
 #
 # -----------------------------------------------------------------------------
 
+# built by ghc-stage0
 utils/unlit_dist_C_SRCS  = unlit.c
 utils/unlit_dist_PROGNAME = unlit
 utils/unlit_dist_TOPDIR  = YES
-utils/unlit_dist_INSTALL = YES
 utils/unlit_dist_INSTALL_INPLACE = YES
 
-$(eval $(call build-prog,utils/unlit,dist,0))
+# built by ghc-stage1
+utils/unlit_dist-install_C_SRCS = $(utils/unlit_dist_C_SRCS)
+utils/unlit_dist-install_PROGNAME = $(utils/unlit_dist_PROGNAME)
+utils/unlit_dist-install_TOPDIR = $(utils/unlit_dist_TOPDIR)
+utils/unlit_dist-install_INSTALL_INPLACE = NO
+
+ifeq "$(Stage1Only)" "YES"
+utils/unlit_dist_INSTALL         = YES
+utils/unlit_dist-install_INSTALL = NO
+else
+utils/unlit_dist_INSTALL         = NO
+utils/unlit_dist-install_INSTALL = YES
+endif
 
+$(eval $(call build-prog,utils/unlit,dist,0))
+$(eval $(call build-prog,utils/unlit,dist-install,1))