Commit graph

338 commits

Author SHA1 Message Date
Aleksi Juvani
2e9eba7f38 Set environment variables for linker instead of sysroot 2019-09-10 16:41:56 +03:00
Aleksi Juvani
995d9857bd Fix cross-compilation to macOS 2019-09-08 10:24:49 +03:00
Aleksi Juvani
6dc763eed5 Fix nits 2019-09-07 19:04:59 +03:00
Aleksi Juvani
691f645ecd Fix sysroot on macOS when cross-compiling and SDKROOT is set
Fixes rust-lang/cargo#7283
Closes rust-lang/cargo#7284

r? @alexcrichton
2019-09-07 17:20:12 +03:00
Alex Gaynor
5e933b490b Add x86_64-linux-kernel target
This adds a target specification for Linux kernel modules on x86_64, as well as base code that can be shared with other architectures.
2019-08-31 17:32:45 -04:00
Mazdak Farrokhzad
b7311316fe
Rollup merge of #63604 - Wind-River:master, r=alexcrichton
Some update for vxWorks

1. support crt-static
2. change armv7_wrs_vxworks to armv7_wrs_vxworks_eabihf.
3. change vx-cxx to wr-c++,  vx-ar to wr-ar and vx-run to wr-run.
4. code cleanup

r? @alexcrichton
2019-08-16 18:22:28 +02:00
Mazdak Farrokhzad
c53ce3b0cf
Rollup merge of #63595 - semarie:openbsd-sparc64, r=alexcrichton
add sparc64-unknown-openbsd target

on OpenBSD, some architectures relies on libc++ (from LLVM) and some
others on libestdc++ (particular version of libstdc++ from GCC).

sparc64-unknown-openbsd needs libestdc++ and libgcc (as x86_64 some
years ago). Reintroduce the support of them for openbsd, only for
sparc64 arch. Some others architectures on OpenBSD could use them too.
2019-08-16 18:22:26 +02:00
Sébastien Marie
c01ba2f2e8 add sparc64-unknown-openbsd target
on OpenBSD, some architectures relies on libc++ (from LLVM) and some
others on libestdc++ (particular version of libstdc++ from GCC).

sparc64-unknown-openbsd needs libestdc++ and libgcc (as x86_64 some
years ago). Reintroduce the support of them for openbsd, only for
sparc64 arch. Some others architectures on OpenBSD could use them too.
2019-08-15 15:34:23 +02:00
Mazdak Farrokhzad
ae53a9e363
Rollup merge of #63467 - terhechte:support-ios-catalyst-macabi-target-triple, r=estebank
Add Catalyst (iOS apps running on macOS) target

This is a first attempt of adding support for the new [Apple Catalyst](https://developer.apple.com/ipad-apps-for-mac/) target (i.e. running iOS apps on macOS). Currently, `rustc` supports the iOS and iOS simulator targets for iOS:
- iOS: ARM cpu, iOS SDK, linked agains the iOS ABI
- Simulator: X86_64 cpu, iOS SDK, linked against the iOS ABI

Apple Catalyst will add an additional target:
- Macabi: X86_64 CPU, iOS SDK, linked again the macOS ABI.

Note, it the actual SDK is the also the macOS 10.15 SDK, but the symbols are the iOS SDK symbols as they were added to macOS with 10.15.

I've collected additional information via links in the open question sections below. This is way out of my comfort zone so please excuse whatever errors I may have made.

# Open Questions:

## Clang Version
It seems to me that `macabi` has not been merged into `clang` yet, I don't know whether that is a requirement rustc to compile, or if it is sufficient if the Clang that is used on a developers system is the correct one supporting macabi (that comes with current Xcode)

## Hardcoded iOS version

`swift-llvm` actually used [x86_64-apple-ios13.0-macabi](3f1fd4f46a) as the target triple which hard-codes the current iOS version. A post on stackoverflow [points out that `MIN_IOS_VERSION` and `MIN_OSX_VERSION` should be used when compiling C code for clang (`-target x86_64-apple-ios${MIN_IOS_VERSION}-macabi`)](https://stackoverflow.com/questions/56487645/how-to-compile-a-3rd-party-library-to-be-used-with-uikit-for-mac-catalyst). However, I wasn't entirely sure how to do that in this PR. Pointers welcome.

## Data Layout
I'm probably using the wrong data-layout. I don't know whether it should be the macOS version or the iOS version. This is probably easier to answer for somebody who understands these things much better than me. I just copied the iOS Simulator X86_64 version as it seems to be (based on what I understand) that Catalyst is just the simulator target build against a different SDK.

# Current State
1. I got it to compile
2. I could successfully compile a `macabi` `libcore` via `cargo build --target x86_64-apple-ios-macabi`

I'm not sure what needs to be done next. Supposedly I need to compile everything into a toolchain somehow that I can then test via `rustup` to make sure that a binary compiled against the toolchain also works with Catalyst. [I read this article, but I'm still lost](https://www.reddit.com/r/rust/comments/5ag60z/how_do_i_bootstrap_rust_to_crosscompile_for_a_new/d9gicr2/) and would love pointers what to do next here.

# Additional Information
- [Commit adding Catalyst support to the Swift Clang Fork](https://github.com/CocoaPods/CocoaPods/issues/8877)
- [Compiling C to Catalyst Discussion](https://github.com/CocoaPods/CocoaPods/issues/8877)
- [CocoaPods Discussion on Adding Catalyst support](https://github.com/CocoaPods/CocoaPods/issues/8877)
2019-08-15 14:34:02 +02:00
Mazdak Farrokhzad
7e9682559e
Rollup merge of #63165 - xen0n:mips64-musl-targets, r=alexcrichton
Add builtin targets for mips64(el)-unknown-linux-muslabi64

This is prerequisite for rust-lang/libc#1449.

Tested locally to produce working static and dynamic binaries, ~~but CI config is untested for now~~ CI is to be added in a follow-up PR.

*edit: dynamic binaries also confirmed working!*

*edit 2: changed triples to include ABI, and removed stray `crt_static_default = false` declarations to be consistent with other musl targets*
2019-08-15 14:34:00 +02:00
Mazdak Farrokhzad
1db4bbcced
Rollup merge of #63155 - mfkl:uwp-msvc, r=alexcrichton
Add UWP MSVC targets

Hi,

- The README URI change is the correct one for VS2019 community edition, which I suspect most people would use. Doesn't _need_ to be merged though.
- This 5e6619edd1 fixes the UWP build (msvc or not, doesn't matter). I suspect it broke with recent changes unnoticed because no CI.
- Store lib location is found through the VCToolsInstallDir env variable. The end of the path is currently for the VS2019 store lib locations only.
- I could not test the aarch64_uwp_windows_msvc target because the rust build script does not currently support arm64 msvc AFAIU.
2019-08-15 14:33:58 +02:00
Mark Rousskov
2601c86487 Handle cfg(bootstrap) throughout 2019-08-14 05:39:53 -04:00
Baoshan Pang
f161efac2b 1. support crt-static
2. change armv7_wrs_vxworks to armv7_wrs_vxworks_eabihf.
3. use wr-** instead of vx-**
4. set PIE to false
5. code cleanup
2019-08-13 22:07:43 -07:00
Benedikt Terhechte
af1e668f33 Add initial files for iOS catalyst / macabi support
This is a first attempt of adding support for the new Apple Catalyst ABI (i.e. running iOS apps on macOS). Currently, `rustc` supports the iOS and iOS simulator targets for iOS:
- iOS: ARM cpu, iOS SDK, linked agains the iOS ABI
- Simulator: X86_64 cpu, iOS SDK, linked against the iOS ABI

Apple Catalyst will add an additional target:
- Macabi: X86_64 CPU, iOS SDK, linked again the macOS ABI.

Note, it the actual SDK is the also the macOS 10.15 SDK, but the symbols are the iOS SDK symbols as they were added to macOS with 10.15.

This commits adds the files for this new target triple.
2019-08-11 20:31:01 +02:00
Wang Xuerui
30fcd50ba9
rustc_target: add n64 musl targets for MIPS64 arches
Hard-float (unlike mips32 musl targets but consistent with any other
musl target), MIPS64r2, n64 ABI.

The triples are renamed to carry the `abi64` ABI suffix found on all
other MIPS64 targets, for consistency and forward compatibility, should
Rust gain support for the n32 ABI one day.
2019-08-10 11:38:56 +08:00
Martin Finkel
89044a908e move store lib probing code to librustc_codegen_ssa 2019-08-08 18:25:47 +02:00
bors
ad7c55e1fc Auto merge of #60547 - redox-os:redox-unix, r=alexcrichton
redox: convert to target_family unix

This is the second step to supporting rust-lang/rust#60139.

In order to have a smooth transition, there will need to be a change made in liblibc at the same time, switching Redox over to the unix target family. See https://github.com/rust-lang/libc/pull/1332
2019-08-07 16:56:46 +00:00
bors
5421d94960 Auto merge of #63152 - estebank:big-array, r=oli-obk
Always error on `SizeOverflow` during mir evaluation

Fix #55878, fix #25116.

r? @oli-obk
2019-08-07 04:28:08 +00:00
Jeremy Soller
0498da9a3d
redox: convert to target_family unix 2019-08-06 16:18:23 -06:00
Martin Finkel
e3d8b6817e review feedback: find lib root path from registry 2019-08-05 16:24:20 +02:00
Esteban Küber
387dcff796 review comments: clean up 2019-08-04 10:42:46 -07:00
Esteban Küber
23400677d7 Simplify change to layout_of 2019-08-03 22:04:39 -07:00
Esteban Küber
db099fb491 Point to local place span on "type too big" error 2019-08-03 21:59:51 -07:00
Mazdak Farrokhzad
a2735a3e0d
Rollup merge of #63107 - adrian-budau:master, r=alexcrichton
Added support for armv7-unknown-linux-gnueabi/musleabi

Fixes #63101

Some things that are not done and I hope someone can help me with:

* During the ci build of `armv7-unknown-linux-gnueabi` `openssl` must be built (to build cargo) but `openssl` does not yet support this target. This feels slightly like a chicken-and-egg problem, any feedback is welcome.
* Should I add any tests for any of these targets?
2019-08-03 00:09:04 +02:00
Adrian Budau
2b0f4483d2
Added support for armv7-unknown-linux-gnueabi and armv7-unknown-linux-musleabi.
Support for the targets in the compiler and std build in the CI.
2019-08-02 20:06:36 +03:00
Vadim Petrochenkov
5947db1c53 librustc_target: Unconfigure tests during normal build 2019-08-02 01:59:01 +03:00
Martin Finkel
3c6f6f0316 Fix tidy checks 2019-07-31 17:15:26 +07:00
Martin Finkel
6e4d02369a Add UWP MSVC targets 2019-07-31 16:39:38 +07:00
Mazdak Farrokhzad
778b631ff0
Rollup merge of #62809 - alexcrichton:wasm-llvm-9, r=nikic
rustc: Update wasm32 support for LLVM 9

This commit brings in a number of minor updates for rustc's support for
the wasm target which has changed in the LLVM 9 update. Notable updates
include:

* The compiler now no longer manually inserts the `producers` section,
  instead relying on LLVM to do so. LLVM uses the `llvm.ident` metadata
  for the `processed-by` directive (which is now emitted on the wasm
  target in this PR) and it uses debuginfo to figure out what `language`
  to put in the `producers` section.

* Threaded WebAssembly code now requires different flags to be passed
  with LLD. In LLD we now pass:

  * `--shared-memory` - required since objects are compiled with
    atomics. This also means that the generated memory will be marked as
    `shared`.
  * `--max-memory=1GB` - required with the `--shared-memory` argument
    since shared memories in WebAssembly must have a maximum size. The
    1GB number is intended to be a conservative estimate for rustc, but
    it should be overridable with `-C link-arg` if necessary.
  * `--passive-segments` - this has become the default for multithreaded
    memory, but when compiling a threaded module all data segments need
    to be marked as passive to ensure they don't re-initialize memory
    for each thread. This will also cause LLD to emit a synthetic
    function to initialize memory which users will have to arrange to
    call.
  * The `__heap_base` and `__data_end` globals are explicitly exported
    since they're now hidden by default due to the `--export` flags we
    pass to LLD.
2019-07-29 02:10:52 +02:00
Vadim Petrochenkov
676d282dd3 Deny unused_lifetimes through rustbuild 2019-07-28 18:47:02 +03:00
Vadim Petrochenkov
434152157f Remove lint annotations in specific crates that are already enforced by rustbuild
Remove some random unnecessary lint `allow`s
2019-07-28 18:46:24 +03:00
Mazdak Farrokhzad
1060513ddc Get out of bootstrapping pickle. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
ba835dffe6
Rollup merge of #62904 - nikic:arm-d32, r=alexcrichton
Disable d32 on armv6 hf targets

We already do this on armv7 targets. It seems that this now gets enabled by default if '+vfp2` is specified, so disable it explicitly.

Hopefully fixes #62841.

r? @alexcrichton
2019-07-26 18:56:48 +02:00
Mazdak Farrokhzad
632ce7402f
Rollup merge of #62801 - bjorn3:remove_lower_128bit_ops, r=alexcrichton
Remove support for -Zlower-128bit-ops

It is broken and unused

cc https://github.com/rust-lang/rust/issues/58969

blocked https://github.com/rust-lang-nursery/compiler-builtins/pull/302 (removes definitions of the lang items removed in this PR)

r? @alexcrichton
2019-07-26 18:56:43 +02:00
Mazdak Farrokhzad
9d122670fd
Rollup merge of #62692 - eddyb:precompute-niches, r=oli-obk
rustc: precompute the largest Niche and store it in LayoutDetails.

Since we only ever can use at most one niche, it makes sense to just store that in the layout, for the simplest caching (especially as it's almost trivial to compute).

There might be a speedup from this, but even if it's marginal now, the caching would be a more significant benefit for future optimization attempts.
2019-07-26 18:56:41 +02:00
Hugo Beauzée-Luyssen
7ed5c36934 Add UWP mingw targets 2019-07-25 21:30:08 +02:00
Alex Crichton
dc50a633f3 std: Use native #[thread_local] TLS on wasm
This commit moves `thread_local!` on WebAssembly targets to using the
`#[thread_local]` attribute in LLVM. This was recently implemented
upstream and is [in the process of being documented][dox]. This change
only takes affect if modules are compiled with `+atomics` which is
currently unstable and a pretty esoteric method of compiling wasm
artifacts.

This "new power" of the wasm toolchain means that the old
`wasm-bindgen-threads` feature of the standard library can be removed
since it should now be possible to create a fully functioning threaded
wasm module without intrusively dealing with libstd symbols or
intrinsics. Yay!

[dox]: https://github.com/WebAssembly/tool-conventions/pull/116
2019-07-25 11:17:07 -07:00
Mazdak Farrokhzad
6e1ed3a116
Rollup merge of #62903 - swolchok:ios-sdkroot, r=alexcrichton
Support SDKROOT env var on iOS

Following what clang does (296a80102a/clang/lib/Driver/ToolChains/Darwin.cpp (L1661-L1678)), allow allow SDKROOT to tell us where the Apple SDK lives so we don't have to invoke xcrun.

Replaces #62551.
2019-07-25 01:05:05 +02:00
Mazdak Farrokhzad
5a7db0e19a
Rollup merge of #62901 - petrochenkov:serde, r=Centril
cleanup: Remove `extern crate serialize as rustc_serialize`s
2019-07-25 01:05:03 +02:00
Mazdak Farrokhzad
b1a866012d
Rollup merge of #62814 - androm3da:hexagon_19jul_2019, r=alexcrichton
add support for hexagon-unknown-linux-musl
2019-07-25 01:05:00 +02:00
Mazdak Farrokhzad
8d9000d38c
Rollup merge of #62784 - Disasm:riscv32i, r=estebank
Add riscv32i-unknown-none-elf target

This target is likely to be useful for constrained FPGA soft-cores, such as picorv32 and HeavyX.
2019-07-25 01:04:59 +02:00
Scott Wolchok
287db19e9a Add comment 2019-07-24 10:28:14 -07:00
bors
27a6a304e2 Auto merge of #62908 - fakenine:normalize_use_of_backticks_compiler_messages_p17, r=alexreg
normalize use of backticks for compiler messages in remaining modules

https://github.com/rust-lang/rust/issues/60532
2019-07-24 10:03:20 +00:00
Samy Kacimi
66815c613a
normalize use of backticks for compiler messages in remaining modules
https://github.com/rust-lang/rust/issues/60532
2019-07-23 23:09:59 +02:00
Scott Wolchok
a4ff823f5d fix check 2019-07-23 13:37:17 -07:00
Nikita Popov
fe4cdd3078 Disable d32 on armv6 hf targets 2019-07-23 20:30:57 +02:00
Vadim Petrochenkov
614037171b cleanup: Remove extern crate serialize as rustc_serializes 2019-07-23 19:20:16 +03:00
Brian Cain
4b339688b5 add support for hexagon-unknown-linux-musl 2019-07-22 09:44:58 -05:00
CrLF0710
10d415938e Revert "Disable stack probing for gnux32."
This reverts commit 42d652ecd6.
2019-07-20 01:29:47 +08:00
bjorn3
3427a14bdf Remove support for -Zlower-128bit-ops
It is broken and unused
2019-07-19 14:21:06 +02:00