@@ -19,7 +19,8 @@
20-----------------------------------------------------------------------------
20-----------------------------------------------------------------------------
22−module Development.IDE.GHC.CPP(doCpp) where
22+module Development.IDE.GHC.CPP(doCpp, addOptP)
24import Development.IDE.GHC.Compat
25import Development.IDE.GHC.Compat
25import Packages
26import Packages
@@ -33,6 +34,10 @@ import LlvmCodeGen (llvmVersionList)
33#elif MIN_GHC_API_VERSION(8,8,0)
34#elif MIN_GHC_API_VERSION(8,8,0)
34import LlvmCodeGen (LlvmVersion (..))
35import LlvmCodeGen (LlvmVersion (..))
37+#if MIN_GHC_API_VERSION (8,10,0)
37import System.Directory
42import System.Directory
38import System.FilePath
43import System.FilePath
@@ -162,6 +167,22 @@ getBackendDefs dflags | hscTarget dflags == HscLlvm = do
162getBackendDefs _ =
167getBackendDefs _ =
163 return []
168 return []
170+addOptP :: String -> DynFlags -> DynFlags
171+#if MIN_GHC_API_VERSION (8,10,0)
172+addOptP f = alterToolSettings $ \s -> s
173+ { toolSettings_opt_P = f : toolSettings_opt_P s
174+ , toolSettings_opt_P_fingerprint = fingerprintStrings (f : toolSettings_opt_P s)
177+ fingerprintStrings ss = fingerprintFingerprints $ map fingerprintString ss
178+ alterToolSettings f dynFlags = dynFlags { toolSettings = f (toolSettings dynFlags) }
180+addOptP opt = onSettings (onOptP (opt:))
182+ onSettings f x = x{settings = f $ settings x}
183+ onOptP f x = x{sOpt_P = f $ sOpt_P x}
165-- ---------------------------------------------------------------------------
186-- ---------------------------------------------------------------------------
166-- Macros (cribbed from Cabal)
187-- Macros (cribbed from Cabal)