自定义Cabal库(我想?)

时间:2016-01-10 01:45:22

标签: haskell cabal

或许最好描述我的问题。

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

  1. 在使用Haskell模块的代码和" Main"上运行ghc -emit-llvm模块。
  2. 在C文件上运行clang -emit-llvm
  3. 现在我从上面收到了三个.ll个文件。我将我在原始LLVM中手写的库部分和llvm-link这些部分添加到一个.ll文件中。
  4. 然后我在链接文件上运行LLVM&#39 {s} {/ 1}。
  5. 最后,我将LLVM bitcode文件返回到GHC(它愉快地接受它)并生成可执行文件。
  6. 这个过程(当然有适当的优化设置)似乎是我可以从C内联代码,删除函数调用开销的唯一方法。由于许多这些C函数非常小,因此这是非常重要的。

    无论如何,我希望能够分发库并让用户能够尽可能轻松地使用它,同时仍然可以从上面的过程中获得优化。我理解它会比普通的库更痛苦(例如,你被迫通过LLVM编译)但是尽可能无痛地是我和我#39;我正在寻找建议。

    任何指导都将受到赞赏,我不期待逐步回答,因为我认为这将是复杂的,但只是一些想法会有所帮助。

0 个答案:

没有答案