-- This file has been generated from package.yaml by hpack version 0.19.2.
--
-- see: https://github.com/sol/hpack

name:                   hpio
version:                0.9.0.2
synopsis:               Monads for GPIO in Haskell
description:            This package provides an embedded DSL for writing cross-platform
                        GPIO programs in Haskell. Currently only Linux is supported (via the
                        @sysfs@ filesystem), but other Unix GPIO platforms will be supported
                        in the future.
                        .
                        Monads and low-level actions are also provided for each supported
                        platform's native GPIO API, if you want to program directly to
                        the platform API.
                        .
                        Example programs are provided in the 'examples' directory of the
                        source code distribution. There is also a "System.GPIO.Tutorial"
                        module, which explains how to use the cross-platform DSL.
category:               System
stability:              experimental
homepage:               https://github.com/quixoftic/hpio#readme
bug-reports:            https://github.com/quixoftic/hpio/issues
author:                 Drew Hess <dhess-src@quixoftic.com>
maintainer:             Drew Hess <dhess-src@quixoftic.com>
copyright:              Copyright (c) 2017, Quixoftic, LLC
license:                BSD3
license-file:           LICENSE
tested-with:            GHC==7.8.4 GHC==7.10.2 GHC==7.10.3 GHC==8.0.1 GHC==8.0.2 GHC==8.2.1
build-type:             Simple
cabal-version:          >= 1.10

extra-source-files:
    .travis.yml
    changelog.md
    Hlint.hs
    nix/hpio.nix
    package.yaml
    README.md
    release.nix
    shell.nix
    stack-lts-2.yaml
    stack-lts-3.yaml
    stack-lts-6.yaml
    stack-lts-7.yaml
    stack.yaml

source-repository head
  type: git
  location: https://github.com/quixoftic/hpio

flag examples
  description: Build the example programs
  manual: True
  default: True

flag linux-bbone-tests
  description: Enable Linux BeagleBone-specific tests. Disabled by default. See test/System/GPIO/Linux/Sysfs/BeagleBoneSpec.hs for requirements. Run with "cabal test -flinux-bbone-tests".

  manual: True
  default: False

flag test-doctests
  description: Build doctests
  manual: True
  default: True

flag test-hlint
  description: Build hlint test
  manual: True
  default: True

library
  hs-source-dirs:
      src
  default-extensions: NoImplicitPrelude
  other-extensions: ConstraintKinds CPP DefaultSignatures DeriveDataTypeable DeriveGeneric ExistentialQuantification FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving InterruptibleFFI KindSignatures LambdaCase MultiParamTypeClasses OverloadedStrings PackageImports QuasiQuotes Safe TemplateHaskell Trustworthy TypeSynonymInstances UndecidableInstances
  cc-options: -Wall
  c-sources:
      src/System/GPIO/Linux/Sysfs/pollSysfs.c
  build-depends:
      QuickCheck >=2.7.6 && <2.11
    , base >=4.7.0 && <5
    , bytestring >=0.10.4 && <0.11
    , containers >=0.5.5 && <0.6
    , directory >=1.2.1 && <1.4
    , exceptions >=0.8.0 && <1
    , filepath >=1.3.0 && <1.5
    , monad-control ==1.*
    , monad-logger ==0.3.*
    , mtl >=2.1.3 && <2.3
    , protolude ==0.2.*
    , text >=1.2.0 && <1.3
    , transformers >=0.3.0 && <0.6
    , transformers-base ==0.4.*
    , unix >=2.7.0 && <2.8
    , unix-bytestring >=0.3.7 && <0.4
  if impl(ghc >= 8.0)
    ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates
  else
    ghc-options: -Wall -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates
  if impl(ghc >= 8.0)
    ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
  else
    build-depends:
        fail ==4.9.*
      , semigroups ==0.18.*
  exposed-modules:
      System.GPIO
      System.GPIO.Linux
      System.GPIO.Linux.Sysfs
      System.GPIO.Linux.Sysfs.IO
      System.GPIO.Linux.Sysfs.Mock
      System.GPIO.Linux.Sysfs.Mock.Internal
      System.GPIO.Linux.Sysfs.Monad
      System.GPIO.Linux.Sysfs.Types
      System.GPIO.Linux.Sysfs.Util
      System.GPIO.Monad
      System.GPIO.Tutorial
      System.GPIO.Types
  other-modules:
      Paths_hpio
  default-language: Haskell2010

executable hpio-example
  main-is: Gpio.hs
  hs-source-dirs:
      examples
  default-extensions: NoImplicitPrelude
  other-extensions: ConstraintKinds LambdaCase OverloadedStrings
  ghc-options: -threaded
  if impl(ghc >= 8.0)
    ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates
  else
    ghc-options: -Wall -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates
  if !(flag(examples))
    buildable: False
  else
    build-depends:
        async >=2.0.2 && <2.2
      , base
      , exceptions
      , hpio
      , mtl
      , optparse-applicative >=0.11.0 && <0.15
      , protolude
      , text
      , transformers
  if impl(ghc >= 8.0)
    ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances -fno-warn-redundant-constraints -fno-warn-redundant-constraints
  default-language: Haskell2010

executable hpio-reader-example
  main-is: GpioReader.hs
  hs-source-dirs:
      examples
  default-extensions: NoImplicitPrelude
  other-extensions: ConstraintKinds FlexibleContexts LambdaCase OverloadedStrings
  ghc-options: -threaded
  if impl(ghc >= 8.0)
    ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates
  else
    ghc-options: -Wall -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates
  if !(flag(examples))
    buildable: False
  else
    build-depends:
        async >=2.0.2 && <2.2
      , base
      , exceptions
      , hpio
      , mtl
      , optparse-applicative >=0.11.0 && <0.15
      , protolude
      , text
      , transformers
  if impl(ghc >= 8.0)
    ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances -fno-warn-redundant-constraints -fno-warn-redundant-constraints
  default-language: Haskell2010

executable hpio-sysfs-example
  main-is: Sysfs.hs
  hs-source-dirs:
      examples
  default-extensions: NoImplicitPrelude
  other-extensions: FlexibleContexts LambdaCase OverloadedStrings
  ghc-options: -threaded
  if impl(ghc >= 8.0)
    ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates
  else
    ghc-options: -Wall -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates
  if !(flag(examples))
    buildable: False
  else
    build-depends:
        async >=2.0.2 && <2.2
      , base
      , exceptions
      , hpio
      , mtl
      , optparse-applicative >=0.11.0 && <0.15
      , protolude
      , text
      , transformers
  if impl(ghc >= 8.0)
    ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances -fno-warn-redundant-constraints -fno-warn-redundant-constraints
  default-language: Haskell2010

test-suite doctest
  type: exitcode-stdio-1.0
  main-is: doctest.hs
  hs-source-dirs:
      test
  default-extensions: NoImplicitPrelude
  ghc-options: -threaded
  if impl(ghc >= 8.0)
    ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates
  else
    ghc-options: -Wall -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates
  if (!(flag(test-doctests))) || (impl(ghc <7.10))
    buildable: False
  else
    build-depends:
        base
      , doctest
      , filepath
      , protolude
  default-language: Haskell2010

test-suite hlint
  type: exitcode-stdio-1.0
  main-is: hlint.hs
  hs-source-dirs:
      test
  default-extensions: NoImplicitPrelude
  ghc-options: -w -threaded
  if impl(ghc >= 8.0)
    ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates
  else
    ghc-options: -Wall -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates
  if !(flag(test-hlint))
    buildable: False
  else
    build-depends:
        base
      , hlint
      , protolude
  default-language: Haskell2010

test-suite spec
  type: exitcode-stdio-1.0
  main-is: Spec.hs
  hs-source-dirs:
      test
  default-extensions: NoImplicitPrelude
  ghc-options: -threaded
  build-depends:
      QuickCheck
    , base
    , containers
    , directory
    , exceptions
    , filepath
    , hpio
    , hspec >=2.1.7
    , protolude
  if impl(ghc >= 8.0)
    ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates
  else
    ghc-options: -Wall -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates
  if flag(linux-bbone-tests)
    cpp-options: -DRUN_LINUX_BBONE_TESTS=1
  other-modules:
      Test.System.GPIO.Linux.Sysfs.LinuxBboneSpec
      Test.System.GPIO.Linux.Sysfs.MockInternalSpec
      Test.System.GPIO.Linux.Sysfs.MockSpec
      Test.System.GPIO.Linux.Sysfs.SysfsGpioMockSpec
      Test.System.GPIO.TypesSpec
      Paths_hpio
  default-language: Haskell2010