定制Cabal库(我认为?)

也许这只是描述我的问题。

我正在开发一个Haskell库。 但是库的一部分是用C语言编写的,而另一部分是用原始LLVM编写的。 要真正让GHC吐出我想要的代码,我必须遵循这个过程:

  • 在使用Haskell模块和“Main”模块的代码上运行ghc -emit-llvm
  • 在C文件上运行clang -emit-llvm
  • 现在我已经从上面获得了三个.ll文件。 我添加了我在原始LLVM中手写的库的一部分,并将它们llvm-link到一个.ll文件中。
  • 然后我跑LLVM的opt上链接的文件。
  • 最后,我将LLVM位代码文件反馈到GHC(它令人愉快地接受它)并生成一个可执行文件。
  • 这个过程(当然有适当的优化设置)似乎是我可以从C中内联代码的唯一方式,从而消除了函数调用开销。 由于这些C函数中的很多都非常小,所以这很重要。

    无论如何,我希望能够分发图书馆,并让用户尽可能无痛地使用它,同时仍然从上述过程中获得优化。 我知道这会比普通的图书馆更痛苦(例如,你不得不通过LLVM编译),但尽可能无痛苦的是我寻求的建议。

    任何指导将不胜感激,我不期望一步一步的答案,因为我认为这将是复杂的,但只是一些想法会有所帮助。

    链接地址: http://www.djcxy.com/p/43221.html

    上一篇: Customising Cabal libraries (I think?)

    下一篇: Big number arithmetic using LLVM (from Haskell)