mirror of
https://github.com/VSadov/Satori.git
synced 2025-06-09 17:44:48 +09:00
* Revert "Fix target_link_options in pgosupport.cmake (#93670)" This reverts commitfa0ba15be6
. * Revert "Use `add_link_options` and `target_link_options` in cmake (#92844)" This reverts commit3086d8a1c3
.
This commit is contained in:
parent
00f1e0c94a
commit
6f0b1b1375
23 changed files with 103 additions and 76 deletions
|
@ -69,8 +69,7 @@ if (MSVC)
|
|||
add_link_options($<$<BOOL:$<TARGET_PROPERTY:CLR_CONTROL_FLOW_GUARD>>:/guard:cf>)
|
||||
|
||||
# Load all imported DLLs from the System32 directory.
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEPENDENTLOADFLAG:0x800")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEPENDENTLOADFLAG:0x800")
|
||||
add_linker_flag(/DEPENDENTLOADFLAG:0x800)
|
||||
|
||||
# Linker flags
|
||||
#
|
||||
|
@ -82,55 +81,63 @@ if (MSVC)
|
|||
set(WINDOWS_SUBSYSTEM_VERSION 6.03) #windows subsystem - arm64 minimum is 6.03
|
||||
endif ()
|
||||
|
||||
#shrink pdb size
|
||||
add_link_options(/PDBCOMPRESS)
|
||||
|
||||
add_link_options(/DEBUG)
|
||||
add_link_options(/DEBUGTYPE:CV,FIXUP)
|
||||
|
||||
# Do not create Side-by-Side Assembly Manifest
|
||||
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/MANIFEST:NO>)
|
||||
#Do not create Side-by-Side Assembly Manifest
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /MANIFEST:NO")
|
||||
# can handle addresses larger than 2 gigabytes
|
||||
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/LARGEADDRESSAWARE>)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LARGEADDRESSAWARE")
|
||||
#shrink pdb size
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /PDBCOMPRESS")
|
||||
|
||||
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/IGNORE:4197,4013,4254,4070,4221>)
|
||||
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/SUBSYSTEM:WINDOWS,${WINDOWS_SUBSYSTEM_VERSION}>)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUG")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUGTYPE:CV,FIXUP")
|
||||
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}")
|
||||
|
||||
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} /IGNORE:4221")
|
||||
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUGTYPE:CV,FIXUP")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /PDBCOMPRESS")
|
||||
# For sanitized builds, we bump up the stack size to 8MB to match behavior on Unix platforms.
|
||||
# Sanitized builds can use significantly more stack space than non-sanitized builds due to instrumentation.
|
||||
# We don't want to change the default stack size for all builds, as that will likely cause confusion and will
|
||||
# increase memory usage.
|
||||
if (CLR_CMAKE_ENABLE_SANITIZERS)
|
||||
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:/STACK:0x800000>)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:0x800000")
|
||||
else()
|
||||
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:/STACK:0x180000>)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:0x180000")
|
||||
endif()
|
||||
|
||||
if(EXISTS ${CLR_SOURCELINK_FILE_PATH})
|
||||
add_link_options(/sourcelink:${CLR_SOURCELINK_FILE_PATH})
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /sourcelink:${CLR_SOURCELINK_FILE_PATH}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /sourcelink:${CLR_SOURCELINK_FILE_PATH}")
|
||||
endif(EXISTS ${CLR_SOURCELINK_FILE_PATH})
|
||||
|
||||
if (CMAKE_GENERATOR MATCHES "^Visual Studio.*$")
|
||||
# Debug build specific flags
|
||||
# The Ninja generator doesn't appear to have the default `/INCREMENTAL` that
|
||||
# The Ninja generator doesn't appear to have the default `/INCREMENTAL:ON` that
|
||||
# the Visual Studio generator has. Therefore we will override the default for Visual Studio only.
|
||||
add_link_options($<$<CONFIG:DEBUG>:/INCREMENTAL:NO>)
|
||||
add_link_options($<$<CONFIG:DEBUG>:/OPT:NOICF>)
|
||||
add_link_options($<$<CONFIG:DEBUG>:/OPT:NOREF>)
|
||||
add_linker_flag(/INCREMENTAL:NO DEBUG)
|
||||
add_linker_flag(/OPT:NOREF DEBUG)
|
||||
add_linker_flag(/OPT:NOICF DEBUG)
|
||||
endif (CMAKE_GENERATOR MATCHES "^Visual Studio.*$")
|
||||
# Options for all but DEBUG
|
||||
add_link_options($<$<CONFIG:CHECKED,RELWITHDEBINFO,RELEASE>:/INCREMENTAL:NO>)
|
||||
|
||||
# Checked build specific flags
|
||||
add_link_options($<$<CONFIG:CHECKED>:/OPT:NOICF>)
|
||||
add_linker_flag(/INCREMENTAL:NO CHECKED) # prevent "warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:REF' specification"
|
||||
add_linker_flag(/OPT:REF CHECKED)
|
||||
add_linker_flag(/OPT:NOICF CHECKED)
|
||||
|
||||
# Release build specific flags
|
||||
add_link_options($<$<CONFIG:RELEASE,RELWITHDEBINFO>:/OPT:ICF>)
|
||||
|
||||
# Set LTCG for RELEASE and RELWITHDEBINFO builds that are compatible
|
||||
add_linker_flag(/LTCG RELEASE)
|
||||
add_linker_flag(/OPT:REF RELEASE)
|
||||
add_linker_flag(/OPT:ICF RELEASE)
|
||||
add_linker_flag(/INCREMENTAL:NO RELEASE)
|
||||
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /LTCG")
|
||||
|
||||
# ReleaseWithDebugInfo build specific flags
|
||||
add_linker_flag(/LTCG RELWITHDEBINFO)
|
||||
add_linker_flag(/OPT:REF RELWITHDEBINFO)
|
||||
add_linker_flag(/OPT:ICF RELWITHDEBINFO)
|
||||
set(CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO} /LTCG")
|
||||
|
||||
elseif (CLR_CMAKE_HOST_UNIX)
|
||||
|
@ -267,7 +274,7 @@ if (CLR_CMAKE_ENABLE_SANITIZERS)
|
|||
add_compile_options("$<$<COMPILE_LANGUAGE:C,CXX>:${CLR_CMAKE_BUILD_SANITIZE_OPTIONS}>")
|
||||
else()
|
||||
add_compile_options("$<$<COMPILE_LANGUAGE:C,CXX>:${CLR_CMAKE_BUILD_SANITIZE_OPTIONS}>")
|
||||
add_link_options("${CLR_CMAKE_LINK_SANITIZE_OPTIONS}")
|
||||
add_linker_flag("${CLR_CMAKE_LINK_SANITIZE_OPTIONS}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -279,20 +286,17 @@ endif()
|
|||
#
|
||||
if(CLR_CMAKE_HOST_UNIX)
|
||||
foreach(ADDTL_LINKER_FLAG ${CLR_ADDITIONAL_LINKER_FLAGS})
|
||||
add_link_options(${ADDTL_LINKER_FLAG})
|
||||
if(${ADDTL_LINKER_FLAG} MATCHES "-fuse_ld=")
|
||||
set(FUSE_LD ${ADDTL_LINKER_FLAG})
|
||||
endif()
|
||||
add_linker_flag(${ADDTL_LINKER_FLAG})
|
||||
endforeach()
|
||||
endif(CLR_CMAKE_HOST_UNIX)
|
||||
|
||||
if(CLR_CMAKE_HOST_LINUX)
|
||||
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
|
||||
add_link_options("LINKER:--build-id=sha1")
|
||||
add_link_options("LINKER:-z,relro,-z,now")
|
||||
add_linker_flag(-Wl,--build-id=sha1)
|
||||
add_linker_flag(-Wl,-z,relro,-z,now)
|
||||
elseif(CLR_CMAKE_HOST_FREEBSD)
|
||||
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
|
||||
add_link_options("LINKER:--build-id=sha1")
|
||||
add_linker_flag("-Wl,--build-id=sha1")
|
||||
elseif(CLR_CMAKE_HOST_SUNOS)
|
||||
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector")
|
||||
|
@ -300,10 +304,10 @@ elseif(CLR_CMAKE_HOST_SUNOS)
|
|||
add_definitions(-D__EXTENSIONS__ -D_XPG4_2 -D_POSIX_PTHREAD_SEMANTICS)
|
||||
elseif(CLR_CMAKE_HOST_OSX AND NOT CLR_CMAKE_HOST_MACCATALYST AND NOT CLR_CMAKE_HOST_IOS AND NOT CLR_CMAKE_HOST_TVOS)
|
||||
add_definitions(-D_XOPEN_SOURCE)
|
||||
add_link_options("LINKER:-bind_at_load")
|
||||
add_linker_flag("-Wl,-bind_at_load")
|
||||
elseif(CLR_CMAKE_HOST_HAIKU)
|
||||
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
|
||||
add_link_options("LINKER:--no-undefined")
|
||||
add_linker_flag("-Wl,--no-undefined")
|
||||
endif()
|
||||
|
||||
#------------------------------------
|
||||
|
@ -872,7 +876,7 @@ if (MSVC)
|
|||
|
||||
add_compile_options($<$<AND:$<COMPILE_LANGUAGE:C,CXX,ASM_MASM>,$<BOOL:$<TARGET_PROPERTY:CLR_EH_CONTINUATION>>>:/guard:ehcont>)
|
||||
add_link_options($<$<BOOL:$<TARGET_PROPERTY:CLR_EH_CONTINUATION>>:/guard:ehcont>)
|
||||
add_link_options($<$<AND:$<NOT:$<LINK_LANGUAGE:RC>>>:/CETCOMPAT>)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /CETCOMPAT")
|
||||
endif (CLR_CMAKE_HOST_ARCH_AMD64 AND NOT CLR_CMAKE_RUNTIME_MONO)
|
||||
|
||||
# Statically linked CRT (libcmt[d].lib, libvcruntime[d].lib and libucrt[d].lib) by default. This is done to avoid
|
||||
|
@ -888,8 +892,8 @@ if (MSVC)
|
|||
# We won't do this for sanitized builds as the dynamic CRT is not compatible with the static sanitizer runtime and
|
||||
# the dynamic sanitizer runtime is not redistributable. Sanitized runtime builds are not production-time scenarios
|
||||
# so we don't get the benefits of a dynamic CRT for sanitized runtime builds.
|
||||
add_link_options($<$<CONFIG:RELEASE>:/NODEFAULTLIB:libucrt.lib>)
|
||||
add_link_options($<$<CONFIG:RELEASE>:/DEFAULTLIB:ucrt.lib>)
|
||||
add_linker_flag(/NODEFAULTLIB:libucrt.lib RELEASE)
|
||||
add_linker_flag(/DEFAULTLIB:ucrt.lib RELEASE)
|
||||
endif()
|
||||
|
||||
add_compile_options($<$<COMPILE_LANGUAGE:ASM_MASM>:/ZH:SHA_256>)
|
||||
|
@ -924,7 +928,7 @@ if(CLR_CMAKE_ENABLE_CODE_COVERAGE)
|
|||
|
||||
add_compile_options(-fprofile-arcs)
|
||||
add_compile_options(-ftest-coverage)
|
||||
add_link_options(--coverage)
|
||||
add_linker_flag(--coverage)
|
||||
else()
|
||||
message(FATAL_ERROR "Code coverage builds not supported on current platform")
|
||||
endif(CLR_CMAKE_HOST_UNIX)
|
||||
|
|
|
@ -481,7 +481,7 @@ endif()
|
|||
if(NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
|
||||
# The default linker on Solaris also does not support PIE.
|
||||
if(NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_SUNOS AND NOT CLR_CMAKE_TARGET_APPLE AND NOT MSVC)
|
||||
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:-pie>)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
|
||||
add_compile_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:-fPIE>)
|
||||
add_compile_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:-fPIC>)
|
||||
endif()
|
||||
|
|
|
@ -588,6 +588,19 @@ function(disable_pax_mprotect targetName)
|
|||
endif(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
|
||||
endfunction()
|
||||
|
||||
# add_linker_flag(Flag [Config1 Config2 ...])
|
||||
function(add_linker_flag Flag)
|
||||
if (ARGN STREQUAL "")
|
||||
set("CMAKE_EXE_LINKER_FLAGS" "${CMAKE_EXE_LINKER_FLAGS} ${Flag}" PARENT_SCOPE)
|
||||
set("CMAKE_SHARED_LINKER_FLAGS" "${CMAKE_SHARED_LINKER_FLAGS} ${Flag}" PARENT_SCOPE)
|
||||
else()
|
||||
foreach(Config ${ARGN})
|
||||
set("CMAKE_EXE_LINKER_FLAGS_${Config}" "${CMAKE_EXE_LINKER_FLAGS_${Config}} ${Flag}" PARENT_SCOPE)
|
||||
set("CMAKE_SHARED_LINKER_FLAGS_${Config}" "${CMAKE_SHARED_LINKER_FLAGS_${Config}} ${Flag}" PARENT_SCOPE)
|
||||
endforeach()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(link_natvis_sources_for_target targetName linkKind)
|
||||
if (NOT CLR_CMAKE_HOST_WIN32)
|
||||
return()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue