From: Jakub Jirutka Date: Sat, 15 Jul 2023 21:30:26 +0200 Subject: [PATCH] Build rusty_v8 with system ICU It requires also the following in build.rs, which is added by v8-build.patch: println!("cargo:rustc-link-lib=dylib=icui18n"); println!("cargo:rustc-link-lib=dylib=icuuc"); println!("cargo:rustc-link-lib=dylib=icudata"); --- a/vendor/v8/src/icu.rs +++ b/vendor/v8/src/icu.rs @@ -5,7 +5,7 @@ unsafe extern "C" { fn icu_get_default_locale(output: *mut char, output_len: usize) -> usize; fn icu_set_default_locale(locale: *const char); - fn udata_setCommonData_74(this: *const u8, error_code: *mut i32); + fn udata_setCommonData(this: *const u8, error_code: *mut i32); } /// This function bypasses the normal ICU data loading process and allows you to force ICU's system @@ -45,7 +45,7 @@ pub fn set_common_data_74(data: &'static [u8]) -> Result<(), i32> { let mut error_code = 0i32; unsafe { - udata_setCommonData_74(data.as_ptr(), &mut error_code); + udata_setCommonData(data.as_ptr(), &mut error_code); } if error_code == 0 { Ok(()) --- a/vendor/v8/src/binding.cc +++ b/vendor/v8/src/binding.cc @@ -3739,8 +3739,8 @@ extern "C" { size_t icu_get_default_locale(char* output, size_t output_len) { - const icu_74::Locale& default_locale = icu::Locale::getDefault(); - icu_74::CheckedArrayByteSink sink(output, static_cast(output_len)); + const icu::Locale& default_locale = icu::Locale::getDefault(); + icu::CheckedArrayByteSink sink(output, static_cast(output_len)); UErrorCode status = U_ZERO_ERROR; default_locale.toLanguageTag(sink, status); assert(status == U_ZERO_ERROR); --- a/vendor/v8/third_party/icu/config.gni +++ b/vendor/v8/third_party/icu/config.gni @@ -29,7 +29,7 @@ icu_fuchsia_override_data_dir = "" # If set, the ":icudata" target will copy the ICU data to $root_build_dir. - icu_copy_icudata_to_root_build_dir = true + icu_copy_icudata_to_root_build_dir = false # Fuchsia sometimes requires extra compilation flags for ICU to adapt it to # its current toolchain. Since it takes a while for ICU to roll through --- a/vendor/v8/v8/BUILD.gn +++ b/vendor/v8/v8/BUILD.gn @@ -475,7 +475,7 @@ # this breaks locally building V8 with ICU support when the file # isn't present, which some embedders rely on. This option controls # the explicit dependency and allows the build to complete. - v8_depend_on_icu_data_file = icu_use_data_file + v8_depend_on_icu_data_file = false # Some fuzzers depend on fuzzing functionality linked into the v8 library. # For binary size reasons this functionality is not always available.