File unicode-data.cabal of Package ghc-unicode-data

cabal-version:       2.2
name:                unicode-data
version:             0.6.0
x-revision: 2
synopsis:            Access Unicode Character Database (UCD)
description:
  @unicode-data@ provides Haskell APIs to efficiently access the
  <https://www.unicode.org/ucd/ Unicode character database> (UCD).
  Performance is the primary goal in the design of this package.
  .
  The Haskell data structures are generated programmatically from the UCD files.
  The latest Unicode version supported by this library is
  @<https://www.unicode.org/versions/Unicode15.1.0/ 15.1.0>@.
homepage:            http://github.com/composewell/unicode-data
bug-reports:         https://github.com/composewell/unicode-data/issues
license:             Apache-2.0
license-file:        LICENSE
author:              Composewell Technologies and Contributors
maintainer:          streamly@composewell.com
copyright:           2020 Composewell Technologies and Contributors
category:            Data,Text,Unicode
stability:           Experimental
build-type:          Simple
tested-with:         GHC==8.0.2
                   , GHC==8.2.2
                   , GHC==8.4.4
                   , GHC==8.6.5
                   , GHC==8.8.4
                   , GHC==8.10.7
                   , GHC==9.0.2
                   , GHC==9.2.8
                   , GHC==9.4.8
                   , GHC==9.6.5
                   , GHC==9.8.2
                   , GHC==9.10.1

extra-doc-files:
    Changelog.md
    README.md
    NOTICE

source-repository head
  type: git
  location: https://github.com/composewell/unicode-data

common default-extensions
  default-extensions:
      BangPatterns
      DeriveGeneric
      MagicHash
      RecordWildCards
      ScopedTypeVariables
      TupleSections
      FlexibleContexts
      LambdaCase

      -- Experimental, may lead to issues
      UnboxedTuples

common compile-options
  ghc-options: -Wall
               -fwarn-identities
               -fwarn-incomplete-record-updates
               -fwarn-incomplete-uni-patterns
               -fwarn-tabs
  default-language: Haskell2010

flag dev-has-icu
  description:
    Use ICU for test and benchmark. Intended for development on the repository.
  manual: True
  default: False

library
  import: default-extensions, compile-options
  exposed-modules:
      Unicode.Char
      -- The module structure is derived from
      -- https://www.unicode.org/reports/tr44/#Property_Index_Table
      Unicode.Char.Case
      Unicode.Char.Case.Compat
      Unicode.Char.General
      Unicode.Char.General.Blocks
      Unicode.Char.General.Compat
      Unicode.Char.Identifiers
      Unicode.Char.Normalization
      Unicode.Char.Numeric
      Unicode.Char.Numeric.Compat

      -- Internal files
      Unicode.Internal.Bits
      Unicode.Internal.Division
      Unicode.Internal.Unfold

      -- Generated files
      -- This module structure is largely based on the UCD file names from which
      -- the properties are generated.
      Unicode.Internal.Char.Blocks
      Unicode.Internal.Char.CaseFolding
      Unicode.Internal.Char.DerivedCoreProperties
      Unicode.Internal.Char.DerivedNumericValues
      Unicode.Internal.Char.PropList
      Unicode.Internal.Char.SpecialCasing.LowerCaseMapping
      Unicode.Internal.Char.SpecialCasing.TitleCaseMapping
      Unicode.Internal.Char.SpecialCasing.UpperCaseMapping
      Unicode.Internal.Char.UnicodeData.CombiningClass
      Unicode.Internal.Char.UnicodeData.Compositions
      Unicode.Internal.Char.UnicodeData.Decomposable
      Unicode.Internal.Char.UnicodeData.DecomposableK
      Unicode.Internal.Char.UnicodeData.Decompositions
      Unicode.Internal.Char.UnicodeData.DecompositionsK
      Unicode.Internal.Char.UnicodeData.DecompositionsK2
      Unicode.Internal.Char.UnicodeData.GeneralCategory
      Unicode.Internal.Char.UnicodeData.SimpleLowerCaseMapping
      Unicode.Internal.Char.UnicodeData.SimpleTitleCaseMapping
      Unicode.Internal.Char.UnicodeData.SimpleUpperCaseMapping
      Unicode.Internal.Char.Version

  hs-source-dirs: lib
  ghc-options: -O2
  build-depends:
      base >=4.7 && < 4.22
  if impl(ghc < 9.0)
    -- Required for unpackCString#
    build-depends: ghc-prim

test-suite test
  import: default-extensions, compile-options
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      test
  other-modules:
      Unicode.CharSpec
  build-depends:
      base             >= 4.7   && < 4.22
    , hspec            >= 2.0   && < 2.12
    , unicode-data
  if flag(dev-has-icu)
    cpp-options: -DHAS_ICU
    other-modules:
        ICU.CharSpec
    build-depends:
        icu

benchmark bench
  import: default-extensions, compile-options
  type: exitcode-stdio-1.0
  hs-source-dirs: bench
  main-is: Main.hs
  other-modules:
    Unicode.Char.Bench
    Unicode.Char.CaseBench
    Unicode.Char.Case.CompatBench
    Unicode.Char.GeneralBench
    Unicode.Char.General.BlocksBench
    Unicode.Char.General.CompatBench
    Unicode.Char.IdentifiersBench
    Unicode.Char.NormalizationBench
    Unicode.Char.NumericBench
    Unicode.Char.Numeric.CompatBench
  build-depends:
    base        >= 4.7   && < 4.22,
    deepseq     >= 1.1   && < 1.6,
    tasty-bench >= 0.2.5 && < 0.5,
    tasty       >= 1.4.1 && < 1.6,
    unicode-data
  if impl(ghc < 9.0)
    -- Required for noinline
    build-depends: ghc-prim
  -- [NOTE] Recommendation of tasty-bench to reduce garbage collection noisiness
  ghc-options: -O2 -fdicts-strict -rtsopts -with-rtsopts=-A32m
  -- [NOTE] Recommendation of tasty-bench for comparison against baseline
  if impl(ghc >= 8.6)
    ghc-options: -fproc-alignment=64
openSUSE Build Service is sponsored by