@@ -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 (compilerBuildWay , isHaskell )
15+ import Distribution.Simple.GHC.Build.Utils (compilerBuildWay , isHaskell , withDynFLib )
1616import Distribution.Simple.LocalBuildInfo
1717import Distribution.Simple.Program.Builtin (ghcProgram )
1818import Distribution.Simple.Program.Db (requireProgram )
@@ -113,21 +113,24 @@ build numJobs pkg_descr pbci = do
113113 (ghcProg, _) <- liftIO $ requireProgram verbosity ghcProgram (withPrograms lbi)
114114
115115 -- Ways which are wanted from configuration flags
116- let wantedWays@ (wantedLibWays, _ , wantedExeWay) = buildWays lbi
116+ let wantedWays@ (wantedLibWays, wantedFLibWay , wantedExeWay) = buildWays lbi
117117
118118 -- Ways which are needed due to the compiler configuration
119119 let doingTH = usesTemplateHaskellOrQQ bi
120120 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)
121+ wantedModBuildWays = case buildComponent pbci of
122+ CLib _ -> wantedLibWays isIndef
123+ CFLib fl -> [wantedFLibWay (withDynFLib fl)]
124+ CExe _ -> [wantedExeWay]
125+ CTest _ -> [wantedExeWay]
126+ CBench _ -> [wantedExeWay]
127+ finalModBuildWays =
128+ wantedModBuildWays
129+ ++ [defaultGhcWay | doingTH && defaultGhcWay `notElem` wantedModBuildWays]
130+ compNameStr = showComponentName $ componentName $ buildComponent pbci
131+
132+ liftIO $ info verbosity (" Wanted module build ways(" ++ compNameStr ++ " ): " ++ show wantedModBuildWays)
133+ liftIO $ info verbosity (" Final module build ways(" ++ compNameStr ++ " ): " ++ show finalModBuildWays)
131134 -- We need a separate build and link phase, and C sources must be compiled
132135 -- after Haskell modules, because C sources may depend on stub headers
133136 -- generated from compiling Haskell modules (#842, #3294).
@@ -141,7 +144,7 @@ build numJobs pkg_descr pbci = do
141144 | otherwise ->
142145 (Nothing , Just mainFile)
143146 Nothing -> (Nothing , Nothing )
144- buildOpts <- buildHaskellModules numJobs ghcProg hsMainFile inputModules buildTargetDir finalLibBuildWays pbci
147+ buildOpts <- buildHaskellModules numJobs ghcProg hsMainFile inputModules buildTargetDir finalModBuildWays pbci
145148 extraSources <- buildAllExtraSources nonHsMainFile ghcProg buildTargetDir wantedWays pbci
146149 linkOrLoadComponent
147150 ghcProg
0 commit comments