condition compilation support for cabal apis  >=  1.17 and < 1.17
via template haskell that explicitly builds AST (because quasi quoting leads to name errors on the bad branches)