From 760efcba7eda8cef812e0fb3802b1a600ff789f3 Mon Sep 17 00:00:00 2001 From: Jens Petersen Date: Fri, 27 Apr 2012 23:18:42 +0900 Subject: [PATCH] Reverting last patch "avoid actually running aclocal (for +d16) by using hard float patch closer to Ubuntu" and run autoreconf --- ghc-7.4.1-armv7hl-llc-hard-float.patch | 15 --------------- ghc-debian-ARM-VFPv3D16.patch | 16 ++++++++++++++++ ghc-debian-armhf_llvm_abi.patch | 26 ++++++++++++++++++++++++++ ghc.spec | 16 ++++++++++++---- 4 files changed, 54 insertions(+), 19 deletions(-) delete mode 100644 ghc-7.4.1-armv7hl-llc-hard-float.patch create mode 100644 ghc-debian-ARM-VFPv3D16.patch create mode 100644 ghc-debian-armhf_llvm_abi.patch diff --git a/ghc-7.4.1-armv7hl-llc-hard-float.patch b/ghc-7.4.1-armv7hl-llc-hard-float.patch deleted file mode 100644 index ad6c323..0000000 --- a/ghc-7.4.1-armv7hl-llc-hard-float.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -u ghc-7.4.1/compiler/main/DriverPipeline.hs.orig ghc-7.4.1/compiler/main/DriverPipeline.hs ---- ghc-7.4.1/compiler/main/DriverPipeline.hs.orig 2012-02-02 03:10:32.000000000 +0900 -+++ ghc-7.4.1/compiler/main/DriverPipeline.hs 2012-04-27 10:42:53.142111769 +0900 -@@ -1376,9 +1376,9 @@ - -- does not enable VFP by default. Let's do this manually here - fpOpts = case platformArch (targetPlatform dflags) of - ArchARM ARMv7 ext -> if (elem VFPv3 ext) -- then ["-mattr=+v7,+vfp3"] -+ then ["-mattr=+v7,+vfp3", "-float-abi=hard"] - else if (elem VFPv3D16 ext) -- then ["-mattr=+v7,+vfp3,+d16"] -+ then ["-mattr=+v7,+vfp3,+d16", "-float-abi=hard"] - else [] - _ -> [] - diff --git a/ghc-debian-ARM-VFPv3D16.patch b/ghc-debian-ARM-VFPv3D16.patch new file mode 100644 index 0000000..ffe76cb --- /dev/null +++ b/ghc-debian-ARM-VFPv3D16.patch @@ -0,0 +1,16 @@ +Description: Use VFPv3-D16 FPU for ARM builds +Author: Jani Monoses + +Index: ghc/aclocal.m4 +=================================================================== +--- ghc.orig/aclocal.m4 2012-02-01 18:10:32.000000000 +0000 ++++ ghc/aclocal.m4 2012-03-10 16:40:32.415005650 +0000 +@@ -333,7 +333,7 @@ + ], + [changequote(, )dnl + ARM_ISA=ARMv7 +- ARM_ISA_EXT="[VFPv3,NEON]" ++ ARM_ISA_EXT="[VFPv3D16,NEON]" + changequote([, ])dnl + ]) + ]) diff --git a/ghc-debian-armhf_llvm_abi.patch b/ghc-debian-armhf_llvm_abi.patch new file mode 100644 index 0000000..c3b045e --- /dev/null +++ b/ghc-debian-armhf_llvm_abi.patch @@ -0,0 +1,26 @@ +Description: If we are on armhf, tell llvm to generate code for this ABI. Not + forwarded upstream, because they will do a more 'proper' patch. See upstream + bug #5914. +Author: Iain Lane + +Index: ghc/compiler/main/DriverPipeline.hs +=================================================================== +--- ghc.orig/compiler/main/DriverPipeline.hs 2012-03-10 16:41:46.000000000 +0000 ++++ ghc/compiler/main/DriverPipeline.hs 2012-03-10 16:42:59.209169474 +0000 +@@ -1,5 +1,5 @@ + {-# OPTIONS -fno-cse #-} +-{-# LANGUAGE NamedFieldPuns #-} ++{-# LANGUAGE NamedFieldPuns, CPP #-} + -- -fno-cse is needed for GLOBAL_VAR's to behave properly + + ----------------------------------------------------------------------------- +@@ -1379,6 +1379,9 @@ + then ["-mattr=+v7,+vfp3"] + else if (elem VFPv3D16 ext) + then ["-mattr=+v7,+vfp3,+d16"] ++#ifdef __ARM_PCS_VFP ++ ++ ["-float-abi=hard"] ++#endif + else [] + _ -> [] + diff --git a/ghc.spec b/ghc.spec index fe02411..903321f 100644 --- a/ghc.spec +++ b/ghc.spec @@ -98,8 +98,9 @@ Patch9: Cabal-fix-dynamic-exec-for-TH.patch # Debian armel fixes Patch10: fix-ARM-s-StgCRun-clobbered-register-list-for-both-A.patch Patch11: fix-ARM-StgCRun-to-not-save-and-restore-r11-fp-regis.patch -# need to tell llc to use hard float on armv7hl -Patch12: ghc-7.4.1-armv7hl-llc-hard-float.patch +# Debian armhf fixes +Patch12: ghc-debian-ARM-VFPv3D16.patch +Patch13: ghc-debian-armhf_llvm_abi.patch %description GHC is a state-of-the-art, open source, compiler and interactive environment @@ -218,7 +219,12 @@ ln -s $(pkg-config --variable=includedir libffi)/*.h rts/dist/build %ifarch armv7hl armv5tel %patch10 -p1 -b .arm1 %patch11 -p1 -b .arm2 +%endif +%ifarch armv7hl +# touches aclocal.m4 %patch12 -p1 -b .arm +%patch13 -p1 -b .arm +autoreconf %endif %build @@ -235,6 +241,9 @@ BUILD_DOCBOOK_HTML = NO %if %{undefined without_hscolour} HSCOLOUR_SRCS = NO %endif +%ifarch armv7hl +SRC_HC_OPTS += -D__ARM_PCS_VFP +%endif EOF export CFLAGS="${CFLAGS:-%optflags}" @@ -421,8 +430,7 @@ fi * Tue Apr 10 2012 Jens Petersen - 7.4.1-1.1 - build with llvm-3.0 on ARM - remove arm from unregisterised_archs -- add Debian ARM register patches (Iain Lane) -- make llc use -float-abi=hard on armv7hl (thanks Debian and Ubuntu) +- add 4 Debian ARM patches for armel and armhf (Iain Lane) - bootstrap build * Wed Feb 15 2012 Jens Petersen - 7.4.1-1