[ghc] add Cabal-option-executable-dynamic.patch

Jens Petersen petersen at fedoraproject.org
Sat Jan 22 05:26:59 UTC 2011


commit f688990ca40c3815a19aac167841e3436b517bd4
Author: Jens Petersen <petersen at redhat.com>
Date:   Sat Jan 22 15:26:49 2011 +1000

    add Cabal-option-executable-dynamic.patch

 Cabal-option-executable-dynamic.patch |  145 +++++++++++++++++++++++++++++++++
 1 files changed, 145 insertions(+), 0 deletions(-)
---
diff --git a/Cabal-option-executable-dynamic.patch b/Cabal-option-executable-dynamic.patch
new file mode 100644
index 0000000..4324c11
--- /dev/null
+++ b/Cabal-option-executable-dynamic.patch
@@ -0,0 +1,145 @@
+diff -rN -u old-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Configure.hs new-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Configure.hs
+--- old-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Configure.hs	2011-01-22 14:49:22.000000000 +1000
++++ new-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Configure.hs	2011-01-22 14:49:22.000000000 +1000
+@@ -488,6 +488,7 @@
+                     withVanillaLib      = fromFlag $ configVanillaLib cfg,
+                     withProfLib         = fromFlag $ configProfLib cfg,
+                     withSharedLib       = fromFlag $ configSharedLib cfg,
++                    withDynExe          = fromFlag $ configDynExe cfg,
+                     withProfExe         = fromFlag $ configProfExe cfg,
+                     withOptimization    = fromFlag $ configOptimization cfg,
+                     withGHCiLib         = fromFlag $ configGHCiLib cfg,
+diff -u ghc-7.0.1/libraries/Cabal/Distribution/Simple/GHC.hs.orig ghc-7.0.1/libraries/Cabal/Distribution/Simple/GHC.hs
+--- ghc-7.0.1/libraries/Cabal/Distribution/Simple/GHC.hs.orig	2010-11-13 04:10:09.000000000 +1000
++++ ghc-7.0.1/libraries/Cabal/Distribution/Simple/GHC.hs	2011-01-22 14:52:52.000000000 +1000
+@@ -537,6 +537,7 @@
+      info verbosity "Building C Sources..."
+      sequence_ [do let (odir,args) = constructCcCmdLine lbi libBi clbi pref
+                                                         filename verbosity
++                                                        False
+                                                         (withProfLib lbi)
+                    createDirectoryIfMissingVerbose verbosity True odir
+                    runGhcProg args
+@@ -671,7 +672,7 @@
+    info verbosity "Building C Sources."
+    sequence_ [do let (odir,args) = constructCcCmdLine lbi exeBi clbi
+                                           exeDir filename verbosity
+-                                          (withProfExe lbi)
++                                          (withDynExe lbi) (withProfExe lbi)
+                  createDirectoryIfMissingVerbose verbosity True odir
+                  runGhcProg args
+              | filename <- cSources exeBi]
+@@ -679,7 +680,7 @@
+   srcMainFile <- findFile (exeDir : hsSourceDirs exeBi) modPath
+ 
+   let cObjs = map (`replaceExtension` objExtension) (cSources exeBi)
+-  let binArgs linkExe profExe =
++  let binArgs linkExe dynExe profExe =
+              "--make"
+           :  (if linkExe
+                  then ["-o", targetDir </> exeNameReal]
+@@ -691,6 +692,9 @@
+           ++ ["-l"++lib | lib <- extraLibs exeBi]
+           ++ ["-L"++libDir | libDir <- extraLibDirs exeBi]
+           ++ concat [["-framework", f] | f <- PD.frameworks exeBi]
++          ++ if dynExe
++                then ["-dynamic"]
++                else []
+           ++ if profExe
+                 then ["-prof",
+                       "-hisuf", "p_hi",
+@@ -704,9 +708,9 @@
+   -- run at compile time needs to be the vanilla ABI so it can
+   -- be loaded up and run by the compiler.
+   when (withProfExe lbi && TemplateHaskell `elem` allExtensions exeBi)
+-     (runGhcProg (binArgs False False))
++     (runGhcProg (binArgs (withDynExe lbi) False False))
+ 
+-  runGhcProg (binArgs True (withProfExe lbi))
++  runGhcProg (binArgs True (withDynExe lbi) (withProfExe lbi))
+ 
+ -- | Filter the "-threaded" flag when profiling as it does not
+ --   work with ghc-6.8 and older.
+@@ -836,9 +840,9 @@
+     ierror     = error ("internal error: unexpected package db stack: " ++ show dbstack)
+ 
+ constructCcCmdLine :: LocalBuildInfo -> BuildInfo -> ComponentLocalBuildInfo
+-                   -> FilePath -> FilePath -> Verbosity -> Bool
++                   -> FilePath -> FilePath -> Verbosity -> Bool -> Bool
+                    ->(FilePath,[String])
+-constructCcCmdLine lbi bi clbi pref filename verbosity profiling
++constructCcCmdLine lbi bi clbi pref filename verbosity dynamic profiling
+   =  let odir | compilerVersion (compiler lbi) >= Version [6,4,1] []  = pref
+               | otherwise = pref </> takeDirectory filename
+                         -- ghc 6.4.1 fixed a bug in -odir handling
+@@ -852,6 +856,7 @@
+          -- option to ghc here when compiling C code, so that the PROFILING
+          -- macro gets defined. The macro is used in ghc's Rts.h in the
+          -- definitions of closure layouts (Closures.h).
++         ++ ["-dynamic" | dynamic]
+          ++ ["-prof" | profiling])
+ 
+ ghcCcOptions :: LocalBuildInfo -> BuildInfo -> ComponentLocalBuildInfo
+diff -rN -u old-ghc-7.0.1/libraries/Cabal/Distribution/Simple/LocalBuildInfo.hs new-ghc-7.0.1/libraries/Cabal/Distribution/Simple/LocalBuildInfo.hs
+--- old-ghc-7.0.1/libraries/Cabal/Distribution/Simple/LocalBuildInfo.hs	2011-01-22 14:49:22.000000000 +1000
++++ new-ghc-7.0.1/libraries/Cabal/Distribution/Simple/LocalBuildInfo.hs	2011-01-22 14:49:22.000000000 +1000
+@@ -118,6 +118,7 @@
+         withVanillaLib:: Bool,  -- ^Whether to build normal libs.
+         withProfLib   :: Bool,  -- ^Whether to build profiling versions of libs.
+         withSharedLib :: Bool,  -- ^Whether to build shared versions of libs.
++        withDynExe    :: Bool,  -- ^Whether to link executables dynamically
+         withProfExe   :: Bool,  -- ^Whether to build executables for profiling.
+         withOptimization :: OptimisationLevel, -- ^Whether to build with optimization (if available).
+         withGHCiLib   :: Bool,  -- ^Whether to build libs suitable for use with GHCi.
+diff -rN -u old-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Setup.hs new-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Setup.hs
+--- old-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Setup.hs	2011-01-22 14:49:22.000000000 +1000
++++ new-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Setup.hs	2011-01-22 14:49:22.000000000 +1000
+@@ -270,6 +270,7 @@
+     configVanillaLib    :: Flag Bool,     -- ^Enable vanilla library
+     configProfLib       :: Flag Bool,     -- ^Enable profiling in the library
+     configSharedLib     :: Flag Bool,     -- ^Build shared library
++    configDynExe        :: Flag Bool,     -- ^Enable dynamic linking of the executables.
+     configProfExe       :: Flag Bool,     -- ^Enable profiling in the executables.
+     configConfigureArgs :: [String],      -- ^Extra arguments to @configure@
+     configOptimization  :: Flag OptimisationLevel,  -- ^Enable optimization.
+@@ -301,6 +302,7 @@
+     configVanillaLib   = Flag True,
+     configProfLib      = Flag False,
+     configSharedLib    = Flag False,
++    configDynExe       = Flag False,
+     configProfExe      = Flag False,
+     configOptimization = Flag NormalOptimisation,
+     configProgPrefix   = Flag (toPathTemplate ""),
+@@ -388,10 +390,16 @@
+          configSharedLib (\v flags -> flags { configSharedLib = v })
+          (boolOpt [] [])
+ 
++      ,option "" ["executable-dynamic"]
++         "Executable dynamic linking (fedora patch)"
++         configDynExe (\v flags -> flags { configDynExe = v })
++         (boolOpt [] [])
++
+       ,option "" ["executable-profiling"]
+          "Executable profiling"
+          configProfExe (\v flags -> flags { configProfExe = v })
+          (boolOpt [] [])
++
+       ,multiOption "optimization"
+          configOptimization (\v flags -> flags { configOptimization = v })
+          [optArg' "n" (Flag . flagToOptimisationLevel)
+@@ -553,6 +561,7 @@
+     configVanillaLib    = mempty,
+     configProfLib       = mempty,
+     configSharedLib     = mempty,
++    configDynExe        = mempty,
+     configProfExe       = mempty,
+     configConfigureArgs = mempty,
+     configOptimization  = mempty,
+@@ -583,6 +592,7 @@
+     configVanillaLib    = combine configVanillaLib,
+     configProfLib       = combine configProfLib,
+     configSharedLib     = combine configSharedLib,
++    configDynExe        = combine configDynExe,
+     configProfExe       = combine configProfExe,
+     configConfigureArgs = combine configConfigureArgs,
+     configOptimization  = combine configOptimization,


More information about the scm-commits mailing list