From 119b623c474fab82f8f33bec977275a6c6a2a53f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20P=C5=82aczek?= Date: Sun, 8 Sep 2024 18:50:49 +0100 Subject: [PATCH] refactor: arm64 default --- .cargo/config.toml | 4 +++- .github/workflows/publish.yml | 21 ++++++++++++++------- README.md | 10 +++++++--- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 16df86f..e2f942b 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,3 +1,5 @@ [target.armv7-unknown-linux-gnueabihf] linker = "arm-linux-gnueabihf-gcc" -rustflags = ["-C", "target-feature=+crt-static"] + +[target.aarch64-unknown-linux-gnu] +linker = "aarch64-linux-gnu-gcc" diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 3d28e53..240ec51 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -23,22 +23,27 @@ jobs: - name: Restore Apt packages uses: awalsh128/cache-apt-pkgs-action@v1.4.2 with: - packages: libclang1 gcc-arm-linux-gnueabihf + packages: libclang1 gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu version: "1.0" - name: Install Rust toolchain uses: dtolnay/rust-toolchain@1.81.0 with: - targets: armv7-unknown-linux-gnueabihf + targets: "armv7-unknown-linux-gnueabihf,aarch64-unknown-linux-gnu" - name: Restore Rust cache uses: Swatinem/rust-cache@v2.7.3 - - name: Build - run: cargo build --locked --release --target=armv7-unknown-linux-gnueabihf + - name: Static build (ARM64) + run: RUSTFLAGS='-C target-feature=+crt-static' cargo build --locked --release --target=aarch64-unknown-linux-gnu - - name: Rename binary - run: cp target/armv7-unknown-linux-gnueabihf/release/rspi-bios ./rspi-bios-armv7-unknown-linux-gnu + - name: Static build (ARMv7) + run: RUSTFLAGS='-C target-feature=+crt-static' cargo build --locked --release --target=armv7-unknown-linux-gnueabihf + + - name: Rename binaries + run: | + cp target/aarch64-unknown-linux-gnu/release/rspi-bios ./rspi-bios-aarch64-unknown-linux-gnu + cp target/armv7-unknown-linux-gnueabihf/release/rspi-bios ./rspi-bios-armv7-unknown-linux-gnueabihf - name: Tag id: tag @@ -51,5 +56,7 @@ jobs: uses: softprops/action-gh-release@v2.0.8 with: tag_name: ${{ steps.tag.outputs.new_tag }} - files: "rspi-bios-armv7-unknown-linux-gnu" fail_on_unmatched_files: true + files: | + "rspi-bios-aarch64-unknown-linux-gnu" + "rspi-bios-armv7-unknown-linux-gnueabihf" diff --git a/README.md b/README.md index a186dab..9341547 100644 --- a/README.md +++ b/README.md @@ -37,14 +37,18 @@ # Install dependencies (Ubuntu 24.04 LTS) # You may need some or all of these # See https://aws.github.io/aws-lc-rs/requirements/linux.html -sudo apt-get install -y clang libclang1 cmake gcc-arm-linux-gnueabihf +sudo apt-get install -y clang libclang1 cmake gcc-aarch64-linux-gnu +# (32-bit ARMv7) sudo apt-get install -y gcc-arm-linux-gnueabihf cargo install --force --locked bindgen-cli # Add target (linker already configured for you in ./.cargo/config.toml) -rustup target add armv7-unknown-linux-gnueabihf +rustup target add aarch64-unknown-linux-gnu +# (32-bit ARMv7) rustup target add armv7-unknown-linux-gnueabihf # Build -cargo build --release --target=armv7-unknown-linux-gnueabihf +cargo build --release --target=aarch64-unknown-linux-gnu +# (32-bit ARMv7) cargo build --release --target=armv7-unknown-linux-gnueabihf +# Set RUSTFLAGS='-C target-feature=+crt-static' if target uses older version of glibc ``` You can then copy and run the outputted binary like this: