@@ -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