cabal-version:       2.2
name:                network-can
version:             0.1.0.0
synopsis:            CAN bus networking
description:         Talk to CAN buses using Linux SocketCAN and SLCAN
homepage:            https://github.com/DistRap/network-can
license:             BSD-3-Clause
license-file:        LICENSE
author:              sorki
maintainer:          srk@48.io
copyright:           2024 sorki
category:            Network
build-type:          Simple

extra-source-files:
    LICENSE
    README.md

extra-doc-files:
    CHANGELOG.md

flag build-apps
  default:
    False
  description:
    Build example applications

library
  ghc-options:         -Wall
  hs-source-dirs:      src
  exposed-modules:     Network.CAN
                       Network.CAN.Class
                       Network.CAN.Types
                       Network.SLCAN
                       Network.SLCAN.Builder
                       Network.SLCAN.Parser
                       Network.SLCAN.Types
                       Network.SocketCAN
                       Network.SocketCAN.Bindings
                       Network.SocketCAN.Example
                       Network.SocketCAN.LowLevel
                       Network.SocketCAN.Translate

  build-depends:       base >= 4.7 && < 5
                     , attoparsec >= 0.14
                     , bytestring
                     , containers
                     , data-default-class
                     , mtl
                     , network >= 3.1
                     , QuickCheck
                     , transformers
                     , unliftio

  build-tool-depends:  hsc2hs:hsc2hs
  default-language:    Haskell2010

test-suite pure
  type:                exitcode-stdio-1.0
  ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N
  hs-source-dirs:      test
  main-is:             Spec.hs
  other-modules:       Samples
                       SLCANSpec
                       SocketCANSpec
  build-tool-depends:  hspec-discover:hspec-discover
  build-depends:       base >= 4.7 && < 5
                     , hspec
                     , network-can
  default-language:    Haskell2010

executable hcandump
  if !flag(build-apps)
    buildable: False
  build-depends:       base >=4.7 && <5
                     , network-can
  default-language:    Haskell2010
  main-is:             CANDump.hs
  hs-source-dirs:      app
  ghc-options:         -Wall -threaded -rtsopts "-with-rtsopts -N"

executable hcanbridge
  if !flag(build-apps)
    buildable: False
  build-depends:       base >=4.7 && <5
                     , network-can
                     , data-default-class
                     , mtl
                     , serialport >= 0.5.5
                     , unliftio
  default-language:    Haskell2010
  main-is:             CANBridge.hs
  hs-source-dirs:      app
  ghc-options:         -Wall -threaded -rtsopts "-with-rtsopts -N"

executable hslcanserial
  if !flag(build-apps)
    buildable: False
  build-depends:       base >=4.7 && <5
                     , network-can
                     , data-default-class
                     , serialport >= 0.5.5
  default-language:    Haskell2010
  main-is:             SLCANSerial.hs
  hs-source-dirs:      app
  ghc-options:         -Wall -threaded -rtsopts "-with-rtsopts -N"

executable hslcanudp
  if !flag(build-apps)
    buildable: False
  build-depends:       base >=4.7 && <5
                     , network
                     , network-can
                     , data-default-class
  default-language:    Haskell2010
  main-is:             SLCANUDP.hs
  hs-source-dirs:      app
  ghc-options:         -Wall -threaded -rtsopts "-with-rtsopts -N"

source-repository head
  type:     git
  location: https://github.com/DistRap/network-can