diff --git a/Cabal/Distribution/Simple/GHC.hs b/Cabal/Distribution/Simple/GHC.hs index 91a97c2cd4c426b22ac0feff7a665f35b09a79b2..2af106e699fc851728f96eb6bbf24b1145ab3a21 100644 --- a/Cabal/Distribution/Simple/GHC.hs +++ b/Cabal/Distribution/Simple/GHC.hs @@ -767,8 +767,13 @@ buildOrReplLib forRepl verbosity pkg_descr lbi lib clbi = do unless (null (cSources libBi)) $ do info verbosity "Building C Sources..." sequence_ - [ do let vanillaCcOpts = (componentCcGhcOptions verbosity lbi - libBi clbi libTargetDir filename) + [ do let baseCcOpts = componentCcGhcOptions verbosity lbi + libBi clbi libTargetDir filename + vanillaCcOpts = if isGhcDynamic + -- Dynamic GHC requires C sources to be built + -- with -fPIC for REPL to work. See #2207. + then baseCcOpts { ghcOptFPic = toFlag True } + else baseCcOpts profCcOpts = vanillaCcOpts `mappend` mempty { ghcOptProfilingMode = toFlag True, ghcOptObjSuffix = toFlag "p_o" @@ -780,11 +785,7 @@ buildOrReplLib forRepl verbosity pkg_descr lbi lib clbi = do } odir = fromFlag (ghcOptObjDir vanillaCcOpts) createDirectoryIfMissingVerbose verbosity True odir - runGhcProg (if isGhcDynamic - -- Dynamic GHC requires C sources to be built with - -- -fPIC for REPL to work. See #2207. - then vanillaCcOpts { ghcOptFPic = toFlag True } - else vanillaCcOpts) + runGhcProg vanillaCcOpts whenSharedLib forceSharedLib (runGhcProg sharedCcOpts) whenProfLib (runGhcProg profCcOpts) | filename <- cSources libBi]