packages feed

hscdio-0.1.0.0: hscdio.cabal

cabal-version:      2.4

name:               hscdio
author:             Sam May
category:           Sound
synopsis:           Haskell bindings to the libcdio disc-reading library.

version:            0.1.0.0
stability:          provisional
maintainer:         sam@eitilt.life

copyright:          (c) 2018-2021 Sam May
license:            GPL-3.0-or-later
license-file:       LICENSE
extra-source-files: CHANGELOG.md
                  , FEATURES
                  , README.md
                  , ROADMAP.md
                  , include/cdio/compat/*.h
                    -- The test suites will run relative to the source directory
                  , test/datafiles/**/*.bin
                  , test/datafiles/**/*.cdtext
                  , test/datafiles/**/*.cue
                  , test/datafiles/**/*.nrg
                  , test/datafiles/**/*.toc
                  , test/datafiles/**/*.txt

homepage:           https://ag.eitilt.life/hscdio
bug-reports:        mailto:ag@eitilt.life

description:
    The C library "libcdio" provides unified functions for reading data from
    CDs and disc images across an impressive range of operating sysems.  This
    package provides Haskell bindings for those functions, in both a format
    familiar to anyone who has used the original library, and a format more
    native to the Haskell ecosystem.

build-type:         Simple
tested-with:        GHC ==8.0.2, GHC ==8.2.2, GHC ==8.4.4, GHC ==8.6.5, GHC ==8.8.4, GHC ==8.10.4


source-repository head
  type:             darcs
  location:         https://darcs.eitilt.life/hscdio

source-repository this
  type:             darcs
  location:         https://darcs.eitilt.life/hscdio
  tag:              v/0.1.0.0.


source-repository head
  type:             darcs
  location:         https://hub.darcs.net/ag.eitilt/hscdio

source-repository this
  type:             darcs
  location:         https://hub.darcs.net/ag.eitilt/hscdio
  tag:              v/0.1.0.0.


flag dev
  description:      Trigger stricter behaviour for development
  default:          False
  manual:           True

flag tools
  description:      Build developers' aids
  default:          False
  manual:           True


common flags-ghc
  if flag(dev)
    ghc-options:    -Weverything
                    -Wno-unrecognised-pragmas
                    -Wno-implicit-prelude -Wno-missing-import-lists
                    -Wno-missing-exported-signatures -Wno-missing-local-signatures
                    -Wno-missed-specialisations -Wno-all-missed-specialisations
                    -Wno-safe -Wno-unsafe
                    -Wno-monomorphism-restriction
    if impl(ghc >= 8.4.1)
      ghc-options:  -Wno-missing-export-lists
    if impl(ghc >= 8.8.1)
      ghc-options:  -Wno-missing-deriving-strategies
    if impl(ghc >= 8.10.1)
      ghc-options:  -Wno-missing-safe-haskell-mode
                    -Wno-prepositive-qualified-module
  else
    ghc-options:    -Wno-unrecognised-pragmas


library
  import:           flags-ghc
  hs-source-dirs:   src
  exposed-modules:  Data.Text.Encoding.MsJIS
                  , Foreign.Libcdio.CdText
                  , Foreign.Libcdio.CdTypes
                  , Foreign.Libcdio.Device
                  , Foreign.Libcdio.Disc
                  , Foreign.Libcdio.Logging
                  , Foreign.Libcdio.Read
                  , Foreign.Libcdio.Sector
                  , Foreign.Libcdio.Track
                  , Foreign.Libcdio.Types
                  , Foreign.Libcdio.Util
                  , Foreign.Libcdio.Version
                  , Foreign.Libcdio
                  , Sound.Libcdio
                  , Sound.Libcdio.Device
                  , Sound.Libcdio.Logging
                  , Sound.Libcdio.Read.CdText
                  , Sound.Libcdio.Read.Data
                  , Sound.Libcdio.Read.Filesystem
                  , Sound.Libcdio.Track
                  , Sound.Libcdio.Types
  other-modules:    Foreign.Libcdio.Marshal
                  , Foreign.Libcdio.CdText.Binary
                  , Foreign.Libcdio.Types.Enums
                  , Foreign.Libcdio.Types.Internal
                  , Foreign.Libcdio.Types.Offsets
                  , Sound.Libcdio.Common
                  , Sound.Libcdio.Types.Cdio
  -- Be sure to keep pkg/gentoo/dev-haskell/*.ebuild up to date
  build-depends:    base >=4.9 && <4.15
                  , bitwise >=0.1 && <1.1
                  , bytestring >=0.9 && <0.12
                  , containers <0.7
                  , mtl <2.3
                  , text >=0.3 && <1.3
                  , vector <0.13
  build-tool-depends: c2hs:c2hs >=0.26 && <0.29
  include-dirs:     include
  includes:         cdio/cdtext.h
                  , cdio/cdio.h
                  , cdio/cd_types.h
                  , cdio/device.h
                  , cdio/disc.h
                  , cdio/memory.h
                  , cdio/mmc.h
                  , cdio/track.h
                  , cdio/types.h
                  , cdio/sector.h
                  , cdio/util.h
                  , cdio/compat/cdtext.h
                  , cdio/compat/cd_types.h
                  , cdio/compat/cycle_break.h
                  , cdio/compat/device.h
                  , cdio/compat/disc.h
                  , cdio/compat/logging.h
                  , cdio/compat/mmc.h
                  , cdio/compat/read.h
                  , cdio/compat/sector.h
                  , cdio/compat/track.h
                  , cdio/compat/types.h
                  , cdio/compat/version.h
                  , stdint.h
                  , stdlib.h
                  , string.h
                  , unistd.h
  c-sources:        src/c/cdio/compat/cdtext.c
                  , src/c/cdio/compat/device.c
                  , src/c/cdio/compat/disc.c
                  , src/c/cdio/compat/logging.c
                  , src/c/cdio/compat/read.c
                  , src/c/cdio/compat/sector.c
                  , src/c/cdio/compat/track.c
                  , src/c/cdio/compat/types.c
                  , src/c/cdio/compat/version.c
  extra-libraries:  cdio
  default-language: Haskell2010
  other-extensions: CPP
                  , ForeignFunctionInterface
                  , MultiParamTypeClasses
                  , OverloadedStrings
                  , Trustworthy

test-suite property
  import:           flags-ghc
  type:             exitcode-stdio-1.0
  hs-source-dirs:   test
  if impl(ghc < 8.6.1)
    -- hedgehog-classes requires base>=4.12.0.0
    buildable:      False
  main-is:          Test/Libcdio/Property.hs
  other-modules:    Data.Text.Encoding.MsJIS.Test.Classes
                  , Foreign.Libcdio.CdText.Test.Classes
                  , Foreign.Libcdio.CdTypes.Test.Classes
                  , Foreign.Libcdio.Device.Test.Classes
                  , Foreign.Libcdio.Disc.Test.Classes
                  , Foreign.Libcdio.Logging.Test.Classes
                  , Foreign.Libcdio.Logging.Test.Property
                  , Foreign.Libcdio.Read.Test.Classes
                  , Foreign.Libcdio.Sector.Test.Classes
                  , Foreign.Libcdio.Track.Test.Classes
                  , Foreign.Libcdio.Util.Test.Classes
                  , Sound.Libcdio.Cdio.Test.Classes
                  , Sound.Libcdio.CdText.Test.Classes
                  , Test.Libcdio.Property.Common
  build-depends:    base
                  , hscdio
                  , hedgehog <1.1
                  , hedgehog-classes >=0.1.1.0 && <0.3
                  , text
  default-language: Haskell2010
  other-extensions: CPP
                  , OverloadedStrings

test-suite unit
  import:           flags-ghc
  type:             exitcode-stdio-1.0
  hs-source-dirs:   test
  main-is:          Test/Libcdio/Unit.hs
  other-modules:    Paths_hscdio
                  , Data.Text.Encoding.MsJIS.Test.Unit
                  , Test.Libcdio.Unit.Common
                  , Test.Libcdio.Unit.Foreign.CarolusRex
                  , Test.Libcdio.Unit.Foreign.DeeperDance
                  , Test.Libcdio.Unit.Foreign.RevolutionDays
                  , Test.Libcdio.Unit.Sound.Common
                  , Test.Libcdio.Unit.Sound.CarolusRex
                  , Test.Libcdio.Unit.Sound.DeeperDance
                  , Test.Libcdio.Unit.Sound.RevolutionDays
  autogen-modules:  Paths_hscdio
  build-depends:    base
                  , hscdio
                  , HUnit >=1.1 && <1.7
                  , base-compat >= 0.9.3 && <0.12
                  , bytestring
                  , text
  default-language: Haskell2010

test-suite upstream
  import:           flags-ghc
  type:             exitcode-stdio-1.0
  hs-source-dirs:   test
  main-is:          Test/Libcdio/Upstream.hs
  other-modules:    Paths_hscdio
                  , Test.Libcdio.Upstream.Foreign.Common
                  , Test.Libcdio.Upstream.Foreign.BinCue
                  , Test.Libcdio.Upstream.Foreign.CdrDao
                  , Test.Libcdio.Upstream.Foreign.FreeBsd
                  , Test.Libcdio.Upstream.Foreign.Linux
                  , Test.Libcdio.Upstream.Foreign.Nrg
                  , Test.Libcdio.Upstream.Foreign.OsX
                  , Test.Libcdio.Upstream.Foreign.Pregap
                  , Test.Libcdio.Upstream.Foreign.Solaris
                  , Test.Libcdio.Upstream.Foreign.SizeOf
                  , Test.Libcdio.Upstream.Foreign.Track
                  , Test.Libcdio.Upstream.Foreign.Win32
                  , Test.Libcdio.Upstream.Sound.Common
                  , Test.Libcdio.Upstream.Sound.Image
                  , Test.Libcdio.Upstream.Sound.System
                  , Test.Libcdio.Upstream.Sound.Track
  autogen-modules:  Paths_hscdio
  build-depends:    base
                  , hscdio
                  , HUnit >=1.1 && <1.7
                  , base-compat >= 0.9.3 && <0.12
                  , directory >=1.2.3 && <1.4
                  , text
  default-language: Haskell2010
  other-extensions: CPP
                  , OverloadedStrings

executable pack-cdtext
  import:           flags-ghc
  hs-source-dirs:   bin
  if !flag(tools)
    buildable:      False
  main-is:          Sound/Libcdio/PackCdText.hs
  build-depends:    base
                  , hscdio
                  , bytestring
                  , optparse-applicative
  default-language: Haskell2010
  other-extensions: CPP