Skip to content

Commit

Permalink
Update readme to suggest ./configure instead of printf
Browse files Browse the repository at this point in the history
This also makes some other minor cleanups:
- Suggest `python x.py` on windows instead of `./x.py`, which usually
  doesn't work
- Move the "Configure and Make" section to a subsection of "Building on
  Unix"
- Mention `config.toml` earlier
- Suggest `x.py setup user` on Windows, since `configure` won't work
  • Loading branch information
jyn514 committed Apr 19, 2023
1 parent b7607a9 commit 8a9668d
Showing 1 changed file with 25 additions and 26 deletions.
51 changes: 25 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ Read ["Installation"] from [The Book].

The Rust build system uses a Python script called `x.py` to build the compiler,
which manages the bootstrapping process. It lives at the root of the project.
It also uses a file named `config.toml` to determine various configuration settings for the build.
You can see a full list of options in `config.example.toml`.

The `x.py` command can be run directly on most Unix systems in the following
format:
Expand Down Expand Up @@ -85,6 +87,8 @@ See [the rustc-dev-guide for more info][sysllvm].

### Building on a Unix-like system

#### Build steps

1. Clone the [source] with `git`:

```sh
Expand All @@ -96,18 +100,13 @@ See [the rustc-dev-guide for more info][sysllvm].

2. Configure the build settings:

The Rust build system uses a file named `config.toml` in the root of the
source tree to determine various configuration settings for the build.
Set up the defaults intended for distros to get started. You can see a full
list of options in `config.example.toml`.

```sh
printf 'profile = "user" \nchangelog-seen = 2 \n' > config.toml
./configure
```

If you plan to use `x.py install` to create an installation, it is
recommended that you set the `prefix` value in the `[install]` section to a
directory.
directory: `./configure --set install.prefix=<path>`

3. Build and install:

Expand All @@ -117,12 +116,25 @@ See [the rustc-dev-guide for more info][sysllvm].

When complete, `./x.py install` will place several programs into
`$PREFIX/bin`: `rustc`, the Rust compiler, and `rustdoc`, the
API-documentation tool. If you've set `profile = "user"` or
`build.extended = true`, it will also include [Cargo], Rust's package
manager.
API-documentation tool. By default, it will also include [Cargo], Rust's package manager.
You can disable this behavior by passing `--set build.extended=false` to `./configure`.

[Cargo]: https://github.com/rust-lang/cargo

#### Configure and Make

This project provides a configure script and makefile (the latter of which just invokes `x.py`).
`./configure` is the recommended way to programatically generate a `config.toml`. `make` is not
recommended (we suggest using `x.py` directly), but it is supported and we try not to break it
unnecessarily.

```sh
./configure
make && sudo make install
```

`configure` generates a `config.toml` which can also be used with normal `x.py` invocations.

### Building on Windows

On Windows, we suggest using [winget] to install dependencies by running the
Expand Down Expand Up @@ -186,7 +198,7 @@ toolchain.
4. Navigate to Rust's source code (or clone it), then build it:

```sh
./x.py build && ./x.py install
python x.py setup user && python x.py build && python x.py install
```

#### MSVC
Expand All @@ -204,6 +216,7 @@ With these dependencies installed, you can build the compiler in a `cmd.exe`
shell with:

```sh
python x.py setup user
python x.py build
```

Expand Down Expand Up @@ -232,21 +245,7 @@ Windows build triples are:

The build triple can be specified by either specifying `--build=<triple>` when
invoking `x.py` commands, or by creating a `config.toml` file (as described in
[Installing from Source](#installing-from-source)), and modifying the `build`
option under the `[build]` section.

### Configure and Make

While it's not the recommended build system, this project also provides a
configure script and makefile (the latter of which just invokes `x.py`).

```sh
./configure
make && sudo make install
```

`configure` generates a `config.toml` which can also be used with normal `x.py`
invocations.
[Building on a Unix-like system](#building-on-a-unix-like-system)), and passing `--set build.build=<triple>` to `./configure`.

## Building Documentation

Expand Down

0 comments on commit 8a9668d

Please sign in to comment.