@@ -12,7 +12,7 @@ import Distribution.Simple.Flag (Flag)
1212import Distribution.Simple.GHC.Build.ExtraSources
1313import Distribution.Simple.GHC.Build.Link
1414import Distribution.Simple.GHC.Build.Modules
15- import Distribution.Simple.GHC.Build.Utils (isHaskell )
15+ import Distribution.Simple.GHC.Build.Utils (compilerBuildWay , isHaskell )
1616import Distribution.Simple.LocalBuildInfo
1717import Distribution.Simple.Program.Builtin (ghcProgram )
1818import Distribution.Simple.Program.Db (requireProgram )
@@ -73,6 +73,7 @@ build numJobs pkg_descr pbci = do
7373 verbosity = buildVerbosity pbci
7474 isLib = buildIsLib pbci
7575 lbi = localBuildInfo pbci
76+ bi = buildBI pbci
7677 clbi = buildCLBI pbci
7778 isIndef = componentIsIndefinite clbi
7879 mbWorkDir = mbWorkDirLBI lbi
@@ -111,9 +112,22 @@ build numJobs pkg_descr pbci = do
111112
112113 (ghcProg, _) <- liftIO $ requireProgram verbosity ghcProgram (withPrograms lbi)
113114
115+ -- Ways which are wanted from configuration flags
114116 let wantedWays@ (wantedLibWays, _, wantedExeWay) = buildWays lbi
115117
116- liftIO $ info verbosity (" Wanted build ways(" ++ show isLib ++ " ): " ++ show (if isLib then wantedLibWays isIndef else [wantedExeWay]))
118+ -- Ways which are needed due to the compiler configuration
119+ let doingTH = usesTemplateHaskellOrQQ bi
120+ defaultGhcWay = compilerBuildWay (buildCompiler pbci)
121+ wantedLibBuildWays =
122+ if isLib
123+ then wantedLibWays isIndef
124+ else [wantedExeWay]
125+ finalLibBuildWays =
126+ wantedLibBuildWays
127+ ++ [defaultGhcWay | doingTH && defaultGhcWay `notElem` wantedLibBuildWays]
128+
129+ liftIO $ info verbosity (" Wanted build ways(" ++ show isLib ++ " ): " ++ show wantedLibBuildWays)
130+ liftIO $ info verbosity (" Final lib build ways(" ++ show isLib ++ " ): " ++ show finalLibBuildWays)
117131 -- We need a separate build and link phase, and C sources must be compiled
118132 -- after Haskell modules, because C sources may depend on stub headers
119133 -- generated from compiling Haskell modules (#842, #3294).
@@ -127,7 +141,7 @@ build numJobs pkg_descr pbci = do
127141 | otherwise ->
128142 (Nothing , Just mainFile)
129143 Nothing -> (Nothing , Nothing )
130- buildOpts <- buildHaskellModules numJobs ghcProg hsMainFile inputModules buildTargetDir (wantedLibWays isIndef) pbci
144+ buildOpts <- buildHaskellModules numJobs ghcProg hsMainFile inputModules buildTargetDir finalLibBuildWays pbci
131145 extraSources <- buildAllExtraSources nonHsMainFile ghcProg buildTargetDir wantedWays pbci
132146 linkOrLoadComponent
133147 ghcProg
0 commit comments