summaryrefslogtreecommitdiffstats
path: root/test/API/CMake/CheckUbsan.cmake
diff options
context:
space:
mode:
authorjhendersonHDF <jhenderson@hdfgroup.org>2023-05-02 19:52:39 (GMT)
committerJordan Henderson <jhenderson@hdfgroup.org>2023-05-03 18:26:57 (GMT)
commitc75b4af1a2630ace445da1ec661191601583f79a (patch)
treea345b94dc09dd1ea1c38c1136a133b00939ba395 /test/API/CMake/CheckUbsan.cmake
parent75d64819b050bb30b2a2751d9ba55651f9a1af79 (diff)
downloadhdf5-c75b4af1a2630ace445da1ec661191601583f79a.zip
hdf5-c75b4af1a2630ace445da1ec661191601583f79a.tar.gz
hdf5-c75b4af1a2630ace445da1ec661191601583f79a.tar.bz2
Add initial version of HDF5 API tests (#2877)
Diffstat (limited to 'test/API/CMake/CheckUbsan.cmake')
-rw-r--r--test/API/CMake/CheckUbsan.cmake37
1 files changed, 37 insertions, 0 deletions
diff --git a/test/API/CMake/CheckUbsan.cmake b/test/API/CMake/CheckUbsan.cmake
new file mode 100644
index 0000000..f2b9c2c
--- /dev/null
+++ b/test/API/CMake/CheckUbsan.cmake
@@ -0,0 +1,37 @@
+set(UBSAN_FLAG "-fsanitize=undefined")
+set(UBSAN_C_FLAGS "-O1 -g ${UBSAN_FLAG} -fno-omit-frame-pointer")
+set(UBSAN_CXX_FLAGS ${UBSAN_C_FLAGS})
+
+get_property(UBSAN_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
+foreach(lang ${UBSAN_LANGUAGES})
+ set(UBSAN_${lang}_LANG_ENABLED 1)
+endforeach()
+
+if(UBSAN_C_LANG_ENABLED)
+ include(CheckCCompilerFlag)
+ set(CMAKE_REQUIRED_LINK_OPTIONS ${UBSAN_FLAG})
+ check_c_compiler_flag(${UBSAN_FLAG} UBSAN_C_FLAG_SUPPORTED)
+ if(NOT UBSAN_C_FLAG_SUPPORTED)
+ message(STATUS "Ubsan flags are not supported by the C compiler.")
+ else()
+ if(NOT CMAKE_C_FLAGS_UBSAN)
+ set(CMAKE_C_FLAGS_UBSAN ${UBSAN_C_FLAGS} CACHE STRING "Flags used by the C compiler during UBSAN builds." FORCE)
+ endif()
+ endif()
+ unset(CMAKE_REQUIRED_LINK_OPTIONS)
+endif()
+
+if(UBSAN_CXX_LANG_ENABLED)
+ include(CheckCXXCompilerFlag)
+ set(CMAKE_REQUIRED_LINK_OPTIONS ${UBSAN_FLAG})
+ check_cxx_compiler_flag(${UBSAN_FLAG} UBSAN_CXX_FLAG_SUPPORTED)
+ if(NOT UBSAN_CXX_FLAG_SUPPORTED)
+ message(STATUS "Ubsan flags are not supported by the CXX compiler.")
+ else()
+ if(NOT CMAKE_CXX_FLAGS_UBSAN)
+ set(CMAKE_CXX_FLAGS_UBSAN ${UBSAN_CXX_FLAGS} CACHE STRING "Flags used by the CXX compiler during UBSAN builds." FORCE)
+ endif()
+ endif()
+ unset(CMAKE_REQUIRED_LINK_OPTIONS)
+endif()
+