Skip to content

Commit

Permalink
Add CXX flags (HDFGroup#4359)
Browse files Browse the repository at this point in the history
  • Loading branch information
byrnHDF authored and qkoziol committed Apr 12, 2024
1 parent 30f0983 commit 5c7542a
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
45 changes: 45 additions & 0 deletions config/sanitizer/sanitizers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,17 @@ function(test_san_flags return_var flags)
set(FLAGS_BACKUP ${CMAKE_REQUIRED_FLAGS})
set(CMAKE_REQUIRED_FLAGS "${flags}")
check_c_source_compiles("int main() { return 0; }" ${return_var})
if(CMAKE_CXX_COMPILER_LOADED)
check_cxx_source_compiles("int main() { return 0; }" ${return_var})
endif()
set(CMAKE_REQUIRED_FLAGS "${FLAGS_BACKUP}")
set(CMAKE_REQUIRED_QUIET "${QUIET_BACKUP}")
endfunction()

message(STATUS "USE_SANITIZER=${USE_SANITIZER}, CMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID}")
if(CMAKE_CXX_COMPILER_LOADED)
message(STATUS "... CMAKE_CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID}")
endif()
if(USE_SANITIZER)
if(CMAKE_C_COMPILER_ID MATCHES "IntelLLVM" OR CMAKE_C_COMPILER_ID MATCHES "[Cc]lang")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
Expand Down Expand Up @@ -79,9 +85,15 @@ if(USE_SANITIZER)

if(AFL)
append_quoteless(AFL_USE_ASAN=1 CMAKE_C_COMPILER_LAUNCHER)
if (CMAKE_CXX_COMPILER_LOADED)
append_quoteless(AFL_USE_ASAN=1 CMAKE_CXX_COMPILER_LAUNCHER)
endif ()
endif()
else()
message(FATAL_ERROR "Address sanitizer not available for ${CMAKE_C_COMPILER}")
if (CMAKE_CXX_COMPILER_LOADED)
message(FATAL_ERROR "Address sanitizer not available for ${CMAKE_CXX_COMPILER}")
endif ()
endif()
endif()

Expand All @@ -104,9 +116,15 @@ if(USE_SANITIZER)

if(AFL)
append_quoteless(AFL_USE_MSAN=1 CMAKE_C_COMPILER_LAUNCHER)
if (CMAKE_CXX_COMPILER_LOADED)
append_quoteless(AFL_USE_MSAN=1 CMAKE_CXX_COMPILER_LAUNCHER)
endif ()
endif()
else()
message(FATAL_ERROR "Memory [With Origins] sanitizer not available for ${CMAKE_C_COMPILER}")
if (CMAKE_CXX_COMPILER_LOADED)
message(FATAL_ERROR "Memory [With Origins] sanitizer not available for ${CMAKE_CXX_COMPILER}")
endif ()
endif()
endif()

Expand All @@ -123,9 +141,15 @@ if(USE_SANITIZER)

if(AFL)
append_quoteless(AFL_USE_UBSAN=1 CMAKE_C_COMPILER_LAUNCHER)
if (CMAKE_CXX_COMPILER_LOADED)
append_quoteless(AFL_USE_UBSAN=1 CMAKE_CXX_COMPILER_LAUNCHER)
endif ()
endif()
else()
message(FATAL_ERROR "Undefined Behaviour sanitizer not available for ${CMAKE_C_COMPILER}")
if (CMAKE_CXX_COMPILER_LOADED)
message(FATAL_ERROR "Undefined Behaviour sanitizer not available for ${CMAKE_CXX_COMPILER}")
endif ()
endif()
endif()

Expand All @@ -139,9 +163,15 @@ if(USE_SANITIZER)

if(AFL)
append_quoteless(AFL_USE_TSAN=1 CMAKE_C_COMPILER_LAUNCHER)
if (CMAKE_CXX_COMPILER_LOADED)
append_quoteless(AFL_USE_TSAN=1 CMAKE_CXX_COMPILER_LAUNCHER)
endif ()
endif()
else()
message(FATAL_ERROR "Thread sanitizer not available for ${CMAKE_C_COMPILER}")
if (CMAKE_CXX_COMPILER_LOADED)
message(FATAL_ERROR "Thread sanitizer not available for ${CMAKE_CXX_COMPILER}")
endif ()
endif()
endif()

Expand All @@ -155,9 +185,15 @@ if(USE_SANITIZER)

if(AFL)
append_quoteless(AFL_USE_LSAN=1 CMAKE_C_COMPILER_LAUNCHER)
if (CMAKE_CXX_COMPILER_LOADED)
append_quoteless(AFL_USE_LSAN=1 CMAKE_CXX_COMPILER_LAUNCHER)
endif ()
endif()
else()
message(FATAL_ERROR "Thread sanitizer not available for ${CMAKE_C_COMPILER}")
if (CMAKE_CXX_COMPILER_LOADED)
message(FATAL_ERROR "Thread sanitizer not available for ${CMAKE_CXX_COMPILER}")
endif ()
endif()
endif()

Expand All @@ -171,9 +207,15 @@ if(USE_SANITIZER)

if(AFL)
append_quoteless(AFL_USE_CFISAN=1 CMAKE_C_COMPILER_LAUNCHER)
if (CMAKE_CXX_COMPILER_LOADED)
append_quoteless(AFL_USE_CFISAN=1 CMAKE_CXX_COMPILER_LAUNCHER)
endif ()
endif()
else()
message(FATAL_ERROR "Control Flow Integrity(CFI) sanitizer not available for ${CMAKE_C_COMPILER}")
if (CMAKE_CXX_COMPILER_LOADED)
message(FATAL_ERROR "Control Flow Integrity(CFI) sanitizer not available for ${CMAKE_CXX_COMPILER}")
endif ()
endif()
endif()

Expand All @@ -198,6 +240,9 @@ if(USE_SANITIZER)

if(AFL)
append_quoteless(AFL_USE_ASAN=1 CMAKE_C_COMPILER_LAUNCHER)
if (CMAKE_CXX_COMPILER_LOADED)
append_quoteless(AFL_USE_ASAN=1 CMAKE_CXX_COMPILER_LAUNCHER)
endif ()
endif()
else()
message(FATAL_ERROR "This sanitizer not yet supported in the MSVC environment: ${USE_SANITIZER}")
Expand Down
1 change: 1 addition & 0 deletions config/toolchain/clang.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ if(WIN32)
else()
set (CMAKE_C_COMPILER clang)
set (CMAKE_CXX_COMPILER clang++)
#set (CMAKE_Fortran_COMPILER flang-new)
endif()
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)

Expand Down

0 comments on commit 5c7542a

Please sign in to comment.