Skip to content

Commit 7c25dd9

Browse files
authored
[Android] Include static native libraries in CoreCLR Android runtime pack (#115610)
* Add installation targets for native libraries in cmake files * improve filtering logic in ApkBuilder
1 parent 2fbc9e9 commit 7c25dd9

File tree

5 files changed

+30
-13
lines changed

5 files changed

+30
-13
lines changed

src/native/libs/System.Globalization.Native/CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ if (CLR_CMAKE_TARGET_APPLE)
127127
endif()
128128

129129
# time zone names are filtered out of icu data for the browser and associated functionality is disabled
130-
if (NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS)
130+
if (NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS)
131131
set(NATIVEGLOBALIZATION_SOURCES ${NATIVEGLOBALIZATION_SOURCES} pal_timeZoneInfo.c)
132132
endif()
133133

@@ -192,6 +192,9 @@ if(CLR_CMAKE_TARGET_UNIX OR CLR_CMAKE_TARGET_WASI)
192192
endif()
193193

194194
install (TARGETS System.Globalization.Native-Static DESTINATION ${STATIC_LIB_DESTINATION} COMPONENT libs)
195+
if(CLR_CMAKE_HOST_ANDROID)
196+
install (TARGETS System.Globalization.Native-Static DESTINATION sharedFramework COMPONENT runtime)
197+
endif()
195198

196199
if(NOT CLR_CMAKE_TARGET_WIN32 AND NOT CLR_CMAKE_TARGET_APPLE AND NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_LINUX_MUSL AND NOT CLR_CMAKE_TARGET_HAIKU)
197200
if (GEN_SHARED_LIB)

src/native/libs/System.IO.Compression.Native/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,3 +210,7 @@ else ()
210210
endif ()
211211

212212
install (TARGETS System.IO.Compression.Native-Static DESTINATION ${STATIC_LIB_DESTINATION} COMPONENT libs)
213+
214+
if(CLR_CMAKE_HOST_ANDROID)
215+
install (TARGETS System.IO.Compression.Native-Static DESTINATION sharedFramework COMPONENT runtime)
216+
endif()

src/native/libs/System.Native/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,7 @@ add_library(System.Native-Static
138138
set_target_properties(System.Native-Static PROPERTIES OUTPUT_NAME System.Native CLEAN_DIRECT_OUTPUT 1)
139139

140140
install (TARGETS System.Native-Static DESTINATION ${STATIC_LIB_DESTINATION} COMPONENT libs)
141+
142+
if(CLR_CMAKE_HOST_ANDROID)
143+
install (TARGETS System.Native-Static DESTINATION sharedFramework COMPONENT runtime)
144+
endif()

src/native/libs/System.Security.Cryptography.Native.Android/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,7 @@ if (GEN_SHARED_LIB)
5757
endif()
5858

5959
install (TARGETS System.Security.Cryptography.Native.Android-Static DESTINATION ${STATIC_LIB_DESTINATION} COMPONENT libs)
60+
61+
if(CLR_CMAKE_HOST_ANDROID)
62+
install (TARGETS System.Security.Cryptography.Native.Android-Static DESTINATION sharedFramework COMPONENT runtime)
63+
endif()

src/tasks/AndroidAppBuilder/ApkBuilder.cs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -310,21 +310,23 @@ public ApkBuilder(TaskLoggingHelper logger)
310310
// due to circular dependency.
311311
nativeLibraries += $" {runtimeLib}{Environment.NewLine}";
312312
}
313-
}
314313

315-
if (StaticLinkedRuntime && IsCoreCLR)
316-
{
317-
string[] staticLibs = Directory.GetFiles(AppDir, "*.a")
318-
.Where(lib => !Path.GetFileName(lib).Equals("libcoreclr_static.a", StringComparison.OrdinalIgnoreCase))
319-
.ToArray();
320-
321-
foreach (string lib in staticLibs)
314+
if (StaticLinkedRuntime && IsCoreCLR)
322315
{
323-
nativeLibraries += $" {lib}{Environment.NewLine}";
324-
}
316+
string[] staticMonoStubs = Directory.GetFiles(AppDir, "libmono*.a");
317+
string[] staticLibs = Directory.GetFiles(AppDir, "*.a")
318+
.Where(lib => !Path.GetFileName(lib).Equals("libcoreclr_static.a", StringComparison.OrdinalIgnoreCase) &&
319+
!staticMonoStubs.Contains(lib, StringComparer.OrdinalIgnoreCase))
320+
.ToArray();
325321

326-
nativeLibraries += $" libc++abi.a{Environment.NewLine}";
327-
nativeLibraries += $" libc++_static.a{Environment.NewLine}";
322+
foreach (string lib in staticLibs)
323+
{
324+
nativeLibraries += $" {lib}{Environment.NewLine}";
325+
}
326+
327+
nativeLibraries += $" libc++abi.a{Environment.NewLine}";
328+
nativeLibraries += $" libc++_static.a{Environment.NewLine}";
329+
}
328330
}
329331

330332
StringBuilder extraLinkerArgs = new StringBuilder();

0 commit comments

Comments
 (0)