| diff --git a/js/src/Makefile.in b/js/src/Makefile.in |
| index 4944d31..4176e14 100644 |
| --- a/js/src/Makefile.in |
| +++ b/js/src/Makefile.in |
| @@ -237,12 +237,17 @@ endif |
| # ICU headers need to be available whether we build with the complete |
| # Internationalization API or not - ICU stubs rely on them. |
| |
| +ifdef MOZ_NATIVE_ICU |
| +LOCAL_INCLUDES += $(MOZ_ICU_CFLAGS) |
| +else |
| LOCAL_INCLUDES += \ |
| -I$(topsrcdir)/../../intl/icu/source/common \ |
| -I$(topsrcdir)/../../intl/icu/source/i18n \ |
| $(NULL) |
| +endif |
| |
| ifdef ENABLE_INTL_API |
| +ifndef MOZ_NATIVE_ICU |
| |
| ifeq ($(OS_ARCH),WINNT) |
| # Parallel gmake is buggy on Windows |
| @@ -271,6 +276,7 @@ distclean clean:: |
| $(call SUBMAKE,$@,intl/icu) |
| |
| endif |
| +endif |
| |
| # |
| # END ECMAScript Internationalization API |
| @@ -403,7 +409,11 @@ ifneq (,$(MOZ_ZLIB_LIBS)$(MOZ_GLUE_LDFLAGS)) |
| DEFINES += -DUSE_ZLIB |
| endif |
| |
| -SHARED_LIBRARY_LIBS += $(ICU_LIBS) |
| +ifdef MOZ_NATIVE_ICU |
| +EXTRA_DSO_LDOPTS += $(MOZ_ICU_LIBS) |
| +else |
| +SHARED_LIBRARY_LIBS += $(MOZ_ICU_LIBS) |
| +endif |
| |
| # Prevent floating point errors caused by VC++ optimizations |
| ifdef _MSC_VER |
| diff --git a/js/src/config/Makefile.in b/js/src/config/Makefile.in |
| index 5f60d15..e1fe1f8 100644 |
| --- a/js/src/config/Makefile.in |
| +++ b/js/src/config/Makefile.in |
| @@ -59,6 +59,7 @@ export:: \ |
| $(call mkdir_deps,system_wrappers_js) \ |
| $(NULL) |
| $(PYTHON) $(srcdir)/Preprocessor.py $(DEFINES) $(ACDEFINES) \ |
| + -DMOZ_NATIVE_ICU=$(MOZ_NATIVE_ICU) \ |
| $(srcdir)/system-headers | $(PERL) $(srcdir)/make-system-wrappers.pl system_wrappers_js |
| $(INSTALL) system_wrappers_js $(DIST) |
| |
| diff --git a/js/src/config/system-headers b/js/src/config/system-headers |
| index b52aed6..1ca7420 100644 |
| --- a/js/src/config/system-headers |
| +++ b/js/src/config/system-headers |
| @@ -1132,3 +1132,14 @@ kvm.h |
| spawn.h |
| err.h |
| xlocale.h |
| +#if MOZ_NATIVE_ICU==1 |
| +unicode/locid.h |
| +unicode/numsys.h |
| +unicode/ucal.h |
| +unicode/ucol.h |
| +unicode/udat.h |
| +unicode/udatpg.h |
| +unicode/uenum.h |
| +unicode/unum.h |
| +unicode/ustring.h |
| +#endif |
| diff --git a/js/src/configure.in b/js/src/configure.in |
| index 4bccbe3..d535491 100644 |
| --- a/js/src/configure.in |
| +++ b/js/src/configure.in |
| @@ -4409,6 +4409,16 @@ fi |
| dnl ======================================================== |
| dnl ECMAScript Internationalization API Support (uses ICU) |
| dnl ======================================================== |
| +ICU_LIB_NAMES= |
| +MOZ_NATIVE_ICU= |
| +MOZ_ARG_WITH_BOOL(system-icu, |
| +[ --with-system-icu |
| + Use system icu (located with pkgconfig)], |
| + MOZ_NATIVE_ICU=1) |
| + |
| +if test -n "$MOZ_NATIVE_ICU"; then |
| + PKG_CHECK_MODULES(MOZ_ICU, icu-i18n >= 50.1) |
| +fi |
| |
| if test -n "$JS_STANDALONE"; then |
| ENABLE_INTL_API=1 |
| @@ -4421,37 +4431,34 @@ MOZ_ARG_ENABLE_BOOL(intl-api, |
| dnl Settings for the implementation of the ECMAScript Internationalization API |
| if test -n "$ENABLE_INTL_API"; then |
| AC_DEFINE(ENABLE_INTL_API) |
| - # We build ICU as a static library. |
| - AC_DEFINE(U_STATIC_IMPLEMENTATION) |
| - |
| - case "$OS_TARGET" in |
| - WINNT) |
| - ICU_LIB_NAMES="icuin icuuc icudt" |
| - ;; |
| - Darwin|Linux) |
| - ICU_LIB_NAMES="icui18n icuuc icudata" |
| - ;; |
| - *) |
| - AC_MSG_ERROR([ECMAScript Internationalization API is not yet supported on this platform]) |
| - esac |
| - |
| - ICU_LIBS='$(call EXPAND_LIBNAME_PATH,$(ICU_LIB_NAMES),$(DEPTH)/intl/icu/lib)' |
| -else |
| - ICU_LIB_NAMES= |
| - ICU_LIBS= |
| + if test -z "$MOZ_NATIVE_ICU"; then |
| + case "$OS_TARGET" in |
| + WINNT) |
| + ICU_LIB_NAMES="icuin icuuc icudt" |
| + ;; |
| + Darwin|Linux|DragonFly|FreeBSD|NetBSD|OpenBSD) |
| + ICU_LIB_NAMES="icui18n icuuc icudata" |
| + ;; |
| + *) |
| + AC_MSG_ERROR([ECMAScript Internationalization API is not yet supported on this platform]) |
| + esac |
| + MOZ_ICU_LIBS='$(call EXPAND_LIBNAME_PATH,$(ICU_LIB_NAMES),$(DEPTH)/intl/icu/lib)' |
| + fi |
| fi |
| |
| AC_SUBST(ENABLE_INTL_API) |
| AC_SUBST(ICU_LIB_NAMES) |
| -AC_SUBST(ICU_LIBS) |
| - |
| -dnl Source files that use ICU should have control over which parts of the ICU |
| -dnl namespace they want to use. |
| -AC_DEFINE(U_USING_ICU_NAMESPACE,0) |
| - |
| +AC_SUBST(MOZ_ICU_LIBS) |
| +AC_SUBST(MOZ_NATIVE_ICU) |
| |
| dnl Settings for ICU |
| -if test -n "$ENABLE_INTL_API" ; then |
| +if test -n "$ENABLE_INTL_API" -a -z "$MOZ_NATIVE_ICU"; then |
| + dnl We build ICU as a static library. |
| + AC_DEFINE(U_STATIC_IMPLEMENTATION) |
| + |
| + dnl Source files that use ICU should have control over which parts of the ICU |
| + dnl namespace they want to use. |
| + AC_DEFINE(U_USING_ICU_NAMESPACE,0) |
| # Set ICU compile options |
| ICU_CPPFLAGS="" |
| # don't use icu namespace automatically in client code |
| diff --git a/js/src/gdb/Makefile.in b/js/src/gdb/Makefile.in |
| index 288934a..a582dfe 100644 |
| --- a/js/src/gdb/Makefile.in |
| +++ b/js/src/gdb/Makefile.in |
| @@ -19,6 +19,10 @@ LIBS = $(DEPTH)/$(LIB_PREFIX)js_static.$(LIB_SUFFIX) $(NSPR_LIBS) $(MOZ_ZLIB_LIB |
| |
| LOCAL_INCLUDES += -I$(topsrcdir) -I.. |
| |
| +ifdef MOZ_NATIVE_ICU |
| +EXTRA_LIBS += $(MOZ_ICU_LIBS) |
| +endif |
| + |
| EXTRA_LIBS += $(MOZ_FFI_LIBS) |
| |
| # Place a GDB Python auto-load file next to the gdb-tests executable, both |
| diff --git a/js/src/jsapi-tests/Makefile.in b/js/src/jsapi-tests/Makefile.in |
| index 5f7d594..10d7054 100644 |
| --- a/js/src/jsapi-tests/Makefile.in |
| +++ b/js/src/jsapi-tests/Makefile.in |
| @@ -20,6 +20,10 @@ LIBS = $(DEPTH)/$(LIB_PREFIX)js_static.$(LIB_SUFFIX) $(NSPR_LIBS) $(MOZ_ZLI |
| |
| LOCAL_INCLUDES += -I$(topsrcdir) -I.. |
| |
| +ifdef MOZ_NATIVE_ICU |
| +EXTRA_LIBS += $(MOZ_ICU_LIBS) |
| +endif |
| + |
| EXTRA_LIBS += $(MOZ_FFI_LIBS) |
| |
| ifdef QEMU_EXE |
| diff --git a/js/src/shell/Makefile.in b/js/src/shell/Makefile.in |
| index 2e1df09..db66c69 100644 |
| --- a/js/src/shell/Makefile.in |
| +++ b/js/src/shell/Makefile.in |
| @@ -27,6 +27,9 @@ LIBS = $(NSPR_LIBS) $(EDITLINE_LIBS) $(DEPTH)/$(LIB_PREFIX)js_static.$(LIB_ |
| ifdef MOZ_NATIVE_FFI |
| EXTRA_LIBS += $(MOZ_FFI_LIBS) |
| endif |
| +ifdef MOZ_NATIVE_ICU |
| +EXTRA_LIBS += $(MOZ_ICU_LIBS) |
| +endif |
| |
| LOCAL_INCLUDES += -I$(topsrcdir) -I.. |
| |