diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 748bfc058..4febf3da4 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -5,7 +5,7 @@ on: push: paths-ignore: - '.github/workflows/linux-build.yml' - - '.github/workflows/linux-build-sanitizer.yml' + - '.github/workflows/macos-build.yml' - '.github/workflows/msys2-build.yml' - '.github/workflows/windows-build.yml' - '.gitignore' diff --git a/.github/workflows/linux-build-sanitizer.yml b/.github/workflows/linux-build-sanitizer.yml deleted file mode 100644 index b9b847093..000000000 --- a/.github/workflows/linux-build-sanitizer.yml +++ /dev/null @@ -1,87 +0,0 @@ -name: Sanitizer and fuzzing - -on: - pull_request: - push: - paths-ignore: - - '.github/workflows/coverage.yml' - - '.github/workflows/linux-build.yml' - - '.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] - - runs-on: ${{ matrix.os }} - if: "!contains(github.event.head_commit.message, 'ci skip')" - - steps: - - uses: actions/checkout@v2 - - # Install system dependencies - - name: Install system dependencies - run: | - sudo apt-get update - sudo apt-get -y install mesa-common-dev libwayland-dev uuid-dev - sudo apt-get -y install libunwind-dev binutils-dev clang-11 - - # Install Honggfuzz - - name: Build and install Hongfuzz - run: | - wget https://github.com/google/honggfuzz/archive/refs/tags/2.5.tar.gz -O honggfuzz.tar.gz - tar -xzvf honggfuzz.tar.gz - cd honggfuzz-*/ - make - sudo make install - - # 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 }}-r4 - - # Setup compilation mode and install project dependencies - - name: Configure xmake and install dependencies - run: xmake config --shadernodes=y --tests=y --arch=${{ matrix.arch }} --mode=fuzz --yes - - # Configure xmake with honggfuzz to build the engine - - name: Configure xmake with honggfuzz - run: xmake config --shadernodes=y --tests=y --unitybuild=y --arch=${{ matrix.arch }} --mode=fuzz --toolchain=hfuzz-clang - - # Build the engine - - name: Build Nazara - run: xmake - - # Run unit tests - - name: Run unit tests - run: xmake run NazaraUnitTests diff --git a/.github/workflows/linux-build.yml b/.github/workflows/linux-build.yml index f42ec9773..929393da2 100644 --- a/.github/workflows/linux-build.yml +++ b/.github/workflows/linux-build.yml @@ -5,7 +5,6 @@ on: push: paths-ignore: - '.github/workflows/coverage.yml' - - '.github/workflows/linux-build-sanitizer.yml' - '.github/workflows/msys2-build.yml' - '.github/workflows/windows-build.yml' - '.gitignore' @@ -21,7 +20,7 @@ jobs: matrix: os: [ubuntu-20.04] arch: [x86_64] - mode: [debug, releasedbg] + mode: [asan, debug, releasedbg] runs-on: ${{ matrix.os }} if: "!contains(github.event.head_commit.message, 'ci skip')" diff --git a/.github/workflows/msys2-build.yml b/.github/workflows/msys2-build.yml index 6a3a9e73e..5813125fa 100644 --- a/.github/workflows/msys2-build.yml +++ b/.github/workflows/msys2-build.yml @@ -5,7 +5,6 @@ on: push: paths-ignore: - '.github/workflows/coverage.yml' - - '.github/workflows/linux-build-sanitizer.yml' - '.github/workflows/linux-build.yml' - '.github/workflows/windows-build.yml' - '.gitignore' diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 6f8787101..c317b3ff7 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -5,7 +5,6 @@ on: push: paths-ignore: - '.github/workflows/coverage.yml' - - '.github/workflows/linux-build-sanitizer.yml' - '.github/workflows/linux-build.yml' - '.github/workflows/msys2-build.yml' - '.gitignore' diff --git a/xmake.lua b/xmake.lua index aea0c5f48..07de924e4 100644 --- a/xmake.lua +++ b/xmake.lua @@ -133,7 +133,7 @@ add_requires("libvorbis", { configs = { with_vorbisenc = false } }) add_requires("openal-soft", { configs = { shared = true }}) add_requires("newtondynamics", { debug = is_plat("windows") and is_mode("debug") }) -- Newton doesn't like compiling in Debug on Linux -add_rules("mode.asan", "mode.debug", "mode.releasedbg") +add_rules("mode.asan", "mode.coverage", "mode.debug", "mode.releasedbg") add_rules("plugin.vsxmake.autoupdate") add_rules("build_rendererplugins") @@ -142,18 +142,10 @@ set_allowedarchs("windows|x64", "mingw|x86_64", "linux|x86_64", "macosx|x86_64") set_allowedmodes("debug", "releasedbg", "asan", "coverage", "fuzz") set_defaultmode("debug") -if not is_plat("windows") then - add_rules("mode.coverage") - add_rules("mode.fuzz") -end - if is_mode("debug") then add_rules("debug_suffix") elseif is_mode("asan") then set_optimize("none") -- by default xmake will optimize asan builds -elseif is_mode("fuzz") then - -- we don't want packages to require compilation with fuzz toolchain - set_policy("package.inherit_external_configs", false) elseif is_mode("coverage") then if not is_plat("windows") then add_links("gcov") diff --git a/xmake/toolchains/hfuzz-clang/xmake.lua b/xmake/toolchains/hfuzz-clang/xmake.lua deleted file mode 100644 index 1c7139720..000000000 --- a/xmake/toolchains/hfuzz-clang/xmake.lua +++ /dev/null @@ -1,34 +0,0 @@ -toolchain("hfuzz-clang") - - set_homepage("https://honggfuzz.dev") - set_description("Security oriented software fuzzer. Supports evolutionary, feedback-driven fuzzing based on code coverage (SW and HW based)") - - set_kind("standalone") - - set_toolset("cc", "hfuzz-clang") - set_toolset("cxx", "hfuzz-clang++") - set_toolset("ld", "hfuzz-clang++", "hfuzz-clang") - set_toolset("sh", "hfuzz-clang++", "hfuzz-clang") - set_toolset("ar", "ar") - set_toolset("strip", "strip") - set_toolset("mm", "hfuzz-clang") - set_toolset("mxx", "hfuzz-clang++") - set_toolset("as", "hfuzz-clang") - - on_check(function (toolchain) - return import("lib.detect.find_tool")("hfuzz-clang") - end) - - on_load(function (toolchain) - local march - if toolchain:is_arch("x86_64", "x64") then - march = "-m64" - elseif toolchain:is_arch("i386", "x86") then - march = "-m32" - end - if march then - toolchain:add("cxflags", march) - toolchain:add("ldflags", march) - toolchain:add("shflags", march) - end - end)