packages feed

eventlog-socket-0.1.2.0: eventlog-socket.cabal

cabal-version:      2.2
name:               eventlog-socket
version:            0.1.2.0
synopsis:           Stream GHC eventlog events to external processes.
description:
  The @eventlog-socket@ package lets you stream the GHC eventlog over a socket in realtime.
  This package exports both a Haskell API (from "GHC.Eventlog.Socket") and a C API (from [@eventlog_socket.h@](./docs/c/index.html)).
  For most uses, the Haskell API is sufficient.
  However, if you want to instrument your application from a C main or install custom command handlers you need the C API.

license:            BSD-3-Clause
license-file:       LICENSE
author:             Eventlog Socket Contributors
maintainer:         wen@well-typed.com
copyright:          (c) 2018-2026 Well-Typed
category:           System
build-type:         Simple
tested-with:
  GHC ==9.2.8
   || ==9.4.8
   || ==9.6.7
   || ==9.8.4
   || ==9.10.2
   || ==9.12.2

extra-source-files:
  cbits/eventlog_socket/control.c
  cbits/eventlog_socket/control.h
  cbits/eventlog_socket/debug.h
  cbits/eventlog_socket/error.c
  cbits/eventlog_socket/error.h
  cbits/eventlog_socket/init_state.h
  cbits/eventlog_socket/macros.h
  cbits/eventlog_socket/poll.h
  cbits/eventlog_socket/string.c
  cbits/eventlog_socket/string.h
  cbits/eventlog_socket/worker.c
  cbits/eventlog_socket/worker.h
  cbits/eventlog_socket/write_buffer.c
  cbits/eventlog_socket/write_buffer.h
  cbits/eventlog_socket.c
  include/eventlog_socket.h

extra-doc-files:
  CHANGELOG.md
  README.md

source-repository head
  type:     git
  location: https://github.com/well-typed/eventlog-socket.git
  subdir:   eventlog-socket

source-repository this
  type:     git
  location: https://github.com/well-typed/eventlog-socket.git
  tag:      eventlog-socket-0.1.2.0
  subdir:   eventlog-socket

flag debug
  description: Enable debug logging.
  default:     False
  manual:      True

flag debug-verbosity-trace
  description: Set the debug verbosity to TRACE.
  default:     False
  manual:      True

flag debug-verbosity-quiet
  description: Set the debug verbosity to QUIET.
  default:     False
  manual:      True

flag control
  description: Enable control commands.
  default:     False
  manual:      True

flag optimise-heavily
  description: Pass @-O2@ to the C compiler.
  default:     False
  manual:      True

library
  exposed-modules:    GHC.Eventlog.Socket
  other-extensions:
    CApiFFI
    GeneralizedNewtypeDeriving
    PatternSynonyms
    TypeApplications

  -- Use base lower bound as proxy for GHC >= 8.10
  build-depends:      base >=4.14 && <5
  build-tool-depends: hsc2hs:hsc2hs
  hs-source-dirs:     src
  cc-options:         -std=c11 -D_POSIX_C_SOURCE=200112L
  default-language:   Haskell2010
  default-extensions: LambdaCase
  c-sources:
    cbits/eventlog_socket/error.c
    cbits/eventlog_socket/string.c
    cbits/eventlog_socket/worker.c
    cbits/eventlog_socket/write_buffer.c
    cbits/eventlog_socket.c

  include-dirs:       cbits include
  install-includes:   eventlog_socket.h

  if flag(debug)
    -- 2025-12-17:
    -- cpp-options are not passed to C code, see:
    -- https://github.com/haskell/cabal/issues/7635
    cc-options: -DDEBUG=1

  else
    cc-options: -DNDEBUG=1

  if flag(debug-verbosity-trace)
    -- 2025-12-17:
    -- cpp-options are not passed to C code, see:
    -- https://github.com/haskell/cabal/issues/7635
    cc-options: -DDEBUG_VERBOSITY=5

  if flag(debug-verbosity-quiet)
    -- 2025-12-17:
    -- cpp-options are not passed to C code, see:
    -- https://github.com/haskell/cabal/issues/7635
    cc-options: -DDEBUG_VERBOSITY=0

  if flag(control)
    -- 2025-12-17:
    -- cpp-options are not passed to C code, see:
    -- https://github.com/haskell/cabal/issues/7635
    cc-options: -DEVENTLOG_SOCKET_FEATURE_CONTROL=1
    c-sources:  cbits/eventlog_socket/control.c

  if flag(optimise-heavily)
    cc-options: -O2