name:                base-feature-macros
version:             0.1.0.1
synopsis:            Semantic CPP feature macros for base
license:             BSD3
license-file:        LICENSE
author:              Herbert Valerio Riedel
maintainer:          hvr@gnu.org
category:            Development
build-type:          Simple
cabal-version:       >=1.10
bug-reports:         https://github.com/hvr/base-feature-macros/issues
description:         This provides a set of feature macros describing features of @base@ in a semantic way.
                     .
                     See \<</package/base-feature-macros/src/base-feature-macros.h base-feature-macros.h>\> for the set of currently provided macros.
                     .
                     In order to use the CPP header provided by this package, add this package as a dependency to your @.cabal@ file, i.e.
                     .
                     > build-depends: base-feature-macros: >= 0.1 && < 0.2
                     .
                     while making sure that the version specified as lower bound defines the feature-macros your code tests for. This is particularly important as CPP will implicitly treat undefined CPP macros as having the value @0@. See also GNU CPP/CC's @-Wundef@ warning to detect such errors;
                     or starting with GHC 8.2, <https://downloads.haskell.org/~ghc/master/users-guide/using-warnings.html#ghc-flag--Wcpp-undef -Wcpp-undef> can be used:
                     .
                     > if impl(ghc >= 8.2)
                     >     ghc-options: -Wcpp-undef
                     .
                     Then in your code, you can include and use the @\<base-feature-macros.h\>@ header like so
                     .
                     > module M where
                     >
                     > #include <base-feature-macros.h>
                     >
                     > #if !HAVE_FOLDABLE_TRAVERSABLE_IN_PRELUDE
                     > import Data.Foldable (Foldable (..))
                     > import Prelude       hiding (foldr, foldr1)
                     > #endif
                     > #if !HAVE_MONOID_IN_PRELUDE
                     > import Data.Monoid hiding ((<>))
                     > #endif
                     .
                     This package is inspired by the blogpost
                     <https://github.com/quchen/articles/blob/master/haskell-cpp-compatibility.md "Make macros mean something – readable backwards compatibility with CPP">.

extra-source-files:  ChangeLog.md

source-repository head
  type: git
  location: https://github.com/hvr/base-feature-macros.git

library
  build-depends:     base >=4.3 && <4.11
  default-language:  Haskell2010

  install-includes:  base-feature-macros.h