cabal-version:       2.4
name:                extensible
version:             0.9.1
synopsis:            Extensible, efficient, optics-friendly data types and effects
homepage:            https://github.com/fumieval/extensible
bug-reports:         http://github.com/fumieval/extensible/issues
description:
    This package provides a powerful framework to combine and manipulate various types of structures.
    .
    See also <https://www.schoolofhaskell.com/user/fumieval/extensible School of Haskell> for tutorials.
license:             BSD-3-Clause
license-file:        LICENSE
author:              Fumiaki Kinoshita
maintainer:          Fumiaki Kinoshita <fumiexcel@gmail.com>
copyright:           Copyright (c) 2017-2022 Fumiaki Kinoshita
category:            Data, Records
build-type:          Simple
stability:           experimental
Tested-With:         GHC == 8.10.7, GHC == 9.0.1, GHC == 9.2.1

extra-source-files:
  examples/*.hs
  .gitignore
  README.md
  CHANGELOG.md

source-repository head
  type: git
  location: https://github.com/fumieval/extensible.git

flag barbies
  default: False
  description: "define instances for barbies"
  manual: True

flag cassava
  default: True
  description: "define instances for cassava"
  manual: True

flag IsLabel
  default: True
  description: "export the instance of IsLabel making optics (which could conflict with other packages such as generic-lens)"
  manual: True

library
  exposed-modules:
    Data.Extensible
    Data.Extensible.Bits
    Data.Extensible.Class
    Data.Extensible.Dictionary
    Data.Extensible.Field
    Data.Extensible.GetOpt
    Data.Extensible.Inclusion
    Data.Extensible.Internal.Rig
    Data.Extensible.Label
    Data.Extensible.Match
    Data.Extensible.Nullable
    Data.Extensible.Plain
    Data.Extensible.Product
    Data.Extensible.Record
    Data.Extensible.Struct
    Data.Extensible.Sum
    Data.Extensible.Tangle
    Data.Extensible.TH
    Data.Extensible.Wrapper
  default-extensions: TypeOperators
    , DeriveDataTypeable
    , DeriveGeneric
    , DeriveLift
    , GeneralizedNewtypeDeriving
    , KindSignatures
    , ConstraintKinds
    , DataKinds
    , GADTs
    , Rank2Types
    , FlexibleContexts
    , FlexibleInstances
    , PolyKinds
    , CPP
    , NoStarIsType
  build-depends:       base >= 4.8 && <5
    , aeson >= 1.5 && <2.3
    , bytestring
    , comonad
    , constraints
    , deepseq
    , ghc-prim
    , hashable >= 1.2 && <1.5
    , incremental >= 0.3.1
    , membership
    , prettyprinter ^>= 1.7
    , primitive
    , profunctors
    , QuickCheck
    , StateVar
    , tagged
    , template-haskell
    , text
    , th-lift >= 0.8
    , transformers
    , unordered-containers
    , vector >= 0.12.1.2
  if flag(barbies)
    build-depends: barbies ^>= 2
    cpp-options: -DBARBIES
  if flag(cassava)
    build-depends: cassava
    cpp-options: -DCASSAVA
  if flag(IsLabel)
    cpp-options: -DISLABEL
  hs-source-dirs:      src
  ghc-options: -Wall -Wcompat
  default-language:    Haskell2010

test-suite bits
  type: exitcode-stdio-1.0
  main-is: bits.hs
  build-depends: base, extensible, lens, QuickCheck, template-haskell
  hs-source-dirs: tests
  default-language:    Haskell2010