Skip to content

Commit facd074

Browse files
kateinoigakukunrunner
authored andcommitted
[wasm][build] Install ICU static libraries under swift_static
1 parent db4629b commit facd074

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
@@ -250,10 +250,31 @@ foreach(sdk ${SWIFT_SDKS})
250250
add_dependencies(stdlib swift-stdlib-${arch_suffix} swiftImageRegistration-${arch_suffix})
251251
endif()
252252

253+
string(TOLOWER "${sdk}" lowercase_sdk)
253254
# Generate the static-stdlib-args.lnk file used by -static-stdlib option for
254255
# 'GenericUnix' (eg linux)
255256
if(${SWIFT_SDK_${sdk}_OBJECT_FORMAT} STREQUAL ELF)
256257
string(TOLOWER "${sdk}" lowercase_sdk)
258+
if(SWIFT_${SWIFT_HOST_VARIANT_SDK}_${SWIFT_HOST_VARIANT_ARCH}_ICU_STATICLIB)
259+
set(libicu_i18n_a -licui18nswift)
260+
set(libicu_uc_a -licuucswift)
261+
set(libicu_data_a -licudataswift)
262+
else()
263+
find_package(ICU REQUIRED COMPONENTS uc i18n)
264+
get_filename_component(ICU_UC_LIBDIR "${ICU_UC_LIBRARIES}" DIRECTORY)
265+
get_filename_component(ICU_I18N_LIBDIR "${ICU_I18N_LIBRARIES}" DIRECTORY)
266+
267+
set(libicu_i18n_a -licui18n)
268+
set(libicu_uc_a -licuuc)
269+
set(libicu_data_a)
270+
if(EXISTS ${ICU_I18N_LIBDIR}/libicui18n.a AND
271+
EXISTS ${ICU_UC_LIBDIR}/libicuuc.a AND
272+
EXISTS ${ICU_UC_LIBDIR}/libicudata.a)
273+
set(libicu_i18n_a ${ICU_I18N_LIBDIR}/libicui18n.a)
274+
set(libicu_uc_a ${ICU_UC_LIBDIR}/libicuuc.a)
275+
set(libicu_data_a ${ICU_UC_LIBDIR}/libicudata.a)
276+
endif()
277+
endif()
257278
set(libpthread -lpthread)
258279
set(concurrency_libs)
259280
set(android_libraries)
@@ -280,6 +301,28 @@ ${concurrency_libs}
280301
swift_install_in_component(FILES "${SWIFTSTATICLIB_DIR}/${linkfile}"
281302
DESTINATION "lib/swift_static/${lowercase_sdk}"
282303
COMPONENT stdlib)
304+
elseif("${sdk}" STREQUAL "WASI")
305+
set(swift_icu_libs_wasi_list)
306+
set(icu_modules UC I18N DATA)
307+
foreach(module IN LISTS icu_modules)
308+
set(module_lib "${SWIFT_WASI_wasm32_ICU_${module}}")
309+
get_filename_component(module_lib_name ${module_lib} NAME)
310+
add_custom_command_target(swift_icu_${module}_${sdk}
311+
COMMAND
312+
"${CMAKE_COMMAND}" -E copy
313+
"${module_lib}"
314+
"${SWIFTSTATICLIB_DIR}/${lowercase_sdk}/${module_lib_name}"
315+
OUTPUT
316+
"${SWIFTSTATICLIB_DIR}/${lowercase_sdk}/${module_lib_name}"
317+
DEPENDS
318+
"${module_lib}")
319+
list(APPEND swift_icu_libs_wasi_list ${swift_icu_${module}_${sdk}})
320+
swift_install_in_component(FILES "${SWIFTSTATICLIB_DIR}/${lowercase_sdk}/${module_lib_name}"
321+
DESTINATION "lib/swift_static/${lowercase_sdk}"
322+
COMPONENT stdlib)
323+
endforeach()
324+
add_custom_target(swift_icu_libs_wasi ALL DEPENDS ${swift_icu_libs_wasi_list})
325+
add_dependencies(stdlib swift_icu_libs_wasi)
283326
endif()
284327
endforeach()
285328
endforeach()

0 commit comments

Comments
 (0)