Skip to content

Commit 1117b0c

Browse files
kateinoigakukunrunner
authored andcommitted
[wasm][build] Install ICU static libraries under swift_static
1 parent 7268e2a commit 1117b0c

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

stdlib/public/runtime/CMakeLists.txt

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,10 +244,31 @@ foreach(sdk ${SWIFT_SDKS})
244244
add_dependencies(stdlib swift-stdlib-${arch_suffix} swiftImageRegistration-${arch_suffix})
245245
endif()
246246

247+
string(TOLOWER "${sdk}" lowercase_sdk)
247248
# Generate the static-stdlib-args.lnk file used by -static-stdlib option for
248249
# 'GenericUnix' (eg linux)
249250
if(${SWIFT_SDK_${sdk}_OBJECT_FORMAT} STREQUAL ELF)
250251
string(TOLOWER "${sdk}" lowercase_sdk)
252+
if(SWIFT_${SWIFT_HOST_VARIANT_SDK}_${SWIFT_HOST_VARIANT_ARCH}_ICU_STATICLIB)
253+
set(libicu_i18n_a -licui18nswift)
254+
set(libicu_uc_a -licuucswift)
255+
set(libicu_data_a -licudataswift)
256+
else()
257+
find_package(ICU REQUIRED COMPONENTS uc i18n)
258+
get_filename_component(ICU_UC_LIBDIR "${ICU_UC_LIBRARIES}" DIRECTORY)
259+
get_filename_component(ICU_I18N_LIBDIR "${ICU_I18N_LIBRARIES}" DIRECTORY)
260+
261+
set(libicu_i18n_a -licui18n)
262+
set(libicu_uc_a -licuuc)
263+
set(libicu_data_a)
264+
if(EXISTS ${ICU_I18N_LIBDIR}/libicui18n.a AND
265+
EXISTS ${ICU_UC_LIBDIR}/libicuuc.a AND
266+
EXISTS ${ICU_UC_LIBDIR}/libicudata.a)
267+
set(libicu_i18n_a ${ICU_I18N_LIBDIR}/libicui18n.a)
268+
set(libicu_uc_a ${ICU_UC_LIBDIR}/libicuuc.a)
269+
set(libicu_data_a ${ICU_UC_LIBDIR}/libicudata.a)
270+
endif()
271+
endif()
251272
set(libpthread -lpthread)
252273
set(concurrency_libs)
253274
set(android_libraries)
@@ -274,6 +295,28 @@ ${concurrency_libs}
274295
swift_install_in_component(FILES "${SWIFTSTATICLIB_DIR}/${linkfile}"
275296
DESTINATION "lib/swift_static/${lowercase_sdk}"
276297
COMPONENT stdlib)
298+
elseif("${sdk}" STREQUAL "WASI")
299+
set(swift_icu_libs_wasi_list)
300+
set(icu_modules UC I18N DATA)
301+
foreach(module IN LISTS icu_modules)
302+
set(module_lib "${SWIFT_WASI_wasm32_ICU_${module}}")
303+
get_filename_component(module_lib_name ${module_lib} NAME)
304+
add_custom_command_target(swift_icu_${module}_${sdk}
305+
COMMAND
306+
"${CMAKE_COMMAND}" -E copy
307+
"${module_lib}"
308+
"${SWIFTSTATICLIB_DIR}/${lowercase_sdk}/${module_lib_name}"
309+
OUTPUT
310+
"${SWIFTSTATICLIB_DIR}/${lowercase_sdk}/${module_lib_name}"
311+
DEPENDS
312+
"${module_lib}")
313+
list(APPEND swift_icu_libs_wasi_list ${swift_icu_${module}_${sdk}})
314+
swift_install_in_component(FILES "${SWIFTSTATICLIB_DIR}/${lowercase_sdk}/${module_lib_name}"
315+
DESTINATION "lib/swift_static/${lowercase_sdk}"
316+
COMPONENT stdlib)
317+
endforeach()
318+
add_custom_target(swift_icu_libs_wasi ALL DEPENDS ${swift_icu_libs_wasi_list})
319+
add_dependencies(stdlib swift_icu_libs_wasi)
277320
endif()
278321
endforeach()
279322
endforeach()

0 commit comments

Comments
 (0)