diff --git a/Distribution/Simple/GHC.hs b/Distribution/Simple/GHC.hs index 85839b876af4d0320e9ec48f0f2225c65420e683..3adaf9824ff2efd4d6d69787ea1b3cf8dbeb6af4 100644 --- a/Distribution/Simple/GHC.hs +++ b/Distribution/Simple/GHC.hs @@ -98,7 +98,17 @@ build :: PackageDescription -> LocalBuildInfo -> Int -> IO () build pkg_descr lbi verbose = do let pref = buildDir lbi let ghcPath = compilerPath (compiler lbi) - ifVanillaLib b = when (b || withVanillaLib lbi) + ifVanillaLib = when (forceVanillaLib || withVanillaLib lbi) + where forceVanillaLib = False + --TODO: we may need to force the vanilla libs to build as it may + -- be that TemplateHaskell needs the vanilla libs even when + -- building profiling libs. See: + -- http://www.haskell.org/pipermail/template-haskell/2003-July/000135.html + -- + -- So we might need something like this: + -- + -- forceVanillaLib = elem TemplateHaskell (extensions libBi) + ifProfLib = when (withProfLib lbi) ifGHCiLib = when (withGHCiLib lbi) @@ -118,12 +128,6 @@ build pkg_descr lbi verbose = do let libBi = libBuildInfo lib libTargetDir = pref - -- Note: I am not sure if this is really the right thing to - -- do, but I am doing based on these threads: - -- http://www.haskell.org/pipermail/template-haskell/2005-July/000466.html - -- http://www.haskell.org/pipermail/template-haskell/2003-July/000135.html - forceVanillaLib = elem TemplateHaskell (extensions libBi) - createDirectoryIfMissing True libTargetDir -- put hi-boot files into place for mutually recurive modules smartCopySources verbose (hsSourceDirs libBi) @@ -141,7 +145,7 @@ build pkg_descr lbi verbose = do ] ++ ghcProfOptions libBi unless (null (libModules pkg_descr)) $ - do ifVanillaLib forceVanillaLib (rawSystemExit verbose ghcPath ghcArgs) + do ifVanillaLib (rawSystemExit verbose ghcPath ghcArgs) ifProfLib (rawSystemExit verbose ghcPath ghcArgsProf) -- build any C sources @@ -201,7 +205,7 @@ build pkg_descr lbi verbose = do ++ hObjs ++ map (pref `joinFileName`) cObjs ++ stubObjs - ifVanillaLib forceVanillaLib (rawSystemPathExit verbose "ar" arArgs) + ifVanillaLib (rawSystemPathExit verbose "ar" arArgs) ifProfLib (rawSystemPathExit verbose "ar" arProfArgs) #if defined(mingw32_TARGET_OS) || defined(mingw32_HOST_OS) let (compilerDir, _) = splitFileName $ compilerPath (compiler lbi)