summaryrefslogtreecommitdiff
path: root/hadrian/src/Oracles/ModuleFiles.hs
diff options
context:
space:
mode:
Diffstat (limited to 'hadrian/src/Oracles/ModuleFiles.hs')
-rw-r--r--hadrian/src/Oracles/ModuleFiles.hs9
1 files changed, 8 insertions, 1 deletions
diff --git a/hadrian/src/Oracles/ModuleFiles.hs b/hadrian/src/Oracles/ModuleFiles.hs
index 1e508c0090..d2f0299563 100644
--- a/hadrian/src/Oracles/ModuleFiles.hs
+++ b/hadrian/src/Oracles/ModuleFiles.hs
@@ -81,7 +81,9 @@ findGenerator Context {..} file = do
-- | Find all Haskell source files for a given 'Context'.
hsSources :: Context -> Action [FilePath]
hsSources context = do
- let modFile (m, Nothing ) = generatedFile context m
+ let modFile (m, Nothing)
+ | "Paths_" `isPrefixOf` m = autogenFile context m
+ | otherwise = generatedFile context m
modFile (m, Just file )
| takeExtension file `elem` haskellExtensions = return file
| otherwise = generatedFile context m
@@ -99,6 +101,10 @@ hsObjects context = do
generatedFile :: Context -> ModuleName -> Action FilePath
generatedFile context moduleName = buildPath context <&> (-/- moduleSource moduleName)
+-- | Generated module files live in the 'Context' specific build directory.
+autogenFile :: Context -> ModuleName -> Action FilePath
+autogenFile context modName = autogenPath context <&> (-/- moduleSource modName)
+
-- | Turn a module name (e.g. @Data.Functor@) to a path (e.g. @Data/Functor.hs@).
moduleSource :: ModuleName -> FilePath
moduleSource moduleName = replaceEq '.' '/' moduleName <.> "hs"
@@ -125,6 +131,7 @@ moduleFilesOracle :: Rules ()
moduleFilesOracle = void $ do
void . addOracleCache $ \(ModuleFiles (stage, package)) -> do
let context = vanillaContext stage package
+ ensureConfigured context
srcDirs <- interpretInContext context (getContextData PD.srcDirs)
mainIs <- interpretInContext context (getContextData PD.mainIs)
let removeMain = case mainIs of