1
0
Fork 0
mirror of https://github.com/VSadov/Satori.git synced 2025-06-10 01:50:53 +09:00

Use add_link_options and target_link_options in cmake (#92844)

Remove `add_linker_flag` and replace with `add_link_options` and `target_link_options` where possible.
This commit is contained in:
Jackson Schuster 2023-10-17 11:53:44 -05:00 committed by GitHub
parent 48dd30ed6e
commit 3086d8a1c3
Signed by: github
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 77 additions and 105 deletions

View file

@ -171,9 +171,8 @@ elseif(FREEBSD)
set(CMAKE_CXX_COMPILER_TARGET ${triple}) set(CMAKE_CXX_COMPILER_TARGET ${triple})
set(CMAKE_ASM_COMPILER_TARGET ${triple}) set(CMAKE_ASM_COMPILER_TARGET ${triple})
set(CMAKE_SYSROOT "${CROSS_ROOTFS}") set(CMAKE_SYSROOT "${CROSS_ROOTFS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=lld") add_link_options(-fuse-ld=lld)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=lld") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=lld")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fuse-ld=lld")
elseif(ILLUMOS) elseif(ILLUMOS)
set(CMAKE_SYSROOT "${CROSS_ROOTFS}") set(CMAKE_SYSROOT "${CROSS_ROOTFS}")

View file

@ -69,7 +69,8 @@ if (MSVC)
add_link_options($<$<BOOL:$<TARGET_PROPERTY:CLR_CONTROL_FLOW_GUARD>>:/guard:cf>) add_link_options($<$<BOOL:$<TARGET_PROPERTY:CLR_CONTROL_FLOW_GUARD>>:/guard:cf>)
# Load all imported DLLs from the System32 directory. # Load all imported DLLs from the System32 directory.
add_linker_flag(/DEPENDENTLOADFLAG:0x800) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEPENDENTLOADFLAG:0x800")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEPENDENTLOADFLAG:0x800")
# Linker flags # Linker flags
# #
@ -81,63 +82,55 @@ if (MSVC)
set(WINDOWS_SUBSYSTEM_VERSION 6.03) #windows subsystem - arm64 minimum is 6.03 set(WINDOWS_SUBSYSTEM_VERSION 6.03) #windows subsystem - arm64 minimum is 6.03
endif () endif ()
#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
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LARGEADDRESSAWARE")
#shrink pdb size #shrink pdb size
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /PDBCOMPRESS") add_link_options(/PDBCOMPRESS)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUG") add_link_options(/DEBUG)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUGTYPE:CV,FIXUP") add_link_options(/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}") # Do not create Side-by-Side Assembly Manifest
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/MANIFEST:NO>)
# can handle addresses larger than 2 gigabytes
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/LARGEADDRESSAWARE>)
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_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} /IGNORE:4221") 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. # 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. # 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 # We don't want to change the default stack size for all builds, as that will likely cause confusion and will
# increase memory usage. # increase memory usage.
if (CLR_CMAKE_ENABLE_SANITIZERS) if (CLR_CMAKE_ENABLE_SANITIZERS)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:0x800000") add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:/STACK:0x800000>)
else() else()
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:0x180000") add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:/STACK:0x180000>)
endif() endif()
if(EXISTS ${CLR_SOURCELINK_FILE_PATH}) if(EXISTS ${CLR_SOURCELINK_FILE_PATH})
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /sourcelink:${CLR_SOURCELINK_FILE_PATH}") add_link_options(/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}) endif(EXISTS ${CLR_SOURCELINK_FILE_PATH})
if (CMAKE_GENERATOR MATCHES "^Visual Studio.*$") if (CMAKE_GENERATOR MATCHES "^Visual Studio.*$")
# Debug build specific flags # Debug build specific flags
# The Ninja generator doesn't appear to have the default `/INCREMENTAL:ON` that # The Ninja generator doesn't appear to have the default `/INCREMENTAL` that
# the Visual Studio generator has. Therefore we will override the default for Visual Studio only. # the Visual Studio generator has. Therefore we will override the default for Visual Studio only.
add_linker_flag(/INCREMENTAL:NO DEBUG) add_link_options($<$<CONFIG:DEBUG>:/INCREMENTAL:NO>)
add_linker_flag(/OPT:NOREF DEBUG) add_link_options($<$<CONFIG:DEBUG>:/OPT:NOICF>)
add_linker_flag(/OPT:NOICF DEBUG) add_link_options($<$<CONFIG:DEBUG>:/OPT:NOREF>)
endif (CMAKE_GENERATOR MATCHES "^Visual Studio.*$") endif (CMAKE_GENERATOR MATCHES "^Visual Studio.*$")
# Options for all but DEBUG
add_link_options($<$<CONFIG:CHECKED,RELWITHDEBINFO,RELEASE>:/INCREMENTAL:NO>)
# Checked build specific flags # Checked build specific flags
add_linker_flag(/INCREMENTAL:NO CHECKED) # prevent "warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:REF' specification" add_link_options($<$<CONFIG:CHECKED>:/OPT:NOICF>)
add_linker_flag(/OPT:REF CHECKED)
add_linker_flag(/OPT:NOICF CHECKED)
# Release build specific flags # Release build specific flags
add_linker_flag(/LTCG RELEASE) add_link_options($<$<CONFIG:RELEASE,RELWITHDEBINFO>:/OPT:ICF>)
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 # Set LTCG for RELEASE and RELWITHDEBINFO builds that are compatible
add_linker_flag(/LTCG RELWITHDEBINFO) set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /LTCG")
add_linker_flag(/OPT:REF RELWITHDEBINFO)
add_linker_flag(/OPT:ICF RELWITHDEBINFO)
set(CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO} /LTCG") set(CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO} /LTCG")
elseif (CLR_CMAKE_HOST_UNIX) elseif (CLR_CMAKE_HOST_UNIX)
@ -274,7 +267,7 @@ if (CLR_CMAKE_ENABLE_SANITIZERS)
add_compile_options("$<$<COMPILE_LANGUAGE:C,CXX>:${CLR_CMAKE_BUILD_SANITIZE_OPTIONS}>") add_compile_options("$<$<COMPILE_LANGUAGE:C,CXX>:${CLR_CMAKE_BUILD_SANITIZE_OPTIONS}>")
else() else()
add_compile_options("$<$<COMPILE_LANGUAGE:C,CXX>:${CLR_CMAKE_BUILD_SANITIZE_OPTIONS}>") add_compile_options("$<$<COMPILE_LANGUAGE:C,CXX>:${CLR_CMAKE_BUILD_SANITIZE_OPTIONS}>")
add_linker_flag("${CLR_CMAKE_LINK_SANITIZE_OPTIONS}") add_link_options("${CLR_CMAKE_LINK_SANITIZE_OPTIONS}")
endif() endif()
endif() endif()
@ -286,17 +279,20 @@ endif()
# #
if(CLR_CMAKE_HOST_UNIX) if(CLR_CMAKE_HOST_UNIX)
foreach(ADDTL_LINKER_FLAG ${CLR_ADDITIONAL_LINKER_FLAGS}) foreach(ADDTL_LINKER_FLAG ${CLR_ADDITIONAL_LINKER_FLAGS})
add_linker_flag(${ADDTL_LINKER_FLAG}) add_link_options(${ADDTL_LINKER_FLAG})
if(${ADDTL_LINKER_FLAG} MATCHES "-fuse_ld=")
set(FUSE_LD ${ADDTL_LINKER_FLAG})
endif()
endforeach() endforeach()
endif(CLR_CMAKE_HOST_UNIX) endif(CLR_CMAKE_HOST_UNIX)
if(CLR_CMAKE_HOST_LINUX) if(CLR_CMAKE_HOST_LINUX)
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>) add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
add_linker_flag(-Wl,--build-id=sha1) add_link_options("LINKER:--build-id=sha1")
add_linker_flag(-Wl,-z,relro,-z,now) add_link_options("LINKER:-z,relro,-z,now")
elseif(CLR_CMAKE_HOST_FREEBSD) elseif(CLR_CMAKE_HOST_FREEBSD)
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>) add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
add_linker_flag("-Wl,--build-id=sha1") add_link_options("LINKER:--build-id=sha1")
elseif(CLR_CMAKE_HOST_SUNOS) elseif(CLR_CMAKE_HOST_SUNOS)
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>) add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector")
@ -304,10 +300,10 @@ elseif(CLR_CMAKE_HOST_SUNOS)
add_definitions(-D__EXTENSIONS__ -D_XPG4_2 -D_POSIX_PTHREAD_SEMANTICS) 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) 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_definitions(-D_XOPEN_SOURCE)
add_linker_flag("-Wl,-bind_at_load") add_link_options("LINKER:-bind_at_load")
elseif(CLR_CMAKE_HOST_HAIKU) elseif(CLR_CMAKE_HOST_HAIKU)
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>) add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
add_linker_flag("-Wl,--no-undefined") add_link_options("LINKER:--no-undefined")
endif() endif()
#------------------------------------ #------------------------------------
@ -876,7 +872,7 @@ if (MSVC)
add_compile_options($<$<AND:$<COMPILE_LANGUAGE:C,CXX,ASM_MASM>,$<BOOL:$<TARGET_PROPERTY:CLR_EH_CONTINUATION>>>:/guard:ehcont>) 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($<$<BOOL:$<TARGET_PROPERTY:CLR_EH_CONTINUATION>>:/guard:ehcont>)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /CETCOMPAT") add_link_options($<$<AND:$<NOT:$<LINK_LANGUAGE:RC>>>:/CETCOMPAT>)
endif (CLR_CMAKE_HOST_ARCH_AMD64 AND NOT CLR_CMAKE_RUNTIME_MONO) 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 # Statically linked CRT (libcmt[d].lib, libvcruntime[d].lib and libucrt[d].lib) by default. This is done to avoid
@ -892,8 +888,8 @@ if (MSVC)
# We won't do this for sanitized builds as the dynamic CRT is not compatible with the static sanitizer runtime and # 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 # 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. # so we don't get the benefits of a dynamic CRT for sanitized runtime builds.
add_linker_flag(/NODEFAULTLIB:libucrt.lib RELEASE) add_link_options($<$<CONFIG:RELEASE>:/NODEFAULTLIB:libucrt.lib>)
add_linker_flag(/DEFAULTLIB:ucrt.lib RELEASE) add_link_options($<$<CONFIG:RELEASE>:/DEFAULTLIB:ucrt.lib>)
endif() endif()
add_compile_options($<$<COMPILE_LANGUAGE:ASM_MASM>:/ZH:SHA_256>) add_compile_options($<$<COMPILE_LANGUAGE:ASM_MASM>:/ZH:SHA_256>)
@ -928,7 +924,7 @@ if(CLR_CMAKE_ENABLE_CODE_COVERAGE)
add_compile_options(-fprofile-arcs) add_compile_options(-fprofile-arcs)
add_compile_options(-ftest-coverage) add_compile_options(-ftest-coverage)
add_linker_flag(--coverage) add_link_options(--coverage)
else() else()
message(FATAL_ERROR "Code coverage builds not supported on current platform") message(FATAL_ERROR "Code coverage builds not supported on current platform")
endif(CLR_CMAKE_HOST_UNIX) endif(CLR_CMAKE_HOST_UNIX)

View file

@ -481,7 +481,7 @@ endif()
if(NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI) if(NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
# The default linker on Solaris also does not support PIE. # 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) if(NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_SUNOS AND NOT CLR_CMAKE_TARGET_APPLE AND NOT MSVC)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie") add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:-pie>)
add_compile_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:-fPIE>) add_compile_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:-fPIE>)
add_compile_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:-fPIC>) add_compile_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:-fPIC>)
endif() endif()

View file

@ -588,19 +588,6 @@ 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) endif(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
endfunction() 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) function(link_natvis_sources_for_target targetName linkKind)
if (NOT CLR_CMAKE_HOST_WIN32) if (NOT CLR_CMAKE_HOST_WIN32)
return() return()

View file

@ -98,7 +98,7 @@ if(CLR_CMAKE_HOST_UNIX)
endif() endif()
if(CLR_CMAKE_TARGET_LINUX AND (CLR_CMAKE_TARGET_ARCH_I386 OR CLR_CMAKE_TARGET_ARCH_RISCV64)) if(CLR_CMAKE_TARGET_LINUX AND (CLR_CMAKE_TARGET_ARCH_I386 OR CLR_CMAKE_TARGET_ARCH_RISCV64))
add_linker_flag(-Wl,-z,notext) add_link_options(LINKER:-z,notext)
endif() endif()
if(NOT CLR_CMAKE_HOST_MACCATALYST AND NOT CLR_CMAKE_HOST_IOS AND NOT CLR_CMAKE_HOST_TVOS) if(NOT CLR_CMAKE_HOST_MACCATALYST AND NOT CLR_CMAKE_HOST_IOS AND NOT CLR_CMAKE_HOST_TVOS)

View file

@ -1,21 +1,15 @@
include_directories(${CMAKE_CURRENT_BINARY_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR})
if(CLR_CMAKE_HOST_WIN32) if(CLR_CMAKE_HOST_WIN32)
# remove /ltcg from resource-only libraries
string(REPLACE "/LTCG" "" CMAKE_SHARED_LINKER_FLAGS_RELEASE ${CMAKE_SHARED_LINKER_FLAGS_RELEASE})
string(REPLACE "/LTCG" "" CMAKE_STATIC_LINKER_FLAGS_RELEASE ${CMAKE_STATIC_LINKER_FLAGS_RELEASE})
string(REPLACE "/LTCG" "" CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO})
string(REPLACE "/LTCG" "" CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO ${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO})
# remove /guard:cf, /guard:ehcont, and /CETCOMPAT from resource-only libraries # remove /guard:cf, /guard:ehcont, and /CETCOMPAT from resource-only libraries
set_property(DIRECTORY PROPERTY CLR_CONTROL_FLOW_GUARD OFF) set_property(DIRECTORY PROPERTY CLR_CONTROL_FLOW_GUARD OFF)
if (CLR_CMAKE_HOST_ARCH_AMD64) if (CLR_CMAKE_HOST_ARCH_AMD64)
set_property(DIRECTORY PROPERTY CLR_EH_CONTINUATION OFF) set_property(DIRECTORY PROPERTY CLR_EH_CONTINUATION OFF)
string(REPLACE "/CETCOMPAT" "" CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS})
endif (CLR_CMAKE_HOST_ARCH_AMD64) endif (CLR_CMAKE_HOST_ARCH_AMD64)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /NOENTRY") add_link_options(/NOENTRY)
endif(CLR_CMAKE_HOST_WIN32) endif(CLR_CMAKE_HOST_WIN32)
add_definitions(-DFX_VER_INTERNALNAME_STR=clretwrc.dll) add_definitions(-DFX_VER_INTERNALNAME_STR=clretwrc.dll)

View file

@ -83,7 +83,7 @@ else(CLR_CMAKE_HOST_WIN32)
if(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS) if(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
# This option is necessary to ensure that the overloaded delete operator defined inside # This option is necessary to ensure that the overloaded delete operator defined inside
# of the utilcode will be used instead of the standard library delete operator. # of the utilcode will be used instead of the standard library delete operator.
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic") add_link_options("LINKER:-Bsymbolic")
# The following linked options can be inserted into the linker libraries list to # The following linked options can be inserted into the linker libraries list to
# ensure proper resolving of circular references between a subset of the libraries. # ensure proper resolving of circular references between a subset of the libraries.

View file

@ -48,7 +48,7 @@ else(CLR_CMAKE_HOST_WIN32)
if(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS) if(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
# This option is necessary to ensure that the overloaded new/delete operators defined inside # This option is necessary to ensure that the overloaded new/delete operators defined inside
# of the utilcode will be used instead of the standard library delete operator. # of the utilcode will be used instead of the standard library delete operator.
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic") add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:LINKER:-Bsymbolic>)
endif(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS) endif(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
set_exports_linker_option(${EXPORTS_FILE}) set_exports_linker_option(${EXPORTS_FILE})
@ -108,7 +108,7 @@ elseif(CLR_CMAKE_HOST_UNIX)
if(COMMAND check_linker_flag) if(COMMAND check_linker_flag)
check_linker_flag(CXX -Wl,--undefined-version LINKER_SUPPORTS_UNDEFINED_VERSION) check_linker_flag(CXX -Wl,--undefined-version LINKER_SUPPORTS_UNDEFINED_VERSION)
if (LINKER_SUPPORTS_UNDEFINED_VERSION) if (LINKER_SUPPORTS_UNDEFINED_VERSION)
add_linker_flag(-Wl,--undefined-version) target_link_options(mscordbi PRIVATE "LINKER:--undefined-version")
endif(LINKER_SUPPORTS_UNDEFINED_VERSION) endif(LINKER_SUPPORTS_UNDEFINED_VERSION)
endif(COMMAND check_linker_flag) endif(COMMAND check_linker_flag)

View file

@ -19,13 +19,13 @@ if (CLR_CMAKE_HOST_WIN32)
# Incremental linking results in the linker inserting extra padding and routing function calls via thunks that can break the # Incremental linking results in the linker inserting extra padding and routing function calls via thunks that can break the
# invariants (e.g. size of region between Jit_PatchedCodeLast-Jit_PatchCodeStart needs to fit in a page). # invariants (e.g. size of region between Jit_PatchedCodeLast-Jit_PatchCodeStart needs to fit in a page).
add_linker_flag("/INCREMENTAL:NO") add_link_options("/INCREMENTAL:NO")
# Delay load libraries required for WinRT as that is not supported on all platforms # Delay load libraries required for WinRT as that is not supported on all platforms
add_linker_flag("/DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll") add_link_options("/DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll")
# Delay load version.dll so that we can specify how to search when loading it as it is not part of Windows' known DLLs # Delay load version.dll so that we can specify how to search when loading it as it is not part of Windows' known DLLs
add_linker_flag("/DELAYLOAD:version.dll") add_link_options("/DELAYLOAD:version.dll")
# No library groups for Win32 # No library groups for Win32
set(START_LIBRARY_GROUP) set(START_LIBRARY_GROUP)
@ -38,7 +38,7 @@ else(CLR_CMAKE_HOST_WIN32)
if(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD OR CLR_CMAKE_TARGET_SUNOS) if(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD OR CLR_CMAKE_TARGET_SUNOS)
# This option is necessary to ensure that the overloaded delete operator defined inside # This option is necessary to ensure that the overloaded delete operator defined inside
# of the utilcode will be used instead of the standard library delete operator. # of the utilcode will be used instead of the standard library delete operator.
add_linker_flag("-Wl,-Bsymbolic") add_link_options("-Wl,-Bsymbolic")
# The following linked options can be inserted into the linker libraries list to # The following linked options can be inserted into the linker libraries list to
# ensure proper resolving of circular references between a subset of the libraries. # ensure proper resolving of circular references between a subset of the libraries.

View file

@ -3,17 +3,13 @@ include_directories("../../pal/prebuilt/corerror")
add_definitions(-DFX_VER_INTERNALNAME_STR=mscorrc.dll) add_definitions(-DFX_VER_INTERNALNAME_STR=mscorrc.dll)
if(CLR_CMAKE_HOST_WIN32) if(CLR_CMAKE_HOST_WIN32)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /NOENTRY") add_link_options("/NOENTRY")
# remove /ltcg from resource-only libraries
string(REPLACE "/LTCG" "" CMAKE_SHARED_LINKER_FLAGS_RELEASE ${CMAKE_SHARED_LINKER_FLAGS_RELEASE})
string(REPLACE "/LTCG" "" CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO})
# remove /guard:cf, /guard:ehcont, and /CETCOMPAT from resource-only libraries # remove /guard:cf, /guard:ehcont, and /CETCOMPAT from resource-only libraries
set_property(DIRECTORY PROPERTY CLR_CONTROL_FLOW_GUARD OFF) set_property(DIRECTORY PROPERTY CLR_CONTROL_FLOW_GUARD OFF)
if (CLR_CMAKE_HOST_ARCH_AMD64) if (CLR_CMAKE_HOST_ARCH_AMD64)
set_property(DIRECTORY PROPERTY CLR_EH_CONTINUATION OFF) set_property(DIRECTORY PROPERTY CLR_EH_CONTINUATION OFF)
string(REPLACE "/CETCOMPAT" "" CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS})
endif (CLR_CMAKE_HOST_ARCH_AMD64) endif (CLR_CMAKE_HOST_ARCH_AMD64)
add_library_clr(mscorrc SHARED add_library_clr(mscorrc SHARED

View file

@ -57,7 +57,7 @@ endif(CLR_CMAKE_HOST_UNIX)
if(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS) if(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
# This option is necessary to ensure that the overloaded delete operator defined inside # This option is necessary to ensure that the overloaded delete operator defined inside
# of the utilcode will be used instead of the standard library delete operator. # of the utilcode will be used instead of the standard library delete operator.
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic") add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:LINKER:-Bsymbolic>)
# The following linked options can be inserted into the linker libraries list to # The following linked options can be inserted into the linker libraries list to
# ensure proper resolving of circular references between a subset of the libraries. # ensure proper resolving of circular references between a subset of the libraries.

View file

@ -50,7 +50,7 @@ endif(CLR_CMAKE_TARGET_WIN32)
if(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS) if(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
# This option is necessary to ensure that the overloaded delete operator defined inside # This option is necessary to ensure that the overloaded delete operator defined inside
# of the utilcode will be used instead of the standard library delete operator. # of the utilcode will be used instead of the standard library delete operator.
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic") add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:LINKER:-Bsymbolic>)
# The following linked options can be inserted into the linker libraries list to # The following linked options can be inserted into the linker libraries list to
# ensure proper resolving of circular references between a subset of the libraries. # ensure proper resolving of circular references between a subset of the libraries.

View file

@ -508,7 +508,7 @@ else()
if(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD OR CLR_CMAKE_TARGET_SUNOS) if(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD OR CLR_CMAKE_TARGET_SUNOS)
# This is required to force using our own PAL, not one that we are loaded with. # This is required to force using our own PAL, not one that we are loaded with.
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic") add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:LINKER:-Bsymbolic>)
endif() endif()
set_exports_linker_option(${JIT_EXPORTS_FILE}) set_exports_linker_option(${JIT_EXPORTS_FILE})

View file

@ -98,7 +98,7 @@ if(CLR_CMAKE_TARGET_LINUX_MUSL)
endif(CLR_CMAKE_TARGET_LINUX_MUSL) endif(CLR_CMAKE_TARGET_LINUX_MUSL)
# turn off capability to remove unused functions (which was enabled in debug build with sanitizers) # turn off capability to remove unused functions (which was enabled in debug build with sanitizers)
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -Wl,--no-gc-sections") add_link_options($<$<AND:$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>,$<CONFIG:DEBUG>>:LINKER:--no-gc-sections>)
set(ARCH_SOURCES set(ARCH_SOURCES
arch/${PAL_ARCH_SOURCES_DIR}/context2.S arch/${PAL_ARCH_SOURCES_DIR}/context2.S

View file

@ -18,12 +18,12 @@ endif(NOT WIN32)
function(add_pgo TargetName) function(add_pgo TargetName)
if(CLR_CMAKE_PGO_INSTRUMENT) if(CLR_CMAKE_PGO_INSTRUMENT)
if(CLR_CMAKE_HOST_WIN32) if(CLR_CMAKE_HOST_WIN32)
set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS_RELEASE " /LTCG /GENPROFILE") target_link_options(${TargetName} $<$<AND:$<NOT:$<LINK_LANGUAGE:RC>>,$<CONFIG:RELEASE,RELWITHDEBINFO>>:/LTCG>)
set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS_RELWITHDEBINFO " /LTCG /GENPROFILE") target_link_options(${TargetName} $<$<CONFIG:RELEASE,RELWITHDEBINFO>:/GENPROFILE>)
else(CLR_CMAKE_HOST_WIN32) else(CLR_CMAKE_HOST_WIN32)
if(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELEASE OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELWITHDEBINFO) if(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELEASE OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELWITHDEBINFO)
target_compile_options(${TargetName} PRIVATE -flto -fprofile-instr-generate) target_compile_options(${TargetName} PRIVATE -flto -fprofile-instr-generate)
set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -flto -fprofile-instr-generate") target_link_options(${TargetName} PRIVATE -flto -fprofile-instr-generate)
if(CMAKE_CROSSCOMPILING AND CMAKE_C_COMPILER_ID MATCHES "Clang") if(CMAKE_CROSSCOMPILING AND CMAKE_C_COMPILER_ID MATCHES "Clang")
if (CLR_CMAKE_HOST_ALPINE_LINUX) if (CLR_CMAKE_HOST_ALPINE_LINUX)
set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -resource-dir ${CMAKE_SYSROOT}/usr/lib/clang/${CMAKE_C_COMPILER_VERSION}") set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -resource-dir ${CMAKE_SYSROOT}/usr/lib/clang/${CMAKE_C_COMPILER_VERSION}")
@ -33,8 +33,8 @@ function(add_pgo TargetName)
set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -resource-dir ${CMAKE_SYSROOT}/usr/lib/llvm-${CLANG_VERSION_MAJOR}/lib/clang/${CMAKE_C_COMPILER_VERSION}") set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -resource-dir ${CMAKE_SYSROOT}/usr/lib/llvm-${CLANG_VERSION_MAJOR}/lib/clang/${CMAKE_C_COMPILER_VERSION}")
endif(CLR_CMAKE_HOST_ALPINE_LINUX) endif(CLR_CMAKE_HOST_ALPINE_LINUX)
endif(CMAKE_CROSSCOMPILING AND CMAKE_C_COMPILER_ID MATCHES "Clang") endif(CMAKE_CROSSCOMPILING AND CMAKE_C_COMPILER_ID MATCHES "Clang")
if(NOT LD_LLVM) if(LD_GNU) # Only use gold when it wouldn't change the LD_<LINKER> value
set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS " -fuse-ld=gold") target_link_options(${TargetName} PRIVATE "-fuse-ld=gold")
endif() endif()
endif(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELEASE OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELWITHDEBINFO) endif(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELEASE OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELWITHDEBINFO)
endif(CLR_CMAKE_HOST_WIN32) endif(CLR_CMAKE_HOST_WIN32)

View file

@ -48,7 +48,7 @@ else()
if(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD OR CLR_CMAKE_TARGET_SUNOS) if(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD OR CLR_CMAKE_TARGET_SUNOS)
# This is required to force using our own PAL, not one that we are loaded with. # This is required to force using our own PAL, not one that we are loaded with.
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic") add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:LINKER:-Bsymbolic>)
endif() endif()
set_exports_linker_option(${SPMI_COLLECTOR_EXPORTS_FINAL_FILE}) set_exports_linker_option(${SPMI_COLLECTOR_EXPORTS_FINAL_FILE})

View file

@ -15,9 +15,9 @@ endif(CLR_CMAKE_HOST_WIN32)
if(CLR_CMAKE_HOST_UNIX) if(CLR_CMAKE_HOST_UNIX)
# Make sure a public symbol is created for Instrumentor_GetInsCount # Make sure a public symbol is created for Instrumentor_GetInsCount
if(CLR_CMAKE_HOST_APPLE) if(CLR_CMAKE_HOST_APPLE)
add_linker_flag(-Wl,-export_dynamic) add_link_options(LINKER:-export_dynamic)
else() else()
add_linker_flag(-Wl,--export-dynamic) add_link_options(LINKER:--export-dynamic)
endif(CLR_CMAKE_HOST_APPLE) endif(CLR_CMAKE_HOST_APPLE)
endif(CLR_CMAKE_HOST_UNIX) endif(CLR_CMAKE_HOST_UNIX)

View file

@ -225,8 +225,8 @@ elseif(CLR_CMAKE_HOST_OS STREQUAL "linux")
add_definitions(-D_THREAD_SAFE) add_definitions(-D_THREAD_SAFE)
set(HAVE_CGROUP_SUPPORT 1) set(HAVE_CGROUP_SUPPORT 1)
# Enable the "full RELRO" options (RELRO & BIND_NOW) at link time # Enable the "full RELRO" options (RELRO & BIND_NOW) at link time
add_link_options(-Wl,-z,relro) add_link_options("LINKER:-z,relro")
add_link_options(-Wl,-z,now) add_link_options("LINKER:-z,now")
elseif(CLR_CMAKE_HOST_OS STREQUAL "android") elseif(CLR_CMAKE_HOST_OS STREQUAL "android")
set(HOST_LINUX 1) set(HOST_LINUX 1)
add_definitions(-D_GNU_SOURCE -D_REENTRANT) add_definitions(-D_GNU_SOURCE -D_REENTRANT)

View file

@ -63,7 +63,7 @@ if(CLR_CMAKE_TARGET_WIN32)
endif() endif()
if(CLR_CMAKE_TARGET_WIN32) if(CLR_CMAKE_TARGET_WIN32)
add_linker_flag("/DEF:${CMAKE_CURRENT_SOURCE_DIR}/singlefilehost.def") add_link_options("/DEF:${CMAKE_CURRENT_SOURCE_DIR}/singlefilehost.def")
else() else()
if(CLR_CMAKE_TARGET_FREEBSD) if(CLR_CMAKE_TARGET_FREEBSD)
@ -98,17 +98,17 @@ add_definitions(-DFEATURE_STATIC_HOST=1)
if(CLR_CMAKE_TARGET_WIN32) if(CLR_CMAKE_TARGET_WIN32)
# Disable manifest generation into the file .exe on Windows # Disable manifest generation into the file .exe on Windows
add_linker_flag("/MANIFEST:NO") add_link_options(/MANIFEST:NO)
# Incremental linking results in the linker inserting extra padding and routing function calls via thunks that can break the # Incremental linking results in the linker inserting extra padding and routing function calls via thunks that can break the
# invariants (e.g. size of region between Jit_PatchedCodeLast-Jit_PatchCodeStart needs to fit in a page). # invariants (e.g. size of region between Jit_PatchedCodeLast-Jit_PatchCodeStart needs to fit in a page).
add_linker_flag("/INCREMENTAL:NO") add_link_options(/INCREMENTAL:NO)
# Delay load libraries required for WinRT as that is not supported on all platforms # Delay load libraries required for WinRT as that is not supported on all platforms
add_linker_flag("/DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll") add_link_options(/DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll)
# Delay load version.dll so that we can specify how to search when loading it as it is not part of Windows' known DLLs # Delay load version.dll so that we can specify how to search when loading it as it is not part of Windows' known DLLs
add_linker_flag("/DELAYLOAD:version.dll") add_link_options(/DELAYLOAD:version.dll)
endif() endif()
if(CLR_CMAKE_TARGET_WIN32) if(CLR_CMAKE_TARGET_WIN32)
@ -237,7 +237,7 @@ if(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD
endif(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD OR CLR_CMAKE_TARGET_SUNOS) endif(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD OR CLR_CMAKE_TARGET_SUNOS)
if(CLR_CMAKE_TARGET_LINUX AND CLR_CMAKE_TARGET_ARCH_RISCV64) if(CLR_CMAKE_TARGET_LINUX AND CLR_CMAKE_TARGET_ARCH_RISCV64)
add_linker_flag(-Wl,-z,notext) add_link_options(LINKER:-z,notext)
endif() endif()
if(CLR_CMAKE_TARGET_APPLE) if(CLR_CMAKE_TARGET_APPLE)

View file

@ -31,7 +31,7 @@ endif()
# This is required to map a symbol reference to a matching definition local to the module (.so) # This is required to map a symbol reference to a matching definition local to the module (.so)
# containing the reference instead of using definitions from other modules. # containing the reference instead of using definitions from other modules.
if(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_SUNOS) if(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_SUNOS)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic") add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:LINKER:-Bsymbolic>)
endif() endif()
function(set_common_libs TargetType) function(set_common_libs TargetType)

View file

@ -41,7 +41,7 @@ if(CLR_CMAKE_TARGET_WIN32)
list(APPEND HEADERS list(APPEND HEADERS
./comhost_test.h) ./comhost_test.h)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DELAYLOAD:nethost.dll") add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:/DELAYLOAD:nethost.dll>)
endif() endif()
include(../../hostmisc/hostmisc.cmake) include(../../hostmisc/hostmisc.cmake)

View file

@ -51,7 +51,7 @@ if (CLR_CMAKE_TARGET_UNIX OR CLR_CMAKE_TARGET_BROWSER OR CLR_CMAKE_TARGET_WASI)
add_compile_options(-D_WASI_EMULATED_PROCESS_CLOCKS) add_compile_options(-D_WASI_EMULATED_PROCESS_CLOCKS)
add_compile_options(-D_WASI_EMULATED_SIGNAL) add_compile_options(-D_WASI_EMULATED_SIGNAL)
add_compile_options(-D_WASI_EMULATED_MMAN) add_compile_options(-D_WASI_EMULATED_MMAN)
add_link_options(-Wl,-z,stack-size=1048576,--initial-memory=5242880,--max-memory=52428800,-lwasi-emulated-process-clocks,-lwasi-emulated-signal,-lwasi-emulated-mman) add_link_options("LINKER:-z,stack-size=1048576,--initial-memory=5242880,--max-memory=52428800,-lwasi-emulated-process-clocks,-lwasi-emulated-signal,-lwasi-emulated-mman")
endif () endif ()
if (CLR_CMAKE_TARGET_ANDROID) if (CLR_CMAKE_TARGET_ANDROID)

View file

@ -75,7 +75,7 @@ endif()
if (CMAKE_USE_PTHREADS) if (CMAKE_USE_PTHREADS)
add_compile_options(-pthread) add_compile_options(-pthread)
add_linker_flag(-pthread) add_link_options(-pthread)
endif() endif()
if (LOCAL_BUILD) if (LOCAL_BUILD)

View file

@ -79,7 +79,7 @@ if (FEATURE_DISTRO_AGNOSTIC_SSL)
) )
add_definitions(-DFEATURE_DISTRO_AGNOSTIC_SSL) add_definitions(-DFEATURE_DISTRO_AGNOSTIC_SSL)
add_compile_options(-pthread) add_compile_options(-pthread)
add_linker_flag(-pthread) add_link_options(-pthread)
endif() endif()
add_library(objlib OBJECT ${NATIVECRYPTO_SOURCES} ${VERSION_FILE_PATH}) add_library(objlib OBJECT ${NATIVECRYPTO_SOURCES} ${VERSION_FILE_PATH})