about summary refs log tree commit diff
path: root/src/bootstrap/Cargo.toml
AgeCommit message (Collapse)AuthorLines
2020-05-21Add flag to open docs: x.py doc --openDavid Tolnay-0/+1
Tested with: # opens doc/index.html x.py doc --stage 0 --open x.py doc --stage 0 --open src/doc # opens doc/book/index.html x.py doc --stage 0 --open src/doc/book # opens doc/std/index.html x.py doc --stage 0 --open src/libstd # opens doc/proc_macro/index.html x.py doc --stage 0 --open src/libproc_macro # opens both x.py doc --stage 0 --open src/libstd src/libproc_macro
2020-03-26Upgrade rustc and bootstrap dependenciesMateusz Mikuła-1/+1
2020-01-11use winapi for non-stdlib Windows bindingsAndy Russell-0/+4
2019-12-21Implement rustfmt running manually using ignore crateMark Rousskov-0/+1
This replaces cargo-fmt with rustfmt with --skip-children which should allow us to format code without running into rust-lang/rustfmt#3930. This also bumps up the version of rustfmt used to a more recent one.
2019-12-21Drop petgraph dependency from bootstrapMark Rousskov-1/+0
It was essentially unused, likely leftover from a previous refactoring iteration.
2019-08-20Bump toml dependency.Eric Huss-1/+1
Just removing an old/duplicated dependency from the workspace.
2019-05-09remove unneeded `extern crate`s from build toolsAndy Russell-3/+2
2019-05-05Update getopts to 0.2.19varkor-1/+1
2019-05-02Update getopts to 0.2.18varkor-1/+1
This is a proof-of-concept that the dependency unification fix works.
2019-04-10Update cmake, cc and compiler_builtins for VS 2019 supportJohn Kåre Alsaker-2/+2
2018-12-10bootstrap: fix editionljedrz-0/+1
2018-09-08Update `petgraph` dependency to 0.4.13Gabriel Majeri-1/+1
This fixes building `bootstrap` using a local Rust nightly.
2018-07-06Dedupe filetimeBastien Orivel-1/+1
2018-05-09ci: Compile LLVM with Clang 6.0.0Alex Crichton-0/+5
Currently on CI we predominately compile LLVM with the default system compiler which means gcc on Linux, some version of Clang on OSX, MSVC on Windows, and gcc on MinGW. This commit switches Linux, OSX, and Windows to all use Clang 6.0.0 to build LLVM (aka the C/C++ compiler as part of the bootstrap). This looks to generate faster code according to #49879 which translates to a faster rustc (as LLVM internally is faster) The major changes here were to the containers that build Linux releases, basically adding a new step that uses the previous gcc 4.8 compiler to compile the next Clang 6.0.0 compiler. Otherwise the OSX and Windows scripts have been updated to download precompiled versions of Clang 6 and configure the build to use them. Note that `cc` was updated here to fix using `clang-cl` with `cc-rs` on MSVC, as well as an update to `sccache` on Windows which was needed to correctly work with `clang-cl`. Finally the MinGW compiler is entirely left out here intentionally as it's currently thought that Clang can't generate C++ code for MinGW and we need to use gcc, but this should be verified eventually.
2018-04-03Implement generating graphs of the build stepsMark Simulacrum-0/+1
2018-04-03Add tests to rustbuildMark Simulacrum-0/+3
In order to run tests, previous commits have cfg'd out various parts of rustbuild. Generally speaking, these are filesystem-related operations and process-spawning related parts. Then, rustbuild is run "as normal" and the various steps that where run are retrieved from the cache and checked against the expected results. Note that this means that the current implementation primarily tests "what" we build, but doesn't actually test that what we build *will* build. In other words, it doesn't do any form of dependency verification for any crate. This is possible to implement, but is considered future work. This implementation strives to cfg out as little code as possible; it also does not currently test anywhere near all of rustbuild. The current tests are also not checked for "correctness," rather, they simply represent what we do as of this commit, which may be wrong. Test cases are drawn from the old implementation of rustbuild, though the expected results may vary.
2018-02-05Use time crate in bootstrap dist instead of dateOnur Aslan-0/+1
2017-10-11Bump cc to 1.01 to include x86_64-unknown-linux-gnux32 supportMarco A L Barbosa-1/+1
2017-09-28Update to the `cc` crateAlex Crichton-1/+1
This is the name the `gcc` crate has moved to
2017-09-12bump gcc for bootstrapQuietMisdreavus-1/+1
On Windows, the gcc crate would send /Wall to msvc, which would cause builds to get flooded with warnings, exploding compile times from one hour to more than 72! The gcc crate version 0.3.54 changes this behavior to send /W4 instead, which greatly cuts down on cl.exe flooding the command prompt window with warnings.
2017-07-20Utilize interning to allow Copy/Clone stepsMark Simulacrum-0/+1
2017-07-20Update to toml 0.4Mark Simulacrum-5/+4
2017-07-20Fixes warnings and errors introduced while moving code aroundMark Simulacrum-0/+3
2017-06-01Support VS 2017Brian Anderson-1/+1
Fixes #38584
2017-05-13Pass static crt to llvm cmake configurationLiran Ringel-2/+2
2017-04-27appveyor: Use Ninja/sccache on MSVCAlex Crichton-0/+5
Now that the final bug fixes have been merged into sccache we can start leveraging sccache on the MSVC builders on AppVeyor instead of relying on the ad-hoc caching strategy of trigger files and whatnot.
2017-04-26Update num_cpus dependency to 1.x (1.4.0)Jessica Hamilton-1/+1
2017-01-04rustbuild: Quickly `dist` cross-host compilersAlex Crichton-0/+4
This commit optimizes the compile time for creating tarballs of cross-host compilers and as a proof of concept adds two to the standard Travis matrix. Much of this commit is further refactoring and refining of the `step.rs` definitions along with the interpretation of `--target` and `--host` flags. This has gotten confusing enough that I've also added a small test suite to `src/bootstrap/step.rs` to ensure what we're doing works and doesn't regress. After this commit when you execute: ./x.py dist --host $MY_HOST --target $MY_HOST the build system will compile two compilers. The first is for the build platform and the second is for the host platform. This second compiler is then packaged up and placed into `build/dist` and is ready to go. With a fully cached LLVM and docker image I was able to create a cross-host compiler in around 20 minutes locally. Eventually we plan to add a whole litany of cross-host entries to the Travis matrix, but for now we're just adding a few before we eat up all the extra capacity. cc #38531
2016-11-30Update the bootstrap compilerAlex Crichton-1/+0
Now that we've got a beta build, let's use it!
2016-11-08rustbuild: Tweak for vendored dependenciesAlex Crichton-5/+1
A few changes are included here: * The `winapi` and `url` dependencies were dropped. The source code for these projects is pretty weighty, and we're about to vendor them, so let's not commit to that intake just yet. If necessary we can vendor them later but for now it shouldn't be necessary. * The `--frozen` flag is now always passed to Cargo, obviating the need for tidy's `cargo_lock` check. * Tidy was updated to not check the vendor directory Closes #34687
2016-11-02rustbuild: Rewrite user-facing interfaceAlex Crichton-1/+1
This commit is a rewrite of the user-facing interface to the rustbuild build system. The intention here is to make it much easier to compile/test the project without having to remember weird rule names and such. An overall view of the new interface is: # build everything ./x.py build # document everyting ./x.py doc # test everything ./x.py test # test libstd ./x.py test src/libstd # build libcore stage0 ./x.py build src/libcore --stage 0 # run stage1 run-pass tests ./x.py test src/test/run-pass --stage 1 The `src/bootstrap/bootstrap.py` script is now aliased as a top-level `x.py` script. This `x` was chosen to be both short and easily tab-completable (no collisions in that namespace!). The build system now accepts a "subcommand" of what to do next, the main ones being build/doc/test. Each subcommand then receives an optional list of arguments. These arguments are paths in the source repo of what to work with. That is, if you want to test a directory, you just pass that directory as an argument. The purpose of this rewrite is to do away with all of the arcane renames like "rpass" is the "run-pass" suite, "cfail" is the "compile-fail" suite, etc. By simply working with directories and files it's much more intuitive of how to run a test (just pass it as an argument). The rustbuild step/dependency management was also rewritten along the way to make this easy to work with and define, but that's largely just a refactoring of what was there before. The *intention* is that this support is extended for arbitrary files (e.g. `src/test/run-pass/my-test-case.rs`), but that isn't quite implemented just yet. Instead directories work for now but we can follow up with stricter path filtering logic to plumb through all the arguments.
2016-10-08rustbuild: Optimize build times slightlyAlex Crichton-3/+4
As the entry point for building the Rust compiler, a good user experience hinges on this compiling quickly to get to the meat of the problem. To that end use `#[cfg]`-specific dependencies to avoid building Windows crates on Unix and drop the `regex` crate for now which was easily replacable with some string searching.
2016-08-12Produce source package in rust-installer format in addition to vanilla tarballDiggory Blake-0/+1
Copy source files from rust code Add missing wildcard Remove unused function Remove use of tar --transform
2016-07-20mk: Stop using cmake for compiler-rtAlex Crichton-1/+1
The compiler-rt build system has been a never ending cause of pain for Rust unfortunately: * The build system is very difficult to invoke and configure to only build compiler-rt, especially across platforms. * The standard build system doesn't actually do what we want, not working for some of our platforms and requiring a significant number of patches on our end which are difficult to apply when updating compiler-rt. * Compiling compiler-rt requires LLVM to be compiled, which... is a big dependency! This also means that over time compiler-rt is not guaranteed to build against older versions of LLVM (or newer versions), and we often want to work with multiple versions of LLVM simultaneously. The makefiles and rustbuild already know how to compile C code, the code here is far from the *only* C code we're compiling. This patch jettisons all logic to work with compiler-rt's build system and just goes straight to the source. We just list all files manually (copied from compiler-rt's lib/builtins/CMakeLists.txt) and compile them into an archive. It's likely that this means we'll fail to pick up new files when we upgrade compiler-rt, but that seems like a much less significant cost to pay than what we're currently paying. cc #34400, first steps towards that
2016-07-05rustbuild: Remove the `build` directoryAlex Crichton-3/+3
The organization in rustbuild was a little odd at the moment where the `lib.rs` was quite small but the binary `main.rs` was much larger. Unfortunately as well there was a `build/` directory with the implementation of the build system, but this directory was ignored by GitHub on the file-search prompt which was a little annoying. This commit reorganizes rustbuild slightly where all the library files (the build system) is located directly inside of `src/bootstrap` and all the binaries now live in `src/bootstrap/bin` (they're small). Hopefully this should allow GitHub to index and allow navigating all the files while maintaining a relatively similar layout to the other libraries in `src/`.
2016-04-15Auto merge of #32895 - alexcrichton:rustbuild-beta, r=brsonbors-0/+1
rustbuild: Fix handling of the bootstrap key Bring the calculation logic in line with the makefiles and also set the RUSTC_BOOTSTRAP_KEY environment variable to enable the bootstrap on the stable compiler.
2016-04-11rustbuild: Fix handling of the bootstrap keyAlex Crichton-0/+1
Bring the calculation logic in line with the makefiles and also set the RUSTC_BOOTSTRAP_KEY environment variable to enable the bootstrap on the stable compiler.
2016-04-10Add rustbuild option to use Ninja for LLVM buildNick Platt-1/+1
2016-03-08rustbuild: Fixup calling rustdoc in various stagesAlex Crichton-0/+4
The stage0 rustdoc comes from the snapshot, and we need a shim like with `rustc` to pass `--cfg` for now.
2016-02-11Add a Cargo-based build systemAlex Crichton-0/+29
This commit is the start of a series of commits which start to replace the makefiles with a Cargo-based build system. The aim is not to remove the makefiles entirely just yet but rather just replace the portions that invoke the compiler to do the bootstrap. This commit specifically adds enough support to perform the bootstrap (and all the cross compilation within) along with generating documentation. More commits will follow up in this series to actually wire up the makefiles to call this build system, so stay tuned!