Accepting request 198332 from home:ptrommler:ppc

- Patch ghc for llvm 3.3.
- explicitly configure gcc location in bootstrap builds too
- allow ppc builds (ppc64 build gets stuck)

OBS-URL: https://build.opensuse.org/request/show/198332
OBS-URL: https://build.opensuse.org/package/show/devel:languages:haskell/ghc?expand=0&rev=137
This commit is contained in:
Peter Trommler 2013-09-10 16:09:04 +00:00 committed by Git OBS Bridge
parent d55c4f449d
commit 3f6dc53c3d
3 changed files with 65 additions and 2 deletions

View File

@ -0,0 +1,11 @@
--- ghc-7.6.3/compiler/llvmGen/LlvmCodeGen/Base.hs~ 2013-04-19 06:22:46.000000000 +0900
+++ ghc-7.6.3/compiler/llvmGen/LlvmCodeGen/Base.hs 2013-07-24 17:05:06.491900335 +0900
@@ -151,7 +151,7 @@
minSupportLlvmVersion = 28
maxSupportLlvmVersion :: LlvmVersion
-maxSupportLlvmVersion = 31
+maxSupportLlvmVersion = 33
-- ----------------------------------------------------------------------------
-- * Environment Handling

View File

@ -0,0 +1,45 @@
git-author: Geoffrey Mainland <gmainlan@…> (06/12/13 13:31:49)
git-committer: Geoffrey Mainland <gmainlan@…> (06/12/13 13:31:49)
Message:
Avoid generating empty llvm.used definitions.
LLVM 3.3rc3 complains when the llvm.used global is an empty array, so don't
define llvm.used at all when it would be empty.
--
Index: ghc-7.6.3/compiler/llvmGen/LlvmCodeGen.hs
===================================================================
--- ghc-7.6.3.orig/compiler/llvmGen/LlvmCodeGen.hs
+++ ghc-7.6.3/compiler/llvmGen/LlvmCodeGen.hs
@@ -112,19 +112,19 @@ cmmProcLlvmGens :: DynFlags -> BufHandle
-> [[LlvmVar]] -- ^ info tables that need to be marked as 'used'
-> IO ()
-cmmProcLlvmGens _ _ _ _ [] _ []
- = return ()
-
cmmProcLlvmGens dflags h _ _ [] _ ivars
- = let ivars' = concat ivars
- cast x = LMBitc (LMStaticPointer (pVarLift x)) i8Ptr
- ty = (LMArray (length ivars') i8Ptr)
- usedArray = LMStaticArray (map cast ivars') ty
- lmUsed = (LMGlobalVar (fsLit "llvm.used") ty Appending
- (Just $ fsLit "llvm.metadata") Nothing False, Just usedArray)
- in Prt.bufLeftRender h $ {-# SCC "llvm_used_ppr" #-}
- withPprStyleDoc dflags (mkCodeStyle CStyle) $
- pprLlvmData ([lmUsed], [])
+ | null ivars' = return ()
+ | otherwise = Prt.bufLeftRender h $
+ {-# SCC "llvm_used_ppr" #-}
+ withPprStyleDoc dflags (mkCodeStyle CStyle) $
+ pprLlvmData ([lmUsed], [])
+ where
+ ivars' = concat ivars
+ cast x = LMBitc (LMStaticPointer (pVarLift x)) i8Ptr
+ ty = (LMArray (length ivars') i8Ptr)
+ usedArray = LMStaticArray (map cast ivars') ty
+ lmUsed = (LMGlobalVar (fsLit "llvm.used") ty Appending
+ (Just $ fsLit "llvm.metadata") Nothing False, Just usedArray)
cmmProcLlvmGens dflags h us env ((CmmData _ _) : cmms) count ivars
= cmmProcLlvmGens dflags h us env cmms count ivars

View File

@ -23,7 +23,7 @@ Url: http://haskell.org/ghc/dist/%{version}/%{name}-%{version}-src.ta
Summary: The Glorious Glasgow Haskell Compiler
License: BSD-3-Clause
Group: Development/Languages/Other
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64 ppc
BuildRequires: ghc-bytestring-devel
BuildRequires: ghc-compiler >= 7.0
@ -84,6 +84,10 @@ Patch: ghc-use-system-libffi.patch
Patch1: ghc-suse-as-needed.patch
# PATCH-FIX-UPSTREAM Cabal-fix-dynamic-exec-for-TH.patch peter.trommler@ohm-hochschule.de - Fedora patch 10
Patch2: Cabal-fix-dynamic-exec-for-TH.patch
# PATCH-FIX-UPSTREAM ghc-7.6.3-LlvmCodeGen-no-3.3-warning.patch peter.trommler@ohm-hochschule.de - Fedora patch 14: Silence warning about llvm 3.3
Patch3: ghc-7.6.3-LlvmCodeGen-no-3.3-warning.patch
# PATCH-FIX-UPSTREAM ghc-avoid-empty-llvm-used-definitions.patch peter.trommler@ohm-hochschule.de - Backport of commit db9b63105a54, fixes Haskell trac #7996
Patch4: ghc-avoid-empty-llvm-used-definitions.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@ -180,6 +184,8 @@ rm -r ghc-tarballs/{mingw,mingw64,perl}
rm -r ghc-tarballs/libffi
%patch1 -p1 -b .suse
%patch2 -p1 -b .TH
%patch3 -p1 -b .llvm-version
%patch4 -p1 -b .llvm-empty
%build
# required for patch and patch1
@ -195,7 +201,8 @@ HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
HSCOLOUR_SRCS = NO
EOF
./configure --prefix=%{_builddir}/ghc-boot --with-system-libffi
./configure --prefix=%{_builddir}/ghc-boot --with-system-libffi \
--with-gcc=%{_bindir}/gcc
make %{?_smp_mflags}
make install
make clean