--- build/linux/unbundle/icu.gn.orig 2024-11-16 12:20:41 UTC +++ build/linux/unbundle/icu.gn @@ -17,6 +17,15 @@ config("icu_config") { "USING_SYSTEM_ICU=1", "ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC", + # As of icu 73 C++ nullptr, char16_t, override, final and noexcept are used + # instead of defines. These definitions can be removed when the bundled icu + # gets updated to 73. For more details, see: + # https://unicode-org.atlassian.net/browse/ICU-21833 and + # https://github.com/unicode-org/icu/commit/28643799377ecf654564f6f31854b02788cebe33 + "U_FINAL=final", + "U_NOEXCEPT=noexcept", + "U_OVERRIDE=override", + # U_EXPORT (defined in unicode/platform.h) is used to set public visibility # on classes through the U_COMMON_API and U_I18N_API macros (among others). # When linking against the system ICU library, we want its symbols to have @@ -35,6 +44,18 @@ config("icu_config") { # please see: https://crbug.com/822820 "U_IMPORT=U_EXPORT", ] + + _icu_version = exec_script(pkg_config_script, + common_pkg_config_args + pkg_config_args + [ + "icu-i18n", + "--version-as-components", + ], + "value") + + # Unbreak with icu 76 where private symbols are picked up + if (_icu_version[0] >= 76) { + defines += [ "U_HIDE_DRAFT_API" ] + } } pkg_config("system_icui18n") { @@ -46,6 +67,14 @@ pkg_config("system_icuuc") { } source_set("icui18n") { + deps = [ ":icui18n_shim" ] + public_configs = [ + ":icu_config", + ":system_icui18n", + ] +} + +source_set("icui18n_hidden_visibility") { deps = [ ":icui18n_shim" ] public_configs = [ ":icu_config",