1.7 KiB
Building the Roc compiler from source
Installing LLVM
To build the compiler, you need a particular version of LLVM installed on your system.
To see which version of LLVM you need, take a look at Cargo.toml
, in particular the branch
section of the inkwell
dependency. It should have something like llvmX-Y
where X and Y are the major and minor revisions of LLVM you need.
For Ubuntu, I used the Automatic installation script
at apt.llvm.org - but there are plenty of alternative options at http://releases.llvm.org/download.html
You may run into an error like this:
Updating git repository `https://github.com/TheDan64/inkwell`
error: failed to load source for a dependency on `inkwell`
Caused by:
Unable to update https://github.com/TheDan64/inkwell?branch=llvm8-0#d0f5c1e1
Caused by:
revspec 'd0f5c1e198853bc06d8427fbafb7b068032d1d1a' not found; class=Reference (4); code=NotFound (-3)
This seems to be caused by cargo being out of date (even if it's freshly installed), and can be fixed with cargo update
.
Use LLD for the linker
Using lld
for Rust's linker
makes build times a lot faster, and I highly recommend it.
Create ~/.config/cargo
and add this to it:
[build]
# Link with lld, per https://github.com/rust-lang/rust/issues/39915#issuecomment-538049306
# Use target-cpu=native, per https://deterministic.space/high-performance-rust.html
rustflags = ["-C", "link-arg=-fuse-ld=lld", "-C", "target-cpu=native"]
Then install lld
version 9 (e.g. with $ sudo apt-get install lld-9
)
and add make sure there's a ld.lld
executable on your PATH
which
is symlinked to lld-9
.
That's it! Enjoy the faster builds.