name:
  emacs-module
version:
  0.1
category: Foreign, Foreign binding

synopsis:
  Utilities to write Emacs dynamic modules

description:
  This package provides a full set of bindings to emacs-module.h that
  allows to develop Emacs modules in Haskell.

license:
  BSD3
license-file:
  LICENSE
author:
  Sergey Vinokurov
maintainer:
  Sergey Vinokurov <serg.foo@gmail.com>
stability: stable
tested-with:
    GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.3
extra-source-files:
  cbits/emacs-module.h

cabal-version:
  2.0
build-type:
  Simple

homepage: https://github.com/sergv/emacs-module

source-repository head
    type: git
    location: https://github.com/sergv/emacs-module.git


flag assertions
  description:
    Enable runtime assertions
  default:
    False
  manual:
    True

flag module-assertions
  description:
    Bulid plugin that is plugin indentended to be used with Emacs's
    '--module-assertions' enabled. Plugin will not free any global values
    returned to Emacs and thus have an ever-growing memory leak.
  default:
    False
  manual:
    True

library
  if flag(assertions)
    cpp-options: -DASSERTIONS
  if flag(module-assertions)
    cpp-options: -DMODULE_ASSERTIONS
  exposed-modules:
    Data.Emacs.Module.Args
    Data.Emacs.Module.Env
    Data.Emacs.Module.Env.Functions
    Data.Emacs.Module.NonNullPtr
    Data.Emacs.Module.Runtime
    Data.Emacs.Module.SymbolName
    Data.Emacs.Module.SymbolName.TH
    Data.Emacs.Module.Value
    Emacs.Module
    Emacs.Module.Assert
    Emacs.Module.Errors
    Emacs.Module.Functions
    Emacs.Module.Monad
    Emacs.Module.Monad.Class
  other-modules:
    Data.Emacs.Module.NonNullPtr.Internal
    Data.Emacs.Module.Raw.Env
    Data.Emacs.Module.Raw.Env.Internal
    Data.Emacs.Module.Raw.Env.TH
    Data.Emacs.Module.Raw.Value
    Data.Emacs.Module.SymbolName.Internal
    Data.Emacs.Module.Value.Internal
  hs-source-dirs:
    src
  build-depends:
    base >=4.7 && < 5,
    bytestring,
    deepseq,
    exceptions,
    monad-control,
    mtl,
    prettyprinter,
    resourcet,
    safe-exceptions-checked,
    text,
    template-haskell,
    transformers-base,
    vector,
    void
  if impl(ghc < 8.1)
    build-depends: bifunctors

  includes:
    emacs-module.h
  install-includes:
    emacs-module.h
  include-dirs:
    cbits
  build-tools:
    hsc2hs
  default-language:
    Haskell2010
  ghc-options:
    -Wall
    -fwarn-name-shadowing
    -fno-warn-type-defaults
  if impl(ghc >= 8.0)
    ghc-options:
      -Wcompat
      -Whi-shadowing
      -Widentities
      -Wincomplete-record-updates
      -Wincomplete-uni-patterns
      -Wmissing-exported-signatures
  if impl(ghc >= 8.2)
    ghc-options:
      -Wcpp-undef
      -Wmissing-home-modules
      -Wunbanged-strict-patterns