以是否使用 llvm 进行编译为条件的 Cabal 编译

Cabal compilation conditional on compiling with llvm or not

在我正在编写的库中,我需要使用 CPP 在两个代码块之间进行选择,具体取决于我的用户是使用 LLVM 还是本机代码 gen 进行编译。有没有办法在 .cabal 文件中检测到它并执行类似

的操作
library
  -- not real:
  if backend(llvm)
      CPP-Options:     -DUSING_LLVM

或者甚至可以检测传递给 GHC 的任意标志(而不仅仅是 -fllvm)?

啊,我忘了查看 GHC 文档。 GHC 定义了一个宏 __GLASGOW_HASKELL_LLVM__,它是在指定 -fllvm 时定义的(也可用于检查 llvm 版本):

https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/phases.html#options-affecting-the-c-pre-processor