Add MPU support (along with improved Timer APIs) #13
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build | |
| on: | |
| push: | |
| branches: | |
| - '*' | |
| pull_request: | |
| jobs: | |
| build: | |
| name: Build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| platform: [ | |
| ubuntu-latest, | |
| macos-latest, | |
| windows-latest | |
| ] | |
| target: [ | |
| aarch64-unknown-none-softfloat, | |
| aarch64-unknown-none, | |
| ] | |
| variant: [ | |
| "", # debug | |
| "--release" | |
| ] | |
| runs-on: ${{ matrix.platform }} | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v6 | |
| - name: Install Rustup (macOS) | |
| run: | | |
| curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
| echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
| if: runner.os == 'macOS' | |
| - name: Set Rustup profile to minimal | |
| run: rustup set profile minimal | |
| - name: Install Target Support | |
| run: | | |
| rustup target add ${{ matrix.target }} | |
| - name: Print Rust Version | |
| run: | | |
| rustc -Vv | |
| cargo -Vv | |
| - name: Build Package With All Warnings Denied | |
| run: cargo build ${{ matrix.variant }} --target=${{ matrix.target }} | |
| env: | |
| RUSTFLAGS: "-D warnings" | |
| test: | |
| name: Test | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v6 | |
| - name: Install QEMU | |
| run: | | |
| sudo apt-get -y update | |
| sudo apt-get -y install libpixman-1-0 libfdt1 libglib2.0-0t64 | |
| curl -sSL https://github.com/jonathanpallant/qemu9-for-ubuntu-2404/releases/download/qemu-10.2.2%2Bbuild0/qemu-10.2.2-ubuntu-24.04.tar.gz | sudo tar xvzf - -C / | |
| - name: Install just | |
| run: sudo apt-get install just | |
| - name: Install FVP | |
| run: | | |
| mkdir /tmp/fvp | |
| cd /tmp/fvp && curl -LO https://developer.arm.com/-/cdn-downloads/permalink/FVPs-Architecture/FM-11.30/FVP_Base_AEMv8R_11.30_27_Linux64.tgz | |
| cd /tmp/fvp && tar xf FVP_Base_AEMv8R_11.30_27_Linux64.tgz | |
| - name: Run Tests | |
| run: PATH="/tmp/fvp/AEMv8R_base_pkg/models/Linux64_GCC-9.3/:/opt/qemu/bin:$PATH" just test | |
| check_formatting: | |
| name: Check Formatting | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 2 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - run: cargo fmt -- --check | |
| - run: cd examples/armv8-r && cargo fmt -- --check | |
| clippy: | |
| name: Clippy | |
| # Had to duplicate the supported targets list from above | |
| # @fixme must be a way to specify it just once? | |
| strategy: | |
| matrix: | |
| target: [ | |
| aarch64-unknown-none-softfloat, | |
| aarch64-unknown-none, | |
| ] | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - run: rustup target add ${{ matrix.target }} | |
| - run: cargo clippy --target=${{ matrix.target }} | |
| armv8r-examples: | |
| runs-on: ubuntu-latest | |
| name: Build Armv8-R Examples | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - run: cd examples/armv8-r && cargo build --bins |