summary refs log tree commit diff
path: root/src/bootstrap/config.rs
AgeCommit message (Collapse)AuthorLines
2017-12-27Revert "Add a file to trivially disable tool building or testing"kennytm-15/+0
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-12-17Add sync module to rustc_data_structuresJohn Kåre Alsaker-0/+3
2017-12-03Record build and test result of extended tools into toolstates.json.kennytm-0/+4
2017-11-25rustbuild: Enable WebAssembly backend by defaultAlex Crichton-2/+3
This commit alters how we compile LLVM by default enabling the WebAssembly backend. This then also adds the wasm32-unknown-unknown target to get compiled on the `cross` builder and distributed through rustup. Tests are not yet enabled for this target but that should hopefully be coming soon!
2017-11-11Disable LLVM assertions on Nightly, enable them in "alt" builds.Simon Sapin-1/+1
2017-10-26config.toml: Add stubs for recognized-but-unused install pathsJosh Stone-0/+5
... specifically `datadir`, `infodir`, and `localstatedir`. These were already accepted by `configure.py`, but it didn't have any place to put the values.
2017-10-20rustbuild: Compile rustc with ThinLTOAlex Crichton-4/+3
This commit enables ThinLTO for the compiler as well as multiple codegen units. This is intended to get the benefits of parallel codegen while also avoiding any major loss of perf. Finally this commit is also intended as further testing for #45320 and shaking out bugs.
2017-10-16bootstrap: update and enable the LLVM version-checkJosh Stone-0/+1
While the `config.toml.example` comments say "we automatically check the version by default," we actually didn't. That check was badly out of date, only allowing 3.5, 3.6, or 3.7. This it now updated to the new 3.9 minimum requirement, and truly enabled by default.
2017-10-15rustbuild: Support specifying archiver and linker explicitlyVadim Petrochenkov-1/+7
2017-10-09cleanup: rustc doesn't use an external archiverVadim Petrochenkov-3/+0
2017-09-17Add a file to trivially disable tool building or testingOliver Schneider-0/+15
2017-09-17Get the miri test suite to run inside the rustc dev environmentOliver Schneider-0/+4
2017-08-28use an optional bool to keep track of ignore-git setting, if not specified ↵Jeremy Sorensen-1/+5
by the end, use the channel to determine its value
2017-08-27rustbuild: Rewrite the configure script in PythonAlex Crichton-252/+51
This commit rewrites our ancient `./configure` script from shell into Python. The impetus for this change is to remove `config.mk` which is just a vestige of the old makefile build system at this point. Instead all configuration is now solely done through `config.toml`. The python script allows us to more flexibly program (aka we can use loops easily) and create a `config.toml` which is based off `config.toml.example`. This way we can preserve comments and munge various values as we see fit. It is intended that the configure script here is a drop-in replacement for the previous configure script, no functional change is intended. Also note that the rationale for this is also because our build system requires Python, so having a python script a bit earlier shouldn't cause too many problems. Closes #40730
2017-08-22Introduce crt_static target option in config.tomlSamuel Holland-0/+3
This controls the value of the crt-static feature used when building the standard library for a target, as well as the compiler itself when that target is the host.
2017-08-13Correct code to not run host-only tests.Mark Simulacrum-0/+6
2017-08-13Add ability to ignore git when building rust.Mark Simulacrum-0/+4
Some users of the build system change the git sha on every build due to utilizing git to push changes to a remote server. This allows them to simply configure that away instead of depending on custom patches to rustbuild.
2017-08-13Allow overriding build triple via flag.Mark Simulacrum-1/+5
We first check the configuration, then passed parameters (--build), then fall back to the auto-detection that bootstrap.py does. Fixes #39673.
2017-08-13Allow specifiying targets and hosts not in the config file.Mark Simulacrum-10/+0
We no longer care about the source of this information, so there is no reason to restrict users.
2017-08-13Unify flags into config.Mark Simulacrum-12/+55
This introduces a slight change in behavior, where we unilaterally respect the --host and --target parameters passed for all sanity checking and runtime configuration.
2017-08-11Move config.toml.example to the root dirSteven Fackler-1/+1
It's way more discoverable here.
2017-08-11Build support for no llvmbjorn3-0/+4
2017-07-30rustbuild: Remove `--enable-llvm-clean-rebuild`Alex Crichton-4/+0
This was intended for bots back in the day where we'd persist caches of LLVM builds across runs, but nowadays we don't do that on any of the bots so this option is no longer necessary
2017-07-24Add a disabled builder for aarch64 emulated testsAlex Crichton-0/+5
This commit adds a disabled builder which will run all tests for the standard library for aarch64 in a QEMU instance. Once we get enough capacity to run this on Travis this can be used to boost our platform coverage of AArch64
2017-07-20Use a single line for serde annotations.Mark Simulacrum-14/+7
2017-07-20Utilize interning to allow Copy/Clone stepsMark Simulacrum-48/+41
2017-07-20Update to toml 0.4Mark Simulacrum-31/+33
2017-07-04Clarify meaning of Build.cargo, Build.rustc.Mark Simulacrum-6/+20
Rename Build.{cargo, rustc} to {initial_cargo, initial_rustc}.
2017-07-04Clippy lintsMark Simulacrum-1/+1
2017-07-04Clean up and restructure sanity checking.Mark Simulacrum-0/+1
2017-06-22Make wasm32 buildbot test LLVM backendThomas Lively-0/+3
This adds the experimental targets option to configure so it can be used by the builders and changes the wasm32 Dockerfile accordingly. Instead of using LLVM from the emsdk, the builder's emscripten tools now uses the Rust in-tree LLVM, since this is the one built with wasm support.
2017-06-20Fixes bootstrapping with custom cargo/rustc.Mark Simulacrum-2/+8
config.mk is now always read when parsing the configuration to prevent this from reoccurring in the future, hopefully.
2017-06-16Add target to use LLVM wasm backendThomas Lively-0/+3
The new target is wasm32-experimental-emscripten. Adds a new configuration option to opt in to building experimental LLVM backends such as the WebAssembly backend. The target name was chosen to be similar to the existing wasm32-unknown-emscripten target so that the build and tests would work with minimal other code changes. When/if the new target replaces the old target, simply renaming it should just work.
2017-06-04Merge branch 'profiling' of github.com:whitequark/rust into profilingMarco Castelluccio-0/+4
2017-05-20Auto merge of #42069 - QuietMisdreavus:low_pri, r=alexchrichtonbors-0/+3
Add an option to run rustbuild on low priority on Windows and Unix This is a resurrection of #40776, combining their Windows setup with an additional setup on Unix to set the program group's *nice*ness to +10 (low-but-not-lowest priority, mirroring the priority in the Windows setup) when the `low_priority` option is on.
2017-05-16Add an option to run rustbuild on low priorityJohn Kåre Alsaker-0/+3
This is a resurrection of #40776, combining their Windows setup with an additional setup on Unix to set the program group's niceness to +10 (low-but-not-lowest priority) when the `low_priority` option is on.
2017-05-16rustbuild: allow configuring sysconfdirMarc-Antoine Perennou-0/+6
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-05-16rustbuild: allow configuring bindirMarc-Antoine Perennou-2/+8
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-05-07bootstrap: Output name of failed config in case of errorsDennis Schridde-1/+1
2017-05-01Add profiling support, through the rustc -Z profile flag.whitequark-0/+4
When -Z profile is passed, the GCDAProfiling LLVM pass is added to the pipeline, which uses debug information to instrument the IR. After compiling with -Z profile, the $(OUT_DIR)/$(CRATE_NAME).gcno file is created, containing initial profiling information. After running the program built, the $(OUT_DIR)/$(CRATE_NAME).gcda file is created, containing branch counters. The created *.gcno and *.gcda files can be processed using the "llvm-cov gcov" and "lcov" tools. The profiling data LLVM generates does not faithfully follow the GCC's format for *.gcno and *.gcda files, and so it will probably not work with other tools (such as gcov itself) that consume these files.
2017-04-20Add x86_64-linux-android targetMarco A L Barbosa-0/+6
2017-04-10Remove --enable-save-analysis configure flagNick Cameron-4/+0
2017-03-21appveyor: Use Ninja to build LLVM on MinGWAlex Crichton-3/+3
I have a suspicion that MinGW's make is the cause of #40546 rather than anything else, but that's purely a suspicion without any facts to back it up. In any case we'll eventually be moving the MSVC build over to Ninja in order to leverage sccache regardless, so this commit simply jumpstarts that process by downloading Ninja for use by MinGW anyway. I'm not sure if this closes #40546 for real, but this is my current best shot at closing it out, so... Closes #40546
2017-03-15Auto merge of #40383 - ishitatsuyuki:easy-dist-analysis, r=alexcrichtonbors-0/+4
rustbuild: Make save-analysis an option This makes save-analysis an option independent from the release channel. The CI build scripts have been modified to enable the flag. *Merge with caution.* I haven't tested this, and this can cause nightly breakage.
2017-03-12Default llvm.clean-rebuild to falseVadim Petrochenkov-1/+1
2017-03-12rustbuild: Add option for enabling partial LLVM rebuildsVadim Petrochenkov-0/+4
2017-03-11configure: Remove --build detectionAlex Crichton-8/+7
This commit removes detection of CFG_OSTYPE and CFG_CPUTYPE from the configure script, which means that the default value of `--build` is no longer present in the configure script. All this logic is now available in rustbuild itself, so there's no need to duplicate it.
2017-03-11rustbuild: Make save-analysis an optionTatsuyuki Ishi-0/+4
2017-03-09rustbuild: expose LLVM_PARALLEL_LINK_JOBSRobin Kruppe-0/+3
This allows limiting the number of linker jobs to avoid swapping when linking LLVM with debug info.
2017-03-03rustbuild: Add support for compiling CargoAlex Crichton-0/+4
This commit adds support to rustbuild for compiling Cargo as part of the release process. Previously rustbuild would simply download a Cargo snapshot and repackage it. With this change we should be able to turn off artifacts from the rust-lang/cargo repository and purely rely on the artifacts Cargo produces here. The infrastructure added here is intended to be extensible to other components, such as the RLS. It won't exactly be a one-line addition, but the addition of Cargo didn't require too much hooplah anyway. The process for release Cargo will now look like: * The rust-lang/rust repository has a Cargo submodule which is used to build a Cargo to pair with the rust-lang/rust release * Periodically we'll update the cargo submodule as necessary on rust-lang/rust's master branch * When branching beta we'll create a new branch of Cargo (as we do today), and the first commit to the beta branch will be to update the Cargo submodule to this exact revision. * When branching stable, we'll ensure that the Cargo submodule is updated and then make a stable release. Backports to Cargo will look like: * Send a PR to cargo's master branch * Send a PR to cargo's release branch (e.g. rust-1.16.0) * Send a PR to rust-lang/rust's beta branch updating the submodule * Eventually send a PR to rust-lang/rust's master branch updating the submodule For reference, the process to add a new component to the rust-lang/rust release would look like: * Add `$foo` as a submodule in `src/tools` * Add a `tool-$foo` step which compiles `$foo` with the specified compiler, likely mirroring what Cargo does. * Add a `dist-$foo` step which uses `src/tools/$foo` and the `tool-$foo` output to create a rust-installer package for `$foo` likely mirroring what Cargo does. * Update the `dist-extended` step with a new dependency on `dist-$foo` * Update `src/tools/build-manifest` for the new component.