cabal-version: 2.2 name: streamly-fsevents version: 0.1.0 synopsis: File system event notification API description: File system event notification API homepage: https://streamly.composewell.com bug-reports: https://github.com/composewell/streamly/issues license: BSD-3-Clause license-file: LICENSE tested-with: GHC==8.6.5 , GHC==8.8.4 , GHC==8.10.7 , GHC==9.0.2 , GHC==9.2.8 , GHC==9.4.7 , GHC==9.6.3 , GHC==9.8.1 author: Composewell Technologies maintainer: streamly@composewell.com copyright: 2017 Composewell Technologies category: Streamly, Concurrency, Streaming, Dataflow, Pipes, Reactivity, List, Logic, Non-determinism, Parsing, Array, Time, Unicode, Filesystem, Network stability: Stable build-type: Configure extra-source-files: README.md configure configure.ac src/Streamly/Internal/FS/Event/Darwin.h src/config.h.in extra-doc-files: Changelog.md extra-tmp-files: config.log config.status autom4te.cache src/config.h source-repository head type: git location: https://github.com/composewell/streamly flag fusion-plugin description: Enable fusion plugin manual: True default: False flag internal-dev description: Development build manual: True default: False flag opt description: off=GHC default, on=-O2 manual: True default: True flag limit-build-mem description: Limits memory when building manual: True default: False ------------------------------------------------------------------------------- -- Common stanzas ------------------------------------------------------------------------------- common compile-options default-language: Haskell2010 if os(darwin) cpp-options: -DCABAL_OS_DARWIN if os(linux) cpp-options: -DCABAL_OS_LINUX if os(windows) cpp-options: -DCABAL_OS_WINDOWS if flag(internal-dev) cpp-options: -DDEVBUILD ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-deriving-strategies -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missing-local-signatures -Wno-missing-safe-haskell-mode -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-unsafe -Rghc-timing if impl(ghc >= 9.2) ghc-options: -Wno-missing-kind-signatures -Wno-redundant-bang-patterns -Wno-operator-whitespace if impl(ghc >= 9.8) ghc-options: -Wno-missing-role-annotations if flag(internal-dev) ghc-options: -Wmissed-specialisations -Wall-missed-specialisations if flag(limit-build-mem) ghc-options: +RTS -M1000M -RTS common default-extensions default-extensions: BangPatterns ConstraintKinds DeriveDataTypeable DeriveGeneric DeriveTraversable ExistentialQuantification FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving InstanceSigs KindSignatures MultiParamTypeClasses RankNTypes ScopedTypeVariables TupleSections TypeApplications TypeOperators -- Not GHC2021 CApiFFI CPP LambdaCase MagicHash RecordWildCards -- TypeFamilies -- required by IsHashMap type class -- MonoLocalBinds, enabled by TypeFamilies, causes performance -- regressions. Disable it. This must come after TypeFamilies, -- otherwise TypeFamilies will enable it again. -- NoMonoLocalBinds -- UndecidableInstances -- Does not show any perf impact -- UnboxedTuples -- interferes with (#.) common optimization-options if flag(opt) ghc-options: -O2 -fdicts-strict -fspec-constr-recursive=16 -fmax-worker-args=16 -- For this to be effective it must come after the -O2 option if flag(internal-dev) || !flag(opt) ghc-options: -fno-ignore-asserts if flag(fusion-plugin) ghc-options: -fplugin Fusion.Plugin common threading-options ghc-options: -threaded -with-rtsopts=-N -- We need optimization options here to optimize internal (non-inlined) -- versions of functions. Also, we have some benchmarking inspection tests -- part of the library when built with --benchmarks flag. Thos tests fail -- if we do not use optimization options here. It was observed that due to -- -O2 here some concurrent/nested benchmarks improved and others regressed. -- We can investigate a bit more here why the regression occurred. common lib-options import: compile-options, optimization-options, default-extensions common test-options import: lib-options , threading-options ghc-options: -rtsopts -fno-ignore-asserts hs-source-dirs: test build-depends: streamly-core , streamly , streamly-fsevents , base , hspec , directory , filepath , temporary if flag(fusion-plugin) build-depends: fusion-plugin >= 0.2 && < 0.3 ------------------------------------------------------------------------------- -- Library ------------------------------------------------------------------------------- library import: lib-options if impl(ghc >= 8.6) default-extensions: QuantifiedConstraints include-dirs: src hs-source-dirs: src if os(windows) exposed-modules: Streamly.Internal.FS.Event.Windows if os(darwin) include-dirs: src/Streamly/Internal c-sources: src/Streamly/Internal/FS/Event/Darwin.c exposed-modules: Streamly.Internal.FS.Event.Darwin if os(linux) exposed-modules: Streamly.Internal.FS.Event.Linux if os(linux) || os(darwin) || os(windows) exposed-modules: Streamly.FileSystem.Event Streamly.Internal.FS.Event build-depends: base >= 4.12 && < 4.22 , streamly-core == 0.3.0 if flag(fusion-plugin) build-depends: fusion-plugin >= 0.2 && < 0.3 -- For FS.Event module if os(linux) build-depends: directory >= 1.2.2 && < 1.4 , containers >= 0.6.0 && < 0.8 if os(windows) build-depends: Win32 >= 2.6 && < 2.15 , streamly == 0.11.0 if os(darwin) build-depends: mtl >= 2.2.2 && < 2.4 frameworks: Cocoa test-suite FileSystem.Event import: test-options type: exitcode-stdio-1.0 ghc-options: -main-is Streamly.Test.FileSystem.Event main-is: Streamly/Test/FileSystem/Event.hs other-modules: Streamly.Test.FileSystem.Event.Common if !((os(linux) && impl(ghc >= 9.4)) || os(darwin) || os(windows)) buildable: False test-suite FileSystem.Event.Darwin import: test-options type: exitcode-stdio-1.0 main-is: Streamly/Test/FileSystem/Event/Darwin.hs other-modules: Streamly.Test.FileSystem.Event.Common cpp-options: -DFILESYSTEM_EVENT_DARWIN ghc-options: -main-is Streamly.Test.FileSystem.Event.Darwin if !os(darwin) buildable: False test-suite FileSystem.Event.Linux import: test-options type: exitcode-stdio-1.0 main-is: Streamly/Test/FileSystem/Event/Linux.hs other-modules: Streamly.Test.FileSystem.Event.Common cpp-options: -DFILESYSTEM_EVENT_LINUX ghc-options: -main-is Streamly.Test.FileSystem.Event.Linux if impl(ghc < 9.4) || !os(linux) buildable: False test-suite FileSystem.Event.Windows import: test-options type: exitcode-stdio-1.0 main-is: Streamly/Test/FileSystem/Event/Windows.hs other-modules: Streamly.Test.FileSystem.Event.Common cpp-options: -DFILESYSTEM_EVENT_WINDOWS ghc-options: -main-is Streamly.Test.FileSystem.Event.Windows if !os(windows) buildable: False