-- WARNING: ghc.cabal is automatically generated from ghc.cabal.in by
-- ./configure.  Make sure you are editing ghc.cabal.in, not ghc.cabal.

Name: ghc
Version: @ProjectVersionMunged@
License: BSD3
License-File: LICENSE
Author: The GHC Team
Maintainer: glasgow-haskell-users@haskell.org
Homepage: http://www.haskell.org/ghc/
Synopsis: The GHC API
Description:
    GHC's functionality can be useful for more things than just
    compiling Haskell programs. Important use cases are programs
    that analyse (and perhaps transform) Haskell code. Others
    include loading Haskell code dynamically in a GHCi-like manner.
    For this reason, a lot of GHC's functionality is made available
    through this package.
    .
    See <https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler>
    for more information.
Category: Development
Build-Type: Simple
Cabal-Version: >=1.10

Flag ghci
    Description: Build GHCi support.
    Default: False
    Manual: True

Flag stage1
    Description: Is this stage 1?
    Default: False
    Manual: True

Flag stage2
    Description: Is this stage 2?
    Default: False
    Manual: True

Flag stage3
    Description: Is this stage 3?
    Default: False
    Manual: True

Flag terminfo
    Description: Build GHC with terminfo support on non-Windows platforms.
    Default: True
    Manual: True

Flag dynamic-system-linker
    Description: The system can load dynamic code. This is not the case for musl.
    Default: True
    Manual: False

Library
    Default-Language: Haskell2010
    Exposed: False

    Build-Depends: base       >= 4.11 && < 4.16,
                   deepseq    >= 1.4 && < 1.5,
                   directory  >= 1   && < 1.4,
                   process    >= 1   && < 1.7,
                   bytestring >= 0.9 && < 0.11,
                   binary     == 0.8.*,
                   time       >= 1.4 && < 1.10,
                   containers >= 0.6.2.1 && < 0.7,
                   array      >= 0.1 && < 0.6,
                   filepath   >= 1   && < 1.5,
                   template-haskell == 2.17.*,
                   hpc        == 0.6.*,
                   transformers == 0.5.*,
                   exceptions == 0.10.*,
                   ghc-boot   == @ProjectVersionMunged@,
                   ghc-boot-th == @ProjectVersionMunged@,
                   ghc-heap   == @ProjectVersionMunged@,
                   ghci == @ProjectVersionMunged@

    if os(windows)
        Build-Depends: Win32  >= 2.3 && < 2.13
    else
        if flag(terminfo)
            Build-Depends: terminfo == 0.4.*
        Build-Depends: unix   >= 2.7 && < 2.9

    GHC-Options: -Wall
                 -Wno-name-shadowing
                 -Wnoncanonical-monad-instances
                 -Wnoncanonical-monoid-instances

    if flag(ghci)
        CPP-Options: -DHAVE_INTERNAL_INTERPRETER
        Include-Dirs: ../rts/dist/build @FFIIncludeDir@

    -- if no dynamic system linker is available, don't try DLLs.
    if flag(dynamic-system-linker)
        CPP-Options: -DCAN_LOAD_DLL

    Other-Extensions:
        CPP
        DataKinds
        DeriveDataTypeable
        DeriveFoldable
        DeriveFunctor
        DeriveTraversable
        DisambiguateRecordFields
        ExplicitForAll
        FlexibleContexts
        FlexibleInstances
        GADTs
        GeneralizedNewtypeDeriving
        MagicHash
        MultiParamTypeClasses
        NamedFieldPuns
        NondecreasingIndentation
        RankNTypes
        RecordWildCards
        StandaloneDeriving
        Trustworthy
        TupleSections
        TypeFamilies
        TypeSynonymInstances
        UnboxedTuples
        UndecidableInstances

    Include-Dirs: .

    -- We need to set the unit id to ghc (without a version number)
    -- as it's magic.
    GHC-Options: -this-unit-id ghc

    if flag(stage1)
        Include-Dirs: stage1
    else
        if flag(stage2)
            Include-Dirs: stage2
        else
            if flag(stage3)
                Include-Dirs: stage2

    Install-Includes: HsVersions.h

    c-sources:
        cbits/cutils.c
        cbits/genSym.c
        cbits/keepCAFsForGHCi.c

    hs-source-dirs:
        .

    -- we use an explicit Prelude
    Default-Extensions:
        NoImplicitPrelude
       ,BangPatterns
       ,ScopedTypeVariables

    Exposed-Modules:
        GHC.Iface.Ext.Types
        GHC.Iface.Ext.Debug
        GHC.Iface.Ext.Binary
        GHC.Iface.Ext.Utils
        GHC.Iface.Ext.Ast
        GHC.SysTools.Ar
        GHC.SysTools.FileCleanup
        GHC.Driver.Backend
        GHC.Driver.Backpack
        GHC.Driver.Backpack.Syntax
        GHC.Types.Name.Shape
        GHC.Iface.Rename
        GHC.Types.Avail
        GHC.Utils.Asm
        GHC.Types.Basic
        GHC.Core.ConLike
        GHC.Core.DataCon
        GHC.Core.PatSyn
        GHC.Types.Demand
        GHC.Types.Cpr
        GHC.Cmm.DebugBlock
        GHC.Utils.Exception
        GHC.Types.FieldLabel
        GHC.Driver.Monad
        GHC.Driver.Hooks
        GHC.Driver.Flags
        GHC.Driver.Ways
        GHC.Types.Id
        GHC.Types.Id.Info
        GHC.Core.Predicate
        GHC.Utils.Lexeme
        GHC.Types.Literal
        GHC.Llvm
        GHC.Llvm.Syntax
        GHC.Llvm.MetaData
        GHC.Llvm.Ppr
        GHC.Llvm.Types
        GHC.CmmToLlvm
        GHC.CmmToLlvm.Base
        GHC.CmmToLlvm.CodeGen
        GHC.CmmToLlvm.Data
        GHC.CmmToLlvm.Ppr
        GHC.CmmToLlvm.Regs
        GHC.CmmToLlvm.Mangler
        GHC.Types.Id.Make
        GHC.Unit
        GHC.Unit.Parser
        GHC.Unit.Ppr
        GHC.Unit.Types
        GHC.Unit.Module
        GHC.Unit.Module.Name
        GHC.Unit.Module.Location
        GHC.Unit.Module.Env
        GHC.Types.Name
        GHC.Types.Name.Env
        GHC.Types.Name.Set
        GHC.Types.Name.Occurrence
        GHC.Types.Name.Reader
        GHC.Types.Name.Cache
        GHC.Types.SrcLoc
        GHC.Types.Unique.Supply
        GHC.Types.Unique
        GHC.Types.Var
        GHC.Types.Var.Env
        GHC.Types.Var.Set
        GHC.Data.Graph.UnVar
        GHC.Cmm.BlockId
        GHC.Cmm.CLabel
        GHC.Cmm
        GHC.Cmm.Info.Build
        GHC.Cmm.Pipeline
        GHC.Cmm.CallConv
        GHC.Cmm.CommonBlockElim
        GHC.Cmm.Switch.Implement
        GHC.Cmm.ContFlowOpt
        GHC.Cmm.Expr
        GHC.Cmm.Info
        GHC.Cmm.Lexer
        GHC.Cmm.Lint
        GHC.Cmm.Liveness
        GHC.Cmm.MachOp
        GHC.Cmm.Monad
        GHC.Cmm.Switch
        GHC.Cmm.Node
        GHC.Cmm.Opt
        GHC.Cmm.Parser
        GHC.Cmm.ProcPoint
        GHC.Cmm.Sink
        GHC.Cmm.Type
        GHC.Cmm.Utils
        GHC.Cmm.LayoutStack
        GHC.Utils.CliOption
        GHC.Data.EnumSet
        GHC.Cmm.Graph
        GHC.CmmToAsm.Ppr
        GHC.CmmToAsm.Config
        GHC.CmmToC
        GHC.Cmm.Ppr
        GHC.Cmm.Ppr.Decl
        GHC.Cmm.Ppr.Expr
        GHC.Data.Bitmap
        GHC.Platform.Regs
        GHC.Platform.ARM
        GHC.Platform.AArch64
        GHC.Platform.NoRegs
        GHC.Platform.PPC
        GHC.Platform.S390X
        GHC.Platform.SPARC
        GHC.Platform.X86
        GHC.Platform.X86_64
        GHC.StgToCmm.CgUtils
        GHC.StgToCmm
        GHC.StgToCmm.Bind
        GHC.StgToCmm.Closure
        GHC.StgToCmm.DataCon
        GHC.StgToCmm.Env
        GHC.StgToCmm.Expr
        GHC.StgToCmm.Foreign
        GHC.StgToCmm.Heap
        GHC.StgToCmm.Hpc
        GHC.StgToCmm.ArgRep
        GHC.StgToCmm.Layout
        GHC.StgToCmm.Monad
        GHC.StgToCmm.Prim
        GHC.StgToCmm.Prof
        GHC.StgToCmm.Ticky
        GHC.StgToCmm.Utils
        GHC.StgToCmm.ExtCode
        GHC.StgToCmm.Types
        GHC.Runtime.Heap.Layout
        GHC.Core.Opt.Arity
        GHC.Core.FVs
        GHC.Core.Lint
        GHC.Core.Subst
        GHC.Core.SimpleOpt
        GHC.Core
        GHC.Data.TrieMap
        GHC.Core.Tidy
        GHC.Core.Unfold
        GHC.Core.Utils
        GHC.Core.Map
        GHC.Core.Seq
        GHC.Core.Stats
        GHC.Core.Make
        GHC.Core.Ppr
        GHC.HsToCore.PmCheck.Oracle
        GHC.HsToCore.PmCheck.Ppr
        GHC.HsToCore.PmCheck.Types
        GHC.HsToCore.PmCheck
        GHC.HsToCore.Coverage
        GHC.Data.UnionFind
        GHC.HsToCore
        GHC.HsToCore.Arrows
        GHC.HsToCore.Binds
        GHC.HsToCore.Foreign.Call
        GHC.HsToCore.Expr
        GHC.HsToCore.Foreign.Decl
        GHC.HsToCore.GuardedRHSs
        GHC.HsToCore.ListComp
        GHC.HsToCore.Monad
        GHC.HsToCore.Usage
        GHC.HsToCore.Utils
        GHC.HsToCore.Docs
        GHC.HsToCore.Match
        GHC.HsToCore.Match.Constructor
        GHC.HsToCore.Match.Literal
        GHC.Hs
        GHC.Hs.Binds
        GHC.Hs.Decls
        GHC.Hs.Doc
        GHC.Hs.Expr
        GHC.Hs.ImpExp
        GHC.Hs.Lit
        GHC.Hs.Extension
        GHC.Hs.Instances
        GHC.Hs.Pat
        GHC.Hs.Type
        GHC.Hs.Utils
        GHC.Hs.Dump
        GHC.Iface.Binary
        GHC.Iface.Recomp.Binary
        GHC.Tc.TyCl.Build
        GHC.Iface.Env
        GHC.Iface.Syntax
        GHC.Iface.Type
        GHC.CoreToIface
        GHC.Iface.Load
        GHC.Iface.Make
        GHC.Iface.Recomp
        GHC.IfaceToCore
        GHC.Iface.Recomp.Flags
        GHC.Types.Annotations
        GHC.Driver.CmdLine
        GHC.Driver.CodeOutput
        GHC.Settings.Config
        GHC.Settings.Constants
        GHC.Driver.MakeFile
        GHC.Driver.Phases
        GHC.Driver.Pipeline.Monad
        GHC.Driver.Pipeline
        GHC.Driver.Session
        GHC.Utils.Error
        GHC.Driver.Finder
        GHC
        GHC.Driver.Make
        GHC.Plugins
        GHC.Prelude
        GHC.Parser.Header
        GHC.Driver.Main
        GHC.Hs.Stats
        GHC.Driver.Types
        GHC.Runtime.Eval
        GHC.Runtime.Eval.Types
        GHC.Runtime.Loader
        GHC.Unit.Info
        GHC.Unit.State
        GHC.Driver.Plugins
        GHC.Tc.Plugin
        GHC.Core.Ppr.TyThing
        GHC.Settings
        GHC.Iface.Tidy.StaticPtrTable
        GHC.SysTools
        GHC.SysTools.BaseDir
        GHC.SysTools.Terminal
        GHC.SysTools.ExtraObj
        GHC.SysTools.Info
        GHC.SysTools.Process
        GHC.SysTools.Tasks
        GHC.Settings.IO
        GHC.SysTools.Elf
        GHC.Iface.Tidy
        GHC.Parser.CharClass
        GHC.Parser.Lexer
        GHC.Core.Coercion.Opt
        GHC.Parser
        GHC.Parser.PostProcess
        GHC.Parser.PostProcess.Haddock
        GHC.Parser.Annotation
        GHC.Types.ForeignCall
        GHC.Builtin.Uniques
        GHC.Builtin.Utils
        GHC.Builtin.Names
        GHC.Core.Opt.ConstantFold
        GHC.Builtin.PrimOps
        GHC.Builtin.RebindableNames
        GHC.Builtin.Types.Prim
        GHC.Builtin.Types
        GHC.Types.CostCentre
        GHC.Types.CostCentre.State
        GHC.Rename.Bind
        GHC.Rename.Env
        GHC.Rename.Expr
        GHC.Rename.Doc
        GHC.Rename.Names
        GHC.Rename.Pat
        GHC.Rename.Module
        GHC.Rename.Splice
        GHC.Rename.HsType
        GHC.Rename.Fixity
        GHC.Rename.Utils
        GHC.Rename.Unbound
        GHC.Core.Opt.Monad
        GHC.Core.Opt.CSE
        GHC.Core.Opt.FloatIn
        GHC.Core.Opt.FloatOut
        GHC.Core.Opt.LiberateCase
        GHC.Core.Opt.OccurAnal
        GHC.Core.Opt.StaticArgs
        GHC.Core.Opt.SetLevels
        GHC.Core.Opt.Pipeline
        GHC.Core.Opt.Simplify.Env
        GHC.Core.Opt.Simplify.Monad
        GHC.Core.Opt.Simplify.Utils
        GHC.Core.Opt.Simplify
        GHC.Stg.Pipeline
        GHC.Stg.Stats
        GHC.Stg.CSE
        GHC.Stg.Lift
        GHC.Stg.Lift.Analysis
        GHC.Stg.Lift.Monad
        GHC.Stg.Subst
        GHC.Stg.Unarise
        GHC.Stg.Lint
        GHC.Stg.Syntax
        GHC.Stg.FVs
        GHC.Stg.DepAnal
        GHC.CoreToStg
        GHC.CoreToStg.Prep
        GHC.Types.RepType
        GHC.Core.Rules
        GHC.Core.Opt.SpecConstr
        GHC.Core.Opt.Specialise
        GHC.Core.Opt.CallArity
        GHC.Core.Opt.DmdAnal
        GHC.Core.Opt.CprAnal
        GHC.Core.Opt.Exitify
        GHC.Core.Opt.WorkWrap
        GHC.Core.Opt.WorkWrap.Utils
        GHC.Tc.Instance.Family
        GHC.Tc.Instance.Class
        GHC.Tc.Utils.Instantiate
        GHC.Tc.Gen.Annotation
        GHC.Tc.Gen.Arrow
        GHC.Tc.Gen.Bind
        GHC.Tc.Gen.Sig
        GHC.Tc.TyCl.Class
        GHC.Tc.Gen.Default
        GHC.Tc.Deriv
        GHC.Tc.Deriv.Infer
        GHC.Tc.Deriv.Utils
        GHC.Tc.Utils.Env
        GHC.Tc.Gen.Expr
        GHC.Tc.Gen.Foreign
        GHC.Tc.Deriv.Generate
        GHC.Tc.Deriv.Functor
        GHC.Tc.Deriv.Generics
        GHC.Tc.Utils.Zonk
        GHC.Tc.Utils.TcType
        GHC.Tc.TyCl.Instance
        GHC.Tc.Utils.TcMType
        GHC.Tc.Validity
        GHC.Tc.Gen.Match
        GHC.Tc.Gen.Pat
        GHC.Tc.TyCl.PatSyn
        GHC.Tc.Module
        GHC.Tc.Utils.Backpack
        GHC.Tc.Gen.Export
        GHC.Tc.Utils.Monad
        GHC.Tc.Types
        GHC.Tc.Types.Constraint
        GHC.Tc.Types.Origin
        GHC.Tc.Gen.Rule
        GHC.Tc.Errors.Hole
        GHC.Tc.Errors.Hole.FitTypes
        GHC.Tc.Errors
        GHC.Tc.TyCl
        GHC.Tc.TyCl.Utils
        GHC.Tc.Instance.Typeable
        GHC.Tc.Gen.HsType
        GHC.Tc.Types.Evidence
        GHC.Tc.Types.EvTerm
        GHC.Tc.Utils.Unify
        GHC.Tc.Solver
        GHC.Tc.Solver.Interact
        GHC.Tc.Solver.Canonical
        GHC.Tc.Solver.Flatten
        GHC.Tc.Solver.Monad
        GHC.Builtin.Types.Literals
        GHC.Tc.Gen.Splice
        GHC.Core.Class
        GHC.Core.Coercion
        GHC.HsToCore.Quote
        GHC.Builtin.Names.TH
        GHC.Core.FamInstEnv
        GHC.Tc.Instance.FunDeps
        GHC.Core.InstEnv
        GHC.Core.Multiplicity
        GHC.Core.UsageEnv
        GHC.Core.TyCon
        GHC.Core.Coercion.Axiom
        GHC.Core.Type
        GHC.Core.TyCo.Rep
        GHC.Core.TyCo.FVs
        GHC.Core.TyCo.Subst
        GHC.Core.TyCo.Ppr
        GHC.Core.TyCo.Tidy
        GHC.Core.Unify
        GHC.Data.Bag
        GHC.Utils.Binary
        GHC.Data.BooleanFormula
        GHC.Utils.BufHandle
        GHC.Data.Graph.Directed
        GHC.Utils.Encoding
        GHC.Utils.IO.Unsafe
        GHC.Data.FastMutInt
        GHC.Data.FastString
        GHC.Data.FastString.Env
        GHC.Utils.Fingerprint
        GHC.Data.FiniteMap
        GHC.Utils.FV
        GHC.Data.Graph.Base
        GHC.Data.Graph.Color
        GHC.Data.Graph.Ops
        GHC.Data.Graph.Ppr
        GHC.Data.IOEnv
        GHC.Utils.Json
        GHC.Data.List.SetOps
        GHC.Data.Maybe
        GHC.Utils.Monad
        GHC.Data.OrdList
        GHC.Utils.Outputable
        GHC.Data.Pair
        GHC.Utils.Panic
        GHC.Utils.Panic.Plain
        GHC.Utils.Ppr.Colour
        GHC.Utils.Ppr
        GHC.Utils.Monad.State
        GHC.Data.Stream
        GHC.Data.StringBuffer
        GHC.Types.Unique.DFM
        GHC.Types.Unique.DSet
        GHC.Types.Unique.FM
        GHC.Types.Unique.Set
        GHC.Utils.Misc
        GHC.Cmm.Dataflow
        GHC.Cmm.Dataflow.Block
        GHC.Cmm.Dataflow.Collections
        GHC.Cmm.Dataflow.Graph
        GHC.Cmm.Dataflow.Label

    Exposed-Modules:
            GHC.CmmToAsm
            GHC.CmmToAsm.Reg.Target
            GHC.CmmToAsm.Monad
            GHC.CmmToAsm.Instr
            GHC.CmmToAsm.BlockLayout
            GHC.CmmToAsm.CFG
            GHC.CmmToAsm.CFG.Dominators
            GHC.CmmToAsm.Format
            GHC.Platform.Reg
            GHC.Platform.Reg.Class
            GHC.CmmToAsm.PIC
            GHC.CmmToAsm.CPrim
            GHC.CmmToAsm.X86.Regs
            GHC.CmmToAsm.X86.RegInfo
            GHC.CmmToAsm.X86.Instr
            GHC.CmmToAsm.X86.Cond
            GHC.CmmToAsm.X86.Ppr
            GHC.CmmToAsm.X86.CodeGen
            GHC.CmmToAsm.PPC.Regs
            GHC.CmmToAsm.PPC.RegInfo
            GHC.CmmToAsm.PPC.Instr
            GHC.CmmToAsm.PPC.Cond
            GHC.CmmToAsm.PPC.Ppr
            GHC.CmmToAsm.PPC.CodeGen
            GHC.CmmToAsm.SPARC.Base
            GHC.CmmToAsm.SPARC.Regs
            GHC.CmmToAsm.SPARC.Imm
            GHC.CmmToAsm.SPARC.AddrMode
            GHC.CmmToAsm.SPARC.Cond
            GHC.CmmToAsm.SPARC.Instr
            GHC.CmmToAsm.SPARC.Stack
            GHC.CmmToAsm.SPARC.ShortcutJump
            GHC.CmmToAsm.SPARC.Ppr
            GHC.CmmToAsm.SPARC.CodeGen
            GHC.CmmToAsm.SPARC.CodeGen.Amode
            GHC.CmmToAsm.SPARC.CodeGen.Base
            GHC.CmmToAsm.SPARC.CodeGen.CondCode
            GHC.CmmToAsm.SPARC.CodeGen.Gen32
            GHC.CmmToAsm.SPARC.CodeGen.Gen64
            GHC.CmmToAsm.SPARC.CodeGen.Sanity
            GHC.CmmToAsm.SPARC.CodeGen.Expand
            GHC.CmmToAsm.Reg.Liveness
            GHC.CmmToAsm.Reg.Graph
            GHC.CmmToAsm.Reg.Graph.Stats
            GHC.CmmToAsm.Reg.Graph.Base
            GHC.CmmToAsm.Reg.Graph.X86
            GHC.CmmToAsm.Reg.Graph.Coalesce
            GHC.CmmToAsm.Reg.Graph.Spill
            GHC.CmmToAsm.Reg.Graph.SpillClean
            GHC.CmmToAsm.Reg.Graph.SpillCost
            GHC.CmmToAsm.Reg.Graph.TrivColorable
            GHC.CmmToAsm.Reg.Linear
            GHC.CmmToAsm.Reg.Linear.JoinToTargets
            GHC.CmmToAsm.Reg.Linear.State
            GHC.CmmToAsm.Reg.Linear.Stats
            GHC.CmmToAsm.Reg.Linear.FreeRegs
            GHC.CmmToAsm.Reg.Linear.StackMap
            GHC.CmmToAsm.Reg.Linear.Base
            GHC.CmmToAsm.Reg.Linear.X86
            GHC.CmmToAsm.Reg.Linear.X86_64
            GHC.CmmToAsm.Reg.Linear.PPC
            GHC.CmmToAsm.Reg.Linear.SPARC
            GHC.CmmToAsm.Reg.Utils
            GHC.CmmToAsm.Dwarf
            GHC.CmmToAsm.Dwarf.Types
            GHC.CmmToAsm.Dwarf.Constants
            GHC.ThToHs
            GHC.ByteCode.Types
            GHC.ByteCode.Asm
            GHC.ByteCode.Instr
            GHC.ByteCode.InfoTable
            GHC.ByteCode.Linker
            GHC.CoreToByteCode
            GHC.Runtime.Debugger
            GHC.Runtime.Linker.Types
            GHC.Runtime.Linker
            GHC.Runtime.Heap.Inspect
            GHC.Runtime.Interpreter
            GHC.Runtime.Interpreter.Types
