From d5c7ee6ca69bf65d2d72da81c1d2e80562e508d1 Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Sat, 15 Jan 2022 18:05:32 -0700 Subject: [PATCH] ci: run with ASan --- .github/workflows/cmake.yml | 5 ++++- CMakeLists.txt | 7 +++++++ build-linux-64.sh | 7 ++++++- build-osx.sh | 7 ++++++- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 57e99443..c55903e5 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -14,7 +14,10 @@ jobs: fail-fast: false matrix: os: [ubuntu-20.04, macos-10.15] - + use-asan: [YES, NO] + env: + # Expose to the build-*.sh in an environment variable + USE_ASAN: ${{ matrix.use-asan }} steps: - uses: actions/checkout@v2 with: diff --git a/CMakeLists.txt b/CMakeLists.txt index b1779586..cd38a5aa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,6 +66,13 @@ if (WIN32) endif (MSVC) endif (WIN32) +# Pass -DERICWTOOLS_ASAN=YES to enable for all targets +if (ERICWTOOLS_ASAN) + message(STATUS "Enabling ASan on all targets") + add_compile_options(-fsanitize=address) + add_link_options(-fsanitize=address) +endif() + # 10.9: minimum version that supports unordered_map # 10.14: required by tbb 2021.3.0 (due to use of alignas) # 10.15: required by std::filesytstem diff --git a/build-linux-64.sh b/build-linux-64.sh index 837501dd..acae50b5 100755 --- a/build-linux-64.sh +++ b/build-linux-64.sh @@ -20,7 +20,12 @@ tar xf tbb.tgz EMBREE_CMAKE_DIR="$(pwd)/embree-3.13.1.x86_64.linux/lib/cmake/embree-3.13.1" TBB_CMAKE_DIR="$(pwd)/oneapi-tbb-2021.3.0/lib/cmake" -cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$EMBREE_CMAKE_DIR;$TBB_CMAKE_DIR" +# check USE_ASAN environment variable (see cmake.yml) +if [ "$USE_ASAN" == "YES" ]; then + cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH="$EMBREE_CMAKE_DIR;$TBB_CMAKE_DIR" -DERICWTOOLS_ASAN=YES +else + cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$EMBREE_CMAKE_DIR;$TBB_CMAKE_DIR" +fi make -j8 VERBOSE=1 || exit 1 make -j8 VERBOSE=1 testlight || exit 1 make -j8 VERBOSE=1 testqbsp || exit 1 diff --git a/build-osx.sh b/build-osx.sh index 37505e9e..887a4bea 100755 --- a/build-osx.sh +++ b/build-osx.sh @@ -32,7 +32,12 @@ tar xf "$TBB_TGZ_NAME" EMBREE_CMAKE_DIR="$(pwd)/$EMBREE_DIR_NAME/lib/cmake/embree-3.13.0" TBB_CMAKE_DIR="$(pwd)/${TBB_DIR_NAME}/lib/cmake" -cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$EMBREE_CMAKE_DIR;$TBB_CMAKE_DIR" +# check USE_ASAN environment variable (see cmake.yml) +if [ "$USE_ASAN" == "YES" ]; then + cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH="$EMBREE_CMAKE_DIR;$TBB_CMAKE_DIR" -DERICWTOOLS_ASAN=YES +else + cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$EMBREE_CMAKE_DIR;$TBB_CMAKE_DIR" +fi make -j8 || exit 1 make -j8 testlight || exit 1 make -j8 testqbsp || exit 1