diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index cf1adddd..d71e28dd 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -64,6 +64,21 @@ jobs: uses: actions-rust-lang/setup-rust-toolchain@v1.8.0 with: cache-workspaces: "./libs -> ./target" + components: llvm-tools-preview + - name: Install linker (Windows) + if: ${{ matrix.os == 'windows-2022' }} + uses: taiki-e/install-action@v2 + with: + tool: cargo-binutils + - name: Install linker (Linux) + if: ${{ matrix.os == 'ubuntu-22.04' }} + run: | + sudo apt-get update + sudo apt-get install lld clang + - name: Install linker (MacOS) + if: ${{ matrix.os == 'macos-12' || matrix.os == 'macos-14' }} + run: | + brew install llvm - name: Build CLI run: | cd libs @@ -215,9 +230,23 @@ jobs: - name: Install Rust stable toolchain uses: actions-rust-lang/setup-rust-toolchain@v1.8.0 with: - components: rustfmt + components: rustfmt, llvm-tools-preview rustflags: "" cache-workspaces: "./libs -> ./target" + - name: Install linker (Windows) + if: ${{ matrix.os == 'windows-2022' }} + uses: taiki-e/install-action@v2 + with: + tool: cargo-binutils + - name: Install linker (Linux) + if: ${{ matrix.os == 'ubuntu-22.04' }} + run: | + sudo apt-get update + sudo apt-get install lld clang + - name: Install linker (MacOS) + if: ${{ matrix.os == 'macos-12' || matrix.os == 'macos-14' }} + run: | + brew install llvm - name: Download pavex CLI artifact uses: actions/download-artifact@v4 with: diff --git a/.gitignore b/.gitignore index 22fca860..885abac6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ /libs/ui_test_envs /libs/target /libs/vendor -/libs/.cargo /doc_examples/tutorial_envs/ /doc_examples/**/target /examples/**/vendor @@ -14,4 +13,4 @@ trace-*.json /.cache/ /docs/api_reference/ -.direnv/ \ No newline at end of file +.direnv/ diff --git a/libs/.cargo/config.toml b/libs/.cargo/config.toml new file mode 100644 index 00000000..fbda23bd --- /dev/null +++ b/libs/.cargo/config.toml @@ -0,0 +1,20 @@ +# On Windows +# ``` +# cargo install -f cargo-binutils +# rustup component add llvm-tools-preview +[target.x86_64-pc-windows-msvc] +rustflags = ["-C", "link-arg=-fuse-ld=lld"] +[target.x86_64-pc-windows-gnu] +rustflags = ["-C", "link-arg=-fuse-ld=lld"] + +# On Linux: +# - Ubuntu, `sudo apt-get install lld clang` +# - Arch, `sudo pacman -S lld clang` +[target.x86_64-unknown-linux-gnu] +rustflags = ["-C", "linker=clang", "-C", "link-arg=-fuse-ld=lld"] + +# On MacOS, `brew install llvm` and follow steps in `brew info llvm` +[target.x86_64-apple-darwin] +rustflags = ["-C", "link-arg=-fuse-ld=lld"] +[target.aarch64-apple-darwin] +linker = "/opt/homebrew/opt/llvm/bin/ld64.lld" diff --git a/libs/pavex_test_runner/src/lib.rs b/libs/pavex_test_runner/src/lib.rs index be8a6604..8d4999f9 100644 --- a/libs/pavex_test_runner/src/lib.rs +++ b/libs/pavex_test_runner/src/lib.rs @@ -400,9 +400,17 @@ impl TestData { let mut cargo_config = toml! { [build] incremental = false - - [registries.crates-io] - protocol = "sparse" + + [target.x86_64-pc-windows-msvc] + linker = "rust-lld" + [target.x86_64-pc-windows-gnu] + linker = "rust-lld" + [target.x86_64-unknown-linux-gnu] + linker = "rust-lld" + [target.x86_64-apple-darwin] + linker = "rust-lld" + [target.aarch64-apple-darwin] + linker = "rust-lld" }; cargo_config["build"] .as_table_mut()