summaryrefslogtreecommitdiff
path: root/compiler/GHC/Driver
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Driver')
-rw-r--r--compiler/GHC/Driver/MakeFile.hs12
1 files changed, 11 insertions, 1 deletions
diff --git a/compiler/GHC/Driver/MakeFile.hs b/compiler/GHC/Driver/MakeFile.hs
index 2328a32ec5..d513728036 100644
--- a/compiler/GHC/Driver/MakeFile.hs
+++ b/compiler/GHC/Driver/MakeFile.hs
@@ -47,7 +47,7 @@ import System.Directory
import System.FilePath
import System.IO
import System.IO.Error ( isEOFError )
-import Control.Monad ( when )
+import Control.Monad ( when, forM_ )
import Data.Maybe ( isJust )
import Data.IORef
import qualified Data.Set as Set
@@ -241,6 +241,16 @@ processDeps dflags hsc_env excl_mods root hdl (AcyclicSCC (ModuleNode (ExtendedM
-- Something like A.o : A.hs
; writeDependency root hdl obj_files src_file
+ -- add dependency between objects and their corresponding .hi-boot
+ -- files if the module has a corresponding .hs-boot file (#14482)
+ ; when (isBootSummary node == IsBoot) $ do
+ let hi_boot = msHiFilePath node
+ let obj = removeBootSuffix (msObjFilePath node)
+ forM_ extra_suffixes $ \suff -> do
+ let way_obj = insertSuffixes obj [suff]
+ let way_hi_boot = insertSuffixes hi_boot [suff]
+ mapM_ (writeDependency root hdl way_obj) way_hi_boot
+
-- Emit a dependency for each CPP import
; when (depIncludeCppDeps dflags) $ do
-- CPP deps are descovered in the module parsing phase by parsing