diff --git a/.github/workflows/mingw_build.yml b/.github/workflows/mingw_build.yml new file mode 100644 index 000000000..6283d91f4 --- /dev/null +++ b/.github/workflows/mingw_build.yml @@ -0,0 +1,96 @@ +name: Mingw build + +on: + push: + branches: + - main + pull_request: + branches: + - main + +env: + BUILD_TYPE: Debug + FEX_ENABLEAVX: 1 + +jobs: + build: + runs-on: ${{ matrix.arch }} + strategy: + matrix: + arch: [[self-hosted, x64, mingw], [self-hosted, ARM64, mingw]] + fail-fast: false + + steps: + - uses: actions/checkout@v3 + + - name: Set runner label + run: echo "runner_label=${{ matrix.arch[1] }}" >> $GITHUB_ENV + + - name: Set CC x86 + if: matrix.arch[1] == 'x64' + run: | + echo "CC=$HOME/llvm-mingw/build/bin/x86_64-w64-mingw32-clang" >> $GITHUB_ENV + echo "CXX=$HOME/llvm-mingw/build/bin/x86_64-w64-mingw32-clang++" >> $GITHUB_ENV + + - name: Set CC Arm64 + if: matrix.arch[1] == 'ARM64' + run: | + echo "CC=$HOME/llvm-mingw/build/bin/aarch64-w64-mingw32-clang" >> $GITHUB_ENV + echo "CXX=$HOME/llvm-mingw/build/bin/aarch64-w64-mingw32-clang++" >> $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_LTO=False -DENABLE_ASSERTIONS=True -DENABLE_X86_HOST_DEBUG=True -DENABLE_INTERPRETER=False -DBUILD_TESTS=False -DENABLE_JEMALLOC=False -DENABLE_JEMALLOC_GLIBC_ALLOC=False -DENABLE_LLD=False -DCMAKE_INSTALL_PREFIX=${{runner.workspace}}/build/install + + - 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: Set runner name + if: ${{ always() }} + run: echo "runner_name=$(hostname)" >> $GITHUB_ENV + + - name: Upload results + if: ${{ always() }} + uses: 'actions/upload-artifact@v3' + timeout-minutes: 1 + with: + name: Results-${{ env.runner_name }} + path: ${{runner.workspace}}/build/Testing/Temporary/LastTest_*.log + retention-days: 3 +