{-# LANGUAGE CPP #-}
module GHC.DynFlags
  ( baseDynFlags,
  ) where

#if MIN_VERSION_ghc(9,4,0)
import           GHC.Data.Bool (OverridingBool(Always))
#endif
import           GHC.Api hiding (settings)
import           GHC.Paths (libdir)

#if !MIN_VERSION_ghc(9,6,0)
fakeLlvmConfig :: LlvmConfig
fakeLlvmConfig :: LlvmConfig
fakeLlvmConfig =
#if __GLASGOW_HASKELL__ < 810
  ([], [])
#else
  [(String, LlvmTarget)] -> [(Int, String)] -> LlvmConfig
LlvmConfig [] []
#endif
#endif

baseDynFlags :: IO DynFlags
baseDynFlags :: IO DynFlags
baseDynFlags = do
  Settings
settings <- String -> IO Settings
initSysTools String
libdir
  let dynFlags :: DynFlags
dynFlags =
#if MIN_VERSION_ghc(9,6,0)
        defaultDynFlags settings
#else
        Settings -> LlvmConfig -> DynFlags
defaultDynFlags Settings
settings LlvmConfig
fakeLlvmConfig
#endif
  forall (f :: * -> *) a. Applicative f => a -> f a
pure DynFlags
dynFlags { useColor :: OverridingBool
useColor = OverridingBool
Always }