diff --git a/.github/workflows/vixl_simulator.yml b/.github/workflows/vixl_simulator.yml new file mode 100644 index 000000000..c3533cf8a --- /dev/null +++ b/.github/workflows/vixl_simulator.yml @@ -0,0 +1,118 @@ +name: Vixl Simulator run + +on: + push: + branches: + - main + pull_request: + branches: + - main + +env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + BUILD_TYPE: Release + CC: clang + CXX: clang++ + +jobs: + build: + runs-on: ${{ matrix.arch }} + strategy: + matrix: + # Only the x86-64 runner is fast enough to run this + arch: [[self-hosted, x64], [self-hosted, ARMv8.4]] + fail-fast: false + + steps: + - uses: actions/checkout@v2 + + - name: Set runner label + run: echo "runner_label=${{ matrix.arch[1] }}" >> $GITHUB_ENV + + - name: Set rootfs paths + run: | + echo "FEX_ROOTFS_MOUNT=/mnt/AutoNFS/rootfs/" >> $GITHUB_ENV + echo "FEX_ROOTFS_PATH=$HOME/Rootfs/" >> $GITHUB_ENV + echo "FEX_ROOTFS=$HOME/Rootfs/" >> $GITHUB_ENV + echo "ROOTFS=$HOME/Rootfs/" >> $GITHUB_ENV + + - name: Update RootFS cache + # Use a bash shell so we can use the same syntax for environment variable + # access regardless of the host operating system + shell: bash + run: $GITHUB_WORKSPACE/Scripts/CI_FetchRootFS.py + + - name : submodule checkout + # Need to update submodules + run: | + git submodule sync --recursive + git submodule update --init --depth 1 + + - name: Clean Build Environment + run: rm -Rf ${{runner.workspace}}/build + + - name: Create Build Environment + # Some projects don't allow in-source building, so create a separate build directory + # We'll use this as our working directory for all subsequent commands + run: cmake -E make_directory ${{runner.workspace}}/build + + - name: Configure CMake + # Use a bash shell so we can use the same syntax for environment variable + # access regardless of the host operating system + shell: bash + working-directory: ${{runner.workspace}}/build + # Note the current convention is to use the -S and -B options here to specify source + # and build directories, but this is only available with CMake 3.13 and higher. + # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 + run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G Ninja -DENABLE_VIXL_SIMULATOR=True -DENABLE_LTO=False -DENABLE_ASSERTIONS=True -DENABLE_X86_HOST_DEBUG=True + + - name: Build + working-directory: ${{runner.workspace}}/build + shell: bash + # Execute the build. You can specify a specific target with "--target " + run: cmake --build . --config $BUILD_TYPE + + - name: ASM Tests + working-directory: ${{runner.workspace}}/build + shell: bash + # Execute the unit tests + run: cmake --build . --config $BUILD_TYPE --target asm_tests + + - name: ASM Test Results move + if: ${{ always() }} + shell: bash + working-directory: ${{runner.workspace}}/build + run: mv ${{runner.workspace}}/build/Testing/Temporary/LastTest.log ${{runner.workspace}}/build/Testing/Temporary/LastTest_ASM.log || true + + - name: IR Tests + working-directory: ${{runner.workspace}}/build + shell: bash + # Execute the unit tests + run: cmake --build . --config $BUILD_TYPE --target ir_tests + + - name: IR Test Results move + if: ${{ always() }} + shell: bash + working-directory: ${{runner.workspace}}/build + run: mv ${{runner.workspace}}/build/Testing/Temporary/LastTest.log ${{runner.workspace}}/build/Testing/Temporary/LastTest_IR.log || true + + - name: Truncate test results + if: ${{ always() }} + shell: bash + working-directory: ${{runner.workspace}}/build + # Cap out the log files at 20M in case something crash spins and dumps fault text + # ASM tests get quite close to 10MB + run: truncate --size=<20M ${{runner.workspace}}/build/Testing/Temporary/LastTest_*.log || true + + - name: Set runner name + if: ${{ always() }} + run: echo "runner_name=$(hostname)" >> $GITHUB_ENV + + - name: Upload results + if: ${{ always() }} + uses: 'actions/upload-artifact@v2' + with: + name: Results-${{ env.runner_name }} + path: ${{runner.workspace}}/build/Testing/Temporary/LastTest_*.log + retention-days: 3 +