]> git.lizzy.rs Git - rust.git/commit
Auto merge of #32239 - alexcrichton:fix-cross-to-freebsd, r=brson
authorbors <bors@rust-lang.org>
Tue, 15 Mar 2016 10:21:40 +0000 (03:21 -0700)
committerbors <bors@rust-lang.org>
Tue, 15 Mar 2016 10:21:40 +0000 (03:21 -0700)
commit483fc715c6ea7cdd15d41d79df9def97401cd699
tree4d7e21586bd7ac637f7b0b7fc30b708bf6885779
parent4db8b5bfdf1c0f70183f5a416581215c62412f80
parent155735aa5180c23bddd6fed1f6e659f9a0aaa346
Auto merge of #32239 - alexcrichton:fix-cross-to-freebsd, r=brson

rustbuild: Fix cross compiling to FreeBSD

This commit fixes our support for cross compiling a compiler to run on FreeBSD.
Over the weekend I managed to get a cross compiler from Linux to FreeBSD [1]
which I hope to soon use to start producing FreeBSD nightly compilers. With the
`make dist` support added in #32237 we should be able to produce standard
rustc/rust-std packages for FreeBSD through a new slave with this cross compiler.

Currently, however, we don't "Just Work" when cross compiling FreeBSD and a
number of changes were required (part of this PR). They include:

* A few build fixes were needed in LLVM. Our own branch has been rebased on the
  actual 3.8 release and I applied one extra commit [2] which contains two fixes:

  1. The LLVM CMake build system passes the `-Wl,-z,defs` flag on many
     platforms, but *not* when `CMAKE_SYSTEM_NAME` is "FreeBSD". Unfortunately
     this doesn't take into account when we're cross compiling, and as predicted
     the build will fail if `-Wl,-z,defs` is passed (see [3] for more info). To
     fix this we test `TARGET_TRIPLE` instead of the `CMAKE_SYSTEM_NAME` which
     is what we're compiling for which fixes the problem.
  2. The `PATH_MAX` constant is apparently defined in a different location than
     many other Unix systems, so a file which required this just needed some
     help to keep compiling.

* Support for compiling compiler-rt with CMake has been added to rustbuild. It
  looks like it just emulates Linux in what it compiles as it didn't seem to
  naturally produce anything else... At least the architecture is right, so
  seems good for now at least!

[1]: https://github.com/alexcrichton/port-of-rust/blob/master/prebuilt/freebsd/Dockerfile
[2]: https://github.com/rust-lang/llvm/commit/be89e4b5
[3]: https://bugs.webkit.org/show_bug.cgi?id=138420