cabal-version:      1.18
name:               lzlib
version:            1.0.7.4
license:            BSD3
license-file:       LICENSE
copyright:          Copyright: (c) 2019-2021 Vanessa McHale
maintainer:         vamchale@gmail.com
author:             Vanessa McHale
synopsis:           lzlib bindings
description:
    Lzlib bindings via [c2hs](http://hackage.haskell.org/package/c2hs).
    Includes a bundled copy of lzlib

category:           Codec, Compression
build-type:         Simple
extra-source-files:
    cbits/cbuffer.c
    cbits/decoder.c
    cbits/decoder.h
    cbits/encoder.c
    cbits/encoder.h
    cbits/encoder_base.c
    cbits/encoder_base.h
    cbits/fast_encoder.c
    cbits/fast_encoder.h
    cbits/lzip.h
    cbits/lzlib.h

extra-doc-files:
    README.md
    CHANGELOG.md

source-repository head
    type:     git
    location: https://github.com/vmchale/lzlib

flag cross
    description: Set this flag if cross-compiling
    default:     False
    manual:      True

library
    exposed-modules:  Codec.Lzip
    cc-options:       -O3
    c-sources:        cbits/lzlib.c
    hs-source-dirs:   src
    other-modules:    Codec.Lzip.Raw
    default-language: Haskell2010
    other-extensions: DeriveDataTypeable TupleSections
    include-dirs:     cbits
    install-includes: cbits/lzlib.h
    ghc-options:      -Wall
    build-depends:
        base >=4.7 && <5,
        bytestring

    if impl(ghc >=8.0)
        ghc-options:
            -Wincomplete-uni-patterns -Wincomplete-record-updates
            -Wredundant-constraints

    if !flag(cross)
        build-tool-depends: c2hs:c2hs >=0.26.1

    if impl(ghc >=8.4)
        ghc-options: -Wmissing-export-lists

    if impl(ghc >=8.10)
        ghc-options: -Wunused-packages

test-suite lzlib-test
    type:             exitcode-stdio-1.0
    main-is:          Spec.hs
    hs-source-dirs:   test
    default-language: Haskell2010
    ghc-options:      -threaded -rtsopts "-with-rtsopts=-N -K1K" -Wall
    build-depends:
        base,
        lzlib,
        hspec,
        bytestring,
        directory,
        pathological-bytestrings

    if impl(ghc >=8.0)
        ghc-options:
            -Wincomplete-uni-patterns -Wincomplete-record-updates
            -Wredundant-constraints

    if impl(ghc >=8.4)
        ghc-options: -Wmissing-export-lists

    if impl(ghc >=8.10)
        ghc-options: -Wunused-packages

benchmark lzlib-bench
    type:             exitcode-stdio-1.0
    main-is:          Bench.hs
    hs-source-dirs:   bench
    default-language: Haskell2010
    ghc-options:      -Wall
    build-depends:
        base,
        lzlib,
        criterion,
        bytestring,
        temporary,
        filepath

    if impl(ghc >=8.0)
        ghc-options:
            -Wincomplete-uni-patterns -Wincomplete-record-updates
            -Wredundant-constraints

    if impl(ghc >=8.4)
        ghc-options: -Wmissing-export-lists

    if impl(ghc >=8.10)
        ghc-options: -Wunused-packages

benchmark lzlib-mem
    type:             exitcode-stdio-1.0
    main-is:          Mem.hs
    hs-source-dirs:   mem
    default-language: Haskell2010
    ghc-options:      -threaded -rtsopts -with-rtsopts=-N -Wall
    build-depends:
        base,
        lzlib,
        filepath,
        temporary,
        bytestring

    if impl(ghc >=8.0)
        ghc-options: -Wincomplete-uni-patterns -Wincomplete-record-updates

    if impl(ghc >=8.10)
        ghc-options: -Wunused-packages