about summary refs log tree commit diff
path: root/src/libstd/build.rs
AgeCommit message (Collapse)AuthorLines
2019-02-28libstd => 2018Taiki Endo-2/+0
2018-12-25Remove licensesMark Rousskov-10/+0
2018-12-24std: Use backtrace-sys from crates.ioAlex Crichton-76/+0
This commit switches the standard library to using the `backtrace-sys` crate from crates.io instead of duplicating the logic here in the Rust repositor with the `backtrace-sys`'s crate's logic. Eventually this will hopefully be a good step towards using the `backtrace` crate directly from crates.io itself, but we're not quite there yet! Hopefully this is a small incremental first step we can take.
2018-12-14Auto merge of #56568 - notriddle:master, r=alexcrichtonbors-1/+0
Remove dependency on shell32.dll Closes #56510 if it works on MinGW (I've only tested it on MSVC).
2018-12-11std: Depend directly on crates.io cratesAlex Crichton-1/+6
Ever since we added a Cargo-based build system for the compiler the standard library has always been a little special, it's never been able to depend on crates.io crates for runtime dependencies. This has been a result of various limitations, namely that Cargo doesn't understand that crates from crates.io depend on libcore, so Cargo tries to build crates before libcore is finished. I had an idea this afternoon, however, which lifts the strategy from #52919 to directly depend on crates.io crates from the standard library. After all is said and done this removes a whopping three submodules that we need to manage! The basic idea here is that for any crate `std` depends on it adds an *optional* dependency on an empty crate on crates.io, in this case named `rustc-std-workspace-core`. This crate is overridden via `[patch]` in this repository to point to a local crate we write, and *that* has a `path` dependency on libcore. Note that all `no_std` crates also depend on `compiler_builtins`, but if we're not using submodules we can publish `compiler_builtins` to crates.io and all crates can depend on it anyway! The basic strategy then looks like: * The standard library (or some transitive dep) decides to depend on a crate `foo`. * The standard library adds ```toml [dependencies] foo = { version = "0.1", features = ['rustc-dep-of-std'] } ``` * The crate `foo` has an optional dependency on `rustc-std-workspace-core` * The crate `foo` has an optional dependency on `compiler_builtins` * The crate `foo` has a feature `rustc-dep-of-std` which activates these crates and any other necessary infrastructure in the crate. A sample commit for `dlmalloc` [turns out to be quite simple][commit]. After that all `no_std` crates should largely build "as is" and still be publishable on crates.io! Notably they should be able to continue to use stable Rust if necessary, since the `rename-dependency` feature of Cargo is soon stabilizing. As a proof of concept, this commit removes the `dlmalloc`, `libcompiler_builtins`, and `libc` submodules from this repository. Long thorns in our side these are now gone for good and we can directly depend on crates.io! It's hoped that in the long term we can bring in other crates as necessary, but for now this is largely intended to simply make it easier to manage these crates and remove submodules. This should be a transparent non-breaking change for all users, but one possible stickler is that this almost for sure breaks out-of-tree `std`-building tools like `xargo` and `cargo-xbuild`. I think it should be relatively easy to get them working, however, as all that's needed is an entry in the `[patch]` section used to build the standard library. Hopefully we can work with these tools to solve this problem! [commit]: https://github.com/alexcrichton/dlmalloc-rs/commit/28ee12db813a3b650a7c25d1c36d2c17dcb88ae3
2018-12-10Remove dependency on shell32.dll #56510Michael Howell-1/+0
2018-11-02NetBSD: link libstd with librt in addition to libpthreadJonathan A. Kollasch-1/+4
2018-10-19Prefer unwrap_or_else to unwrap_or in case of function calls/allocationsljedrz-2/+2
2018-09-10Add rustc SHA to released DWARF debuginfoAlex Crichton-0/+4
This commit updates the debuginfo that is encoded in all of our released artifacts by default. Currently it has paths like `/checkout/src/...` but these are a little inconsistent and have changed over time. This commit instead attempts to actually define the file paths in our debuginfo to be consistent between releases. All debuginfo paths are now intended to be `/rustc/$sha` where `$sha` is the git sha of the released compiler. Sub-paths are all paths into the git repo at that `$sha`.
2018-08-14std: Use target_pointer_width for BACKTRACE_ELF_SIZEJosh Stone-1/+2
The former code used `target.contains("64")` to detect Elf64 targets, but this is inaccurate in a few cases: - `s390x-unknown-linux-gnu` is 64-bit - `sparcv9-sun-solaris` is 64-bit - `x86_64-unknown-linux-gnux32` is 32-bit Instead the `std` build script can use `CARGO_CFG_TARGET_POINTER_WIDTH` to reliably detect 64-bit targets for libbacktrace. Also update to backtrace-sys 0.1.24 for alexcrichton/backtrace-rs#122.
2018-07-06Auto merge of #51757 - nielx:fix/haiku-fixes, r=nagisabors-1/+2
Haiku: several smaller fixes to build and run rust on Haiku This PR combines three small patches that help Rust build and run on the Haiku platform. These patches do not intend to impact other platforms.
2018-06-29Use in-tree libbacktrace on FuchsiaTaylor Cramer-5/+0
2018-06-24Haiku: fix build of libbacktraceNiels Sascha Reedijk-1/+2
2018-06-07[fuchsia] Migrate from launchpad to fdio_spawn_etcAdam Barth-1/+0
fdio_spawn_etc is the preferred way of creating processes on Fuchsia now.
2018-05-30Replace libbacktrace with a submoduleAlex Crichton-23/+52
While we're at it update the `backtrace` crate from crates.io. It turns out that the submodule's configure script has gotten a lot more finnicky as of late so also switch over to using the `cc` crate manually which allows to avoid some hacks around the configure script as well
2018-03-13rustc: Embed LLVM bitcode by default on iOSAlex Crichton-1/+2
This commit updates rustc to embed bitcode in each object file generated by default when compiling for iOS. This was determined in #35968 as a step towards better compatibility with the iOS toolchain, so let's give it a spin and see how it turns out! Note that this also updates the `cc` dependency which should propagate this change of embedding bitcode for C dependencies as well.
2018-03-13rustbuild: Tweak CFLAGS to various libstd piecesAlex Crichton-1/+1
* Pass `opt_level(2)` when calculating CFLAGS to get the right flags on iOS * Unconditionally pass `-O2` when compiling libbacktrace This should... Close #48903 Close #48906
2017-12-29Add proper library dependencies for libstd on CloudABI.Ed Schouten-1/+8
Don't attempt to build libunwind on CloudABI, as libunwind is already provided by the system by default.
2017-12-27Revert "Add a file to trivially disable tool building or testing"kennytm-6/+3
This reverts commit ab018c76e14b87f3c9e0b7384cc9b02d94779cd5. This also adds the `ToolBuild::is_ext_tool` field to replace the previous `ToolBuild::expectation` field, to indicate whether a build-failure of certain tool is essential.
2017-11-19std: Add a new wasm32-unknown-unknown targetAlex Crichton-2/+6
This commit adds a new target to the compiler: wasm32-unknown-unknown. This target is a reimagining of what it looks like to generate WebAssembly code from Rust. Instead of using Emscripten which can bring with it a weighty runtime this instead is a target which uses only the LLVM backend for WebAssembly and a "custom linker" for now which will hopefully one day be direct calls to lld. Notable features of this target include: * There is zero runtime footprint. The target assumes nothing exists other than the wasm32 instruction set. * There is zero toolchain footprint beyond adding the target. No custom linker is needed, rustc contains everything. * Very small wasm modules can be generated directly from Rust code using this target. * Most of the standard library is stubbed out to return an error, but anything related to allocation works (aka `HashMap`, `Vec`, etc). * Naturally, any `#[no_std]` crate should be 100% compatible with this new target. This target is currently somewhat janky due to how linking works. The "linking" is currently unconditional whole program LTO (aka LLVM is being used as a linker). Naturally that means compiling programs is pretty slow! Eventually though this target should have a linker. This target is also intended to be quite experimental. I'm hoping that this can act as a catalyst for further experimentation in Rust with WebAssembly. Breaking changes are very likely to land to this target, so it's not recommended to rely on it in any critical capacity yet. We'll let you know when it's "production ready". --- Currently testing-wise this target is looking pretty good but isn't complete. I've got almost the entire `run-pass` test suite working with this target (lots of tests ignored, but many passing as well). The `core` test suite is still getting LLVM bugs fixed to get that working and will take some time. Relatively simple programs all seem to work though! --- It's worth nothing that you may not immediately see the "smallest possible wasm module" for the input you feed to rustc. For various reasons it's very difficult to get rid of the final "bloat" in vanilla rustc (again, a real linker should fix all this). For now what you'll have to do is: cargo install --git https://github.com/alexcrichton/wasm-gc wasm-gc foo.wasm bar.wasm And then `bar.wasm` should be the smallest we can get it! --- In any case for now I'd love feedback on this, particularly on the various integration points if you've got better ideas of how to approach them!
2017-10-15rustbuild: Support specifying archiver and linker explicitlyVadim Petrochenkov-11/+1
2017-09-28Update to the `cc` crateAlex Crichton-2/+2
This is the name the `gcc` crate has moved to
2017-09-24The Magenta kernel is now called Zircon.P.Y. Laligand-2/+2
2017-09-17Add a file to trivially disable tool building or testingOliver Schneider-3/+6
2017-09-09Auto merge of #44251 - kennytm:osx-backtrace, r=alexcrichtonbors-1/+1
Add libbacktrace support for Apple platforms (resubmitted) Resubmitting #43422 rebased on the current master (cc @JohnColanduoni). I have added an additional commit to fallback to `dladdr`-based `resolve_symbol` if `libbacktrace` returns `None`, otherwise the stack trace will be full of `<unknown>` when you forget to pass the `-g` flag (actually it seems — at least on macOS — the `dladdr` symbol is more accurate than the `libbacktrace` one).
2017-09-02update gcc crateRalf Jung-1/+1
Use gcc::Build rather than deprecated gcc::Config. Fixes #43973
2017-09-02Add libbacktrace support for Apple platformsJohn Colanduoni-1/+1
2017-08-22Remove incorrect special case of mips-muslSamuel Holland-1/+1
The libdl/librt/libpthread provided by musl are no-op (empty static libraries) on all architectures, mips included.
2017-08-03Make backtraces work on Redox, copying Unix implementationIan Douglas Scott-1/+1
2017-07-24DNS functions are in libresolv on Solaris, just like on MacOSDanek Duvall-0/+1
2017-07-07Fix Rustbuild linking on IllumosNikita Baksalyar-0/+4
Illumos (an OpenSolaris fork) expects to get several extra library references for some system functions used by Rust standard library. This commit adds required linker options to rustbuild, which is currently doesn't work on Illumos-based operating systems.
2017-05-04Reload nameserver information on lookup failureJon Gjengset-0/+5
As discussed in #41570, UNIX systems often cache the contents of /etc/resolv.conf, which can cause lookup failures to persist even after a network connection becomes available. This patch modifies lookup_host to force a reload of the nameserver entries following a lookup failure. This is in line with what many C programs already do (see #41570 for details). On systems with nscd, this should not be necessary, but not all systems run nscd. Introduces an std linkage dependency on libresolv on macOS/iOS (which also makes it necessary to update run-make/tools.mk). Fixes #41570. Depends on rust-lang/libc#585.
2017-03-04Automate timestamp creation and build skipping for native librariesVadim Petrochenkov-11/+4
Add comments
2017-03-04Build compiler-rt and sanitizers only onceVadim Petrochenkov-20/+12
2017-03-04Add/remove `rerun-if-changed` when necessaryVadim Petrochenkov-2/+0
2017-02-17Follow rename of mx_handle_wait Magenta syscallsRaph Levien-0/+4
The mx_handle_wait_* syscalls in Magenta were renamed to mx_object_wait. The syscall is used in the Magenta/Fuchsia implementation of std::process, to wait on child processes. In addition, this patch enables the use of the system provided libbacktrace library on Fuchsia targets. Symbolization is not yet working, but at least it allows printing hex addresses in a backtrace and makes building succeed when the backtrace feature is not disabled.
2017-02-06std: Remove cfg(cargobuild) annotationsAlex Crichton-1/+0
These are all now no longer needed that we've only got rustbuild in tree.
2017-02-02Build libbacktrace/jemalloc only when their timestamps are older than sourcesVadim Petrochenkov-7/+12
2017-02-02Fix build in cross-compilation scenariosVadim Petrochenkov-1/+1
2017-02-02rustbuild: Build jemalloc and libbacktrace only once (take 2)Vadim Petrochenkov-16/+10
2017-01-26std: Compile libbacktrace with -fvisibility=hiddenAlex Crichton-2/+3
We don't want these symbols exported from the standard library, this is just an internal implementation detail of the standard library currently. Closes #34984
2016-12-23Auto merge of #38401 - redox-os:redox_cross, r=brsonbors-1/+1
Redox Cross Compilation I will admit - there are things here that I wish I did not have to do. This completes the ability to create a cross compiler from the rust repository for `x86_64-unknown-redox`. I will document this PR with inline comments explaining some things. [View this gist to see how a cross compiler is built](https://gist.github.com/jackpot51/6680ad973986e84d69c79854249f2b7e) Prior discussion of a smaller change is here: https://github.com/rust-lang/rust/pull/38366
2016-12-22Remove start functions, use newlib instead of openlibm + rallocJeremy Soller-2/+0
2016-12-21Update liblibc, go back to lazy linking openlibmJeremy Soller-1/+1
2016-12-20Static link openlibmJeremy Soller-1/+1
2016-12-20Link openlibm only in libstdJeremy Soller-0/+2
2016-12-17let BSD to use gmake for GNU-makeSébastien Marie-1/+1
the diff extends build_helper to provide an function to return the expected name of GNU-make on the host: "make" or "gmake". Fixes #38429
2016-12-15WIP: Cross-compilation for Redox targetJeremy Soller-1/+1
2016-11-22Fuchsia support for std::process via liblaunchpad.Theodore DeRego-0/+2
2016-10-28Auto merge of #37385 - raphlinus:fuchsia_random, r=alexcrichtonbors-0/+2
Add support for kernel randomness for Fuchsia Wire up cprng syscall as provider for rand::os::OsRng on Fuchsia.