使用Template Haskell添加用于链接

时间:2017-09-29 06:48:57

标签: haskell ghc ffi template-haskell

我目前正在通过尝试制作Quasiquotes来在Haskell中内联编写Rust代码。我认为我已经完成了代码生成工作(包括将生成的Rust之类的Haskell类型封送起来)。我现在有一个问题,即从模板Haskell中找出如何进行所有编译和链接。管道如下:

  1. 解析了quasiquote
  2. 为其生成源代码
    • 相应的Rust功能
    • Haskell FFI进口
    • Haskell对导入函数的调用
  3. Rust代码被编译成静态库(如rustc --crate-type=staticlib qq_function.rs -o qq_function.a
  4. Haskell代码被编译并链接到qq_function.a(以及一些其他库,如mc等。)
  5. 我的问题是让步骤3和4完全在TemplateHaskell 内完成。就我而言:

    • runIO可以写出我生成的Rust源文件
    • addDependentFile通知GHC生成的Rust文件是依赖项
    • addForeignFile遗憾地自动管理编译工作,因为Rust不是受支持的语言(这是{C> em> 所采用的方法inline-c em>支持的语言)
    • runIO可以通过调用rustc来生成静态Rust库(之后删除Rust源文件)。

    我还不太清楚

    1. 我如何使用Template Haskell添加要链接的库和
    2. 以后如何使用Template Haskell清理这些生成的库?
    3. 修改

      我已经提交了与此相关的GHC feature request

0 个答案:

没有答案