@@ -193,6 +193,23 @@ mkDynFlags filename s = do
193193 (dflags, _, _) <- parseDynamicFilePragma dflags0 opts
194194 return dflags
195195
196+ #elif (defined (GHC_9_6) || defined (GHC_9_8) || defined (GHC_9_10) || defined (GHC_9_12))
197+
198+ let baseFlags =
199+ (defaultDynFlags fakeSettings) {
200+ ghcLink = NoLink
201+ , backend = noBackend
202+ , homeUnitId_ = toUnitId (stringToUnit ghclibPrimUnitId)
203+ }
204+ parsePragmasIntoDynFlags filename s baseFlags
205+ where
206+ parsePragmasIntoDynFlags :: String -> String -> DynFlags -> IO DynFlags
207+ parsePragmasIntoDynFlags filepath contents dflags0 = do
208+ let (_, opts) = getOptions (initParserOpts dflags0)
209+ (stringToStringBuffer contents) filepath
210+ (dflags, _, _) <- parseDynamicFilePragma dflags0 opts
211+ return dflags
212+
196213#else
197214
198215 let baseFlags =
@@ -206,6 +223,7 @@ mkDynFlags filename s = do
206223 parsePragmasIntoDynFlags :: String -> String -> DynFlags -> IO DynFlags
207224 parsePragmasIntoDynFlags filepath contents dflags0 = do
208225 let (_, opts) = getOptions (initParserOpts dflags0)
226+ (supportedLanguagePragmas dflags0)
209227 (stringToStringBuffer contents) filepath
210228 (dflags, _, _) <- parseDynamicFilePragma dflags0 opts
211229 return dflags
@@ -394,16 +412,51 @@ fakeSettings = Settings {
394412
395413 platform = genericPlatform
396414
415+ #elif (defined (GHC_9_4) || defined (GHC_9_6) || defined (GHC_9_8) || defined (GHC_9_10) || defined (GHC_9_12))
416+ sGhcNameVersion= ghcNameVersion
417+ , sFileSettings= fileSettings
418+ , sTargetPlatform= platform
419+ , sPlatformMisc= platformMisc
420+ , sToolSettings= toolSettings
421+ }
422+ where
423+ fileSettings = FileSettings {
424+ fileSettings_topDir= " ."
425+ , fileSettings_toolDir= Nothing
426+ , fileSettings_ghcUsagePath= " ."
427+ , fileSettings_ghciUsagePath= " ."
428+ , fileSettings_globalPackageDatabase= " ."
429+ }
430+
431+ toolSettings = ToolSettings {
432+ toolSettings_opt_P_fingerprint= fingerprint0
433+ }
434+
435+ platformMisc = PlatformMisc {
436+ }
437+
438+ ghcNameVersion = GhcNameVersion {
439+ ghcNameVersion_programName= " ghc"
440+ , ghcNameVersion_projectVersion= cProjectVersion
441+ }
442+
443+ platform = genericPlatform
444+
397445#else
398- {- defined (GHC_9_4) || defined (GHC_9_6) || defined (GHC_9_8) || defined (GHC_9_10) || defined (GHC_9_12) || defined ( GHC_9_14) -}
446+ {- defined (GHC_9_14) -}
399447
400448 sGhcNameVersion= ghcNameVersion
401449 , sFileSettings= fileSettings
402450 , sTargetPlatform= platform
403451 , sPlatformMisc= platformMisc
404452 , sToolSettings= toolSettings
453+ , sUnitSettings= unitSettings
405454 }
406455 where
456+ unitSettings = UnitSettings {
457+ unitSettings_baseUnitId = stringToUnitId " base"
458+ }
459+
407460 fileSettings = FileSettings {
408461 fileSettings_topDir= " ."
409462 , fileSettings_toolDir= Nothing
0 commit comments