# # MemoryDebugger.cmake # # Copyright 2021 Vircadia Contributors # # Distributed under the Apache License, Version 2.0. # See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html # macro(SETUP_THREAD_DEBUGGER) if ("$ENV{OVERTE_THREAD_DEBUGGING}") if (OVERTE_MEMORY_DEBUGGING ) message(FATAL_ERROR "Thread debugging and memory debugging can't be enabled at the same time." ) endif () SET(OVERTE_THREAD_DEBUGGING true) endif () if (OVERTE_THREAD_DEBUGGING) if (UNIX) if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") # for clang on Linux SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -fno-omit-frame-pointer") SET(CMAKE_EXE_LINKER_FLAGS "-fsanitize=thread ${CMAKE_EXE_LINKER_FLAGS}") SET(CMAKE_SHARED_LINKER_FLAGS "-fsanitize=thread ${CMAKE_EXE_LINKER_FLAGS}") else () # for gcc on Linux SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -fno-omit-frame-pointer") SET(CMAKE_EXE_LINKER_FLAGS " -fsanitize=thread ${CMAKE_EXE_LINKER_FLAGS}") SET(CMAKE_SHARED_LINKER_FLAGS "-fsanitize=thread ${CMAKE_EXE_LINKER_FLAGS}") endif() else() message(FATAL_ERROR "Thread debugging is not supported on this platform.") endif() endif () endmacro(SETUP_THREAD_DEBUGGER)