diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:02:58 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:02:58 +0000 |
commit | 698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch) | |
tree | 173a775858bd501c378080a10dca74132f05bc50 /src/doc/rustc-dev-guide/src/building/prerequisites.md | |
parent | Initial commit. (diff) | |
download | rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip |
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/doc/rustc-dev-guide/src/building/prerequisites.md')
-rw-r--r-- | src/doc/rustc-dev-guide/src/building/prerequisites.md | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/src/doc/rustc-dev-guide/src/building/prerequisites.md b/src/doc/rustc-dev-guide/src/building/prerequisites.md new file mode 100644 index 000000000..a5ab23d91 --- /dev/null +++ b/src/doc/rustc-dev-guide/src/building/prerequisites.md @@ -0,0 +1,85 @@ +# Prerequisites + +## Dependencies + +Before building the compiler, you need the following things installed: + +* `python` 3 or 2.7 (under the name `python`; `python2` or `python3` will not work) +* `curl` +* `git` +* `ssl` which comes in `libssl-dev` or `openssl-devel` +* `pkg-config` if you are compiling on Linux and targeting Linux + +If building LLVM from source (the default), you'll need additional tools: + +* `g++` 5.1 or later, `clang++` 3.5 or later, or MSVC 2017 or later. +* `ninja`, or GNU `make` 3.81 or later (ninja is recommended, especially on Windows) +* `cmake` 3.13.4 or later + +Otherwise, you'll need LLVM installed and `llvm-config` in your path. +See [this section for more info][sysllvm]. + +[sysllvm]: ./new-target.md#using-pre-built-llvm + +### Windows + +* Install [winget](https://github.com/microsoft/winget-cli) + +`winget` is a Windows package manager. It will make package installation easy +on Windows. + +Run the following in a terminal: + +```powershell +winget install -e Python.Python.3 +winget install -e Kitware.CMake +``` + +If any of those is installed already, winget will detect it. +Then edit your systems `PATH` variable and add: `C:\Program Files\CMake\bin`. + +For more information about building on Windows, +see [the `rust-lang/rust` README](https://github.com/rust-lang/rust#building-on-windows). + +## Hardware + +You will need an internet connection to build. The bootstrapping process +involves updating git submodules and downloading a beta compiler. It doesn't +need to be super fast, but that can help. + +There are no strict hardware requirements, but building the compiler is +computationally expensive, so a beefier machine will help, and I wouldn't +recommend trying to build on a Raspberry Pi! We recommend the following. +* 30GB+ of free disk space. Otherwise, you will have to keep + clearing incremental caches. More space is better, the compiler is a bit of a + hog; it's a problem we are aware of. +* 8GB+ RAM +* 2+ cores. Having more cores really helps. 10 or 20 or more is not too many! + +Beefier machines will lead to much faster builds. If your machine is not very +powerful, a common strategy is to only use `./x.py check` on your local machine +and let the CI build test your changes when you push to a PR branch. + +Building the compiler takes more than half an hour on my moderately powerful +laptop. The first time you build the compiler, LLVM will also be built unless +you use CI-built LLVM ([see here][config]). + +Like `cargo`, the build system will use as many cores as possible. Sometimes +this can cause you to run low on memory. You can use `-j` to adjust the number +concurrent jobs. If a full build takes more than ~45 minutes to an hour, you +are probably spending most of the time swapping memory in and out; try using +`-j1`. + +If you don't have too much free disk space, you may want to turn off +incremental compilation ([see here][config]). This will make compilation take +longer (especially after a rebase), but will save a ton of space from the +incremental caches. + +[config]: ./how-to-build-and-run.md#create-a-configtoml + +## `rustc` and toolchain installation + +Follow the installation given in the [Rust book][install] to install a working +`rustc` and the necessary C/++ toolchain on your platform. + +[install]: https://doc.rust-lang.org/book/ch01-01-installation.html |