diff --git a/eng/native/configurecompiler.cmake b/eng/native/configurecompiler.cmake index 39460f32085b9b..496384c35a70ea 100644 --- a/eng/native/configurecompiler.cmake +++ b/eng/native/configurecompiler.cmake @@ -49,9 +49,6 @@ add_compile_definitions("$<$,$>:NDEB if (MSVC) add_linker_flag(/guard:cf) - #if (CLR_CMAKE_HOST_ARCH_AMD64) - # add_linker_flag(/guard:ehcont) - #endif (CLR_CMAKE_HOST_ARCH_AMD64) # Linker flags # @@ -74,10 +71,6 @@ if (MSVC) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /IGNORE:4197,4013,4254,4070,4221") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SUBSYSTEM:WINDOWS,${WINDOWS_SUBSYSTEM_VERSION}") - #if (CLR_CMAKE_HOST_ARCH_AMD64) - # set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /CETCOMPAT") - #endif (CLR_CMAKE_HOST_ARCH_AMD64) - set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} /IGNORE:4221") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG") @@ -572,12 +565,14 @@ if (MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /guard:cf") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /guard:cf") - # Enable EH-continuation table for native components for amd64 builds - # Added using variables instead of add_compile_options to let individual projects override it - if (CLR_CMAKE_HOST_ARCH_AMD64) + # Enable EH-continuation table and CET-compatibility for native components for amd64 builds except for components of the Mono + # runtime. Added some switches using variables instead of add_compile_options to let individual projects override it. + if (CLR_CMAKE_HOST_ARCH_AMD64 AND NOT CLR_CMAKE_RUNTIME_MONO) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /guard:ehcont") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /guard:ehcont") - set(CMAKE_ASM_MASM_FLAGS "${CMAKE_C_FLAGS} /guard:ehcont") + set(CMAKE_ASM_MASM_FLAGS "${CMAKE_ASM_MASM_FLAGS} /guard:ehcont") + add_linker_flag(/guard:ehcont) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /CETCOMPAT") endif (CLR_CMAKE_HOST_ARCH_AMD64) # Statically linked CRT (libcmt[d].lib, libvcruntime[d].lib and libucrt[d].lib) by default. This is done to avoid diff --git a/src/coreclr/pgosupport.cmake b/src/coreclr/pgosupport.cmake index 7c20ca3090ae33..1c1ce535518f51 100644 --- a/src/coreclr/pgosupport.cmake +++ b/src/coreclr/pgosupport.cmake @@ -20,13 +20,6 @@ function(add_pgo TargetName) if(CLR_CMAKE_HOST_WIN32) set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS_RELEASE " /LTCG /GENPROFILE") set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS_RELWITHDEBINFO " /LTCG /GENPROFILE") - - if (CLR_CMAKE_HOST_ARCH_AMD64) - # The /guard:ehcont and /CETCOMPAT switches here are temporary and will be moved to a more global location once - # new profile data is published - set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS_RELEASE " /guard:ehcont /CETCOMPAT") - set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS_RELWITHDEBINFO " /guard:ehcont /CETCOMPAT") - endif (CLR_CMAKE_HOST_ARCH_AMD64) else(CLR_CMAKE_HOST_WIN32) if(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELEASE OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELWITHDEBINFO) target_compile_options(${TargetName} PRIVATE -flto -fprofile-instr-generate) diff --git a/src/mono/dlls/dbgshim/CMakeLists.txt b/src/mono/dlls/dbgshim/CMakeLists.txt index 5e590af02a89eb..40c36fc1af196f 100644 --- a/src/mono/dlls/dbgshim/CMakeLists.txt +++ b/src/mono/dlls/dbgshim/CMakeLists.txt @@ -6,6 +6,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CLR_CMAKE_RUNTIME_MONO 1) set(CLR_DIR ${PROJECT_SOURCE_DIR}/../../../coreclr) set(VM_DIR ${PROJECT_SOURCE_DIR}/../../../coreclr/vm) set(CMAKE_OSX_ARCHITECTURES ${CMAKE_SYSTEM_PROCESSOR}) diff --git a/src/mono/dlls/mscordbi/CMakeLists.txt b/src/mono/dlls/mscordbi/CMakeLists.txt index 47924e8b9a7aa0..ea667c3e2b2f6c 100644 --- a/src/mono/dlls/mscordbi/CMakeLists.txt +++ b/src/mono/dlls/mscordbi/CMakeLists.txt @@ -6,6 +6,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CLR_CMAKE_RUNTIME_MONO 1) set(CLR_DIR ${PROJECT_SOURCE_DIR}/../../../coreclr) set(VM_DIR ${PROJECT_SOURCE_DIR}/../../../coreclr/vm) set(CMAKE_OSX_ARCHITECTURES ${CMAKE_SYSTEM_PROCESSOR})