about summary refs log tree commit diff
path: root/compiler/rustc_codegen_gcc/Readme.md
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2025-05-17 09:25:36 +0000
committerGitHub <noreply@github.com>2025-05-17 09:25:36 +0000
commit0a28db2d5b79f71f0f1b4a05dfb2363da03e268e (patch)
tree1731cc687447c2f39c40fa821c2da9c827d6ffd1 /compiler/rustc_codegen_gcc/Readme.md
parent8bfc88f057206d79618ded5b6b6156c6a9daaaa8 (diff)
parentace4c6e01587a213bd0cc78b6d8a981ba403dc81 (diff)
Merge pull request #4324 from RalfJung/rustup
Rustup
Diffstat (limited to 'compiler/rustc_codegen_gcc/Readme.md')
-rw-r--r--compiler/rustc_codegen_gcc/Readme.md44
1 files changed, 30 insertions, 14 deletions
diff --git a/compiler/rustc_codegen_gcc/Readme.md b/compiler/rustc_codegen_gcc/Readme.md
index d0e4dbba6d3..859bb1568f4 100644
--- a/compiler/rustc_codegen_gcc/Readme.md
+++ b/compiler/rustc_codegen_gcc/Readme.md
@@ -12,22 +12,38 @@ This is a GCC codegen for rustc, which means it can be loaded by the existing ru
 The primary goal of this project is to be able to compile Rust code on platforms unsupported by LLVM.
 A secondary goal is to check if using the gcc backend will provide any run-time speed improvement for the programs compiled using rustc.
 
-### Dependencies
-
-**rustup:** Follow the instructions on the official [website](https://www.rust-lang.org/tools/install)
-
-**DejaGnu:** Consider to install DejaGnu which is necessary for running the libgccjit test suite. [website](https://www.gnu.org/software/dejagnu/#downloading)
-
-
+## Getting Started
 
-## Building
-
-**This requires a patched libgccjit in order to work.
+Note: **This requires a patched libgccjit in order to work.
 You need to use my [fork of gcc](https://github.com/rust-lang/gcc) which already includes these patches.**
+The default configuration (see below in the [Quick start](#quick-start) section) will download a `libgccjit` built in the CI that already contains these patches, so you don't need to build this fork yourself if you use the default configuration.
 
-```bash
-$ cp config.example.toml config.toml
-```
+### Dependencies
+
+- rustup: follow instructions on the [official website](https://rustup.rs)
+- consider to install DejaGnu which is necessary for running the libgccjit test suite. [website](https://www.gnu.org/software/dejagnu/#downloading)
+- additional packages: `flex`, `libmpfr-dev`, `libgmp-dev`, `libmpc3`, `libmpc-dev`
+  
+### Quick start
+
+1. Clone and configure the repository:
+   ```bash
+   git clone https://github.com/rust-lang/rustc_codegen_gcc
+   cd rustc_codegen_gcc
+   cp config.example.toml config.toml
+   ```
+
+2. Build and test:
+   ```bash
+   ./y.sh prepare  # downloads and patches sysroot
+   ./y.sh build --sysroot --release
+   
+   # Verify setup with a simple test
+   ./y.sh cargo build --manifest-path tests/hello-world/Cargo.toml
+   
+   # Run full test suite (expect ~100 failing UI tests)
+   ./y.sh test --release
+   ```
 
 If don't need to test GCC patches you wrote in our GCC fork, then the default configuration should
 be all you need. You can update the `rustc_codegen_gcc` without worrying about GCC.
@@ -143,7 +159,7 @@ You can do the same manually (although we don't recommend it):
 $ LIBRARY_PATH="[gcc-path value]" LD_LIBRARY_PATH="[gcc-path value]" rustc +$(cat $CG_GCCJIT_DIR/rust-toolchain | grep 'channel' | cut -d '=' -f 2 | sed 's/"//g' | sed 's/ //g') -Cpanic=abort -Zcodegen-backend=$CG_GCCJIT_DIR/target/release/librustc_codegen_gcc.so --sysroot $CG_GCCJIT_DIR/build_sysroot/sysroot my_crate.rs
 ```
 
-## Env vars
+## Environment variables
 
  * _**CG_GCCJIT_DUMP_ALL_MODULES**_: Enables dumping of all compilation modules. When set to "1", a dump is created for each module during compilation and stored in `/tmp/reproducers/`.
  * _**CG_GCCJIT_DUMP_MODULE**_: Enables dumping of a specific module. When set with the module name, e.g., `CG_GCCJIT_DUMP_MODULE=module_name`, a dump of that specific module is created in `/tmp/reproducers/`.