packages feed

ghc-internal-9.1401.0: ghc-internal.cabal

cabal-version:  3.0
-- WARNING: ghc-internal.cabal is automatically generated from ghc-internal.cabal.in by
-- the top-level ./configure script. Make sure you are editing ghc-internal.cabal.in, not ghc-internal.cabal.
name:           ghc-internal
-- The project is ghc's version plus ghc-internal's version suffix.
-- For example, for ghc=9.10.1, ghc-internal's version will be 9.1001.0.
version:        9.1401.0
license:        BSD-3-Clause
license-file:   LICENSE
maintainer:     The GHC Developers <ghc-devs@haskell.org>
bug-reports:    https://gitlab.haskell.org/ghc/ghc/-/issues/new
synopsis:       Basic libraries
category:       Prelude
build-type:     Configure
description:
    This package contains the implementation of GHC's standard libraries and is
    not intended for use by end-users.
    .
    Users should instead use either the @base@ or @ghc-experimental@ packages


extra-tmp-files:
    autom4te.cache
    ghc-internal.buildinfo
    config.log
    config.status
    include/EventConfig.h
    include/HsBaseConfig.h

extra-source-files:
    aclocal.m4
    ghc-internal.buildinfo.in
    CHANGELOG.md
    cbits/gmp_wrappers.c
    configure
    configure.ac
    include/CTypes.h
    include/EventConfig.h.in
    include/HsBaseConfig.h.in
    include/ieee-flpt.h
    include/md5.h
    include/fs.h
    include/winio_structs.h
    include/WordSize.h
    include/HsIntegerGmp.h.in
    include/RtsIfaceSymbols.h
    install-sh

source-repository head
    type:     git
    location: https://gitlab.haskell.org/ghc/ghc.git
    subdir:   libraries/base

Flag bignum-native
    Description: Enable native Haskell bignum backend
    Manual: True
    Default: False

Flag bignum-ffi
    Description: Enable FFI bignum backend
    Manual: True
    Default: False

Flag bignum-gmp
    Description: Enable GMP bignum backend
    Manual: True
    Default: False

Flag bignum-check
    Description: Validate results of the enabled backend against native backend.
    Manual: True
    Default: False

Flag need-atomic
    Description: Enable linking with "atomic" library (for 64-bit atomic ops on armel, #20549)
    Manual: True
    Default: False


Library
    default-language: Haskell2010
    default-extensions:
        NoImplicitPrelude
    other-extensions:
        BangPatterns
        CApiFFI
        CPP
        ConstraintKinds
        DataKinds
        DeriveDataTypeable
        DeriveGeneric
        ExistentialQuantification
        ExplicitForAll
        FlexibleContexts
        FlexibleInstances
        FunctionalDependencies
        GADTs
        GeneralizedNewtypeDeriving
        KindSignatures
        MagicHash
        MultiParamTypeClasses
        NegativeLiterals
        NondecreasingIndentation
        OverloadedStrings
        ParallelArrays
        PolyKinds
        RankNTypes
        RecordWildCards
        RoleAnnotations
        Safe
        ScopedTypeVariables
        StandaloneDeriving
        Trustworthy
        TypeFamilies
        TypeOperators
        TypeSynonymInstances
        UnboxedTuples
        UndecidableInstances
        UnliftedFFITypes
        Unsafe

    build-depends:
        rts == 1.0.*

    exposed-modules:
        GHC.Internal.AllocationLimitHandler
        GHC.Internal.ClosureTypes
        GHC.Internal.Control.Arrow
        GHC.Internal.Control.Category
        GHC.Internal.Control.Concurrent.MVar
        GHC.Internal.Control.Exception
        GHC.Internal.Control.Exception.Base
        GHC.Internal.Control.Monad
        GHC.Internal.Control.Monad.Fail
        GHC.Internal.Control.Monad.Fix
        GHC.Internal.Control.Monad.IO.Class
        GHC.Internal.Control.Monad.ST
        GHC.Internal.Control.Monad.Zip
        GHC.Internal.Control.Monad.ST.Lazy
        GHC.Internal.Control.Monad.ST.Imp
        GHC.Internal.Control.Monad.ST.Lazy.Imp
        GHC.Internal.Data.Bits
        GHC.Internal.Data.Bool
        GHC.Internal.Data.Coerce
        GHC.Internal.Data.Data
        GHC.Internal.Data.Dynamic
        GHC.Internal.Data.Either
        GHC.Internal.Data.Eq
        GHC.Internal.Data.Foldable
        GHC.Internal.Data.Function
        GHC.Internal.Data.Functor
        GHC.Internal.Data.Functor.Const
        GHC.Internal.Data.Functor.Identity
        GHC.Internal.Data.Functor.Utils
        GHC.Internal.Data.IORef
        GHC.Internal.Data.Ix
        GHC.Internal.Data.List
        GHC.Internal.Data.List.NonEmpty
        GHC.Internal.Data.Maybe
        GHC.Internal.Data.Monoid
        GHC.Internal.Data.NonEmpty
        GHC.Internal.Data.OldList
        GHC.Internal.Data.Ord
        GHC.Internal.Data.Proxy
        GHC.Internal.Data.Semigroup.Internal
        GHC.Internal.Data.STRef
        GHC.Internal.Data.STRef.Strict
        GHC.Internal.Data.String
        GHC.Internal.Data.Traversable
        GHC.Internal.Data.Tuple
        GHC.Internal.Data.Type.Bool
        GHC.Internal.Data.Type.Coercion
        GHC.Internal.Data.Type.Equality
        GHC.Internal.Data.Type.Ord
        GHC.Internal.Data.Typeable
        GHC.Internal.Data.Unique
        GHC.Internal.Data.Version
        GHC.Internal.Data.Void
        GHC.Internal.Debug.Trace
        GHC.Internal.Foreign.C.ConstPtr
        GHC.Internal.Foreign.C.Error
        GHC.Internal.Foreign.C.String
        GHC.Internal.Foreign.C.String.Encoding
        GHC.Internal.Foreign.C.Types
        GHC.Internal.Foreign.Concurrent
        GHC.Internal.Foreign.ForeignPtr
        GHC.Internal.Foreign.ForeignPtr.Imp
        GHC.Internal.Foreign.ForeignPtr.Unsafe
        GHC.Internal.Foreign.Marshal.Alloc
        GHC.Internal.Foreign.Marshal.Array
        GHC.Internal.Foreign.Marshal.Error
        GHC.Internal.Foreign.Marshal.Pool
        GHC.Internal.Foreign.Marshal.Safe
        GHC.Internal.Foreign.Marshal.Unsafe
        GHC.Internal.Foreign.Marshal.Utils
        GHC.Internal.Foreign.Ptr
        GHC.Internal.Foreign.StablePtr
        GHC.Internal.Foreign.Storable
        GHC.Internal.ForeignSrcLang
        GHC.Internal.Arr
        GHC.Internal.ArrayArray
        GHC.Internal.Base
        GHC.Internal.Bits
        GHC.Internal.ByteOrder
        GHC.Internal.Char
        GHC.Internal.Clock
        GHC.Internal.Conc.Bound
        GHC.Internal.Conc.IO
        GHC.Internal.Conc.Signal
        GHC.Internal.Conc.Sync
        GHC.Internal.ConsoleHandler
        GHC.Internal.Desugar
        GHC.Internal.Encoding.UTF8
        GHC.Internal.Enum
        GHC.Internal.Environment
        GHC.Internal.Err
        GHC.Internal.Event.TimeOut
        GHC.Internal.Exception
        GHC.Internal.Exception.Backtrace
        GHC.Internal.Exception.Context
        GHC.Internal.Exception.Type
        GHC.Internal.ExecutionStack
        GHC.Internal.ExecutionStack.Internal
        GHC.Internal.Exts
        GHC.Internal.Fingerprint
        GHC.Internal.Fingerprint.Type
        GHC.Internal.Float
        GHC.Internal.Float.ConversionUtils
        GHC.Internal.Float.RealFracMethods
        GHC.Internal.ForeignPtr
        GHC.Internal.Functor.ZipList
        GHC.Internal.GHCi
        GHC.Internal.GHCi.Helpers
        GHC.Internal.Generics
        GHC.Internal.Heap.Closures
        GHC.Internal.Heap.Constants
        GHC.Internal.Heap.InfoTable
        GHC.Internal.Heap.InfoTable.Types
        GHC.Internal.Heap.InfoTableProf
        GHC.Internal.Heap.ProfInfo.Types
        GHC.Internal.InfoProv
        GHC.Internal.InfoProv.Types
        GHC.Internal.IO
        GHC.Internal.IO.Buffer
        GHC.Internal.IO.BufferedIO
        GHC.Internal.IO.Device
        GHC.Internal.IO.Encoding
        GHC.Internal.IO.Encoding.CodePage
        GHC.Internal.IO.Encoding.Failure
        GHC.Internal.IO.Encoding.Iconv
        GHC.Internal.IO.Encoding.Latin1
        GHC.Internal.IO.Encoding.Types
        GHC.Internal.IO.Encoding.UTF16
        GHC.Internal.IO.Encoding.UTF32
        GHC.Internal.IO.Encoding.UTF8
        GHC.Internal.IO.Exception
        GHC.Internal.IO.FD
        GHC.Internal.IO.Handle
        GHC.Internal.IO.Handle.FD
        GHC.Internal.IO.Handle.Internals
        GHC.Internal.IO.Handle.Lock
        GHC.Internal.IO.Handle.Text
        GHC.Internal.IO.Handle.Types
        GHC.Internal.IO.IOMode
        GHC.Internal.IO.Unsafe
        GHC.Internal.IO.StdHandles
        GHC.Internal.IO.SubSystem
        GHC.Internal.IOArray
        GHC.Internal.IORef
        GHC.Internal.Int
        GHC.Internal.Integer
        GHC.Internal.Integer.Logarithms
        GHC.Internal.IsList
        GHC.Internal.Ix
        GHC.Internal.LanguageExtensions
        GHC.Internal.Lexeme
        GHC.Internal.List
        GHC.Internal.Maybe
        GHC.Internal.MVar
        GHC.Internal.Natural
        GHC.Internal.Num
        GHC.Internal.OverloadedLabels
        GHC.Internal.Pack
        GHC.Internal.Profiling
        GHC.Internal.Ptr
        GHC.Internal.Read
        GHC.Internal.Real
        GHC.Internal.Records
        GHC.Internal.ResponseFile
        GHC.Internal.RTS.Flags
        GHC.Internal.RTS.Flags.Test
        GHC.Internal.ST
        GHC.Internal.StaticPtr
        GHC.Internal.STRef
        GHC.Internal.Show
        GHC.Internal.Stable
        GHC.Internal.StableName
        GHC.Internal.Stack
        GHC.Internal.Stack.Annotation
        GHC.Internal.Stack.CCS
        GHC.Internal.Stack.CloneStack
        GHC.Internal.Stack.Constants
        GHC.Internal.Stack.ConstantsProf
        GHC.Internal.Stack.Decode
        GHC.Internal.Stack.Types
        GHC.Internal.Stats
        GHC.Internal.Storable
        GHC.Internal.TH.Syntax
        GHC.Internal.TH.Lib
        GHC.Internal.TH.Lift
        GHC.Internal.TH.Quote
        GHC.Internal.TopHandler
        GHC.Internal.TypeError
        GHC.Internal.TypeLits
        GHC.Internal.TypeLits.Internal
        GHC.Internal.TypeNats
        GHC.Internal.TypeNats.Internal
        GHC.Internal.Unicode
        GHC.Internal.Weak
        GHC.Internal.Weak.Finalize
        GHC.Internal.Word
        GHC.Internal.Numeric
        GHC.Internal.Numeric.Natural
        GHC.Internal.System.Environment
        GHC.Internal.System.Environment.Blank
        GHC.Internal.System.Exit
        GHC.Internal.System.IO
        GHC.Internal.System.IO.Error
        GHC.Internal.System.Mem
        GHC.Internal.System.Mem.StableName
        GHC.Internal.System.Posix.Internals
        GHC.Internal.System.Posix.Types
        GHC.Internal.Text.ParserCombinators.ReadP
        GHC.Internal.Text.ParserCombinators.ReadPrec
        GHC.Internal.Text.Read
        GHC.Internal.Text.Read.Lex
        GHC.Internal.Text.Show
        GHC.Internal.Type.Reflection
        GHC.Internal.Type.Reflection.Unsafe
        GHC.Internal.Unsafe.Coerce

        GHC.Internal.CString
        GHC.Internal.Classes
        GHC.Internal.Debug
        GHC.Internal.Magic
        GHC.Internal.Magic.Dict
        GHC.Internal.Prim
        GHC.Internal.Prim.Ext
        GHC.Internal.Prim.Panic
        GHC.Internal.Prim.Exception
        GHC.Internal.Prim.PtrEq
        GHC.Internal.PrimopWrappers
        GHC.Internal.Tuple
        GHC.Internal.Types

    autogen-modules:
        GHC.Internal.Prim
        GHC.Internal.PrimopWrappers

    other-modules:
        GHC.Internal.Data.Typeable.Internal
        GHC.Internal.IO.Handle.Lock.Common
        GHC.Internal.IO.Handle.Lock.Flock
        GHC.Internal.IO.Handle.Lock.LinuxOFD
        GHC.Internal.IO.Handle.Lock.NoOp
        GHC.Internal.IO.Handle.Lock.Windows
        GHC.Internal.StaticPtr.Internal
        GHC.Internal.Event.Arr
        GHC.Internal.Event.Array
        GHC.Internal.Event.Internal
        GHC.Internal.Event.Internal.Types
        GHC.Internal.Event.IntTable
        GHC.Internal.Event.IntVar
        GHC.Internal.Event.PSQ
        GHC.Internal.Event.Unique
        GHC.Internal.Unicode.Bits
        GHC.Internal.Unicode.Char.DerivedCoreProperties
        GHC.Internal.Unicode.Char.UnicodeData.GeneralCategory
        GHC.Internal.Unicode.Char.UnicodeData.SimpleLowerCaseMapping
        GHC.Internal.Unicode.Char.UnicodeData.SimpleTitleCaseMapping
        GHC.Internal.Unicode.Char.UnicodeData.SimpleUpperCaseMapping
        GHC.Internal.Unicode.Version
        GHC.Internal.System.Environment.ExecutablePath


    ----------------------------------------
    -- Bignum configuration
    ----------------------------------------
    -- check that at least one backend is enabled
    if !flag(bignum-native) && !flag(bignum-gmp) && !flag(bignum-ffi)
      buildable: False

    -- check that at most one flag is set
    if flag(bignum-native) && (flag(bignum-gmp) || flag(bignum-ffi))
      buildable: False
    if flag(bignum-gmp) && flag(bignum-ffi)
      buildable: False

    if flag(bignum-gmp)
        cpp-options: -DBIGNUM_GMP
        other-modules:
           GHC.Internal.Bignum.Backend.GMP
        c-sources:
           cbits/gmp_wrappers.c

    if flag(bignum-ffi)
        cpp-options: -DBIGNUM_FFI
        other-modules:
           GHC.Internal.Bignum.Backend.FFI

    if flag(bignum-native)
        cpp-options: -DBIGNUM_NATIVE

    if flag(bignum-check)
        cpp-options: -DBIGNUM_CHECK
        other-modules:
           GHC.Internal.Bignum.Backend.Check

    exposed-modules:
      GHC.Internal.Bignum.Primitives
      GHC.Internal.Bignum.WordArray
      GHC.Internal.Bignum.BigNat
      GHC.Internal.Bignum.Backend
      GHC.Internal.Bignum.Backend.Selected
      GHC.Internal.Bignum.Backend.Native
      GHC.Internal.Bignum.Natural
      GHC.Internal.Bignum.Integer

    -- some other properties related to bignum are set via the
    -- ghc-internal.buildinfo file generated by this package's configure script
    ----------------------------------------


    if !arch(javascript)
      c-sources:
          cbits/DarwinUtils.c
          cbits/PrelIOUtils.c
          cbits/SetEnv.c
          cbits/iconv.c
          cbits/inputReady.c
          cbits/md5.c
          cbits/primFloat.c
          cbits/sysconf.c
          cbits/fs.c
          cbits/strerror.c
          cbits/debug.c
          cbits/Stack_c.c
          cbits/RtsIface.c

      cmm-sources:
          cbits/StackCloningDecoding.cmm
          cbits/Stack.cmm
          cbits/HeapPrim.cmm

    if arch(javascript)
      js-sources:
          -- "platform" must be linked first because it defines global constants
          -- (e.g. h$isNode)
          jsbits/platform.js
          jsbits/base.js
          jsbits/errno.js

    hs-source-dirs: src
    include-dirs: include
    includes:
        HsBase.h
    install-includes:
        HsBase.h
        consUtils.h

    if flag(need-atomic)
        -- for 64-bit atomic ops on armel (#20549)
        extra-libraries: atomic

    -- OS Specific
    if os(windows)
        -- Windows requires some extra libraries for linking because the RTS
        -- is no longer re-exporting them (see #11223)
        -- ucrt: standard C library. The RTS will automatically include this,
        --       but is added for completeness.
        -- mingwex: provides GNU POSIX extensions that aren't provided by ucrt.
        -- mingw32: Unfortunately required because of a resource leak between
        --          mingwex and mingw32. the __math_err symbol is defined in
        --          mingw32 which is required by mingwex.
        -- shlwapi: provides PathFileExistsW
        -- ws2_32: provides access to socket types and functions
        -- ole32: provides UUID functionality.
        -- rpcrt4: provides RPC UUID creation.
        -- ntdll: provides access to functions to inspect window handles
        -- kernel32: provides GetConsoleCP
        -- advapi32: provides advanced kernel functions
        -- user32: provides access to apis to modify user components (UI etc)
        --         on Windows. Required because of mingw32.
        extra-libraries:
            wsock32, user32, shell32, mingw32, kernel32, advapi32,
            mingwex, ws2_32, shlwapi, ole32, rpcrt4, ntdll, ucrt
        -- Minimum supported Windows version.
        -- These numbers can be found at:
        --  https://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx
        -- If we're compiling on windows, enforce that we only support Windows 7+
        -- Adding this here means it doesn't have to be done in individual .c files
        -- and also centralizes the versioning.
        cpp-options: -D_WIN32_WINNT=0x06010000
        cc-options: -D_WIN32_WINNT=0x06010000
        exposed-modules:
            GHC.Internal.IO.Encoding.CodePage.API
            GHC.Internal.IO.Encoding.CodePage.Table
            GHC.Internal.Conc.Windows
            GHC.Internal.Conc.POSIX
            GHC.Internal.Conc.POSIX.Const
            GHC.Internal.Windows
            GHC.Internal.Event.Windows
            GHC.Internal.Event.Windows.Clock
            GHC.Internal.Event.Windows.ConsoleEvent
            GHC.Internal.Event.Windows.FFI
            GHC.Internal.Event.Windows.ManagedThreadPool
            GHC.Internal.Event.Windows.Thread
            GHC.Internal.IO.Handle.Windows
            GHC.Internal.IO.Windows.Handle
            GHC.Internal.IO.Windows.Encoding
            GHC.Internal.IO.Windows.Paths
        c-sources:
            cbits/Win32Utils.c
            cbits/consUtils.c
            cbits/IOutils.c

    else
        exposed-modules:
            GHC.Internal.Event
        other-modules:
            GHC.Internal.Event.Control
            GHC.Internal.Event.EPoll
            GHC.Internal.Event.KQueue
            GHC.Internal.Event.Manager
            GHC.Internal.Event.Poll
            GHC.Internal.Event.Thread
            GHC.Internal.Event.TimerManager

    if os(linux)
        -- we need libm, but for musl and other's we might need libc, as libm
        -- is just an empty shell.
        extra-libraries: c, m

    -- The Ports framework always passes this flag when building software that
    -- uses iconv to make iconv from Ports compatible with iconv from the base system
    -- See /usr/ports/Mk/Uses/iconv.mk
    if os(freebsd)
        cc-options: -DLIBICONV_PLUG

    if arch(javascript)
        exposed-modules:
            GHC.Internal.JS.Prim
            GHC.Internal.JS.Prim.Internal
            GHC.Internal.JS.Prim.Internal.Build
            GHC.Internal.JS.Foreign.Callback

    if arch(wasm32)
        exposed-modules:
            GHC.Internal.Wasm.Prim
        other-modules:
            GHC.Internal.Wasm.Prim.Conc
            GHC.Internal.Wasm.Prim.Conc.Internal
            GHC.Internal.Wasm.Prim.Exports
            GHC.Internal.Wasm.Prim.Flag
            GHC.Internal.Wasm.Prim.Imports
            GHC.Internal.Wasm.Prim.Types

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

    -- Make sure we don't accidentally regress into anti-patterns
    ghc-options: -Wcompat -Wnoncanonical-monad-instances