Skip to content

Commit bf45665

Browse files
Jarret Shookjkoritzinskysafernjanvorli
authored
Minimum CMake downgrade for Linux (#39044) (#40471)
Co-authored-by: Santiago Fernandez Madero <[email protected]> Co-authored-by: Jan Vorlicek <[email protected]> Co-authored-by: Jeremy Koritzinsky <[email protected]> Co-authored-by: Santiago Fernandez Madero <[email protected]> Co-authored-by: Jan Vorlicek <[email protected]>
1 parent 7b82cf1 commit bf45665

File tree

44 files changed

+249
-165
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+249
-165
lines changed

eng/native/build-commons.sh

+2-7
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,6 @@ check_prereqs()
4848
{
4949
echo "Checking prerequisites..."
5050

51-
if ! cmake --help 2>&1 | grep -q \\-B; then
52-
echo "Please install cmake v3.14.5 or newer from https://www.cmake.org/download/."
53-
exit 1
54-
fi
55-
5651
if [[ "$__HostOS" == "OSX" ]]; then
5752
# Check presence of pkg-config on the path
5853
command -v pkg-config 2>/dev/null || { echo >&2 "Please install pkg-config before running this script, see https://github.com/dotnet/runtime/blob/master/docs/workflow/requirements/macos-requirements.md"; exit 1; }
@@ -177,8 +172,8 @@ EOF
177172
cmake_command="emcmake $cmake_command"
178173
fi
179174

180-
echo "Executing $cmake_command --build \"$intermediatesDir\" --target install -j $__NumProc"
181-
$cmake_command --build "$intermediatesDir" --target install -j "$__NumProc"
175+
echo "Executing $cmake_command --build \"$intermediatesDir\" --target install -- -j $__NumProc"
176+
$cmake_command --build "$intermediatesDir" --target install -- -j "$__NumProc"
182177
fi
183178

184179
local exit_code="$?"

eng/native/configurecompiler.cmake

+44-34
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ set(CMAKE_C_STANDARD_REQUIRED ON)
88
set(CMAKE_CXX_STANDARD 11)
99
set(CMAKE_CXX_STANDARD_REQUIRED ON)
1010

11-
cmake_policy(SET CMP0083 NEW)
12-
1311
include(CheckCXXCompilerFlag)
1412

1513
# "configureoptimization.cmake" must be included after CLR_CMAKE_HOST_UNIX has been set.
@@ -40,11 +38,18 @@ set(CMAKE_CXX_FLAGS_CHECKED "")
4038
set(CMAKE_EXE_LINKER_FLAGS_CHECKED "")
4139
set(CMAKE_SHARED_LINKER_FLAGS_CHECKED "")
4240

41+
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "")
42+
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "")
43+
set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "")
44+
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "")
45+
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "")
46+
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "")
47+
4348
add_compile_definitions("$<$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>:DEBUG;_DEBUG;_DBG;URTBLDENV_FRIENDLY=Checked;BUILDENV_CHECKED=1>")
4449
add_compile_definitions("$<$<OR:$<CONFIG:RELEASE>,$<CONFIG:RELWITHDEBINFO>>:NDEBUG;URTBLDENV_FRIENDLY=Retail>")
4550

4651
if (MSVC)
47-
add_link_options(/GUARD:CF)
52+
add_linker_flag(/GUARD:CF)
4853

4954
# Linker flags
5055
#
@@ -57,48 +62,51 @@ if (MSVC)
5762
endif ()
5863

5964
#Do not create Side-by-Side Assembly Manifest
60-
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/MANIFEST:NO>)
65+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /MANIFEST:NO")
6166
# can handle addresses larger than 2 gigabytes
62-
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/LARGEADDRESSAWARE>)
67+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LARGEADDRESSAWARE")
6368
#Compatible with Data Execution Prevention
64-
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/NXCOMPAT>)
69+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /NXCOMPAT")
6570
#Use address space layout randomization
66-
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/DYNAMICBASE>)
71+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DYNAMICBASE")
6772
#shrink pdb size
68-
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/PDBCOMPRESS>)
73+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /PDBCOMPRESS")
6974

70-
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/DEBUG>)
71-
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/IGNORE:4197,4013,4254,4070,4221>)
72-
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:/SUBSYSTEM:WINDOWS,${WINDOWS_SUBSYSTEM_VERSION}>)
75+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUG")
76+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /IGNORE:4197,4013,4254,4070,4221")
77+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SUBSYSTEM:WINDOWS,${WINDOWS_SUBSYSTEM_VERSION}")
7378

7479
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} /IGNORE:4221")
7580

76-
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:/DEBUG>)
77-
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:/PDBCOMPRESS>)
78-
add_link_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:/STACK:1572864>)
81+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG")
82+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /PDBCOMPRESS")
83+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1572864")
7984

8085
# Debug build specific flags
81-
add_link_options($<$<AND:$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>,$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>>:/NOVCFEATURE>)
86+
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /NOVCFEATURE")
87+
set(CMAKE_SHARED_LINKER_FLAGS_CHECKED "${CMAKE_SHARED_LINKER_FLAGS_CHECKED} /NOVCFEATURE")
8288

8389
# Checked build specific flags
84-
add_link_options($<$<CONFIG:CHECKED>:/INCREMENTAL:NO>) # prevent "warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:REF' specification"
85-
add_link_options($<$<CONFIG:CHECKED>:/OPT:REF>)
86-
add_link_options($<$<CONFIG:CHECKED>:/OPT:NOICF>)
90+
add_linker_flag(/INCREMENTAL:NO CHECKED) # prevent "warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:REF' specification"
91+
add_linker_flag(/OPT:REF CHECKED)
92+
add_linker_flag(/OPT:NOICF CHECKED)
8793

8894
# Release build specific flags
89-
add_link_options($<$<CONFIG:RELEASE>:/LTCG>)
90-
add_link_options($<$<CONFIG:RELEASE>:/OPT:REF>)
91-
add_link_options($<$<CONFIG:RELEASE>:/OPT:ICF>)
95+
add_linker_flag(/LTCG RELEASE)
96+
add_linker_flag(/OPT:REF RELEASE)
97+
add_linker_flag(/OPT:ICF RELEASE)
98+
add_linker_flag(/INCREMENTAL:NO RELEASE)
9299
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /LTCG")
93100

94101
# ReleaseWithDebugInfo build specific flags
95-
add_link_options($<$<CONFIG:RELWITHDEBINFO>:/LTCG>)
96-
add_link_options($<$<CONFIG:RELWITHDEBINFO>:/OPT:REF>)
97-
add_link_options($<$<CONFIG:RELWITHDEBINFO>:/OPT:ICF>)
102+
add_linker_flag(/LTCG RELWITHDEBINFO)
103+
add_linker_flag(/OPT:REF RELWITHDEBINFO)
104+
add_linker_flag(/OPT:ICF RELWITHDEBINFO)
98105
set(CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO} /LTCG")
99106

100107
# Force uCRT to be dynamically linked for Release build
101-
add_link_options("$<$<CONFIG:RELEASE>:/NODEFAULTLIB:libucrt.lib;/DEFAULTLIB:ucrt.lib>")
108+
add_linker_flag(/NODEFAULTLIB:libucrt.lib RELEASE)
109+
add_linker_flag(/DEFAULTLIB:ucrt.lib RELEASE)
102110

103111
elseif (CLR_CMAKE_HOST_UNIX)
104112
# Set the values to display when interactively configuring CMAKE_BUILD_TYPE
@@ -157,11 +165,10 @@ elseif (CLR_CMAKE_HOST_UNIX)
157165

158166
# -fdata-sections -ffunction-sections: each function has own section instead of one per .o file (needed for --gc-sections)
159167
# -O1: optimization level used instead of -O0 to avoid compile error "invalid operand for inline asm constraint"
160-
add_compile_definitions("$<$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>:${CLR_SANITIZE_CXX_OPTIONS};-fdata-sections;--ffunction-sections;-O1>")
161-
add_link_options($<$<AND:$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>,$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>>:${CLR_SANITIZE_LINK_OPTIONS}>)
162-
168+
add_compile_options("$<$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>:${CLR_SANITIZE_CXX_OPTIONS};-fdata-sections;--ffunction-sections;-O1>")
169+
add_linker_flag("${CLR_SANITIZE_LINK_OPTIONS}" DEBUG CHECKED)
163170
# -Wl and --gc-sections: drop unused sections\functions (similar to Windows /Gy function-level-linking)
164-
add_link_options("$<$<AND:$<OR:$<CONFIG:DEBUG>,$<CONFIG:CHECKED>>,$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>>:${CLR_SANITIZE_LINK_OPTIONS};-Wl,--gc-sections>")
171+
add_linker_flag("-Wl,--gc-sections" DEBUG CHECKED)
165172
endif ()
166173
endif(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL DEBUG OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL CHECKED)
167174
endif(MSVC)
@@ -173,15 +180,18 @@ endif(MSVC)
173180
# ./build-native.sh cmakeargs "-DCLR_ADDITIONAL_COMPILER_OPTIONS=<...>" cmakeargs "-DCLR_ADDITIONAL_LINKER_FLAGS=<...>"
174181
#
175182
if(CLR_CMAKE_HOST_UNIX)
176-
add_link_options(${CLR_ADDITIONAL_LINKER_FLAGS})
183+
foreach(ADDTL_LINKER_FLAG ${CLR_ADDITIONAL_LINKER_FLAGS})
184+
add_linker_flag(${ADDTL_LINKER_FLAG})
185+
endforeach()
177186
endif(CLR_CMAKE_HOST_UNIX)
178187

179188
if(CLR_CMAKE_HOST_LINUX)
180189
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
181-
add_link_options(-Wl,--build-id=sha1 -Wl,-z,relro,-z,now)
190+
add_linker_flag(-Wl,--build-id=sha1)
191+
add_linker_flag(-Wl,-z,relro,-z,now)
182192
elseif(CLR_CMAKE_HOST_FREEBSD)
183193
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
184-
add_link_options(LINKER:--build-id=sha1)
194+
add_linker_flag("-Wl,--build-id=sha1")
185195
elseif(CLR_CMAKE_HOST_SUNOS)
186196
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
187197
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector")
@@ -361,7 +371,7 @@ if (CLR_CMAKE_HOST_UNIX)
361371
if(CLR_CMAKE_HOST_OSX)
362372
set(MACOS_VERSION_MIN_FLAGS -mmacosx-version-min=10.12)
363373
add_compile_options(${MACOS_VERSION_MIN_FLAGS})
364-
add_link_options(${MACOS_VERSION_MIN_FLAGS})
374+
add_linker_flag(${MACOS_VERSION_MIN_FLAGS})
365375
endif(CLR_CMAKE_HOST_OSX)
366376
endif(CLR_CMAKE_HOST_UNIX)
367377

@@ -517,7 +527,7 @@ if(CLR_CMAKE_ENABLE_CODE_COVERAGE)
517527

518528
add_compile_options(-fprofile-arcs)
519529
add_compile_options(-ftest-coverage)
520-
add_link_options(--coverage)
530+
add_linker_flag(--coverage)
521531
else()
522532
message(FATAL_ERROR "Code coverage builds not supported on current platform")
523533
endif(CLR_CMAKE_HOST_UNIX)

eng/native/configureplatform.cmake

+4-18
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
include(CheckPIESupported)
21
include(${CMAKE_CURRENT_LIST_DIR}/functions.cmake)
32

43
# If set, indicates that this is not an officially supported release
@@ -382,24 +381,11 @@ else()
382381
endif()
383382

384383
if(NOT CLR_CMAKE_TARGET_BROWSER)
385-
# Skip check_pie_supported call on Android as ld from llvm toolchain with NDK API level 21
386-
# complains about missing linker flag `-no-pie` (while level 28's ld does support this flag,
387-
# but since we know that PIE is supported, we can safely skip this redundant check).
388-
#
389384
# The default linker on Solaris also does not support PIE.
390-
if(NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_SUNOS)
391-
# All code we build should be compiled as position independent
392-
get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
393-
if("CXX" IN_LIST languages)
394-
set(CLR_PIE_LANGUAGE CXX)
395-
else()
396-
set(CLR_PIE_LANGUAGE C)
397-
endif()
398-
check_pie_supported(OUTPUT_VARIABLE PIE_SUPPORT_OUTPUT LANGUAGES ${CLR_PIE_LANGUAGE})
399-
if(NOT MSVC AND NOT CMAKE_${CLR_PIE_LANGUAGE}_LINK_PIE_SUPPORTED)
400-
message(WARNING "PIE is not supported at link time: ${PIE_SUPPORT_OUTPUT}.\n"
401-
"PIE link options will not be passed to linker.")
402-
endif()
385+
if(NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_SUNOS AND NOT CLR_CMAKE_TARGET_OSX AND NOT CLR_CMAKE_HOST_TVOS AND NOT CLR_CMAKE_HOST_IOS AND NOT MSVC)
386+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
387+
add_compile_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:-fPIE>)
388+
add_compile_options($<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:-fPIC>)
403389
endif()
404390

405391
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

eng/native/functions.cmake

+25-3
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ function(preprocess_compile_asm)
148148
set(options "")
149149
set(oneValueArgs TARGET OUTPUT_OBJECTS)
150150
set(multiValueArgs ASM_FILES)
151-
cmake_parse_arguments(PARSE_ARGV 0 COMPILE_ASM "${options}" "${oneValueArgs}" "${multiValueArgs}")
151+
cmake_parse_arguments(COMPILE_ASM "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV})
152152

153153
get_include_directories_asm(ASM_INCLUDE_DIRECTORIES)
154154

@@ -241,7 +241,7 @@ function(target_precompile_header)
241241
set(options "")
242242
set(oneValueArgs TARGET HEADER)
243243
set(multiValueArgs ADDITIONAL_INCLUDE_DIRECTORIES)
244-
cmake_parse_arguments(PARSE_ARGV 0 PRECOMPILE_HEADERS "${options}" "${oneValueArgs}" "${multiValueArgs}")
244+
cmake_parse_arguments(PRECOMPILE_HEADERS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV})
245245

246246
if ("${PRECOMPILE_HEADERS_TARGET}" STREQUAL "")
247247
message(SEND_ERROR "No target supplied to target_precompile_header.")
@@ -360,7 +360,7 @@ endfunction()
360360
function(install_clr)
361361
set(oneValueArgs ADDITIONAL_DESTINATION)
362362
set(multiValueArgs TARGETS)
363-
cmake_parse_arguments(PARSE_ARGV 0 INSTALL_CLR "${options}" "${oneValueArgs}" "${multiValueArgs}")
363+
cmake_parse_arguments(INSTALL_CLR "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV})
364364

365365
if ("${INSTALL_CLR_TARGETS}" STREQUAL "")
366366
message(FATAL_ERROR "At least one target must be passed to install_clr(TARGETS )")
@@ -416,6 +416,15 @@ function(disable_pax_mprotect targetName)
416416
endif()
417417
endfunction()
418418

419+
if (CMAKE_VERSION VERSION_LESS "3.12")
420+
# Polyfill add_compile_definitions when it is unavailable
421+
function(add_compile_definitions)
422+
get_directory_property(DIR_COMPILE_DEFINITIONS COMPILE_DEFINITIONS)
423+
list(APPEND DIR_COMPILE_DEFINITIONS ${ARGV})
424+
set_directory_properties(PROPERTIES COMPILE_DEFINITIONS "${DIR_COMPILE_DEFINITIONS}")
425+
endfunction()
426+
endif()
427+
419428
function(_add_executable)
420429
if(NOT WIN32)
421430
add_executable(${ARGV} ${VERSION_FILE_PATH})
@@ -479,3 +488,16 @@ function(generate_module_index Target ModuleIndexFile)
479488
DEPENDS ${ModuleIndexFile}
480489
)
481490
endfunction(generate_module_index)
491+
492+
# add_linker_flag(Flag [Config1 Config2 ...])
493+
function(add_linker_flag Flag)
494+
if (ARGN STREQUAL "")
495+
set("CMAKE_EXE_LINKER_FLAGS" "${CMAKE_EXE_LINKER_FLAGS} ${Flag}" PARENT_SCOPE)
496+
set("CMAKE_SHARED_LINKER_FLAGS" "${CMAKE_SHARED_LINKER_FLAGS} ${Flag}" PARENT_SCOPE)
497+
else()
498+
foreach(Config ${ARGN})
499+
set("CMAKE_EXE_LINKER_FLAGS_${Config}" "${CMAKE_EXE_LINKER_FLAGS_${Config}} ${Flag}" PARENT_SCOPE)
500+
set("CMAKE_SHARED_LINKER_FLAGS_${Config}" "${CMAKE_SHARED_LINKER_FLAGS_${Config}} ${Flag}" PARENT_SCOPE)
501+
endforeach()
502+
endif()
503+
endfunction()

eng/native/gen-buildsys.sh

+6-2
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,16 @@ if [[ "$build_arch" == "wasm" ]]; then
9191
cmake_command="emcmake $cmake_command"
9292
fi
9393

94+
# We have to be able to build with CMake 3.6.2, so we can't use the -S or -B options
95+
pushd "$3"
96+
9497
# Include CMAKE_USER_MAKE_RULES_OVERRIDE as uninitialized since it will hold its value in the CMake cache otherwise can cause issues when branch switching
9598
$cmake_command \
9699
-G "$generator" \
97100
"-DCMAKE_BUILD_TYPE=$buildtype" \
98101
"-DCMAKE_INSTALL_PREFIX=$__CMakeBinDir" \
99102
$cmake_extra_defines \
100103
$__UnprocessedCMakeArgs \
101-
-S "$1" \
102-
-B "$3"
104+
"$1"
105+
106+
popd

src/coreclr/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.14.5)
1+
cmake_minimum_required(VERSION 3.6.2)
22

33
cmake_policy(SET CMP0042 NEW)
44

src/coreclr/pgosupport.cmake

+15-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
1-
include(CheckIPOSupported)
2-
check_ipo_supported(RESULT HAVE_LTO)
1+
include(CheckCXXSourceCompiles)
2+
include(CheckCXXCompilerFlag)
3+
4+
# VC++ guarantees support for LTCG (LTO's equivalent)
5+
if(NOT WIN32)
6+
# Function required to give CMAKE_REQUIRED_* local scope
7+
function(check_have_lto)
8+
set(CMAKE_REQUIRED_FLAGS -flto)
9+
set(CMAKE_REQUIRED_LIBRARIES -flto -fuse-ld=gold)
10+
check_cxx_source_compiles("int main() { return 0; }" HAVE_LTO)
11+
endfunction(check_have_lto)
12+
check_have_lto()
13+
14+
check_cxx_compiler_flag(-faligned-new COMPILER_SUPPORTS_F_ALIGNED_NEW)
15+
endif(NOT WIN32)
316

417
# Adds Profile Guided Optimization (PGO) flags to the current target
518
function(add_pgo TargetName)

src/coreclr/src/ToolBox/SOS/DacTableGen/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
cmake_minimum_required(VERSION 3.8)
12
# Quick note: The CMake C# support is using the CSC bundled with the MSBuild that the native build runs on, not the one supplied by the local .NET SDK.
23

34
project(DacTableGen LANGUAGES CSharp)

src/coreclr/src/binder/CMakeLists.txt

+4-2
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,13 @@ endif(CLR_CMAKE_TARGET_WIN32)
8282
convert_to_absolute_path(BINDER_SOURCES ${BINDER_SOURCES})
8383
convert_to_absolute_path(BINDER_CROSSGEN_SOURCES ${BINDER_CROSSGEN_SOURCES})
8484

85-
add_library_clr(v3binder
85+
add_library_clr(v3binder_obj
8686
OBJECT
8787
${BINDER_SOURCES}
8888
)
89-
add_dependencies(v3binder eventing_headers)
89+
add_dependencies(v3binder_obj eventing_headers)
90+
add_library(v3binder INTERFACE)
91+
target_sources(v3binder INTERFACE $<TARGET_OBJECTS:v3binder_obj>)
9092

9193
add_library_clr(v3binder_crossgen
9294
STATIC

src/coreclr/src/classlibnative/bcltype/CMakeLists.txt

+4-2
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ set(BCLTYPE_SOURCES
1010
variant.cpp
1111
)
1212

13-
add_library_clr(bcltype
13+
add_library_clr(bcltype_obj
1414
OBJECT
1515
${BCLTYPE_SOURCES}
1616
)
1717

18-
add_dependencies(bcltype eventing_headers)
18+
add_dependencies(bcltype_obj eventing_headers)
19+
add_library(bcltype INTERFACE)
20+
target_sources(bcltype INTERFACE $<TARGET_OBJECTS:bcltype_obj>)

src/coreclr/src/classlibnative/float/CMakeLists.txt

+5-2
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@ set(FLOAT_SOURCES
77
floatsingle.cpp
88
)
99

10-
add_library_clr(comfloat_wks
10+
add_library_clr(comfloat_wks_obj
1111
OBJECT
1212
${FLOAT_SOURCES}
1313
)
1414

15-
add_dependencies(comfloat_wks eventing_headers)
15+
add_dependencies(comfloat_wks_obj eventing_headers)
16+
17+
add_library(comfloat_wks INTERFACE)
18+
target_sources(comfloat_wks INTERFACE $<TARGET_OBJECTS:comfloat_wks_obj>)

src/coreclr/src/debug/debug-pal/CMakeLists.txt

+3-1
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,6 @@ if(CLR_CMAKE_HOST_UNIX)
3434

3535
endif(CLR_CMAKE_HOST_UNIX)
3636

37-
_add_library(debug-pal OBJECT ${TWO_WAY_PIPE_SOURCES})
37+
_add_library(debug-pal_obj OBJECT ${TWO_WAY_PIPE_SOURCES})
38+
add_library(debug-pal INTERFACE)
39+
target_sources(debug-pal INTERFACE $<TARGET_OBJECTS:debug-pal_obj>)

0 commit comments

Comments
 (0)