cabal-version: 3.0

name:           thread-utils-context
version:        0.4.0.0
synopsis:       Garbage-collected thread local storage
description:    Please see the README on GitHub at <https://github.com/iand675/thread-utils-context#readme>
category:       Concurrency
homepage:       https://github.com/iand675/thread-utils#readme
bug-reports:    https://github.com/iand675/thread-utils/issues
author:         Ian Duncan
maintainer:     ian@iankduncan.com
copyright:      2023-2026 Ian Duncan
license:        BSD-3-Clause
license-file:   LICENSE
build-type:     Simple
extra-source-files:
    README.md
    ChangeLog.md

source-repository head
  type: git
  location: https://github.com/iand675/thread-utils

flag debug
  description: Whether to enable some additional hooks to debug issues
  manual: True
  default: False

library
  exposed-modules:
      Control.Concurrent.Thread.Storage
  other-modules:
      Paths_thread_utils_context
  autogen-modules:
      Paths_thread_utils_context
  hs-source-dirs:
      src
  build-depends:
      base >=4.7 && <5
    , ghc-prim
    , thread-utils-finalizers
  default-language: Haskell2010
  if flag(debug)
    cpp-options: -DDEBUG_HOOKS
  cmm-sources: cbits/threadId.cmm
  c-sources:   cbits/simd_search.c
  cc-options:  -O2

benchmark thread-utils-context-bench
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs: bench
  ghc-options: -threaded -rtsopts -with-rtsopts=-N -O2
  build-depends:
      base >=4.7 && <5
    , thread-utils-context
  default-language: Haskell2010

test-suite thread-utils-context-test
  type: exitcode-stdio-1.0
  main-is: Spec.hs
  other-modules:
      Paths_thread_utils_context
  autogen-modules:
      Paths_thread_utils_context
  hs-source-dirs:
      test
  ghc-options: -threaded -rtsopts -with-rtsopts=-N
  build-depends:
      base >=4.7 && <5
    , ghc-prim
    , hspec
    , hspec-expectations
    , thread-utils-context
    , thread-utils-finalizers
  default-language: Haskell2010
