cabal-version:      1.18
name:               network
version:            3.2.8.0
license:            BSD3
license-file:       LICENSE
maintainer:         Kazu Yamamoto, Tamar Christina

tested-with:
    GHC == 9.8.2
    GHC == 9.6.4
    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

homepage:           https://github.com/haskell/network
bug-reports:        https://github.com/haskell/network/issues
synopsis:           Low-level networking interface
description:
    This package provides a low-level networking interface.
    .
    === High-Level Packages
    Other packages provide higher level interfaces:
    .
    * connection
    * hookup
    * network-simple
    .
    === Extended Packages
    @network@ seeks to provide a cross-platform core for networking. As such some
    APIs live in extended libraries. Packages in the @network@ ecosystem are
    often prefixed with @network-@.
    .
    ==== @network-bsd@
    In @network-3.0.0.0@ the @Network.BSD@ module was split off into its own
    package, @network-bsd-3.0.0.0@.
    .
    ==== @network-uri@
    In @network-2.6@ the @Network.URI@ module was split off into its own package,
    @network-uri-2.6@. If you're using the @Network.URI@ module you can
    automatically get it from the right package by adding this to your @.cabal@
    file:
    .
    > library
    >   build-depends: network-uri-flag

category:           Network
build-type:         Configure

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

extra-source-files:
    examples/*.hs
    tests/*.hs
    config.guess
    config.sub
    install-sh
    configure.ac
    configure
    include/HsNetworkConfig.h.in
    include/HsNet.h
    include/HsNetDef.h
    include/afunix_compat.h
    cbits/asyncAccept.c
    cbits/initWinSock.c
    cbits/winSockErr.c
    cbits/cmsg.c

extra-tmp-files:
    config.log
    config.status
    autom4te.cache
    network.buildinfo
    include/HsNetworkConfig.h

source-repository head
    type:     git
    location: https://github.com/haskell/network.git

flag devel
    description: using tests for developers
    default:     False

library
    exposed-modules:
        Network.Socket
        Network.Socket.Address
        Network.Socket.ByteString
        Network.Socket.ByteString.Lazy
        Network.Socket.Internal

    build-tools:      hsc2hs >=0
    c-sources:
        cbits/HsNet.c
        cbits/cmsg.c

    other-modules:
        Network.Socket.Buffer
        Network.Socket.ByteString.IO
        Network.Socket.ByteString.Internal
        Network.Socket.Cbits
        Network.Socket.Fcntl
        Network.Socket.Flag
        Network.Socket.Handle
        Network.Socket.If
        Network.Socket.Imports
        Network.Socket.Info
        Network.Socket.Name
        Network.Socket.Options
        Network.Socket.ReadShow
        Network.Socket.STM
        Network.Socket.Shutdown
        Network.Socket.SockAddr
        Network.Socket.Syscall
        Network.Socket.Types
        Network.Socket.Unix

    default-language: Haskell2010
    include-dirs:     include
    install-includes: HsNet.h HsNetDef.h alignment.h win32defs.h
    if os(windows)
        install-includes: afunix_compat.h

    ghc-options:      -Wall -fwarn-tabs
    build-depends:
        base >=4.9 && <5,
        bytestring >=0.10,
        deepseq,
        directory,
        stm

    if !os(windows)
        other-modules:
            Network.Socket.ByteString.Lazy.Posix
            Network.Socket.Posix.Cmsg
            Network.Socket.Posix.CmsgHdr
            Network.Socket.Posix.IOVec
            Network.Socket.Posix.MsgHdr

    if os(solaris)
        cpp-options:     -D__EXTENSIONS__ -D_XOPEN_SOURCE=500
        cc-options:      -D__EXTENSIONS__ -D_XOPEN_SOURCE=500
        extra-libraries:
            nsl
            socket

    if os(windows)
        c-sources:
            cbits/initWinSock.c
            cbits/winSockErr.c
            cbits/asyncAccept.c

        other-modules:
            Network.Socket.ByteString.Lazy.Windows
            Network.Socket.Win32.Cmsg
            Network.Socket.Win32.CmsgHdr
            Network.Socket.Win32.WSABuf
            Network.Socket.Win32.MsgHdr

        extra-libraries:
            ws2_32
            iphlpapi
            mswsock

        if impl(ghc >=7.10)
            cpp-options: -D_WIN32_WINNT=0x0600
            cc-options:  -D_WIN32_WINNT=0x0600

        build-depends:
            temporary

    if impl(ghc >=8)
        default-extensions: Strict StrictData

test-suite spec
    type:             exitcode-stdio-1.0
    main-is:          Spec.hs
    build-tools:      hspec-discover >=2.6
    hs-source-dirs:   tests
    other-modules:
        Network.Test.Common
        Network.SocketSpec
        Network.Socket.ByteStringSpec
        Network.Socket.ByteString.LazySpec

    default-language: Haskell2010
    ghc-options:      -Wall -threaded
    build-depends:
        base,
        bytestring,
        directory,
        HUnit,
        network,
        temporary,
        hspec >=2.6,
        QuickCheck

    if flag(devel)
        cpp-options: -DDEVELOPMENT

    if impl(ghc >=8)
        default-extensions: Strict StrictData

    if os(windows)
        cpp-options: -D_WIN32
