cabal-version: 3.0

name: quasar-wayland
version: 0.1.0.0
category: Wayland, User Interfaces
description: An implementation of the Wayland protocol.
author: Jens Nolte
maintainer: Jens Nolte
copyright: 2021 Jens Nolte
license: BSD-2-Clause
license-file: LICENSE
build-type: Simple
extra-source-files:
  README.md

source-repository head
  type: git
  location: https://git.c3pb.de/jens/quasar-wayland.git

common shared-properties
  default-extensions:
    AllowAmbiguousTypes
    BangPatterns
    BlockArguments
    ConstraintKinds
    DataKinds
    DefaultSignatures
    DeriveAnyClass
    DeriveGeneric
    DerivingStrategies
    DuplicateRecordFields
    ExistentialQuantification
    FlexibleContexts
    FlexibleInstances
    FunctionalDependencies
    GADTs
    GeneralizedNewtypeDeriving
    ImportQualifiedPost
    InstanceSigs
    LambdaCase
    MultiParamTypeClasses
    NamedFieldPuns
    NoImplicitPrelude
    OverloadedStrings
    PolyKinds
    RankNTypes
    ScopedTypeVariables
    StandaloneDeriving
    TemplateHaskell
    TupleSections
    TypeApplications
    TypeFamilies
    TypeOperators
    ViewPatterns
    -- Required for the record-dot-preprocessor plugin
    DuplicateRecordFields
    TypeApplications
    FlexibleContexts
    DataKinds
    MultiParamTypeClasses
    TypeSynonymInstances
    FlexibleInstances
    UndecidableInstances
    GADTs
  default-language: Haskell2010
  ghc-options:
    -fplugin=RecordDotPreprocessor
    -Weverything
    -Wno-all-missed-specialisations
    -Wno-missing-safe-haskell-mode
    -Wno-missing-import-lists
    -Wno-unsafe
    -Werror=incomplete-patterns
    -Werror=missing-fields
    -Werror=missing-methods

common shared-executable-properties
  import: shared-properties
  ghc-options:
    -threaded
    -rtsopts "-with-rtsopts=-N -I0"

library
  import: shared-properties
  exposed-modules:
    Quasar.Wayland.Client
    Quasar.Wayland.Connection
    Quasar.Wayland.Protocol.Core
    Quasar.Wayland.Protocol.Generated
    Quasar.Wayland.Protocol.TH
  build-depends:
    base >=4.7 && <5,
    binary,
    bytestring,
    exceptions,
    filepath,
    mtl,
    network,
    quasar,
    template-haskell,
    unordered-containers,
    stm,
    xml,
    -- required for record-dot-preprocessor
    record-dot-preprocessor,
    record-hasfield,
  hs-source-dirs:
    src

executable quasar-wayland-example
  import: shared-executable-properties
  build-depends:
    quasar,
    quasar-wayland,
    -- required for record-dot-preprocessor
    record-dot-preprocessor,
    record-hasfield,
  main-is: Main.hs
  hs-source-dirs:
    example

test-suite quasar-wayland-test
  import: shared-executable-properties
  type: exitcode-stdio-1.0
  build-depends:
    base >=4.7 && <5,
    --QuickCheck,
    hspec,
    --quasar-wayland,
    -- required for record-dot-preprocessor
    record-dot-preprocessor,
    record-hasfield,
  main-is: Spec.hs
  other-modules:
    --Quasar.TemplateSpec
  hs-source-dirs:
    test