base-feature-macros: Semantic CPP feature macros for base
This provides a set of feature macros describing features of base in a semantic way.
See <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, -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 "Make macros mean something – readable backwards compatibility with CPP".
Downloads
- base-feature-macros-0.1.0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
| Versions [RSS] | 0.1, 0.1.0.1 |
|---|---|
| Change log | ChangeLog.md |
| Dependencies | base (>=4.3 && <4.11) [details] |
| License | BSD-3-Clause |
| Author | Herbert Valerio Riedel |
| Maintainer | hvr@gnu.org |
| Category | Development |
| Bug tracker | https://github.com/hvr/base-feature-macros/issues |
| Source repo | head: git clone https://github.com/hvr/base-feature-macros.git |
| Uploaded | by HerbertValerioRiedel at 2017-06-05T22:09:36Z |
| Distributions | |
| Reverse Dependencies | 1 direct, 0 indirect [details] |
| Downloads | 2081 total (6 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating | |
| Status | Docs not available [build log] Last success reported on 2017-06-05 [all 2 reports] |