diff --git a/eng/native/functions.cmake b/eng/native/functions.cmake index c926f7e6d9c977..89ae649ebd9d58 100644 --- a/eng/native/functions.cmake +++ b/eng/native/functions.cmake @@ -373,11 +373,11 @@ function (get_symbol_file_name targetName outputSymbolFilename) endif () set(${outputSymbolFilename} ${strip_destination_file} PARENT_SCOPE) - else(CLR_CMAKE_HOST_UNIX) + elseif(CLR_CMAKE_HOST_WIN32) # We can't use the $ generator expression here since # the generator expression isn't supported on resource DLLs. set(${outputSymbolFilename} $/$$.pdb PARENT_SCOPE) - endif(CLR_CMAKE_HOST_UNIX) + endif() endfunction() function(strip_symbols targetName outputFilename) @@ -443,7 +443,9 @@ endfunction() function(install_with_stripped_symbols targetName kind destination) if(NOT CLR_CMAKE_KEEP_NATIVE_SYMBOLS) strip_symbols(${targetName} symbol_file) - install_symbol_file(${symbol_file} ${destination} ${ARGN}) + if (NOT "${symbol_file}" STREQUAL "") + install_symbol_file(${symbol_file} ${destination} ${ARGN}) + endif() endif() if (CLR_CMAKE_TARGET_APPLE AND ("${kind}" STREQUAL "TARGETS")) diff --git a/src/mono/CMakeLists.txt b/src/mono/CMakeLists.txt index d9202a9cf196e5..77b4d14346decf 100644 --- a/src/mono/CMakeLists.txt +++ b/src/mono/CMakeLists.txt @@ -8,6 +8,7 @@ project(mono) include(../../eng/native/configurepaths.cmake) include(${CLR_ENG_NATIVE_DIR}/functions.cmake) +include(${CLR_ENG_NATIVE_DIR}/configuretools.cmake) if (MSVC) # Also set by configurecompiler.cmake, which isn't used by mono yet diff --git a/src/mono/dlls/dbgshim/CMakeLists.txt b/src/mono/dlls/dbgshim/CMakeLists.txt index adb41b47612d8d..ffb57d5a5ed7a6 100644 --- a/src/mono/dlls/dbgshim/CMakeLists.txt +++ b/src/mono/dlls/dbgshim/CMakeLists.txt @@ -82,4 +82,4 @@ if(CLR_CMAKE_HOST_UNIX) endif() target_link_libraries(dbgshim PRIVATE ${DBGSHIM_LIBRARIES} monoapi) -install(TARGETS dbgshim DESTINATION lib) +install_with_stripped_symbols(dbgshim TARGETS lib) diff --git a/src/mono/dlls/mscordbi/CMakeLists.txt b/src/mono/dlls/mscordbi/CMakeLists.txt index c570777dca93a1..b9bbbefbe6b0b3 100644 --- a/src/mono/dlls/mscordbi/CMakeLists.txt +++ b/src/mono/dlls/mscordbi/CMakeLists.txt @@ -153,4 +153,4 @@ if(CLR_CMAKE_HOST_UNIX) endif() target_link_libraries(mscordbi PRIVATE ${COREDBI_LIBRARIES} monoapi) -install(TARGETS mscordbi DESTINATION lib) +install_with_stripped_symbols(mscordbi TARGETS lib) diff --git a/src/mono/mono.proj b/src/mono/mono.proj index ec4168167b2834..96c23f094b281e 100644 --- a/src/mono/mono.proj +++ b/src/mono/mono.proj @@ -263,6 +263,7 @@ <_MonoCMakeArgs Include="-DCMAKE_INSTALL_PREFIX="$(MonoObjDir.Replace('\','/'))out""/> <_MonoCMakeArgs Include="-DCMAKE_INSTALL_LIBDIR=lib"/> <_MonoCMakeArgs Include="-DCMAKE_BUILD_TYPE=$(Configuration)"/> + <_MonoCMakeArgs Include="-DCLR_CMAKE_KEEP_NATIVE_SYMBOLS=true" Condition="'$(KeepNativeSymbols)' == 'true'" /> <_MonoCMakeArgs Condition="'$(CMakeArgs)' != ''" Include="$(CMakeArgs)"/> <_MonoCMakeArgs Condition="'$(MonoEnableLLVM)' == 'true'" Include="-DLLVM_PREFIX=$(MonoLLVMDir)\$(_MonoLLVMTargetArchitecture)" /> <_MonoCMakeArgs Condition="'$(BuildDarwinFrameworks)' == 'true'" Include="-DBUILD_DARWIN_FRAMEWORKS=1" /> @@ -475,20 +476,19 @@ <_IcuLibdir>$(PkgMicrosoft_NETCore_Runtime_ICU_Transport)/runtimes/$(TargetOS)-$(TargetArchitecture)/native/lib - - <_MonoCMakeArgs Include="-DCMAKE_OSX_ARCHITECTURES=arm64"/> - <_MonoCMakeArgs Include="-DCMAKE_SYSTEM_NAME=$(_MonoCMakeSystemName)"/> <_MonoCMakeArgs Include="-DCMAKE_OSX_DEPLOYMENT_TARGET=$(_MonoCMakeVersionMin)" /> <_MonoCMakeArgs Include="-DCMAKE_OSX_SYSROOT='$(_MonoCMakeSysroot)'" /> - <_MonoCMakeArgs Condition="'$(Platform)' == 'x64'" Include="-DCMAKE_OSX_ARCHITECTURES=x86_64"/> - <_MonoCMakeArgs Condition="'$(Platform)' == 'x86'" Include="-DCMAKE_OSX_ARCHITECTURES=i386"/> - <_MonoCMakeArgs Condition="'$(Platform)' == 'arm64'" Include="-DCMAKE_OSX_ARCHITECTURES=arm64"/> - <_MonoCMakeArgs Condition="'$(Platform)' == 'arm'" Include=""-DCMAKE_OSX_ARCHITECTURES=armv7%3Barmv7s""/> <_MonoCFLAGS Include="-Wl,-application_extension" /> <_MonoCXXFLAGS Include="-Wl,-application_extension" /> + + <_MonoCMakeArgs Condition="'$(Platform)' == 'x64'" Include="-DCMAKE_OSX_ARCHITECTURES=x86_64" /> + <_MonoCMakeArgs Condition="'$(Platform)' == 'x86'" Include="-DCMAKE_OSX_ARCHITECTURES=i386" /> + <_MonoCMakeArgs Condition="'$(Platform)' == 'arm64'" Include="-DCMAKE_OSX_ARCHITECTURES=arm64" /> + <_MonoCMakeArgs Condition="'$(Platform)' == 'arm'" Include=""-DCMAKE_OSX_ARCHITECTURES=armv7%3Barmv7s"" /> + <_MonoCMakeArgs Include="-DICU_LIBDIR=$(_IcuLibdir)"/> <_MonoCMakeArgs Include="-DENABLE_ICALL_EXPORT=1"/> @@ -599,6 +599,16 @@ <_MonoCMakeArgs Include="-DMONO_COMPONENTS_RID=$(TargetOS)-$(TargetArchitecture)" /> + + + <_MonoCMakeArgs Condition="'$(TargetArchitecture)' == 'wasm'" Include="-DCLR_CMAKE_HOST_ARCH=$(BuildArchitecture)" /> + <_MonoCMakeArgs Condition="'$(TargetArchitecture)' != 'wasm'" Include="-DCLR_CMAKE_HOST_ARCH=$(TargetArchitecture)" /> @@ -651,61 +661,6 @@ - - - - linux-x86_64 - darwin-x86_64 - windows-x86_64 - <_MonoRuntimeFilePath>$(MonoObjDir)out\lib\$(MonoFileName) - <_LinuxAbi Condition="'$(TargetsAndroid)' != 'true' and '$(TargetsLinuxBionic)' != 'true' and '$(TargetsLinuxMusl)' != 'true'">linux-gnu - <_LinuxAbi Condition="'$(TargetsAndroid)' != 'true' and '$(TargetsLinuxBionic)' != 'true' and '$(TargetsLinuxMusl)' == 'true'">alpine-linux-musl - <_LinuxAbi Condition="'$(TargetsAndroid)' == 'true' or '$(TargetsLinuxBionic)' == 'true'">linux-android - <_LinuxFloatAbi Condition="'$(TargetsAndroid)' != 'true' and '$(TargetsLinuxBionic)' != 'true'">hf - <_Objcopy>objcopy - <_Objcopy Condition="'$(Platform)' == 'arm'">arm-$(_LinuxAbi)eabi$(_LinuxFloatAbi)-$(_Objcopy) - <_Objcopy Condition="'$(Platform)' == 'armv6'">arm-$(_LinuxAbi)eabi$(_LinuxFloatAbi)-$(_Objcopy) - <_Objcopy Condition="'$(Platform)' == 'arm64'">aarch64-$(_LinuxAbi)-$(_Objcopy) - <_Objcopy Condition="'$(Platform)' == 'riscv64'">riscv64-$(_LinuxAbi)-$(_Objcopy) - <_Objcopy Condition="'$(Platform)' == 's390x'">s390x-$(_LinuxAbi)-$(_Objcopy) - <_Objcopy Condition="'$(Platform)' == 'ppc64le'">powerpc64le-$(_LinuxAbi)-$(_Objcopy) - <_Objcopy Condition="'$(Platform)' == 'x64'">x86_64-$(_LinuxAbi)-$(_Objcopy) - <_Objcopy Condition="'$(Platform)' == 'x86'">i686-$(_LinuxAbi)-$(_Objcopy) - <_Objcopy Condition="'$(TargetsAndroid)' == 'true' or '$(TargetsLinuxBionic)' == 'true'">$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(MonoToolchainPrebuiltOS)/bin/llvm-objcopy - <_Objcopy Condition="'$(TargetsLinuxMusl)' == 'true' and '$(CrossBuild)' != 'true'">objcopy - - <_ObjcopyPrefix Condition="'$(MonoCrossDir)' != '' and '$(Platform)' == 'riscv64' and $(_Objcopy) == ''">llvm-objcopy- - - - - - - - <_Objcopy Condition="'$(_ObjcopyFound)' == '0'">llvm-objcopy - - - - - - - - - - - - <_Objcopy Condition="'$(_ObjcopyFound)' != '0'">objcopy - - - - - - - - - - - - @@ -736,6 +691,12 @@ x86_64-apple-maccatalyst + + linux-x86_64 + darwin-x86_64 + windows-x86_64 + + <_LibClang Include="$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(MonoToolchainPrebuiltOS)/lib64/libclang.so.*"/> @@ -748,9 +709,17 @@ $(MonoCrossDir)/usr/lib/gcc/aarch64-linux-gnu/5 + + <_MonoLLVMTargetArchitecture>$(BuildArchitecture) + <_MonoLLVMTargetArchitecture Condition="'$(RealTargetArchitecture)' != ''">$(RealTargetArchitecture) + + - + + + + <_MonoAOTCFLAGS Condition="'$(RealTargetArchitecture)' == 'arm64'" Include="-arch arm64" /> @@ -797,6 +766,8 @@ <_MonoAOTCPPFLAGS Include="-DNVALGRIND" /> + + @@ -808,9 +779,6 @@ <_MonoSkipInitCompiler>true - linux-x86_64 - darwin-x86_64 - windows-x86_64 true $(ANDROID_NDK_ROOT)/sysroot @@ -859,8 +827,6 @@ <_MonoAOTCFLAGSOption>-DCMAKE_C_FLAGS="@(_MonoAOTCPPFLAGS, ' ') @(_MonoAOTCFLAGS, ' ')" <_MonoAOTCXXFLAGSOption>-DCMAKE_CXX_FLAGS="@(_MonoAOTCPPFLAGS, ' ') @(_MonoAOTCXXFLAGS, ' ')" - <_MonoLLVMTargetArchitecture>$(BuildArchitecture) - <_MonoLLVMTargetArchitecture Condition="'$(RealTargetArchitecture)' != ''">$(RealTargetArchitecture) @@ -948,8 +914,7 @@ - <_MonoRuntimeFilePath Condition="'$(TargetsWindows)' == 'true'">$(MonoObjDir)out\bin\$(MonoFileName) - <_MonoRuntimeFilePath Condition="'$(_MonoRuntimeFilePath)' == ''">$(MonoObjDir)out\lib\$(MonoFileName) + <_MonoRuntimeFilePath>$(MonoObjDir)out\lib\$(MonoFileName) <_MonoRuntimeStaticFilePath Condition="'$(TargetsMacCatalyst)' == 'true' or '$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true' or '$(TargetsAndroid)' == 'true' or '$(TargetsLinuxBionic)' == 'true'">$(MonoObjDir)out\lib\$(MonoStaticLibFileName) <_MonoIncludeInterpStaticFiles Condition="'$(TargetsBrowser)' == 'true' or '$(TargetsWasi)' == 'true'">true <_MonoIncludeIcuFiles Condition="'$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true' or '$(TargetsMacCatalyst)' == 'true'">true @@ -1101,8 +1066,6 @@ DestinationFiles="@(_MonoRuntimeBuildArtifacts->'$(RuntimeBinDir)build\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true" Condition="'$(BuildMonoAOTCrossCompilerOnly)' != 'true'" /> - - diff --git a/src/mono/mono/component/CMakeLists.txt b/src/mono/mono/component/CMakeLists.txt index 8a8964efc087e5..967ea555f96901 100644 --- a/src/mono/mono/component/CMakeLists.txt +++ b/src/mono/mono/component/CMakeLists.txt @@ -192,7 +192,7 @@ if(NOT DISABLE_COMPONENTS AND NOT STATIC_COMPONENTS) target_link_libraries("mono-component-${component}" PRIVATE monosgen-shared) endif() target_link_libraries("mono-component-${component}" PRIVATE ${OS_LIBS}) - install(TARGETS "mono-component-${component}" LIBRARY) + install_with_stripped_symbols("mono-component-${component}" TARGETS lib) endforeach() #define a library for each component and component stub diff --git a/src/mono/mono/eventpipe/test/CMakeLists.txt b/src/mono/mono/eventpipe/test/CMakeLists.txt index 5662e9ca46a3db..34e84a77768e58 100644 --- a/src/mono/mono/eventpipe/test/CMakeLists.txt +++ b/src/mono/mono/eventpipe/test/CMakeLists.txt @@ -43,7 +43,7 @@ if(ENABLE_PERFTRACING) if(ICU_LDFLAGS) set_target_properties(ep-test PROPERTIES LINK_FLAGS ${ICU_LDFLAGS}) endif() - install(TARGETS ep-test RUNTIME) + install_with_stripped_symbols(ep-test TARGETS bin) else(ENABLE_EVENTPIPE_TEST AND STATIC_COMPONENTS AND (NOT DISABLE_COMPONENTS) AND (NOT DISABLE_LIBS) AND (NOT DISABLE_EXECUTABLES)) message(VERBOSE "Skip building native EventPipe library test runner.") endif(ENABLE_EVENTPIPE_TEST AND STATIC_COMPONENTS AND (NOT DISABLE_COMPONENTS) AND (NOT DISABLE_LIBS) AND (NOT DISABLE_EXECUTABLES)) diff --git a/src/mono/mono/metadata/CMakeLists.txt b/src/mono/mono/metadata/CMakeLists.txt index abddf1a58a5d92..1c692c9f6f0e1f 100644 --- a/src/mono/mono/metadata/CMakeLists.txt +++ b/src/mono/mono/metadata/CMakeLists.txt @@ -208,4 +208,3 @@ target_compile_definitions(metadata_objects PRIVATE -DMONO_DLL_EXPORT) target_include_directories(metadata_objects PRIVATE ${PROJECT_BINARY_DIR}/../.. ${PROJECT_SOURCE_DIR}/../.. ${PROJECT_SOURCE_DIR}/..) - diff --git a/src/mono/mono/mini/CMakeLists.txt b/src/mono/mono/mini/CMakeLists.txt index 8419317adc58c3..2d39b5dbe266d9 100644 --- a/src/mono/mono/mini/CMakeLists.txt +++ b/src/mono/mono/mini/CMakeLists.txt @@ -410,7 +410,7 @@ if(NOT DISABLE_SHARED_LIBS) # if components are disabled, link the fallback stubs into the runtime target_sources(monosgen-shared PRIVATE "${mono-components-stub-objects}") endif() - install(TARGETS monosgen-shared LIBRARY) + install_with_stripped_symbols(monosgen-shared TARGETS lib) if(HOST_WIN32 AND TARGET_AMD64) add_library(monosgen-shared-dac SHARED "mini-windows-dlldac.c") target_link_libraries(monosgen-shared-dac PRIVATE monoapi eglib_api) @@ -452,9 +452,7 @@ if(NOT DISABLE_SHARED_LIBS) FRAMEWORK_VERSION C MACOSX_FRAMEWORK_IDENTIFIER net.dot.mono-framework ) - install(TARGETS ${frameworkconfig} - FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR} - ) + install_with_stripped_symbols(${frameworkconfig} TARGETS ${CMAKE_INSTALL_LIBDIR}) endforeach() endif() endif() @@ -567,8 +565,5 @@ if(NOT DISABLE_EXECUTABLES) target_sources(mono-sgen PRIVATE ${mono_validate_apis_source}) endif() - install(TARGETS mono-sgen RUNTIME) - if(HOST_WIN32) - install(FILES $ DESTINATION bin OPTIONAL) - endif() + install_with_stripped_symbols(mono-sgen TARGETS bin) endif()