summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGianfranco Costamagna <costamagnagianfranco@yahoo.it>2017-08-29 23:09:49 +0200
committerGianfranco Costamagna <costamagnagianfranco@yahoo.it>2017-08-29 23:09:49 +0200
commite571d399b5e1995f60225647e93ad2b7381aa02d (patch)
treedd96c059817dc4dfad47cb8fca00b8e901fc425d
parent4ead5c4af89a67c248b4d159f0053c50b9fba3fe (diff)
downloadDHG_packages-e571d399b5e1995f60225647e93ad2b7381aa02d.tar.gz
ghc: make ghc cross-buildable, with patch from John Paul Adrian Glaubitz.
-rw-r--r--p/ghc/debian/control6
-rw-r--r--p/ghc/debian/patches/series3
-rwxr-xr-xp/ghc/debian/rules44
3 files changed, 33 insertions, 20 deletions
diff --git a/p/ghc/debian/control b/p/ghc/debian/control
index dae294781..17d46e832 100644
--- a/p/ghc/debian/control
+++ b/p/ghc/debian/control
@@ -6,17 +6,17 @@ Uploaders: Joachim Breitner <nomeata@debian.org>, Clint Adams <clint@debian.org>
Standards-Version: 3.9.8
Build-Depends:
debhelper (>= 10),
- haskell-devscripts-minimal,
+ haskell-devscripts-minimal <!cross>,
devscripts,
grep-dctrl,
pkg-config,
- ghc (>= 7.8),
+ ghc:native (>= 7.8),
libgmp-dev,
llvm-3.7 [arm64 armel armhf],
libffi-dev,
binutils [arm64 armel armhf],
libncurses5-dev,
- python-sphinx,
+ python-sphinx <!cross>,
dpkg-dev (>= 1.16.1.1)
Build-Depends-Indep:
hscolour,
diff --git a/p/ghc/debian/patches/series b/p/ghc/debian/patches/series
index 869c9874f..a3563ea28 100644
--- a/p/ghc/debian/patches/series
+++ b/p/ghc/debian/patches/series
@@ -8,3 +8,6 @@ do-not-use-SHELL
compiler-cmm-PprC-sparc-alignment.patch
x32-use-native-x86_64-insn.patch
osdecommitmemory-compat.patch
+use-stage1-binaries-for-install.patch
+build-unlit-and-hp2ps-twice.patch
+avoid-CrossCompilerPrefix-stage2.patch
diff --git a/p/ghc/debian/rules b/p/ghc/debian/rules
index f8d30d62f..b0a7dc026 100755
--- a/p/ghc/debian/rules
+++ b/p/ghc/debian/rules
@@ -22,20 +22,20 @@ export HOME = /homedoesnotexistatbuildtime
export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
export DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
-# Commented out for now. The build scripts don't recognise i486 as an
-# architecture and cross compiling isn't supported anyway.
-#ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
-# confflags += --build $(DEB_HOST_GNU_TYPE)
-#else
-# confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
-#endif
+
+# We're cross-building if DEB_BUILD_GNU_TYPE != DEB_HOST_GNU_TYPE
+ifneq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
+ confflags += --target $(DEB_HOST_GNU_TYPE) --enable-unregisterised
+ BUILD_CROSS=YES
+else
+ BUILD_CROSS=NO
+endif
ProjectVersion=$(shell cat VERSION)
GHC=$(firstword $(shell bash -c "type -p ghc"))
EXTRA_CONFIGURE_FLAGS=--with-ghc="$(GHC)"
-BUILD_HADDOCK_DOCS=YES
DEB_HOOGLE_TXT_DIR = /usr/lib/ghc-doc/hoogle/
ifneq (,$(filter powerpcspe x32, $(DEB_HOST_ARCH)))
@@ -53,9 +53,20 @@ endif
override_dh_auto_configure:
echo "SRC_HC_OPTS += -lffi -optl-pthread" >> mk/build.mk
+ifeq (NO,$(BUILD_CROSS))
echo "HADDOCK_DOCS := YES" >> mk/build.mk
echo "EXTRA_HADDOCK_OPTS += --mathjax=file:///usr/share/javascript/mathjax/MathJax.js" >> mk/build.mk
echo "XSLTPROC_OPTS += --nonet" >> mk/build.mk
+else
+ echo "SRC_HC_OPTS += -O0 -H64m" >> mk/build.mk
+ echo "GhcStage1HcOpts = -O" >> mk/build.mk
+ echo "GhcStage2HcOpts = -O0" >> mk/build.mk
+ echo "GhcLibHcOpts = -O" >> mk/build.mk
+ echo "SplitObjs = NO" >> mk/build.mk
+ echo "HADDOCK_DOCS := NO" >> mk/build.mk
+ echo "BUILD_SPHINX_HTML := NO" >> mk/build.mk
+ echo "BUILD_SPHINX_PDF := NO" >> mk/build.mk
+endif
ifneq (,$(filter armel armhf, $(DEB_HOST_ARCH)))
echo "SRC_HC_OPTS += -optl-B/usr/bin/ld.gold" >> mk/build.mk
endif
@@ -103,6 +114,8 @@ endif
echo 'dvidir := $$(docdir)' >> mk/build.mk
echo 'pdfdir := $$(docdir)' >> mk/build.mk
echo 'psdir := $$(docdir)' >> mk/build.mk
+ echo 'STRIP_CMD = $(DEB_HOST_GNU_TYPE)-strip' >> mk/build.mk
+ echo 'RANLIB_CMD = $(DEB_HOST_GNU_TYPE)-ranlib'>> mk/build.mk
# We want verbose builds
echo 'V=1' >> mk/build.mk
./configure $(confflags) --prefix=/usr \
@@ -169,12 +182,11 @@ override_dh_auto_install:
# Check if we have a ghci binary
if test -e debian/tmp/usr/bin/ghci-$(ProjectVersion); then \
echo 'ghci=ghc-ghci' >> debian/ghc.substvars ; fi
-
+ifeq (NO,$(BUILD_CROSS))
# Add haddock substvars
echo "haddock:Depends=haddock-interface-$$(debian/tmp/usr/lib/ghc/bin/haddock --interface-version)" >> debian/ghc-doc.substvars
echo "haddock:Provides=haddock-interface-$$(debian/tmp/usr/lib/ghc/bin/haddock --interface-version)" >> debian/ghc.substvars
-
-ifeq (YES,$(BUILD_HADDOCK_DOCS))
+ find debian/tmp/usr/share/man $(FILES) >> debian/ghc.install
mkdir -p debian/tmp/usr/lib/ghc-doc
cp debian/gen_contents_index debian/tmp/usr/lib/ghc-doc/
chmod +x debian/tmp/usr/lib/ghc-doc/gen_contents_index
@@ -184,9 +196,8 @@ ifeq (YES,$(BUILD_HADDOCK_DOCS))
mkdir debian/tmp/usr/lib/ghc-doc/haddock/ghc/`basename $$f` ; \
mv $$f/*.haddock debian/tmp/usr/lib/ghc-doc/haddock/ghc/`basename $$f` ; done
cd debian/tmp/usr/share/doc/ghc-doc/html/libraries/; ln -s ghc-$(ProjectVersion) ghc
- install -Dm 644 debian/index.html debian/tmp/usr/share/doc/ghc-doc/index.html
-endif
+ install -Dm 644 debian/index.html debian/tmp/usr/share/doc/ghc-doc/index.html
# manpages
rm -f debian/*.1
echo ".so man1/ghc.1" > debian/ghc-$(ProjectVersion).1
@@ -202,14 +213,13 @@ endif
echo debian/*.1 > debian/ghc.manpages
cp debian/haddock.man debian/haddock.1
echo debian/haddock.1 >> debian/ghc.manpages
-
+endif
# ####################
# Now all the files are sorted, create the package filelists
# ghc
find debian/tmp/usr/bin $(FILES) > debian/ghc.install
# find debian/tmp/usr/share/ghc* $(FILES) >> debian/ghc.install
- find debian/tmp/usr/share/man $(FILES) >> debian/ghc.install
find debian/tmp/usr/lib/ghc $(FILES) ! $(PROF_FILE) >> debian/ghc.install
find debian/tmp/var >> debian/ghc.install
echo debian/tmp/usr/share/lintian/overrides/ghc >> debian/ghc.install
@@ -217,14 +227,14 @@ endif
find debian/tmp/usr/lib $(FILES) $(PROF_FILE) > debian/ghc-prof.install
echo debian/tmp/usr/share/lintian/overrides/ghc-prof >> debian/ghc-prof.install
# ghc-doc
-ifeq (YES,$(BUILD_HADDOCK_DOCS))
+ifeq (NO,$(BUILD_CROSS))
mkdir -p debian/tmp/$(DEB_HOOGLE_TXT_DIR)
find debian/tmp/usr/share/doc/ghc-doc/html/libraries/*/ -name "*.txt" \
-printf "%p $(DEB_HOOGLE_TXT_DIR)/%f\n" >> debian/ghc-doc.links
find debian/tmp/usr/share/doc/ghc-doc $(FILES) > debian/ghc-doc.install
find debian/tmp/usr/lib/ghc-doc $(FILES) >> debian/ghc-doc.install
-endif
sed -i s,^debian/tmp,, debian/*.install debian/*.links
+endif
rm -f debian/ghc.links
echo "/var/lib/ghc/package.conf.d /usr/lib/ghc/package.conf.d" >> debian/ghc.links