summaryrefslogtreecommitdiffstats
path: root/config/external/icu4x
diff options
context:
space:
mode:
Diffstat (limited to 'config/external/icu4x')
-rw-r--r--config/external/icu4x/icu4x_data.S29
-rw-r--r--config/external/icu4x/moz.build35
2 files changed, 64 insertions, 0 deletions
diff --git a/config/external/icu4x/icu4x_data.S b/config/external/icu4x/icu4x_data.S
new file mode 100644
index 0000000000..95a647f9ef
--- /dev/null
+++ b/config/external/icu4x/icu4x_data.S
@@ -0,0 +1,29 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#if defined(_WIN32) && defined(__i386__)
+// Mark the object as SAFESEH-enabled.
+.def @feat.00;
+.scl 3;
+.type 0;
+.endef
+.global @feat.00
+.set @feat.00, 1
+#endif
+
+.global ICU4X_DATA_SYMBOL
+#if defined(__APPLE__)
+.data
+.const
+#elif defined(__wasi__)
+.section .rodata,"",@
+#else
+.section .rodata
+#endif
+.balign 16
+ICU4X_DATA_SYMBOL:
+.incbin ICU4X_DATA_FILE
+#ifdef __wasi__
+.size ICU4X_DATA_SYMBOL, . - ICU4X_DATA_SYMBOL
+#endif
diff --git a/config/external/icu4x/moz.build b/config/external/icu4x/moz.build
new file mode 100644
index 0000000000..63273b83ff
--- /dev/null
+++ b/config/external/icu4x/moz.build
@@ -0,0 +1,35 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Build the ICU4X data directly into the binary file. This is an experiment that can
+# be enabled by adding `ac_add_options --enable-icu4x` to your mozconfig.
+# See `intl/ICU4X.md`.
+
+if CONFIG["MOZ_ICU4X"]:
+ DEFINES["MOZ_ICU4X"] = 1
+ Library("icu4xdata")
+ LOCAL_INCLUDES += ["."]
+
+ # The "mangled" symbol gets prefixed by a "_" in certain platforms.
+ symbol_prefix = ""
+ if (CONFIG["OS_ARCH"] == "WINNT" and CONFIG["CPU_ARCH"] == "x86") or CONFIG[
+ "OS_ARCH"
+ ] == "Darwin":
+ symbol_prefix = "_"
+
+ # To re-generate this file run: intl/update-icu4x.sh
+ DEFINES["ICU4X_DATA_FILE"] = '"icu4x.postcard"'
+
+ # In C++ this data will be available via:
+ #
+ # extern uint8_t icu4x_static_locale_data;
+ # uint8_t firstByte = (&icu4x_static_locale_data)[0];
+ DEFINES["ICU4X_DATA_SYMBOL"] = "%s%s" % (symbol_prefix, "icu4x_static_locale_data")
+
+ # This is assembly which has instructions to include the binary locale data directly.
+ SOURCES += [
+ "icu4x_data.S",
+ ]