Implement install_docs (#442)
authorZhen Zhang <izgzhen@gmail.com>
Fri, 27 Oct 2017 22:16:20 +0000 (06:16 +0800)
committerAndrey Mokhov <andrey.mokhov@gmail.com>
Fri, 27 Oct 2017 22:16:20 +0000 (23:16 +0100)
src/Rules/Documentation.hs
src/Rules/Install.hs

index 2cdd4d5..5a5698c 100644 (file)
@@ -23,12 +23,16 @@ documentationRules = do
     buildPdfDocumentation
     buildDocumentationArchives
     buildManPage
+    "//docs//gen_contents_index" %> copyFile "libraries/gen_contents_index"
+    "//docs//prologue.txt" %> copyFile "libraries/prologue.txt"
     "docs" ~> do
         root <- buildRoot
         let html = htmlRoot -/- "index.html"
             archives = map pathArchive docPaths
             pdfs = map pathPdf $ docPaths \\ [ "libraries" ]
         need $ map (root -/-) $ [html] ++ archives ++ pdfs
+        need [ root -/- htmlRoot -/- "libraries" -/- "gen_contents_index" ]
+        need [ root -/- htmlRoot -/- "libraries" -/- "prologue.txt" ]
         need [manPagePath]
 
 manPagePath :: FilePath
index 4558646..ae4a7b0 100644 (file)
@@ -45,6 +45,7 @@ installRules = do
         installLibExecScripts
         installBins
         installPackages
+        installDocs
 
 -- TODO: Get rid of hard-coded list.
 -- | Binaries to install.
@@ -311,3 +312,24 @@ installIncludes = do
                   (destDir ++ ghcheaderDir ++ "/")
   where
     installHeader = installData -- they share same arguments
+
+-- ref: ghc.mk
+-- | Install documentation to @prefix/share/doc/ghc-<version>@.
+installDocs :: Action ()
+installDocs = do
+    destDir <- getDestDir
+    docDir  <- installDocDir
+    root    <- buildRoot
+    installDirectory (destDir ++ docDir)
+
+    let usersGuide = root -/- "docs/pdfs/users_guide.pdf"
+    whenM (doesFileExist usersGuide) $
+        installData [usersGuide] (destDir ++ docDir)
+
+    let htmlDocDir = destDir ++ docDir -/- "html"
+    installDirectory htmlDocDir
+    installData ["docs/index.html"] htmlDocDir
+
+    forM_ ["Haddock", "libraries", "users_guide"] $ \dirname -> do
+        let dir = (root -/- "docs/html" -/- dirname)
+        whenM (doesDirectoryExist dir) $ copyDirectory dir htmlDocDir