packages feed

libconfig-0.3.0.0: libconfig.cabal

name:                libconfig
version:             0.3.0.0
synopsis:            Haskell bindings to libconfig
description:
            Low-level FFI bindings to the <http://www.hyperrealm.com/libconfig/ libconfig>
            configuration file library.
            .
            This library only binds to version 1.4.9 of the libconfig
            library, which is known as @libconfig9@ in Debian-like
            distributions, including Ubuntu.  It will not work with
            older versions of libconfig, including the @libconfig8@
            distributed in Ubuntu 12.04.
            .
            See below for several flags you can use to reduce
            dependencies if this is a problem for you.  If you disable
            everything, this package will only depend on
            @transformers@, @text@, @hashable@ and @deepseq@.

license:             BSD3
license-file:        LICENSE
author:              Matthew Peddie
maintainer:          mpeddie@gmail.com
homepage:            https://github.com/peddie/libconfig-haskell
copyright:           2015 Matthew Peddie <mpeddie@gmail.com>
category:            Language
build-type:          Simple
cabal-version:       >=1.10

source-repository head
  type:           git
  location:       https://github.com/peddie/libconfig-haskell

flag prisms
     description:     Build prisms along with lenses (adds a
                      dependency on the 'profunctors' package).
                      .
                      If tests are enabled, this flag also adds a
                      dependency on 'lens' for the test suite.
                      .
                      If this flag is disabled, no tests for
                      Language.Libconfig.Optics will be run at all.
     default:         True

flag binary
     description:     Provide instances for Data.Binary.Binary from
                      the 'binary' package.  This is done by Generics
                      and will not work on GHCs older than 7.8,
                      because they ship with binary version 0.5 or
                      older.
     default:         True

flag cereal
     description:     Provide instances for Data.Serialize.Serialize
                      from the 'cereal' package.
     default:         True

library
  exposed-modules:     Language.Libconfig
                     , Language.Libconfig.Bindings
                     , Language.Libconfig.Types
                     , Language.Libconfig.Decode
                     , Language.Libconfig.Encode
                     , Language.Libconfig.Optics

  extra-libraries:     config
  if flag(prisms) && flag(binary) && flag(cereal)
    build-depends:       base >=4.6 && <4.9
                       , text >= 1.1 && < 1.3
                       , hashable >= 1.2 && < 1.3
                       , deepseq >= 1.3
                       , transformers >= 0.3
                       , transformers-compat >= 0.3
                       , profunctors >= 4 && < 5
                       , binary >= 0.5 && < 0.8
                       , text-binary >= 0.1
                       , cereal >= 0.4 && < 0.5
                       , cereal-text >= 0.1
    cpp-options:  -DDEFINE_PRISMS -DBINARY_INSTANCES -DCEREAL_INSTANCES
  else
    if flag(prisms) && flag(binary)
      build-depends:       base >=4.6 && <4.9
                         , text >= 1.1 && < 1.3
                         , hashable >= 1.2 && < 1.3
                         , deepseq >= 1.3
                         , transformers >= 0.3
                         , transformers-compat >= 0.3
                         , profunctors >= 4 && < 5
                         , binary >= 0.5 && < 0.8
                         , text-binary >= 0.1
      cpp-options:  -DDEFINE_PRISMS -DBINARY_INSTANCES
    else
      if flag(prisms) && flag(cereal)
        build-depends:       base >=4.6 && <4.9
                           , text >= 1.1 && < 1.3
                           , hashable >= 1.2 && < 1.3
                           , deepseq >= 1.3
                           , transformers >= 0.3
                           , transformers-compat >= 0.3
                           , profunctors >= 4 && < 5
                           , cereal >= 0.4 && < 0.5
                           , cereal-text >= 0.1
        cpp-options:  -DDEFINE_PRISMS -DCEREAL_INSTANCES
      else
        if flag(binary) && flag(cereal)
          build-depends:       base >=4.6 && <4.9
                             , text >= 1.1 && < 1.3
                             , hashable >= 1.2 && < 1.3
                             , deepseq >= 1.3
                             , transformers >= 0.3
                             , transformers-compat >= 0.3
                             , binary >= 0.5 && < 0.8
                             , text-binary >= 0.1
                             , cereal >= 0.4 && < 0.5
                             , cereal-text >= 0.1
          cpp-options:  -DBINARY_INSTANCES -DCEREAL_INSTANCES
        else
          if flag(prisms)
            build-depends:       base >=4.6 && <4.9
                               , text >= 1.1 && < 1.3
                               , hashable >= 1.2 && < 1.3
                               , deepseq >= 1.3
                               , transformers >= 0.3
                               , transformers-compat >= 0.3
                               , profunctors >= 4 && < 5
            cpp-options:  -DDEFINE_PRISMS
          else
            if flag(binary)
              build-depends:       base >=4.6 && <4.9
                                 , text >= 1.1 && < 1.3
                                 , hashable >= 1.2 && < 1.3
                                 , deepseq >= 1.3
                                 , transformers >= 0.3
                                 , transformers-compat >= 0.3
                                 , binary >= 0.5 && < 0.8
                                 , text-binary >= 0.1
              cpp-options:  -DBINARY_INSTANCES
            else
              if flag(cereal)
                build-depends:       base >=4.6 && <4.9
                                   , text >= 1.1 && < 1.3
                                   , hashable >= 1.2 && < 1.3
                                   , deepseq >= 1.3
                                   , transformers >= 0.3
                                   , transformers-compat >= 0.3
                                   , cereal >= 0.4 && < 0.5
                                   , cereal-text >= 0.1
                cpp-options:  -DCEREAL_INSTANCES
              else
                build-depends:       base >=4.6 && <4.9
                                   , text >= 1.1 && < 1.3
                                   , hashable >= 1.2 && < 1.3
                                   , deepseq >= 1.3
                                   , transformers >= 0.3
                                   , transformers-compat >= 0.3


  hs-source-dirs:      src
  build-tools:         c2hs
  default-language:    Haskell2010

test-suite doctest
  type: exitcode-stdio-1.0
  default-language: Haskell2010
  hs-source-dirs: test
  ghc-options: -threaded -Wall -O2
  main-is: doctest.hs
  if flag(prisms)
    cpp-options: -DDEFINE_PRISMS
    build-depends: base
                 , libconfig
                 , doctest >= 0.9.9
                 , doctest-prop >= 0.2
                 , lens >= 4.7
  else
    build-depends: base
                 , libconfig
                 , doctest >= 0.9.9
                 , doctest-prop >= 0.2