From b6ed431ccc35474c6eb94c10ae653ae56c1a1799 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Wed, 19 Mar 2025 06:35:35 +0100 Subject: [PATCH 1/4] Make cmake options configurable --- .github/workflows/build.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 721298f6..7b06d8bf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -178,9 +178,11 @@ jobs: - platform: Android x86_64 runner: ubuntu-24.04 abi: x86_64 + cmake-options: "-DCMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/cmake/toolchain/android-ndk.cmake" - platform: Android arm64-v8a runner: ubuntu-24.04 abi: arm64-v8a + cmake-options: "-DCMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/cmake/toolchain/android-ndk.cmake" steps: - name: Checkout Source uses: actions/checkout@v4 @@ -213,16 +215,14 @@ jobs: ndk-version: r26d add-to-path: false - - name: CMake Build - run: cmake --preset=${{matrix.preset}} -DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/cmake/toolchain/android-ndk.cmake && cmake --build --preset=${{matrix.preset}} + - name: Setup Environment Variables if: ${{ startsWith(matrix.platform, 'Android') }} - env: - ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }} - ANDROID_ABI: ${{matrix.abi}} + run: | + echo "ANDROID_NDK_ROOT=${{ steps.setup-ndk.outputs.ndk-path }}" >> $GITHUB_ENV + echo "ANDROID_ABI=${{ matrix.abi }}" >> $GITHUB_ENV - name: CMake Build - run: cmake --workflow --preset=${{matrix.preset}} - if: ${{ !startsWith(matrix.platform, 'Android') }} + run: cmake --preset=${{matrix.preset}} ${{matrix.cmake-options}} && cmake --build --preset=${{matrix.preset}} - name: Upload Artifacts uses: pyTooling/upload-artifact@v4 From 9cf61cb058d92d50bb346aa048bb888979f3b92b Mon Sep 17 00:00:00 2001 From: momo5502 Date: Wed, 19 Mar 2025 06:45:33 +0100 Subject: [PATCH 2/4] Build with asan --- .github/workflows/build.yml | 7 +++++++ cmake/compiler-env.cmake | 5 ++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7b06d8bf..6db9330a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -151,6 +151,7 @@ jobs: platform: - Windows x86_64 - Linux x86_64 GCC + - Linux x86_64 GCC Sanitizer - Linux x86_64 Clang - macOS arm64 - macOS x86_64 @@ -166,6 +167,9 @@ jobs: preset: release - platform: Windows x86_64 runner: windows-latest + - platform: Linux x86_64 GCC Sanitizer + runner: ubuntu-24.04 + cmake-options: "-DMOMO_ENABLE_SANITIZER=On" - platform: Linux x86_64 GCC runner: ubuntu-24.04 - platform: Linux x86_64 Clang @@ -248,6 +252,7 @@ jobs: platform: - Windows x86_64 - Linux x86_64 GCC + - Linux x86_64 GCC Sanitizer - Linux x86_64 Clang - macOS arm64 - macOS x86_64 @@ -267,6 +272,8 @@ jobs: runner: windows-latest - platform: Linux x86_64 GCC runner: ubuntu-24.04 + - platform: Linux x86_64 GCC Sanitizer + runner: ubuntu-24.04 - platform: Linux x86_64 Clang runner: ubuntu-24.04 - platform: macOS arm64 diff --git a/cmake/compiler-env.cmake b/cmake/compiler-env.cmake index b5eb9255..1daa75fc 100644 --- a/cmake/compiler-env.cmake +++ b/cmake/compiler-env.cmake @@ -99,9 +99,8 @@ endif() ########################################## if(MOMO_ENABLE_SANITIZER) -momo_add_c_and_cxx_compile_options( - -fsanitize=address -) + momo_add_c_and_cxx_compile_options(-fsanitize=address) + add_link_options(-fsanitize=address) endif() ########################################## From 7b9e1c6a8005c5fcb0a245edb5d31df471f4c8d2 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Wed, 19 Mar 2025 06:59:42 +0100 Subject: [PATCH 3/4] Don't strip binaries with asan --- cmake/utils.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/utils.cmake b/cmake/utils.cmake index c1939de7..8b2171f4 100644 --- a/cmake/utils.cmake +++ b/cmake/utils.cmake @@ -312,7 +312,7 @@ endmacro() ########################################## function(momo_strip_target target) - if (CMAKE_BUILD_TYPE STREQUAL "Debug") + if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR MOMO_ENABLE_SANITIZER) return() endif() From 2584d73da01617c24f9278ef2b374309437400b1 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Wed, 19 Mar 2025 06:59:50 +0100 Subject: [PATCH 4/4] Set asan options --- .github/workflows/build.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6db9330a..f4ef1147 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -286,6 +286,11 @@ jobs: with: submodules: recursive + - name: Setup Environment Variables + if: ${{ contains(matrix.platform, 'Sanitizer') }} + run: | + echo "ASAN_OPTIONS=detect_odr_violation=0" >> $GITHUB_ENV + - name: Download Test Config uses: pyTooling/download-artifact@v4 with: