diff --git a/.github/workflows/linux-build-sanitizer.yml b/.github/workflows/linux-build-sanitizer.yml new file mode 100644 index 000000000..a5c132093 --- /dev/null +++ b/.github/workflows/linux-build-sanitizer.yml @@ -0,0 +1,86 @@ +name: Linux build With Sanitizer And Fuzzings + +on: + pull_request: + push: + paths-ignore: + - '.github/workflows/msys2-build.yml' + - '.github/workflows/windows-build.yml' + - '.gitignore' + - 'LICENSE' + - 'CHANGELOG.md' + - 'README.md' + - 'README_en.md' + - 'README_fr.md' + +jobs: + build: + strategy: + matrix: + os: [ubuntu-20.04] + arch: [x86_64] + mode: [debug, releasedbg] + + runs-on: ${{ matrix.os }} + if: "!contains(github.event.head_commit.message, 'ci skip')" + + steps: + - uses: actions/checkout@v2 + + # Install Nazara dependencies + - name: Update apt repositories + run: sudo apt-get update + + # Install Nazara dependencies + - name: Install system dependencies + run: | + sudo apt-get install libsndfile1-dev libfreetype6-dev libsdl2-dev mesa-common-dev libxcb-ewmh-dev libxcb-randr0-dev libxcb-icccm4-dev libxcb-keysyms1-dev libgl1-mesa-dev git -y + sudo apt-get install libunwind8-dev libunwind-dev binutils-dev clang-11 -y + + git clone https://github.com/google/honggfuzz + make -C honggfuzz + + + # Force xmake to a specific folder (for cache) + - name: Set xmake env + run: echo "XMAKE_GLOBALDIR=${{ runner.workspace }}/xmake-global" >> $GITHUB_ENV + + # Install xmake + - name: Setup xmake + uses: xmake-io/github-action-setup-xmake@v1 + with: + xmake-version: branch@dev + + # Update xmake repository (in order to have the file that will be cached) + - name: Update xmake repository + run: xmake repo --update + + # Fetch xmake dephash + - name: Retrieve dependencies hash + id: dep_hash + run: echo "::set-output name=hash::$(xmake l utils.ci.packageskey)" + + # Cache xmake dependencies + - name: Retrieve cached xmake dependencies + uses: actions/cache@v2 + with: + path: ${{ env.XMAKE_GLOBALDIR }}/.xmake/packages + key: Linux-${{ matrix.arch }}-${{ matrix.mode }}-${{ steps.dep_hash.outputs.hash }} + + # Setup compilation mode and install project dependencies + - name: Configure xmake and install dependencies + run: xmake config --shadernodes=y --tests=y --arch=${{ matrix.arch }} --mode=${{ matrix.mode }} --verbose --yes --ld=$(pwd)/honggfuzz/hfuzz_cc/hfuzz-clang++ --sh=$(pwd)/honggfuzz/hfuzz_cc/hfuzz-clang++ --ar=$(pwd)/honggfuzz/hfuzz_cc/hfuzz-clang++ --cxx=$(pwd)/honggfuzz/hfuzz_cc/hfuzz-clang++ --cxxflags="-fsanitize=fuzzer-no-link,address" --ldflags=-fsanitize=fuzzer-no-link,address --shflags=-fsanitize=fuzzer-no-link,address --arflags=-fsanitize=fuzzer-no-link,address --arch=${{ matrix.arch }} --mode=${{ matrix.mode }} --yes --verbose + + # Build the engine + - name: Build Nazara + run: xmake -v + + # Install the result files + - name: Install Nazara + run: xmake install -vo package + + # Upload artifacts + - uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.mode }} + path: package