cabal-version:  1.18
name:           unix-compat
version:        0.7.4
synopsis:       Portable POSIX-compatibility layer.
description:    This package provides portable implementations of parts
                of the unix package. This package re-exports the unix
                package when available. When it isn't available,
                portable implementations are used.

homepage:       https://github.com/haskell-pkg-janitors/unix-compat
license:        BSD3
license-file:   LICENSE
author:         Björn Bringert, Duncan Coutts, Jacob Stanley, Bryan O'Sullivan
maintainer:     https://github.com/haskell-pkg-janitors
category:       System
build-type:     Simple

tested-with:
  GHC == 9.12.2
  GHC == 9.10.1
  GHC == 9.8.4
  GHC == 9.6.7
  GHC == 9.4.8
  GHC == 9.2.8
  GHC == 9.0.2
  GHC == 8.10.7
  GHC == 8.8.4
  GHC == 8.6.5
  GHC == 8.4.4
  GHC == 8.2.2
  GHC == 8.0.2

extra-doc-files:
  CHANGELOG.md

source-repository head
  type:     git
  location: https://github.com/haskell-pkg-janitors/unix-compat.git

Library
  hs-source-dirs: src

  exposed-modules:
    System.PosixCompat
    System.PosixCompat.Extensions
    System.PosixCompat.Files
    System.PosixCompat.Process
    System.PosixCompat.Temp
    System.PosixCompat.Time
    System.PosixCompat.Types
    System.PosixCompat.Unistd

  build-depends: base >= 4.9 && < 5

  if os(windows)
    c-sources:
      cbits/HsUname.c
      cbits/mktemp.c

    extra-libraries: msvcrt
    build-depends: Win32     >= 2.5.0.0  && < 3
    build-depends: directory >= 1.3.1    && < 1.4
    build-depends: filepath  >= 1.4.1.0  && < 1.6
    build-depends: time      >= 1.6.0.1  && < 1.15

    other-modules:
      System.PosixCompat.Internal.Time

  else
    build-depends: unix      >= 2.7.2.0  && < 2.9
    if arch(wasm32)
      c-sources: cbits/mktemp.c
    else
      include-dirs: include
      includes: HsUnixCompat.h
      install-includes: HsUnixCompat.h
      c-sources: cbits/HsUnixCompat.c
    if os(solaris)
      cc-options: -DSOLARIS

  default-language: Haskell2010
  ghc-options:
    -Wall
    -Wcompat

Test-Suite unix-compat-testsuite
  type: exitcode-stdio-1.0
  hs-source-dirs: tests
  main-is: main.hs

  other-modules:
     MkstempSpec
     LinksSpec
     ProcessSpec

  build-depends:
      unix-compat
    , base
    , monad-parallel
    , hspec >= 2.5.5
    , HUnit
    , directory >= 1.3.1.0
        -- directory-1.3.1.0 adds createFileLink
    , extra
    , temporary

  default-language: Haskell2010
  ghc-options:
    -Wall
    -Wcompat