Skip to content
  • Herbert Valerio Riedel's avatar
    Implement `MIN_VERSION_GLASGOW_HASKELL()` macro · 3549c952
    Herbert Valerio Riedel authored
    This exposes the `cProjectPatchLevel{1,2}` value at the CPP level to
    allow it to be used in CPP conditionals. Concretely, GHC 7.10.2.20150623
    would result in
    
      #define __GLASGOW_HASKELL__             710
      #define __GLASGOW_HASKELL_PATCHLEVEL1__ 2
      #define __GLASGOW_HASKELL_PATCHLEVEL2__ 20150623
    
    while GHC 7.10.3 results in
    
      #define __GLASGOW_HASKELL__             710
      #define __GLASGOW_HASKELL_PATCHLEVEL1__ 3
    
    and finally GHC 7.9.20141009 results in
    
      #define __GLASGOW_HASKELL__             709
      #define __GLASGOW_HASKELL_PATCHLEVEL1__ 20141009
    
    As it's error-prone to properly express CPP conditionals for testing GHC
    multi-component versions, a new macro `MIN_VERSION_GLASGOW_HASKELL()` is
    provided (also via the new CPP include file `ghcversion.h`)
    
    Finally, in order to make it easier to define the new CPP macro
    `MIN_VERSION_GLASGOW_HASKELL()`, a new default-included
    `include/ghcversion.h` is used for the new CPP definitions.
    
    Reviewed By: ekmett, austin, #ghc
    
    Differential Revision: https://phabricator.haskell.org/D66
    3549c952