Milestone 5: deliver embedded RDP sessions and lifecycle hardening
This commit is contained in:
49
third_party/FreeRDP/cmake/CompilerSanitizerOptions.cmake
vendored
Normal file
49
third_party/FreeRDP/cmake/CompilerSanitizerOptions.cmake
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
include(CMakeDependentOption)
|
||||
include(CheckIncludeFiles)
|
||||
|
||||
cmake_dependent_option(
|
||||
WITH_VALGRIND_MEMCHECK "Compile with valgrind helpers." OFF
|
||||
"NOT WITH_SANITIZE_ADDRESS; NOT WITH_SANITIZE_MEMORY; NOT WITH_SANITIZE_THREAD" OFF
|
||||
)
|
||||
cmake_dependent_option(
|
||||
WITH_SANITIZE_ADDRESS "Compile with gcc/clang address sanitizer." OFF
|
||||
"NOT WITH_VALGRIND_MEMCHECK; NOT WITH_SANITIZE_MEMORY; NOT WITH_SANITIZE_THREAD" OFF
|
||||
)
|
||||
cmake_dependent_option(
|
||||
WITH_SANITIZE_MEMORY "Compile with gcc/clang memory sanitizer." OFF
|
||||
"NOT WITH_VALGRIND_MEMCHECK; NOT WITH_SANITIZE_ADDRESS; NOT WITH_SANITIZE_THREAD" OFF
|
||||
)
|
||||
cmake_dependent_option(
|
||||
WITH_SANITIZE_THREAD "Compile with gcc/clang thread sanitizer." OFF
|
||||
"NOT WITH_VALGRIND_MEMCHECK; NOT WITH_SANITIZE_ADDRESS; NOT WITH_SANITIZE_MEMORY" OFF
|
||||
)
|
||||
|
||||
if(WITH_VALGRIND_MEMCHECK)
|
||||
check_include_files(valgrind/memcheck.h FREERDP_HAVE_VALGRIND_MEMCHECK_H)
|
||||
else()
|
||||
unset(FREERDP_HAVE_VALGRIND_MEMCHECK_H CACHE)
|
||||
endif()
|
||||
|
||||
# Enable address sanitizer, where supported and when required
|
||||
if(CMAKE_COMPILER_IS_CLANG OR CMAKE_COMPILER_IS_GNUCC)
|
||||
set(CMAKE_REQUIRED_LINK_OPTIONS_SAVED ${CMAKE_REQUIRED_LINK_OPTIONS})
|
||||
file(WRITE ${PROJECT_BINARY_DIR}/foo.txt "")
|
||||
if(WITH_SANITIZE_ADDRESS)
|
||||
add_compile_options(-fsanitize=address)
|
||||
add_compile_options(-fsanitize-address-use-after-scope)
|
||||
add_link_options(-fsanitize=address)
|
||||
elseif(WITH_SANITIZE_MEMORY)
|
||||
add_compile_options(-fsanitize=memory)
|
||||
add_compile_options(-fsanitize-memory-use-after-dtor)
|
||||
add_compile_options(-fsanitize-memory-track-origins)
|
||||
add_link_options(-fsanitize=memory)
|
||||
elseif(WITH_SANITIZE_THREAD)
|
||||
add_compile_options(-fsanitize=thread)
|
||||
add_link_options(-fsanitize=thread)
|
||||
endif()
|
||||
|
||||
option(WITH_NO_UNDEFINED "Add -Wl,--no-undefined" OFF)
|
||||
if(WITH_NO_UNDEFINED)
|
||||
add_link_options(-Wl,--no-undefined)
|
||||
endif()
|
||||
endif()
|
||||
Reference in New Issue
Block a user