@@ -26,7 +26,7 @@ import GHC
2626import GHC.Check (VersionCheck (.. ), makeGhcVersionChecker )
2727import HIE.Bios
2828import HIE.Bios.Cradle
29- import HIE.Bios.Environment (addCmdOpts )
29+ import HIE.Bios.Environment (addCmdOpts , makeDynFlagsAbsolute )
3030import HIE.Bios.Types
3131import Linker (initDynLinker )
3232import RuleTypes
@@ -55,8 +55,8 @@ loadGhcSession =
5555 -- This rule is for caching the GHC session. E.g., even when the cabal file
5656 -- changed, if the resulting flags did not change, we would continue to use
5757 -- the existing session.
58- defineNoFile $ \ (GetHscEnv opts deps) ->
59- liftIO $ createSession $ ComponentOptions opts deps
58+ defineNoFile $ \ (GetHscEnv opts optRoot deps) ->
59+ liftIO $ createSession $ ComponentOptions opts optRoot deps
6060
6161cradleToSession :: Rules ()
6262cradleToSession = define $ \ LoadCradle nfp -> do
@@ -79,13 +79,14 @@ cradleToSession = define $ \LoadCradle nfp -> do
7979 cmpOpts <- liftIO $ mask $ \ _ -> getComponentOptions cradle
8080 let opts = componentOptions cmpOpts
8181 deps = componentDependencies cmpOpts
82+ root = componentRoot cmpOpts
8283 deps' = case mbYaml of
8384 -- For direct cradles, the hie.yaml file itself must be watched.
8485 Just yaml | isDirectCradle cradle -> yaml : deps
8586 _ -> deps
8687 existingDeps <- filterM doesFileExist deps'
8788 need existingDeps
88- ([] ,) . pure <$> useNoFile_ (GetHscEnv opts deps)
89+ ([] ,) . pure <$> useNoFile_ (GetHscEnv opts root deps)
8990
9091cradleLoadedMethod :: Text
9192cradleLoadedMethod = " ghcide/cradle/loaded"
@@ -118,7 +119,7 @@ checkGhcVersion = do
118119 return Nothing
119120
120121createSession :: ComponentOptions -> IO HscEnvEq
121- createSession (ComponentOptions theOpts _) = do
122+ createSession (ComponentOptions theOpts compRoot _) = do
122123 libdir <- getLibdir
123124
124125 cacheDir <- getCacheDir theOpts
@@ -127,7 +128,8 @@ createSession (ComponentOptions theOpts _) = do
127128
128129 runGhc (Just libdir) $ do
129130 dflags <- getSessionDynFlags
130- (dflags', _targets) <- addCmdOpts theOpts dflags
131+ (dflags_, _targets) <- addCmdOpts theOpts dflags
132+ let dflags' = makeDynFlagsAbsolute compRoot dflags_
131133 setupDynFlags cacheDir dflags'
132134 versionMismatch <- liftIO checkGhcVersion
133135 case versionMismatch of
0 commit comments