packages feed

basesystems-1.0.0.1: basesystems.cabal

cabal-version: 3.0
version:       1.0.0.1
name:          basesystems
build-type:    Simple
author:        Zoey McBride
maintainer:    zoeymcbride@mailbox.org
license:       BSD-3-Clause
license-file:  LICENSE.txt
category:      Numeric, Data, Serialization
synopsis:      Implements encoders/decoders for basesystems
description:
    This package implements encoder and decoder methods for numeric basesystems
    and provides definitions for common basesystems like base16, base58btc,
    base64, and more.
extra-doc-files:
    README.md
    CHANGE_LOG.md
source-repository head {
  type:     git
  location: https://git.sr.ht/~z0/basesystems
}

-- | Sets flag for CI build toggle
flag CI {
    Description: CI Build options
    Default: False
    Manual: True
}

-- | Sets flag for developer build toggle
flag Dev {
    Description: Developer build options
    Default: False
    Manual: True
}

-- | These dependency versions are known to be compatable with mfmts
common Depends {
    build-depends:
        base >= 4.18 && < 5,
        array ^>= 0.5,
        bytestring ^>= 0.11,
        containers ^>= 0.6,
        text ^>= 2.0
}

-- | DefaultBuild: strict compilation + optimize for executable speed
common DefaultBuild {
    import: Depends
    ghc-options: -Wall -Wextra -Wno-unused-top-binds
}

-- | CIBuild: strict compilation + optimize for compile time
common CIBuild {
    import: Depends
    ghc-options: -Wall -Wextra -Werror -Wno-unused-top-binds
}

-- | Configures the Dev flag
common DevBuild {
    import: Depends
    ghc-options: -Wall -Wextra -Wno-unused-top-binds
}

-- | Configures basesystems
library {
    default-extensions: StrictData
    default-language: GHC2021
    if flag(Dev) {
        import: DevBuild
    }
    elif flag(CI) {
        import: CIBuild
    }
    else {
        import: DefaultBuild
    }
    exposed-modules:
        -- * Defines basesystem interface
        Data.BaseSystem,
        -- * Defines basesystem implmentors
        Data.BaseSystems,
        -- * Defines alphabet interface
        Data.BaseSystem.Alphabet,
        -- * Defines alphabet implmentors
        Data.BaseSystem.Alphabets,
        -- * Provides common types and functions
        Data.BaseSystem.Internal,
    hs-source-dirs:
        basesystems
}