From 5324e516bef924a61f2d4a0247babeb156c908b1 Mon Sep 17 00:00:00 2001
From: Soeren Peters <peters@irmb.tu-bs.de>
Date: Mon, 22 May 2023 14:23:24 +0000
Subject: [PATCH] Add Sanitizer CI jobs.

---
 .gitlab-ci.yml         | 40 +++++++++++++++++++++++++++++++++++++++-
 CMake/Sanitizers.cmake |  1 +
 2 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 42dc32b0f..dc6705457 100755
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -318,7 +318,6 @@ regression_test_8gpu:
     - cd ..
     - fieldcompare dir output/8GPU test_data/regression_tests/gpu/DrivenCavity_8GPU_2Levels --include-files "DrivenCavityMultiGPU*.vtu"
     - fieldcompare dir output/8GPU test_data/regression_tests/gpu/SphereScaling_8GPU_2Levels --include-files "SphereScaling*.vtu"
-
 ###############################################################################
 ##                            Benchmark                                      ##
 ###############################################################################
@@ -390,6 +389,10 @@ gpu_numerical_tests:
 
   needs: []
 
+  tags:
+    - gpu
+    - linux
+
   rules:
     - if: '$CI_PROJECT_NAMESPACE == "irmb" && $CI_COMMIT_BRANCH == "develop"'
       when: always
@@ -553,6 +556,41 @@ clang-tidy:
       - build/compile_commands.json
 
 
+###############################################################################
+##                            Sanitizer                                      ##
+###############################################################################
+sanitizer-address-leak-ub:
+  extends: .analyze_template
+  script:
+    - mkdir -p build
+    - cmake -B build
+      --preset=make_all
+      -DENABLE_SANITIZER_ADDRESS=ON
+      -DENABLE_SANITIZER_LEAK=ON
+      -DENABLE_SANITIZER_UNDEFINED_BEHAVIOR=ON
+    - make -j8
+    - ctest
+
+sanitizer-thread:
+  extends: .analyze_template
+  script:
+    - mkdir -p build
+    - cmake -B build
+      --preset=make_all
+      -DENABLE_SANITIZER_THREAD=ON
+    - make -j8
+    - ctest
+
+sanitizer-memory:
+  extends: .analyze_template
+  script:
+    - mkdir -p build
+    - cmake -B build
+      --preset=make_all
+      -DENABLE_SANITIZER_MEMORY=ON
+    - make -j8
+    - ctest
+
 ###############################################################################
 # doxgen
 pages:
diff --git a/CMake/Sanitizers.cmake b/CMake/Sanitizers.cmake
index 6f16207fe..ea37a66a1 100644
--- a/CMake/Sanitizers.cmake
+++ b/CMake/Sanitizers.cmake
@@ -52,6 +52,7 @@ function(enable_sanitizers project_name)
        "${LIST_OF_SANITIZERS}"
        STREQUAL
        "")
+      message(STATUS "Enabling sanitizers: ${LIST_OF_SANITIZERS}")
       target_compile_options(${project_name} INTERFACE -fsanitize=${LIST_OF_SANITIZERS})
       target_link_options(${project_name} INTERFACE -fsanitize=${LIST_OF_SANITIZERS})
     endif()
-- 
GitLab