summaryrefslogtreecommitdiffstats
path: root/src/doc/rustc-dev-guide/src/building/prerequisites.md
diff options
context:
space:
mode:
Diffstat (limited to 'src/doc/rustc-dev-guide/src/building/prerequisites.md')
-rw-r--r--src/doc/rustc-dev-guide/src/building/prerequisites.md85
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