loongson/build-tools

llvm

xry111 opened this issue · 8 comments

请问有可以公开的 LLVM 源码吗?今天看新闻说龙芯的工程师已经用 clang 编译虚幻引擎了。

主要是 rustc 需要 LLVM,如果 LLVM 弄好的话 rustc 我看了一下应该写几百行 (?) 代码描述一些机器特性就行。

如果没有的话我可能去试着玩玩 gccrs 或者 rustc 的 libgccjit backend……

@SixWeining 可能可以回答这个问题。

有llvm8,等升级到社区开发版本之后会开源

rust-src.zip

@xry111 官方人员已经做了移植,附件是从loongnix仓库中下载的,cargo/rustc已经可用,rustup还没有,不知道他们是怎么绕过去的;

顺便由于libc这类库还没有移植,已没有看到相关issue/PR,所以目前还不能说可用。

P.P.S. mrustc 稍加修改可以完成构建,但编译rust会卡在libc这里,希望官方的rust移植早点提上议程吧。

我自己瞎改了一套玩:

默认分支都改成了 loongarch,可以随便拿去用。目前我在 x86_64 上拿这一套交叉编译我的一个玩具项目 (https://github.com/xdu-icpc/cftool) 是能在 3A5000 上正常跑的。libc 是按照最新的开源版本内核和 Glibc 弄的,Loongnix 上可能有问题。

LoongArch 上的本地 rustc 我还没编译出来,不是很懂 bootstrap rustc 的流程。

@xry111 试了一下,编译可以通过,但还有其他问题,还是等官方向上游提交好了。
“rustc-1.39.0-src/src/libunwind/libunwind.rs:66: error:0:Couldn't find variable name 'unwinder_private_data_size'”

我是用mrustc来做bootstrap的,毕竟Rust官方是用 “current beta rustc compiler” (link), 然而对于loongarch来说并不存在。

@xry111 试了一下,编译可以通过,但还有其他问题,还是等官方向上游提交好了。 “rustc-1.39.0-src/src/libunwind/libunwind.rs:66: error:0:Couldn't find variable name 'unwinder_private_data_size'”

这个可以处理一下:xry111/rust@e3d8f16

@xry111 我是在某网友提供的机器上跑的( https://tieba.baidu.com/p/7562976585 ),放在$HOME/test/mrustc下了,要不你可以继续试试😉

  • mrustc目前只支持1.29.01.39.0两个版本,我用的是1.39.0,只要运行即可:RUSTC_TARGET=loongarch64-unknown-linux-gnu ./build-1.39.0.sh
  • 我用你的rust-libc替换了rust-1.39.0-src/vendor/libc这个crate
  • 你的rust patch需要在目录下rust-1.39.0-src下对应改掉

祝好运!

llvm 11 available at https://github.com/loongson/llvm-project

closing.