name:                network-uri-flag
version:             0.1
synopsis:            Pseudo-package encapsulating flag(network-uri) Cabal boilerplate
license:             BSD3
license-file:        LICENSE
author:              Herbert Valerio Riedel
maintainer:          hvr@gnu.org
category:            Network
build-type:          Simple
extra-source-files:  ChangeLog.md
cabal-version:       >=1.10
description:
  This empty package does not provide any modules; its sole purpose is to
  provide the @network-uri@ Cabal flag logic below so you don't have to include
  that boilerplate in your @.cabal@ file.
  .
  > flag network-uri
  >   description: Get Network.URI from the network-uri package
  >   default: True
  >
  > library
  >   if flag(network-uri)
  >     build-depends: network-uri >= 2.6, network >= 2.6
  >   else
  >     build-depends: network-uri < 2.6, network < 2.6
  .
  This avoids combining
  @network-uri >= 2.6@ with @network < 2.6@ which both export a
  name-clashing @Network.URI@ module, because
  in network-2.6 the @Network.URI@ module was split off from the
  network package into network-uri-2.6.
  .
  In other words, the logic above makes sure that the @Network.URI@ module
  is provided by either @network-uri@ or by @network@
  (in the <https://en.wikipedia.org/wiki/Exclusive_or XOR> sense).
  .
  In order to benefit from this module, simply include it in your
  @build-depends@ declaration alongside @network@ and @network-uri@.
  .
  >   build-depends:
  >     network >= 2.5 && < 2.7,
  >     network-uri >= 2.7 && < 2.8,
  >     network-uri-flag == 0.1.*
  .
  /NOTE: It's almost always an error to list this package if network and network-uri aren't both listed as well!/

flag network-uri
  description: Get Network.URI from the network-uri package
  default: True

library
  default-language:    Haskell2010

  if flag(network-uri)
    build-depends: network-uri >= 2.6, network >= 2.6
  else
    build-depends: network-uri < 2.6, network < 2.6