From 2f208128f257b2390a8edefa0a19e0eaad6bd419 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 29 Jun 2023 16:05:19 -0700 Subject: [PATCH] Fix MSBuild integration for the host build with CMake 3.26 (#88208) --- eng/native/ijw/IJW.cmake | 13 +++++++++++++ eng/native/ijw/SetIJWProperties.props | 6 ++++++ src/native/corehost/test/ijw/CMakeLists.txt | 1 + .../IJW/CopyConstructorMarshaler/CMakeLists.txt | 1 + src/tests/Interop/IJW/IjwNativeDll/CMakeLists.txt | 1 + src/tests/Interop/IJW/NativeVarargs/CMakeLists.txt | 1 + 6 files changed, 23 insertions(+) create mode 100644 eng/native/ijw/SetIJWProperties.props diff --git a/eng/native/ijw/IJW.cmake b/eng/native/ijw/IJW.cmake index 9a38a18dc07..4222b9b15b9 100644 --- a/eng/native/ijw/IJW.cmake +++ b/eng/native/ijw/IJW.cmake @@ -31,6 +31,19 @@ if (CLR_CMAKE_HOST_WIN32) set_target_properties(${targetName} PROPERTIES COMPILE_OPTIONS "${compileOptions}") endfunction() + function(add_ijw_msbuild_project_properties targetName ijwhost_target) + # When we're building with MSBuild, we need to set some project properties + # in case CMake has decided to use the SDK support. + # We're dogfooding things, so we need to set settings in ways that the product doesn't quite support. + # We don't actually need an installed/available target framework version here + # since we are disabling implicit framework references. We just need a valid value, and net8.0 is valid. + set_target_properties(${targetName} PROPERTIES + DOTNET_TARGET_FRAMEWORK net8.0 + VS_GLOBAL_DisableImplicitFrameworkReferences true + VS_GLOBAL_GenerateRuntimeConfigurationFiles false + VS_PROJECT_IMPORT "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/SetIJWProperties.props") + endfunction() + # 4365 - signed/unsigned mismatch # 4679 - Could not import member. This is an issue with IJW and static abstract methods in interfaces. add_compile_options(/wd4365 /wd4679) diff --git a/eng/native/ijw/SetIJWProperties.props b/eng/native/ijw/SetIJWProperties.props new file mode 100644 index 00000000000..d18ba7ff054 --- /dev/null +++ b/eng/native/ijw/SetIJWProperties.props @@ -0,0 +1,6 @@ + + + + false + + \ No newline at end of file diff --git a/src/native/corehost/test/ijw/CMakeLists.txt b/src/native/corehost/test/ijw/CMakeLists.txt index e9f43e23712..9e90cfdcf06 100644 --- a/src/native/corehost/test/ijw/CMakeLists.txt +++ b/src/native/corehost/test/ijw/CMakeLists.txt @@ -12,5 +12,6 @@ add_library(ijw SHARED ${SOURCES}) target_link_libraries(ijw PRIVATE ${LINK_LIBRARIES_ADDITIONAL}) remove_ijw_incompatible_target_options(ijw) +add_ijw_msbuild_project_properties(ijw ijwhost) install_with_stripped_symbols(ijw TARGETS corehost_test) diff --git a/src/tests/Interop/IJW/CopyConstructorMarshaler/CMakeLists.txt b/src/tests/Interop/IJW/CopyConstructorMarshaler/CMakeLists.txt index 3f9c1d9b727..d082f7c8b13 100644 --- a/src/tests/Interop/IJW/CopyConstructorMarshaler/CMakeLists.txt +++ b/src/tests/Interop/IJW/CopyConstructorMarshaler/CMakeLists.txt @@ -7,6 +7,7 @@ set(SOURCES IjwCopyConstructorMarshaler.cpp) # add the shared library add_library (IjwCopyConstructorMarshaler SHARED ${SOURCES}) target_link_libraries(IjwCopyConstructorMarshaler PRIVATE ${LINK_LIBRARIES_ADDITIONAL}) +add_ijw_msbuild_project_properties(IjwCopyConstructorMarshaler ijwhost) # add the install targets install (TARGETS IjwCopyConstructorMarshaler DESTINATION bin) diff --git a/src/tests/Interop/IJW/IjwNativeDll/CMakeLists.txt b/src/tests/Interop/IJW/IjwNativeDll/CMakeLists.txt index c588e57b44d..a8eee97b764 100644 --- a/src/tests/Interop/IJW/IjwNativeDll/CMakeLists.txt +++ b/src/tests/Interop/IJW/IjwNativeDll/CMakeLists.txt @@ -7,6 +7,7 @@ set(SOURCES IjwNativeDll.cpp) # add the shared library add_library (IjwNativeDll SHARED ${SOURCES}) target_link_libraries(IjwNativeDll PRIVATE ${LINK_LIBRARIES_ADDITIONAL}) +add_ijw_msbuild_project_properties(IjwNativeDll ijwhost) # add the install targets install (TARGETS IjwNativeDll DESTINATION bin) diff --git a/src/tests/Interop/IJW/NativeVarargs/CMakeLists.txt b/src/tests/Interop/IJW/NativeVarargs/CMakeLists.txt index 17929bffd94..a3c7c973a65 100644 --- a/src/tests/Interop/IJW/NativeVarargs/CMakeLists.txt +++ b/src/tests/Interop/IJW/NativeVarargs/CMakeLists.txt @@ -7,6 +7,7 @@ set(SOURCES IjwNativeVarargs.cpp) # add the shared library add_library (IjwNativeVarargs SHARED ${SOURCES}) target_link_libraries(IjwNativeVarargs PRIVATE ${LINK_LIBRARIES_ADDITIONAL}) +add_ijw_msbuild_project_properties(IjwNativeVarargs ijwhost) # add the install targets install (TARGETS IjwNativeVarargs DESTINATION bin) -- GitLab