From 4243eb0c3aadad3d075bec91289a386a807a7b80 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 8 Apr 2025 09:52:36 +0200 Subject: [PATCH 01/25] Update ApkBuilder to support static linking --- src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt | 2 +- src/mono/msbuild/android/build/AndroidBuild.props | 5 +++-- src/mono/msbuild/android/build/AndroidBuild.targets | 3 ++- src/tasks/AndroidAppBuilder/ApkBuilder.cs | 12 +++++------- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index 4b7d533bb19ea5..d3b6abc9383b0e 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -229,7 +229,7 @@ endif(CLR_CMAKE_TARGET_WIN32) # add the install targets install_clr(TARGETS coreclr DESTINATIONS . sharedFramework COMPONENT runtime) -if(CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS) +if(CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_ANDROID) install_clr(TARGETS coreclr_static DESTINATIONS . sharedFramework COMPONENT runtime) endif() diff --git a/src/mono/msbuild/android/build/AndroidBuild.props b/src/mono/msbuild/android/build/AndroidBuild.props index de95c1d581efbb..66cca5831f7560 100644 --- a/src/mono/msbuild/android/build/AndroidBuild.props +++ b/src/mono/msbuild/android/build/AndroidBuild.props @@ -10,10 +10,11 @@ <_HostOS Condition="$([MSBuild]::IsOSPlatform('Windows'))">windows <_HostOS Condition="$([MSBuild]::IsOSPlatform('OSX'))">osx <_HostOS Condition="'$(_HostOS)' == ''">linux - <_IsLibraryMode Condition="'$(UseMonoRuntime)' == 'true' and '$(UseNativeAOTRuntime)' != 'true' and '$(NativeLib)' != ''">true <_ReadRuntimeComponentsManifestTargetName Condition="'$(UseMonoRuntime)' == 'true' and '$(UseNativeAOTRuntime)' != 'true'">_MonoReadAvailableComponentsManifest + true + Publish $(_ReadRuntimeComponentsManifestTargetName); @@ -41,4 +42,4 @@ - \ No newline at end of file + diff --git a/src/mono/msbuild/android/build/AndroidBuild.targets b/src/mono/msbuild/android/build/AndroidBuild.targets index be159ad0f3533e..5e45180b07960a 100644 --- a/src/mono/msbuild/android/build/AndroidBuild.targets +++ b/src/mono/msbuild/android/build/AndroidBuild.targets @@ -259,7 +259,8 @@ ProjectName="$(AppName)" RuntimeComponents="@(RuntimeComponents)" RuntimeIdentifier="$(RuntimeIdentifier)" - StripDebugSymbols="$(StripDebugSymbols)"> + StripDebugSymbols="$(StripDebugSymbols)" + StaticLinkedRuntime="$(StaticLinkedRuntime)"> diff --git a/src/tasks/AndroidAppBuilder/ApkBuilder.cs b/src/tasks/AndroidAppBuilder/ApkBuilder.cs index de72f50ce8e39e..5054edbea75dfa 100644 --- a/src/tasks/AndroidAppBuilder/ApkBuilder.cs +++ b/src/tasks/AndroidAppBuilder/ApkBuilder.cs @@ -120,11 +120,6 @@ public ApkBuilder(TaskLoggingHelper logger) throw new ArgumentException($"Using DiagnosticPorts targeting Mono requires diagnostics_tracing runtime component, which was not included in 'RuntimeComponents' item group. @RuntimeComponents: '{string.Join(", ", RuntimeComponents)}'"); } - if (IsCoreCLR && StaticLinkedRuntime) - { - throw new ArgumentException("Static linking is not supported for CoreCLR runtime"); - } - AndroidSdkHelper androidSdkHelper = new AndroidSdkHelper(AndroidSdk, BuildApiLevel, BuildToolsVersion); if (string.IsNullOrEmpty(MinApiLevel)) @@ -263,7 +258,10 @@ public ApkBuilder(TaskLoggingHelper logger) { runtimeLib = Path.Combine(AppDir, "libmonosgen-2.0.so"); } - else if (IsCoreCLR) + else if (StaticLinkedRuntime && IsCoreCLR) + { + runtimeLib = Path.Combine(AppDir, "libcoreclr_static.a"); + }else if (IsCoreCLR) { runtimeLib = Path.Combine(AppDir, "libcoreclr.so"); } @@ -277,7 +275,7 @@ public ApkBuilder(TaskLoggingHelper logger) nativeLibraries += $"{runtimeLib}{Environment.NewLine}"; } - if (StaticLinkedRuntime) + if (StaticLinkedRuntime && IsMono) { string[] staticComponentStubLibs = Directory.GetFiles(AppDir, "libmono-component-*-stub-static.a"); From 43310f261227767638a34239ce75ce7b69a686e4 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 9 Apr 2025 10:56:03 +0200 Subject: [PATCH 02/25] Add static libs to the framework directory --- src/coreclr/gc/unix/CMakeLists.txt | 4 ++++ src/coreclr/minipal/Unix/CMakeLists.txt | 4 ++++ src/coreclr/nativeresources/CMakeLists.txt | 4 ++++ src/coreclr/pal/src/CMakeLists.txt | 3 +++ .../eventprovider/dummyprovider/CMakeLists.txt | 4 ++++ src/tasks/AndroidAppBuilder/ApkBuilder.cs | 15 +++++++++++++++ 6 files changed, 34 insertions(+) diff --git a/src/coreclr/gc/unix/CMakeLists.txt b/src/coreclr/gc/unix/CMakeLists.txt index f88b039609881e..e244302889f169 100644 --- a/src/coreclr/gc/unix/CMakeLists.txt +++ b/src/coreclr/gc/unix/CMakeLists.txt @@ -11,3 +11,7 @@ set(GC_PAL_SOURCES cgroup.cpp) add_library(gc_pal STATIC ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) + +if(CLR_CMAKE_HOST_ANDROID) + install_clr(TARGETS gc_pal DESTINATIONS . sharedFramework) +endif() diff --git a/src/coreclr/minipal/Unix/CMakeLists.txt b/src/coreclr/minipal/Unix/CMakeLists.txt index aa4ea90d5e2700..4adbb8db4678a2 100644 --- a/src/coreclr/minipal/Unix/CMakeLists.txt +++ b/src/coreclr/minipal/Unix/CMakeLists.txt @@ -9,3 +9,7 @@ add_library(coreclrminipal ) target_link_libraries(coreclrminipal PRIVATE minipal) + +if(CLR_CMAKE_HOST_ANDROID) + install_clr(TARGETS coreclrminipal DESTINATIONS . sharedFramework) +endif() diff --git a/src/coreclr/nativeresources/CMakeLists.txt b/src/coreclr/nativeresources/CMakeLists.txt index 6959ca2497ad57..ac4ae2cc1a5c75 100644 --- a/src/coreclr/nativeresources/CMakeLists.txt +++ b/src/coreclr/nativeresources/CMakeLists.txt @@ -6,3 +6,7 @@ add_library_clr(nativeresourcestring ) install_clr (TARGETS nativeresourcestring DESTINATIONS lib) + +if(CLR_CMAKE_HOST_ANDROID) + install_clr(TARGETS nativeresourcestring DESTINATIONS . sharedFramework) +endif() diff --git a/src/coreclr/pal/src/CMakeLists.txt b/src/coreclr/pal/src/CMakeLists.txt index c6c498aa66d8bd..40d22685abe6bc 100644 --- a/src/coreclr/pal/src/CMakeLists.txt +++ b/src/coreclr/pal/src/CMakeLists.txt @@ -361,3 +361,6 @@ endif(FEATURE_EVENT_TRACE) # Install the static PAL library for VS install_clr (TARGETS coreclrpal DESTINATIONS lib) +if(CLR_CMAKE_HOST_ANDROID) + install_clr(TARGETS coreclrpal DESTINATIONS . sharedFramework) +endif() diff --git a/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt b/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt index 09986597b7c1b3..c1b97d6d42eb81 100644 --- a/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt +++ b/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt @@ -40,3 +40,7 @@ set_target_properties(eventprovider PROPERTIES LINKER_LANGUAGE CXX) # Install the static eventprovider library install(TARGETS eventprovider DESTINATION lib) + +if(CLR_CMAKE_HOST_ANDROID) + install_clr(TARGETS eventprovider DESTINATIONS . sharedFramework) +endif() diff --git a/src/tasks/AndroidAppBuilder/ApkBuilder.cs b/src/tasks/AndroidAppBuilder/ApkBuilder.cs index 5054edbea75dfa..0aabd81accf7eb 100644 --- a/src/tasks/AndroidAppBuilder/ApkBuilder.cs +++ b/src/tasks/AndroidAppBuilder/ApkBuilder.cs @@ -311,6 +311,21 @@ public ApkBuilder(TaskLoggingHelper logger) } } + if (StaticLinkedRuntime && IsCoreCLR) + { + string[] staticLibs = Directory.GetFiles(AppDir, "*.a") + .Where(lib => !Path.GetFileName(lib).Equals("libcoreclr_static.a", StringComparison.OrdinalIgnoreCase)) + .ToArray(); + + foreach (string lib in staticLibs) + { + nativeLibraries += $" {lib}{Environment.NewLine}"; + } + + nativeLibraries += $" libc++abi.a{Environment.NewLine}"; + nativeLibraries += $" libc++_static.a{Environment.NewLine}"; + } + StringBuilder extraLinkerArgs = new StringBuilder(); foreach (ITaskItem item in ExtraLinkerArguments) { From 4463fae98fbf45a1025d74c338c163910fb4cb74 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 14 Apr 2025 15:44:25 +0200 Subject: [PATCH 03/25] Add static libs to the runtime pack --- .../pkg/sfx/Microsoft.NETCore.App/Directory.Build.props | 6 ++++++ src/mono/msbuild/android/build/AndroidBuild.props | 2 +- src/mono/sample/Android/Makefile | 4 +++- src/native/minipal/CMakeLists.txt | 6 ++++++ src/tasks/AndroidAppBuilder/ApkBuilder.cs | 7 +++++-- 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props index 80932ca681b896..08f7cac8936ad1 100644 --- a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props +++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props @@ -102,6 +102,12 @@ + + + + + + diff --git a/src/mono/msbuild/android/build/AndroidBuild.props b/src/mono/msbuild/android/build/AndroidBuild.props index 66cca5831f7560..19691ee6800288 100644 --- a/src/mono/msbuild/android/build/AndroidBuild.props +++ b/src/mono/msbuild/android/build/AndroidBuild.props @@ -13,7 +13,7 @@ <_IsLibraryMode Condition="'$(UseMonoRuntime)' == 'true' and '$(UseNativeAOTRuntime)' != 'true' and '$(NativeLib)' != ''">true <_ReadRuntimeComponentsManifestTargetName Condition="'$(UseMonoRuntime)' == 'true' and '$(UseNativeAOTRuntime)' != 'true'">_MonoReadAvailableComponentsManifest - true + false Publish diff --git a/src/mono/sample/Android/Makefile b/src/mono/sample/Android/Makefile index 611398840f5a1a..4873c8d6a53ff1 100644 --- a/src/mono/sample/Android/Makefile +++ b/src/mono/sample/Android/Makefile @@ -9,6 +9,7 @@ DEPLOY_AND_RUN?=true RUNTIME_FLAVOR?=mono R2R?=false R2R_COMPOSITE?=false +STATIC_LINKING?=false #If DIAGNOSTIC_PORTS is enabled, @(RuntimeComponents) must also include 'diagnostics_tracing'. #If @(RuntimeComponents) includes 'diagnostics_tracing', DIAGNOSTIC_PORTS is optional. @@ -57,7 +58,8 @@ run: appbuilder /p:RuntimeFlavor=$(RUNTIME_FLAVOR) \ /p:PublishReadyToRun=$(R2R) \ /p:PublishReadyToRunComposite=$(R2R_COMPOSITE) \ + /p:StaticLinkedRuntime=$(STATIC_LINKING) \ /bl clean: rm -rf $(REPO_DIR)/artifacts/bin/AndroidSampleApp - rm -rf $(REPO_DIR)/artifacts/obj/mono/AndroidSampleApp \ No newline at end of file + rm -rf $(REPO_DIR)/artifacts/obj/mono/AndroidSampleApp diff --git a/src/native/minipal/CMakeLists.txt b/src/native/minipal/CMakeLists.txt index f27ad0d5fea50e..0909b42deed71d 100644 --- a/src/native/minipal/CMakeLists.txt +++ b/src/native/minipal/CMakeLists.txt @@ -46,3 +46,9 @@ add_library(minipal_sanitizer_support OBJECT # Exclude this target from the default build as we may not have sanitzer headers available # in a non-sanitized build. set_target_properties(minipal_sanitizer_support PROPERTIES EXCLUDE_FROM_ALL ON) + + +if(CLR_CMAKE_HOST_ANDROID) + install (TARGETS minipal DESTINATION .) +endif() + diff --git a/src/tasks/AndroidAppBuilder/ApkBuilder.cs b/src/tasks/AndroidAppBuilder/ApkBuilder.cs index 0aabd81accf7eb..98434878037b62 100644 --- a/src/tasks/AndroidAppBuilder/ApkBuilder.cs +++ b/src/tasks/AndroidAppBuilder/ApkBuilder.cs @@ -414,7 +414,8 @@ public ApkBuilder(TaskLoggingHelper logger) envVariables += $"\t\tsetEnv(\"{name}\", \"{value}\");\n"; } - string jniLibraryName = (IsLibraryMode) ? ProjectName! : "System.Security.Cryptography.Native.Android"; + string jniLibraryName = (IsLibraryMode) ? ProjectName! : + (StaticLinkedRuntime && IsCoreCLR) ? "monodroid" : "System.Security.Cryptography.Native.Android"; string monoRunner = Utils.GetEmbeddedResource("MonoRunner.java") .Replace("%EntryPointLibName%", Path.GetFileName(mainLibraryFileName)) .Replace("%JNI_LIBRARY_NAME%", jniLibraryName) @@ -474,7 +475,9 @@ public ApkBuilder(TaskLoggingHelper logger) excludedLibs.Add("libmscordaccore.so"); } } - dynamicLibs.AddRange(Directory.GetFiles(AppDir, "*.so").Where(file => !excludedLibs.Contains(Path.GetFileName(file)))); + + if (!StaticLinkedRuntime) + dynamicLibs.AddRange(Directory.GetFiles(AppDir, "*.so").Where(file => !excludedLibs.Contains(Path.GetFileName(file)))); } // add all *.so files to lib/%abi%/ From f08e9feb729a0e7cc609c5c937789691b1b2d5dd Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 14 Apr 2025 16:14:12 +0200 Subject: [PATCH 04/25] Fix formatting --- src/tasks/AndroidAppBuilder/ApkBuilder.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tasks/AndroidAppBuilder/ApkBuilder.cs b/src/tasks/AndroidAppBuilder/ApkBuilder.cs index 98434878037b62..c5625e6e7405ed 100644 --- a/src/tasks/AndroidAppBuilder/ApkBuilder.cs +++ b/src/tasks/AndroidAppBuilder/ApkBuilder.cs @@ -261,7 +261,8 @@ public ApkBuilder(TaskLoggingHelper logger) else if (StaticLinkedRuntime && IsCoreCLR) { runtimeLib = Path.Combine(AppDir, "libcoreclr_static.a"); - }else if (IsCoreCLR) + } + else if (IsCoreCLR) { runtimeLib = Path.Combine(AppDir, "libcoreclr.so"); } From ffa5351f25a4237ce6a853e2a622bf6d10a3152a Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 24 Apr 2025 17:24:43 +0200 Subject: [PATCH 05/25] Add object libraries for Android static linking --- src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt | 9 +++++++++ src/coreclr/gc/unix/CMakeLists.txt | 8 ++++---- src/coreclr/minipal/Unix/CMakeLists.txt | 11 +++++++---- src/coreclr/nativeresources/CMakeLists.txt | 11 +++++++---- src/coreclr/pal/src/CMakeLists.txt | 13 ++++++++++--- .../src/eventprovider/dummyprovider/CMakeLists.txt | 11 +++++++---- .../sfx/Microsoft.NETCore.App/Directory.Build.props | 6 ------ src/native/minipal/CMakeLists.txt | 6 ------ src/tasks/AndroidAppBuilder/ApkBuilder.cs | 9 ++++++++- .../AndroidAppBuilder/Templates/monodroid-coreclr.c | 2 +- 10 files changed, 53 insertions(+), 33 deletions(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index d3b6abc9383b0e..c2b78e06fdb55b 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -194,6 +194,15 @@ target_compile_definitions(coreclr_static PUBLIC CORECLR_EMBEDDED) if (CLR_CMAKE_HOST_ANDROID) target_link_libraries(coreclr PUBLIC log) target_link_libraries(coreclr_static PUBLIC log) + target_sources(coreclr_static PUBLIC + $ + $ + $ + $ + $ + $ + $ + ) endif() if(CLR_CMAKE_TARGET_WIN32) diff --git a/src/coreclr/gc/unix/CMakeLists.txt b/src/coreclr/gc/unix/CMakeLists.txt index e244302889f169..9156ece102dfd6 100644 --- a/src/coreclr/gc/unix/CMakeLists.txt +++ b/src/coreclr/gc/unix/CMakeLists.txt @@ -10,8 +10,8 @@ set(GC_PAL_SOURCES events.cpp cgroup.cpp) -add_library(gc_pal STATIC ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) - -if(CLR_CMAKE_HOST_ANDROID) - install_clr(TARGETS gc_pal DESTINATIONS . sharedFramework) +if (CLR_CMAKE_HOST_ANDROID) + add_library(gc_pal_objects OBJECT ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) endif() + +add_library(gc_pal STATIC ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) diff --git a/src/coreclr/minipal/Unix/CMakeLists.txt b/src/coreclr/minipal/Unix/CMakeLists.txt index 4adbb8db4678a2..22eb3afe60520c 100644 --- a/src/coreclr/minipal/Unix/CMakeLists.txt +++ b/src/coreclr/minipal/Unix/CMakeLists.txt @@ -3,13 +3,16 @@ set(SOURCES dn-u16.cpp ) +if (CLR_CMAKE_HOST_ANDROID) + add_library(coreclrminipal_objects + OBJECT + ${SOURCES} + ) +endif() + add_library(coreclrminipal STATIC ${SOURCES} ) target_link_libraries(coreclrminipal PRIVATE minipal) - -if(CLR_CMAKE_HOST_ANDROID) - install_clr(TARGETS coreclrminipal DESTINATIONS . sharedFramework) -endif() diff --git a/src/coreclr/nativeresources/CMakeLists.txt b/src/coreclr/nativeresources/CMakeLists.txt index ac4ae2cc1a5c75..ec1c8ee6eaedf1 100644 --- a/src/coreclr/nativeresources/CMakeLists.txt +++ b/src/coreclr/nativeresources/CMakeLists.txt @@ -1,12 +1,15 @@ project(nativeresourcestring) +if (CLR_CMAKE_HOST_ANDROID) + add_library_clr(nativeresourcestring_objects + OBJECT + resourcestring.cpp + ) +endif() + add_library_clr(nativeresourcestring STATIC resourcestring.cpp ) install_clr (TARGETS nativeresourcestring DESTINATIONS lib) - -if(CLR_CMAKE_HOST_ANDROID) - install_clr(TARGETS nativeresourcestring DESTINATIONS . sharedFramework) -endif() diff --git a/src/coreclr/pal/src/CMakeLists.txt b/src/coreclr/pal/src/CMakeLists.txt index 40d22685abe6bc..ab80872f214dd4 100644 --- a/src/coreclr/pal/src/CMakeLists.txt +++ b/src/coreclr/pal/src/CMakeLists.txt @@ -224,6 +224,16 @@ if(NOT CLR_CMAKE_USE_SYSTEM_LIBUNWIND AND NOT CLR_CMAKE_TARGET_ARCH_WASM) set(LIBUNWIND_OBJECTS $) endif(NOT CLR_CMAKE_USE_SYSTEM_LIBUNWIND AND NOT CLR_CMAKE_TARGET_ARCH_WASM) +if (CLR_CMAKE_HOST_ANDROID) + add_library(coreclrpal_objects + OBJECT + ${SOURCES} + ${ARCH_SOURCES} + ${PLATFORM_SOURCES} + ) +endif() + + add_library(coreclrpal STATIC ${SOURCES} @@ -361,6 +371,3 @@ endif(FEATURE_EVENT_TRACE) # Install the static PAL library for VS install_clr (TARGETS coreclrpal DESTINATIONS lib) -if(CLR_CMAKE_HOST_ANDROID) - install_clr(TARGETS coreclrpal DESTINATIONS . sharedFramework) -endif() diff --git a/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt b/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt index c1b97d6d42eb81..fccdfb00067f9a 100644 --- a/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt +++ b/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt @@ -31,6 +31,13 @@ add_custom_command(OUTPUT ${DUMMY_PROVIDER_SOURCES} COMMAND ${GENERATE_COMMAND} DEPENDS ${EVENT_MANIFEST} ${GENERATE_SCRIPT}) +if (CLR_CMAKE_HOST_ANDROID) + add_library(eventprovider_objects + OBJECT + ${DUMMY_PROVIDER_SOURCES} + ) +endif() + add_library(eventprovider STATIC ${DUMMY_PROVIDER_SOURCES} @@ -40,7 +47,3 @@ set_target_properties(eventprovider PROPERTIES LINKER_LANGUAGE CXX) # Install the static eventprovider library install(TARGETS eventprovider DESTINATION lib) - -if(CLR_CMAKE_HOST_ANDROID) - install_clr(TARGETS eventprovider DESTINATIONS . sharedFramework) -endif() diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props index 08f7cac8936ad1..80932ca681b896 100644 --- a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props +++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props @@ -102,12 +102,6 @@ - - - - - - diff --git a/src/native/minipal/CMakeLists.txt b/src/native/minipal/CMakeLists.txt index 0909b42deed71d..f27ad0d5fea50e 100644 --- a/src/native/minipal/CMakeLists.txt +++ b/src/native/minipal/CMakeLists.txt @@ -46,9 +46,3 @@ add_library(minipal_sanitizer_support OBJECT # Exclude this target from the default build as we may not have sanitzer headers available # in a non-sanitized build. set_target_properties(minipal_sanitizer_support PROPERTIES EXCLUDE_FROM_ALL ON) - - -if(CLR_CMAKE_HOST_ANDROID) - install (TARGETS minipal DESTINATION .) -endif() - diff --git a/src/tasks/AndroidAppBuilder/ApkBuilder.cs b/src/tasks/AndroidAppBuilder/ApkBuilder.cs index c5625e6e7405ed..3ac38348228f1c 100644 --- a/src/tasks/AndroidAppBuilder/ApkBuilder.cs +++ b/src/tasks/AndroidAppBuilder/ApkBuilder.cs @@ -333,6 +333,14 @@ public ApkBuilder(TaskLoggingHelper logger) extraLinkerArgs.AppendLine($" \"{item.ItemSpec}\""); } + if (StaticLinkedRuntime && IsCoreCLR) + { + // Ensure global symbol references in the shared library are resolved to definitions in + // the same shared library. For the static linked runtime specifically, we need this for + // global functions in assembly for the linker to treat relative offsets to them as constant + extraLinkerArgs.AppendLine($" \"-Wl,-Bsymbolic\""); + } + nativeLibraries += assemblerFilesToLink.ToString(); string aotSources = assemblerFiles.ToString(); @@ -476,7 +484,6 @@ public ApkBuilder(TaskLoggingHelper logger) excludedLibs.Add("libmscordaccore.so"); } } - if (!StaticLinkedRuntime) dynamicLibs.AddRange(Directory.GetFiles(AppDir, "*.so").Where(file => !excludedLibs.Contains(Path.GetFileName(file)))); } diff --git a/src/tasks/AndroidAppBuilder/Templates/monodroid-coreclr.c b/src/tasks/AndroidAppBuilder/Templates/monodroid-coreclr.c index e4bf730682efe7..f973a886c9555a 100644 --- a/src/tasks/AndroidAppBuilder/Templates/monodroid-coreclr.c +++ b/src/tasks/AndroidAppBuilder/Templates/monodroid-coreclr.c @@ -157,7 +157,7 @@ free_resources () } if (g_executable_path) { - free (g_executable_path); + free ((void*)g_executable_path); g_executable_path = NULL; } if (g_coreclr_handle) From 8507f650539971a4d5a21e7a9b1bec1d164e6dcb Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 24 Apr 2025 18:07:32 +0200 Subject: [PATCH 06/25] Install libcoreclrpal.a as it is linked using -Wl,--whole-archive --- src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt | 1 - src/coreclr/pal/src/CMakeLists.txt | 16 ++++++---------- .../Microsoft.NETCore.App/Directory.Build.props | 1 + 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index c2b78e06fdb55b..e14054e6316e06 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -196,7 +196,6 @@ if (CLR_CMAKE_HOST_ANDROID) target_link_libraries(coreclr_static PUBLIC log) target_sources(coreclr_static PUBLIC $ - $ $ $ $ diff --git a/src/coreclr/pal/src/CMakeLists.txt b/src/coreclr/pal/src/CMakeLists.txt index ab80872f214dd4..9324878c3da80a 100644 --- a/src/coreclr/pal/src/CMakeLists.txt +++ b/src/coreclr/pal/src/CMakeLists.txt @@ -224,16 +224,6 @@ if(NOT CLR_CMAKE_USE_SYSTEM_LIBUNWIND AND NOT CLR_CMAKE_TARGET_ARCH_WASM) set(LIBUNWIND_OBJECTS $) endif(NOT CLR_CMAKE_USE_SYSTEM_LIBUNWIND AND NOT CLR_CMAKE_TARGET_ARCH_WASM) -if (CLR_CMAKE_HOST_ANDROID) - add_library(coreclrpal_objects - OBJECT - ${SOURCES} - ${ARCH_SOURCES} - ${PLATFORM_SOURCES} - ) -endif() - - add_library(coreclrpal STATIC ${SOURCES} @@ -371,3 +361,9 @@ endif(FEATURE_EVENT_TRACE) # Install the static PAL library for VS install_clr (TARGETS coreclrpal DESTINATIONS lib) + +# Install the static PAL library for the runtime pack +# The libcoreclrpal.a is linked using -Wl,--whole-archive as a separate static library +if(CLR_CMAKE_HOST_ANDROID) + install_clr(TARGETS coreclrpal DESTINATIONS . sharedFramework) +endif() diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props index 80932ca681b896..732adba396beb8 100644 --- a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props +++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props @@ -102,6 +102,7 @@ + From 76b4d6a2295274629b31040063afb4ba3bf14dbd Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 24 Apr 2025 18:39:09 +0200 Subject: [PATCH 07/25] Fix x64 static linking --- src/coreclr/gc/vxsort/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/gc/vxsort/CMakeLists.txt b/src/coreclr/gc/vxsort/CMakeLists.txt index fc55956832e3db..0937cba5942ac0 100644 --- a/src/coreclr/gc/vxsort/CMakeLists.txt +++ b/src/coreclr/gc/vxsort/CMakeLists.txt @@ -26,4 +26,4 @@ set (VXSORT_SOURCES do_vxsort.h ) -add_library(gc_vxsort STATIC ${VXSORT_SOURCES}) +add_library(gc_vxsort OBJECT ${VXSORT_SOURCES}) From 2ef4399761c8d4c5a5281f550c41c0a4a07a453f Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 25 Apr 2025 12:49:25 +0200 Subject: [PATCH 08/25] Add gc_vxsort objects --- src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt | 12 +++++++++--- src/coreclr/gc/CMakeLists.txt | 15 +++++++++++---- src/coreclr/gc/vxsort/CMakeLists.txt | 6 +++++- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index e14054e6316e06..e9459b14284654 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -109,9 +109,15 @@ set(CORECLR_LIBRARIES ) if(CLR_CMAKE_TARGET_ARCH_AMD64) - list(APPEND CORECLR_LIBRARIES - gc_vxsort - ) + if (CLR_CMAKE_HOST_ANDROID) + list(APPEND CORECLR_LIBRARIES + gc_vxsort_objects + ) + else() + list(APPEND CORECLR_LIBRARIES + gc_vxsort + ) + endif(CLR_CMAKE_HOST_ANDROID) endif(CLR_CMAKE_TARGET_ARCH_AMD64) if(CLR_CMAKE_TARGET_WIN32) diff --git a/src/coreclr/gc/CMakeLists.txt b/src/coreclr/gc/CMakeLists.txt index 56956ed25f0496..3fb21b32fb37d0 100644 --- a/src/coreclr/gc/CMakeLists.txt +++ b/src/coreclr/gc/CMakeLists.txt @@ -88,10 +88,17 @@ endif(CLR_CMAKE_HOST_WIN32) set (GC_LINK_LIBRARIES ${GC_LINK_LIBRARIES} gc_pal) if(CLR_CMAKE_TARGET_ARCH_AMD64) - list(APPEND GC_LINK_LIBRARIES - gc_vxsort - minipal - ) + if (CLR_CMAKE_HOST_ANDROID) + list(APPEND GC_LINK_LIBRARIES + gc_vxsort_objects + minipal + ) + else() + list(APPEND GC_LINK_LIBRARIES + gc_vxsort + minipal + ) + endif(CLR_CMAKE_HOST_ANDROID) endif(CLR_CMAKE_TARGET_ARCH_AMD64) diff --git a/src/coreclr/gc/vxsort/CMakeLists.txt b/src/coreclr/gc/vxsort/CMakeLists.txt index 0937cba5942ac0..0fe8ef59fd15de 100644 --- a/src/coreclr/gc/vxsort/CMakeLists.txt +++ b/src/coreclr/gc/vxsort/CMakeLists.txt @@ -26,4 +26,8 @@ set (VXSORT_SOURCES do_vxsort.h ) -add_library(gc_vxsort OBJECT ${VXSORT_SOURCES}) +if (CLR_CMAKE_HOST_ANDROID) + add_library(gc_vxsort_objects OBJECT ${VXSORT_SOURCES}) +endif() + +add_library(gc_vxsort STATIC ${VXSORT_SOURCES}) From 1ff51f64f40cab8eb51acadd73361cb5ecee56eb Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 25 Apr 2025 13:04:03 +0200 Subject: [PATCH 09/25] Add static test project --- src/libraries/tests.proj | 2 ++ ...Android.Device_Emulator.JIT.Static.Test.csproj | 15 +++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 src/tests/FunctionalTests/Android/Device_Emulator/JIT/Android.Device_Emulator.JIT.Static.Test.csproj diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 2e79439b406f75..45bddccb89026a 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -767,6 +767,8 @@ + + + Exe + false + true + $(NetCoreAppCurrent) + Android.Device_Emulator.JIT.Test.dll + 42 + true + + + + + + From 0584ea8b48ec798003b9d438b9bf495dc5edca59 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 25 Apr 2025 15:33:49 +0200 Subject: [PATCH 10/25] Fix MainLibraryFileName in Android.Device_Emulator.JIT.Static.Test project --- .../JIT/Android.Device_Emulator.JIT.Static.Test.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/FunctionalTests/Android/Device_Emulator/JIT/Android.Device_Emulator.JIT.Static.Test.csproj b/src/tests/FunctionalTests/Android/Device_Emulator/JIT/Android.Device_Emulator.JIT.Static.Test.csproj index 30b36bc971bcba..a015ececbcd6a5 100644 --- a/src/tests/FunctionalTests/Android/Device_Emulator/JIT/Android.Device_Emulator.JIT.Static.Test.csproj +++ b/src/tests/FunctionalTests/Android/Device_Emulator/JIT/Android.Device_Emulator.JIT.Static.Test.csproj @@ -4,7 +4,7 @@ false true $(NetCoreAppCurrent) - Android.Device_Emulator.JIT.Test.dll + Android.Device_Emulator.JIT.Static.Test.dll 42 true From d6a28936db73a31a80d779e48468a7e51ab6b6db Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sat, 26 Apr 2025 15:22:49 +0200 Subject: [PATCH 11/25] Update src/coreclr/gc/vxsort/CMakeLists.txt Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com> --- src/coreclr/gc/vxsort/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/coreclr/gc/vxsort/CMakeLists.txt b/src/coreclr/gc/vxsort/CMakeLists.txt index 0fe8ef59fd15de..95038a0a41e9d0 100644 --- a/src/coreclr/gc/vxsort/CMakeLists.txt +++ b/src/coreclr/gc/vxsort/CMakeLists.txt @@ -28,6 +28,6 @@ set (VXSORT_SOURCES if (CLR_CMAKE_HOST_ANDROID) add_library(gc_vxsort_objects OBJECT ${VXSORT_SOURCES}) +else() + add_library(gc_vxsort STATIC ${VXSORT_SOURCES}) endif() - -add_library(gc_vxsort STATIC ${VXSORT_SOURCES}) From 2b3a5ee00451df2c23ac01679ee1b5b738825a17 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sat, 26 Apr 2025 15:22:56 +0200 Subject: [PATCH 12/25] Update src/coreclr/gc/unix/CMakeLists.txt Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com> --- src/coreclr/gc/unix/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/coreclr/gc/unix/CMakeLists.txt b/src/coreclr/gc/unix/CMakeLists.txt index 9156ece102dfd6..0cd5ba9dc34f84 100644 --- a/src/coreclr/gc/unix/CMakeLists.txt +++ b/src/coreclr/gc/unix/CMakeLists.txt @@ -12,6 +12,6 @@ set(GC_PAL_SOURCES if (CLR_CMAKE_HOST_ANDROID) add_library(gc_pal_objects OBJECT ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) +else() + add_library(gc_pal STATIC ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) endif() - -add_library(gc_pal STATIC ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) From db2e108ab4332e24db57c47c91fe03130ffc9419 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sat, 26 Apr 2025 16:19:32 +0200 Subject: [PATCH 13/25] Update CMakeLists.txt to conditionally link gc_pal_objects for Android --- src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt | 7 ++++++- src/coreclr/gc/CMakeLists.txt | 6 +++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index e9459b14284654..5a7719b91f7e09 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -104,7 +104,6 @@ set(CORECLR_LIBRARIES System.Globalization.Native-Static interop coreclrminipal - gc_pal cdac_contract_descriptor ) @@ -191,6 +190,12 @@ if (CLR_CMAKE_TARGET_OSX) find_library(FOUNDATION Foundation REQUIRED) endif() +if (CLR_CMAKE_HOST_ANDROID) + list(APPEND CORECLR_LIBRARIES gc_pal_objects) +else() + list(APPEND CORECLR_LIBRARIES gc_pal) +endif() + target_sources(coreclr PUBLIC $) target_link_libraries(coreclr PUBLIC ${CORECLR_LIBRARIES} ${CLRJIT_STATIC} cee_wks ${FOUNDATION}) target_sources(coreclr_static PUBLIC $) diff --git a/src/coreclr/gc/CMakeLists.txt b/src/coreclr/gc/CMakeLists.txt index 3fb21b32fb37d0..5d0a42392f6a1e 100644 --- a/src/coreclr/gc/CMakeLists.txt +++ b/src/coreclr/gc/CMakeLists.txt @@ -85,7 +85,11 @@ if(CLR_CMAKE_HOST_WIN32) advapi32.lib) endif(CLR_CMAKE_HOST_WIN32) -set (GC_LINK_LIBRARIES ${GC_LINK_LIBRARIES} gc_pal) +if (CLR_CMAKE_HOST_ANDROID) + set (GC_LINK_LIBRARIES ${GC_LINK_LIBRARIES} gc_pal_objects) +else() + set (GC_LINK_LIBRARIES ${GC_LINK_LIBRARIES} gc_pal) +endif() if(CLR_CMAKE_TARGET_ARCH_AMD64) if (CLR_CMAKE_HOST_ANDROID) From 39dea3171b42a458e817187d59cf0a6d25eb490f Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sat, 26 Apr 2025 19:30:45 +0200 Subject: [PATCH 14/25] Test static linking on linux --- src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index 5a7719b91f7e09..a678e23d4d1d29 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -80,6 +80,12 @@ if (CLR_CMAKE_HOST_UNIX) set(LIB_UNWINDER unwinder_wks) endif (CLR_CMAKE_HOST_UNIX) +if (CLR_CMAKE_HOST_ANDROID) + list(LIB_GCPAL gc_pal_objects) +else() + list(LIB_GCPAL gc_pal) +endif() + # IMPORTANT! Please do not rearrange the order of the libraries. The linker on Linux is # order dependent and changing the order can result in undefined symbols in the shared # library. @@ -104,6 +110,7 @@ set(CORECLR_LIBRARIES System.Globalization.Native-Static interop coreclrminipal + ${LIB_GCPAL} cdac_contract_descriptor ) @@ -190,12 +197,6 @@ if (CLR_CMAKE_TARGET_OSX) find_library(FOUNDATION Foundation REQUIRED) endif() -if (CLR_CMAKE_HOST_ANDROID) - list(APPEND CORECLR_LIBRARIES gc_pal_objects) -else() - list(APPEND CORECLR_LIBRARIES gc_pal) -endif() - target_sources(coreclr PUBLIC $) target_link_libraries(coreclr PUBLIC ${CORECLR_LIBRARIES} ${CLRJIT_STATIC} cee_wks ${FOUNDATION}) target_sources(coreclr_static PUBLIC $) From de2506ea0b2b8a9417fa7689b1c45aab79a31579 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sat, 26 Apr 2025 23:35:43 +0200 Subject: [PATCH 15/25] Fix typo --- src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index a678e23d4d1d29..d2871477265319 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -81,9 +81,9 @@ if (CLR_CMAKE_HOST_UNIX) endif (CLR_CMAKE_HOST_UNIX) if (CLR_CMAKE_HOST_ANDROID) - list(LIB_GCPAL gc_pal_objects) + set(LIB_GCPAL gc_pal_objects) else() - list(LIB_GCPAL gc_pal) + set(LIB_GCPAL gc_pal) endif() # IMPORTANT! Please do not rearrange the order of the libraries. The linker on Linux is From 1a12a79dd55d3c4fc6164943430a108bef00a638 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Sun, 27 Apr 2025 11:42:51 +0200 Subject: [PATCH 16/25] Revert gc_pal changes to test the build --- src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt | 8 +------- src/coreclr/gc/CMakeLists.txt | 6 +----- src/coreclr/gc/unix/CMakeLists.txt | 4 ++-- 3 files changed, 4 insertions(+), 14 deletions(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index d2871477265319..e9459b14284654 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -80,12 +80,6 @@ if (CLR_CMAKE_HOST_UNIX) set(LIB_UNWINDER unwinder_wks) endif (CLR_CMAKE_HOST_UNIX) -if (CLR_CMAKE_HOST_ANDROID) - set(LIB_GCPAL gc_pal_objects) -else() - set(LIB_GCPAL gc_pal) -endif() - # IMPORTANT! Please do not rearrange the order of the libraries. The linker on Linux is # order dependent and changing the order can result in undefined symbols in the shared # library. @@ -110,7 +104,7 @@ set(CORECLR_LIBRARIES System.Globalization.Native-Static interop coreclrminipal - ${LIB_GCPAL} + gc_pal cdac_contract_descriptor ) diff --git a/src/coreclr/gc/CMakeLists.txt b/src/coreclr/gc/CMakeLists.txt index 5d0a42392f6a1e..3fb21b32fb37d0 100644 --- a/src/coreclr/gc/CMakeLists.txt +++ b/src/coreclr/gc/CMakeLists.txt @@ -85,11 +85,7 @@ if(CLR_CMAKE_HOST_WIN32) advapi32.lib) endif(CLR_CMAKE_HOST_WIN32) -if (CLR_CMAKE_HOST_ANDROID) - set (GC_LINK_LIBRARIES ${GC_LINK_LIBRARIES} gc_pal_objects) -else() - set (GC_LINK_LIBRARIES ${GC_LINK_LIBRARIES} gc_pal) -endif() +set (GC_LINK_LIBRARIES ${GC_LINK_LIBRARIES} gc_pal) if(CLR_CMAKE_TARGET_ARCH_AMD64) if (CLR_CMAKE_HOST_ANDROID) diff --git a/src/coreclr/gc/unix/CMakeLists.txt b/src/coreclr/gc/unix/CMakeLists.txt index 0cd5ba9dc34f84..9156ece102dfd6 100644 --- a/src/coreclr/gc/unix/CMakeLists.txt +++ b/src/coreclr/gc/unix/CMakeLists.txt @@ -12,6 +12,6 @@ set(GC_PAL_SOURCES if (CLR_CMAKE_HOST_ANDROID) add_library(gc_pal_objects OBJECT ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) -else() - add_library(gc_pal STATIC ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) endif() + +add_library(gc_pal STATIC ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) From 7f282b650d2c0e63f6f58fb8a761085d69894ebb Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 28 Apr 2025 11:09:57 +0200 Subject: [PATCH 17/25] Revert changes --- src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt | 8 +++++++- src/coreclr/gc/CMakeLists.txt | 6 +++++- src/coreclr/gc/unix/CMakeLists.txt | 4 ++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index e9459b14284654..d2871477265319 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -80,6 +80,12 @@ if (CLR_CMAKE_HOST_UNIX) set(LIB_UNWINDER unwinder_wks) endif (CLR_CMAKE_HOST_UNIX) +if (CLR_CMAKE_HOST_ANDROID) + set(LIB_GCPAL gc_pal_objects) +else() + set(LIB_GCPAL gc_pal) +endif() + # IMPORTANT! Please do not rearrange the order of the libraries. The linker on Linux is # order dependent and changing the order can result in undefined symbols in the shared # library. @@ -104,7 +110,7 @@ set(CORECLR_LIBRARIES System.Globalization.Native-Static interop coreclrminipal - gc_pal + ${LIB_GCPAL} cdac_contract_descriptor ) diff --git a/src/coreclr/gc/CMakeLists.txt b/src/coreclr/gc/CMakeLists.txt index 3fb21b32fb37d0..5d0a42392f6a1e 100644 --- a/src/coreclr/gc/CMakeLists.txt +++ b/src/coreclr/gc/CMakeLists.txt @@ -85,7 +85,11 @@ if(CLR_CMAKE_HOST_WIN32) advapi32.lib) endif(CLR_CMAKE_HOST_WIN32) -set (GC_LINK_LIBRARIES ${GC_LINK_LIBRARIES} gc_pal) +if (CLR_CMAKE_HOST_ANDROID) + set (GC_LINK_LIBRARIES ${GC_LINK_LIBRARIES} gc_pal_objects) +else() + set (GC_LINK_LIBRARIES ${GC_LINK_LIBRARIES} gc_pal) +endif() if(CLR_CMAKE_TARGET_ARCH_AMD64) if (CLR_CMAKE_HOST_ANDROID) diff --git a/src/coreclr/gc/unix/CMakeLists.txt b/src/coreclr/gc/unix/CMakeLists.txt index 9156ece102dfd6..0cd5ba9dc34f84 100644 --- a/src/coreclr/gc/unix/CMakeLists.txt +++ b/src/coreclr/gc/unix/CMakeLists.txt @@ -12,6 +12,6 @@ set(GC_PAL_SOURCES if (CLR_CMAKE_HOST_ANDROID) add_library(gc_pal_objects OBJECT ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) +else() + add_library(gc_pal STATIC ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) endif() - -add_library(gc_pal STATIC ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) From 21b454f58b6e7e33c0f3f4354bfbed962e9907b4 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 28 Apr 2025 11:31:15 +0200 Subject: [PATCH 18/25] Add gcinfo library --- src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index 95833ba1801c7a..d2871477265319 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -104,6 +104,7 @@ set(CORECLR_LIBRARIES ceefgen comfloat_wks corguids + gcinfo utilcode v3binder System.Globalization.Native-Static From d17fe7a9e5b176c1c21b686997061dee6ecb2bfe Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Mon, 28 Apr 2025 12:04:57 +0200 Subject: [PATCH 19/25] Conditionally add gcinfo --- src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index d2871477265319..7b136c3db50670 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -104,7 +104,6 @@ set(CORECLR_LIBRARIES ceefgen comfloat_wks corguids - gcinfo utilcode v3binder System.Globalization.Native-Static @@ -126,6 +125,12 @@ if(CLR_CMAKE_TARGET_ARCH_AMD64) endif(CLR_CMAKE_HOST_ANDROID) endif(CLR_CMAKE_TARGET_ARCH_AMD64) +if (CLR_CMAKE_HOST_ANDROID) + list(APPEND CORECLR_LIBRARIES + gcinfo + ) +endif(CLR_CMAKE_HOST_ANDROID) + if(CLR_CMAKE_TARGET_WIN32) list(APPEND CORECLR_LIBRARIES ${STATIC_MT_CRT_LIB} From d53aefcb253c7073395e361ba791e2c2e4cd3c98 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Tue, 29 Apr 2025 12:38:48 +0200 Subject: [PATCH 20/25] FIx formatting --- src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt | 4 ++-- src/coreclr/gc/unix/CMakeLists.txt | 2 +- src/coreclr/gc/vxsort/CMakeLists.txt | 2 +- src/coreclr/minipal/Unix/CMakeLists.txt | 2 +- src/coreclr/nativeresources/CMakeLists.txt | 2 +- src/coreclr/pal/src/CMakeLists.txt | 7 ++++--- .../pal/src/eventprovider/dummyprovider/CMakeLists.txt | 2 +- src/mono/msbuild/android/build/AndroidBuild.props | 1 + 8 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index 7b136c3db50670..401e1b2ccd482c 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -84,7 +84,7 @@ if (CLR_CMAKE_HOST_ANDROID) set(LIB_GCPAL gc_pal_objects) else() set(LIB_GCPAL gc_pal) -endif() +endif(CLR_CMAKE_HOST_ANDROID) # IMPORTANT! Please do not rearrange the order of the libraries. The linker on Linux is # order dependent and changing the order can result in undefined symbols in the shared @@ -256,7 +256,7 @@ endif(CLR_CMAKE_TARGET_WIN32) install_clr(TARGETS coreclr DESTINATIONS . sharedFramework COMPONENT runtime) if(CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_ANDROID) install_clr(TARGETS coreclr_static DESTINATIONS . sharedFramework COMPONENT runtime) -endif() +endif(CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_ANDROID) # Enable profile guided optimization add_pgo(coreclr) diff --git a/src/coreclr/gc/unix/CMakeLists.txt b/src/coreclr/gc/unix/CMakeLists.txt index 0cd5ba9dc34f84..5a8e952ec55b08 100644 --- a/src/coreclr/gc/unix/CMakeLists.txt +++ b/src/coreclr/gc/unix/CMakeLists.txt @@ -14,4 +14,4 @@ if (CLR_CMAKE_HOST_ANDROID) add_library(gc_pal_objects OBJECT ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) else() add_library(gc_pal STATIC ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) -endif() +endif(CLR_CMAKE_HOST_ANDROID) diff --git a/src/coreclr/gc/vxsort/CMakeLists.txt b/src/coreclr/gc/vxsort/CMakeLists.txt index 95038a0a41e9d0..5b9a0e678abe11 100644 --- a/src/coreclr/gc/vxsort/CMakeLists.txt +++ b/src/coreclr/gc/vxsort/CMakeLists.txt @@ -30,4 +30,4 @@ if (CLR_CMAKE_HOST_ANDROID) add_library(gc_vxsort_objects OBJECT ${VXSORT_SOURCES}) else() add_library(gc_vxsort STATIC ${VXSORT_SOURCES}) -endif() +endif(CLR_CMAKE_HOST_ANDROID) diff --git a/src/coreclr/minipal/Unix/CMakeLists.txt b/src/coreclr/minipal/Unix/CMakeLists.txt index 22eb3afe60520c..369e7c271ad82c 100644 --- a/src/coreclr/minipal/Unix/CMakeLists.txt +++ b/src/coreclr/minipal/Unix/CMakeLists.txt @@ -8,7 +8,7 @@ if (CLR_CMAKE_HOST_ANDROID) OBJECT ${SOURCES} ) -endif() +endif(CLR_CMAKE_HOST_ANDROID) add_library(coreclrminipal STATIC diff --git a/src/coreclr/nativeresources/CMakeLists.txt b/src/coreclr/nativeresources/CMakeLists.txt index ec1c8ee6eaedf1..a8f676170f9a6e 100644 --- a/src/coreclr/nativeresources/CMakeLists.txt +++ b/src/coreclr/nativeresources/CMakeLists.txt @@ -5,7 +5,7 @@ if (CLR_CMAKE_HOST_ANDROID) OBJECT resourcestring.cpp ) -endif() +endif(CLR_CMAKE_HOST_ANDROID) add_library_clr(nativeresourcestring STATIC diff --git a/src/coreclr/pal/src/CMakeLists.txt b/src/coreclr/pal/src/CMakeLists.txt index 9324878c3da80a..34b99faed5aaa7 100644 --- a/src/coreclr/pal/src/CMakeLists.txt +++ b/src/coreclr/pal/src/CMakeLists.txt @@ -362,8 +362,9 @@ endif(FEATURE_EVENT_TRACE) # Install the static PAL library for VS install_clr (TARGETS coreclrpal DESTINATIONS lib) -# Install the static PAL library for the runtime pack -# The libcoreclrpal.a is linked using -Wl,--whole-archive as a separate static library +# Install the static PAL library to the runtime pack +# The coreclrpal.a is linked using -Wl,--whole-archive as a separate static library +# to avoid forcing a whole‐archive on coreclr_static.a if(CLR_CMAKE_HOST_ANDROID) install_clr(TARGETS coreclrpal DESTINATIONS . sharedFramework) -endif() +endif(CLR_CMAKE_HOST_ANDROID) diff --git a/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt b/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt index fccdfb00067f9a..097a907462fd49 100644 --- a/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt +++ b/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt @@ -36,7 +36,7 @@ if (CLR_CMAKE_HOST_ANDROID) OBJECT ${DUMMY_PROVIDER_SOURCES} ) -endif() +endif(CLR_CMAKE_HOST_ANDROID) add_library(eventprovider STATIC diff --git a/src/mono/msbuild/android/build/AndroidBuild.props b/src/mono/msbuild/android/build/AndroidBuild.props index 19691ee6800288..7b88d5a39943ac 100644 --- a/src/mono/msbuild/android/build/AndroidBuild.props +++ b/src/mono/msbuild/android/build/AndroidBuild.props @@ -10,6 +10,7 @@ <_HostOS Condition="$([MSBuild]::IsOSPlatform('Windows'))">windows <_HostOS Condition="$([MSBuild]::IsOSPlatform('OSX'))">osx <_HostOS Condition="'$(_HostOS)' == ''">linux + <_IsLibraryMode Condition="'$(UseMonoRuntime)' == 'true' and '$(UseNativeAOTRuntime)' != 'true' and '$(NativeLib)' != ''">true <_ReadRuntimeComponentsManifestTargetName Condition="'$(UseMonoRuntime)' == 'true' and '$(UseNativeAOTRuntime)' != 'true'">_MonoReadAvailableComponentsManifest From cd867aeec0e6352fe617fa804b91be6842003f17 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 30 Apr 2025 12:46:02 +0200 Subject: [PATCH 21/25] Switch from static to object --- .../dlls/mscoree/coreclr/CMakeLists.txt | 26 +++++-------------- src/coreclr/gc/CMakeLists.txt | 21 ++++----------- src/coreclr/gc/unix/CMakeLists.txt | 6 +---- src/coreclr/gc/vxsort/CMakeLists.txt | 6 +---- 4 files changed, 13 insertions(+), 46 deletions(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index 401e1b2ccd482c..63f901901e6144 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -80,12 +80,6 @@ if (CLR_CMAKE_HOST_UNIX) set(LIB_UNWINDER unwinder_wks) endif (CLR_CMAKE_HOST_UNIX) -if (CLR_CMAKE_HOST_ANDROID) - set(LIB_GCPAL gc_pal_objects) -else() - set(LIB_GCPAL gc_pal) -endif(CLR_CMAKE_HOST_ANDROID) - # IMPORTANT! Please do not rearrange the order of the libraries. The linker on Linux is # order dependent and changing the order can result in undefined symbols in the shared # library. @@ -109,26 +103,19 @@ set(CORECLR_LIBRARIES System.Globalization.Native-Static interop coreclrminipal - ${LIB_GCPAL} + gc_pal cdac_contract_descriptor ) -if(CLR_CMAKE_TARGET_ARCH_AMD64) - if (CLR_CMAKE_HOST_ANDROID) - list(APPEND CORECLR_LIBRARIES - gc_vxsort_objects - ) - else() - list(APPEND CORECLR_LIBRARIES - gc_vxsort - ) - endif(CLR_CMAKE_HOST_ANDROID) -endif(CLR_CMAKE_TARGET_ARCH_AMD64) - if (CLR_CMAKE_HOST_ANDROID) list(APPEND CORECLR_LIBRARIES gcinfo ) + if(CLR_CMAKE_TARGET_ARCH_AMD64) + list(APPEND CORECLR_LIBRARIES + gc_vxsort + ) + endif(CLR_CMAKE_TARGET_ARCH_AMD64) endif(CLR_CMAKE_HOST_ANDROID) if(CLR_CMAKE_TARGET_WIN32) @@ -214,7 +201,6 @@ if (CLR_CMAKE_HOST_ANDROID) target_sources(coreclr_static PUBLIC $ $ - $ $ $ $ diff --git a/src/coreclr/gc/CMakeLists.txt b/src/coreclr/gc/CMakeLists.txt index 5d0a42392f6a1e..56956ed25f0496 100644 --- a/src/coreclr/gc/CMakeLists.txt +++ b/src/coreclr/gc/CMakeLists.txt @@ -85,24 +85,13 @@ if(CLR_CMAKE_HOST_WIN32) advapi32.lib) endif(CLR_CMAKE_HOST_WIN32) -if (CLR_CMAKE_HOST_ANDROID) - set (GC_LINK_LIBRARIES ${GC_LINK_LIBRARIES} gc_pal_objects) -else() - set (GC_LINK_LIBRARIES ${GC_LINK_LIBRARIES} gc_pal) -endif() +set (GC_LINK_LIBRARIES ${GC_LINK_LIBRARIES} gc_pal) if(CLR_CMAKE_TARGET_ARCH_AMD64) - if (CLR_CMAKE_HOST_ANDROID) - list(APPEND GC_LINK_LIBRARIES - gc_vxsort_objects - minipal - ) - else() - list(APPEND GC_LINK_LIBRARIES - gc_vxsort - minipal - ) - endif(CLR_CMAKE_HOST_ANDROID) + list(APPEND GC_LINK_LIBRARIES + gc_vxsort + minipal + ) endif(CLR_CMAKE_TARGET_ARCH_AMD64) diff --git a/src/coreclr/gc/unix/CMakeLists.txt b/src/coreclr/gc/unix/CMakeLists.txt index 5a8e952ec55b08..5ae2de786634cc 100644 --- a/src/coreclr/gc/unix/CMakeLists.txt +++ b/src/coreclr/gc/unix/CMakeLists.txt @@ -10,8 +10,4 @@ set(GC_PAL_SOURCES events.cpp cgroup.cpp) -if (CLR_CMAKE_HOST_ANDROID) - add_library(gc_pal_objects OBJECT ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) -else() - add_library(gc_pal STATIC ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) -endif(CLR_CMAKE_HOST_ANDROID) +add_library(gc_pal OBJECT ${GC_PAL_SOURCES} ${VERSION_FILE_PATH}) diff --git a/src/coreclr/gc/vxsort/CMakeLists.txt b/src/coreclr/gc/vxsort/CMakeLists.txt index 5b9a0e678abe11..0937cba5942ac0 100644 --- a/src/coreclr/gc/vxsort/CMakeLists.txt +++ b/src/coreclr/gc/vxsort/CMakeLists.txt @@ -26,8 +26,4 @@ set (VXSORT_SOURCES do_vxsort.h ) -if (CLR_CMAKE_HOST_ANDROID) - add_library(gc_vxsort_objects OBJECT ${VXSORT_SOURCES}) -else() - add_library(gc_vxsort STATIC ${VXSORT_SOURCES}) -endif(CLR_CMAKE_HOST_ANDROID) +add_library(gc_vxsort OBJECT ${VXSORT_SOURCES}) From e9d5b20f3bedf098fe73f06e7f6cda8e619b58ad Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 30 Apr 2025 13:46:10 +0200 Subject: [PATCH 22/25] Fix coreclr build --- src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index 883dab5308f9f9..159a03a60a0e4a 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -107,15 +107,16 @@ set(CORECLR_LIBRARIES cdac_contract_descriptor ) +if(CLR_CMAKE_TARGET_ARCH_AMD64) + list(APPEND CORECLR_LIBRARIES + gc_vxsort + ) +endif(CLR_CMAKE_TARGET_ARCH_AMD64) + if (CLR_CMAKE_HOST_ANDROID) list(APPEND CORECLR_LIBRARIES gcinfo ) - if(CLR_CMAKE_TARGET_ARCH_AMD64) - list(APPEND CORECLR_LIBRARIES - gc_vxsort - ) - endif(CLR_CMAKE_TARGET_ARCH_AMD64) endif(CLR_CMAKE_HOST_ANDROID) if(CLR_CMAKE_TARGET_WIN32) @@ -242,7 +243,7 @@ endif(CLR_CMAKE_TARGET_WIN32) install_clr(TARGETS coreclr DESTINATIONS . sharedFramework COMPONENT runtime) if(CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS OR CLR_CMAKE_HOST_ANDROID) install_clr(TARGETS coreclr_static DESTINATIONS . sharedFramework COMPONENT runtime) -endif(CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_ANDROID) +endif(CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS OR CLR_CMAKE_HOST_ANDROID) # Enable profile guided optimization add_pgo(coreclr) From 7b4efbf3e1238022b70d0fe7b38ff8ed06fd9119 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 30 Apr 2025 20:00:49 +0200 Subject: [PATCH 23/25] Remove unnecessary static library installation for Android --- .../dlls/mscoree/coreclr/CMakeLists.txt | 21 +++++++++---------- src/coreclr/pal/src/CMakeLists.txt | 7 ------- .../Directory.Build.props | 1 - 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index 159a03a60a0e4a..d907efc39de9fe 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -190,21 +190,20 @@ if (CLR_CMAKE_TARGET_OSX) find_library(FOUNDATION Foundation REQUIRED) endif() -target_sources(coreclr PUBLIC $) -target_link_libraries(coreclr PUBLIC ${CORECLR_LIBRARIES} ${CLRJIT_STATIC} cee_wks ${FOUNDATION}) -target_sources(coreclr_static PUBLIC $) -target_link_libraries(coreclr_static PUBLIC ${CORECLR_LIBRARIES} clrjit_static cee_wks_mergeable ${FOUNDATION}) +target_link_libraries(coreclr PUBLIC ${CORECLR_LIBRARIES} ${CLRJIT_STATIC} cee_wks_core cee_wks ${FOUNDATION}) +target_link_libraries(coreclr_static PUBLIC ${CORECLR_LIBRARIES} cee_wks_core clrjit_static cee_wks_mergeable ${FOUNDATION}) target_compile_definitions(coreclr_static PUBLIC CORECLR_EMBEDDED) if (CLR_CMAKE_HOST_ANDROID) target_link_libraries(coreclr PUBLIC log) - target_link_libraries(coreclr_static PUBLIC log) - target_sources(coreclr_static PUBLIC - $ - $ - $ - $ - $ + target_link_libraries(coreclr_static + PUBLIC + log + coreclrminipal_objects + eventprovider_objects + libunwind + minipal_objects + nativeresourcestring_objects ) endif() diff --git a/src/coreclr/pal/src/CMakeLists.txt b/src/coreclr/pal/src/CMakeLists.txt index 34b99faed5aaa7..c6c498aa66d8bd 100644 --- a/src/coreclr/pal/src/CMakeLists.txt +++ b/src/coreclr/pal/src/CMakeLists.txt @@ -361,10 +361,3 @@ endif(FEATURE_EVENT_TRACE) # Install the static PAL library for VS install_clr (TARGETS coreclrpal DESTINATIONS lib) - -# Install the static PAL library to the runtime pack -# The coreclrpal.a is linked using -Wl,--whole-archive as a separate static library -# to avoid forcing a whole‐archive on coreclr_static.a -if(CLR_CMAKE_HOST_ANDROID) - install_clr(TARGETS coreclrpal DESTINATIONS . sharedFramework) -endif(CLR_CMAKE_HOST_ANDROID) diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props index 732adba396beb8..80932ca681b896 100644 --- a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props +++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props @@ -102,7 +102,6 @@ - From ea53d067bb8feb5684f254c91784feb0941da146 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 1 May 2025 22:26:09 +0200 Subject: [PATCH 24/25] Update static libraries to be based on the object libraries --- src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt | 9 ++------- src/coreclr/minipal/Unix/CMakeLists.txt | 12 +++++------- src/coreclr/nativeresources/CMakeLists.txt | 12 +++++------- .../src/eventprovider/dummyprovider/CMakeLists.txt | 12 +++++------- 4 files changed, 17 insertions(+), 28 deletions(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index d907efc39de9fe..1035df74c093ee 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -113,12 +113,6 @@ if(CLR_CMAKE_TARGET_ARCH_AMD64) ) endif(CLR_CMAKE_TARGET_ARCH_AMD64) -if (CLR_CMAKE_HOST_ANDROID) - list(APPEND CORECLR_LIBRARIES - gcinfo - ) -endif(CLR_CMAKE_HOST_ANDROID) - if(CLR_CMAKE_TARGET_WIN32) list(APPEND CORECLR_LIBRARIES ${STATIC_MT_CRT_LIB} @@ -198,10 +192,11 @@ if (CLR_CMAKE_HOST_ANDROID) target_link_libraries(coreclr PUBLIC log) target_link_libraries(coreclr_static PUBLIC - log coreclrminipal_objects eventprovider_objects + gcinfo libunwind + log minipal_objects nativeresourcestring_objects ) diff --git a/src/coreclr/minipal/Unix/CMakeLists.txt b/src/coreclr/minipal/Unix/CMakeLists.txt index 369e7c271ad82c..baa9c41161813a 100644 --- a/src/coreclr/minipal/Unix/CMakeLists.txt +++ b/src/coreclr/minipal/Unix/CMakeLists.txt @@ -3,16 +3,14 @@ set(SOURCES dn-u16.cpp ) -if (CLR_CMAKE_HOST_ANDROID) - add_library(coreclrminipal_objects - OBJECT - ${SOURCES} - ) -endif(CLR_CMAKE_HOST_ANDROID) +add_library(coreclrminipal_objects + OBJECT + ${SOURCES} +) add_library(coreclrminipal STATIC - ${SOURCES} + $ ) target_link_libraries(coreclrminipal PRIVATE minipal) diff --git a/src/coreclr/nativeresources/CMakeLists.txt b/src/coreclr/nativeresources/CMakeLists.txt index a8f676170f9a6e..7dba113d91ea3b 100644 --- a/src/coreclr/nativeresources/CMakeLists.txt +++ b/src/coreclr/nativeresources/CMakeLists.txt @@ -1,15 +1,13 @@ project(nativeresourcestring) -if (CLR_CMAKE_HOST_ANDROID) - add_library_clr(nativeresourcestring_objects - OBJECT - resourcestring.cpp - ) -endif(CLR_CMAKE_HOST_ANDROID) +add_library_clr(nativeresourcestring_objects + OBJECT + resourcestring.cpp +) add_library_clr(nativeresourcestring STATIC - resourcestring.cpp + $ ) install_clr (TARGETS nativeresourcestring DESTINATIONS lib) diff --git a/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt b/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt index 097a907462fd49..9f9c0f6b91c378 100644 --- a/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt +++ b/src/coreclr/pal/src/eventprovider/dummyprovider/CMakeLists.txt @@ -31,16 +31,14 @@ add_custom_command(OUTPUT ${DUMMY_PROVIDER_SOURCES} COMMAND ${GENERATE_COMMAND} DEPENDS ${EVENT_MANIFEST} ${GENERATE_SCRIPT}) -if (CLR_CMAKE_HOST_ANDROID) - add_library(eventprovider_objects - OBJECT - ${DUMMY_PROVIDER_SOURCES} - ) -endif(CLR_CMAKE_HOST_ANDROID) +add_library(eventprovider_objects + OBJECT + ${DUMMY_PROVIDER_SOURCES} +) add_library(eventprovider STATIC - ${DUMMY_PROVIDER_SOURCES} + $ ) set_target_properties(eventprovider PROPERTIES LINKER_LANGUAGE CXX) From 5e6cc7c042fee3618b0090f096bba8449265ebdb Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 2 May 2025 11:23:18 +0200 Subject: [PATCH 25/25] Add coreclrpal_objects --- src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt | 1 + src/coreclr/pal/src/CMakeLists.txt | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index 888119b38227cf..cada329416163e 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -185,6 +185,7 @@ if (CLR_CMAKE_HOST_ANDROID) target_link_libraries(coreclr_static PUBLIC coreclrminipal_objects + coreclrpal_objects eventprovider_objects gcinfo libunwind diff --git a/src/coreclr/pal/src/CMakeLists.txt b/src/coreclr/pal/src/CMakeLists.txt index c6c498aa66d8bd..34461f79c9ae5c 100644 --- a/src/coreclr/pal/src/CMakeLists.txt +++ b/src/coreclr/pal/src/CMakeLists.txt @@ -224,11 +224,15 @@ if(NOT CLR_CMAKE_USE_SYSTEM_LIBUNWIND AND NOT CLR_CMAKE_TARGET_ARCH_WASM) set(LIBUNWIND_OBJECTS $) endif(NOT CLR_CMAKE_USE_SYSTEM_LIBUNWIND AND NOT CLR_CMAKE_TARGET_ARCH_WASM) -add_library(coreclrpal - STATIC +add_library(coreclrpal_objects + OBJECT ${SOURCES} ${ARCH_SOURCES} ${PLATFORM_SOURCES} +) + +add_library(coreclrpal STATIC + $ ${LIBUNWIND_OBJECTS} )