Bug 851992 - Allow building against system ICU library. r=glandium f=gaston

This commit is contained in:
Makoto Kato 2013-08-28 07:31:46 +02:00
parent 378a69117f
commit 2d90712ff1
10 changed files with 99 additions and 25 deletions

View File

@ -98,6 +98,7 @@ export:: $(export-preqs)
-DMOZ_NATIVE_JPEG=$(MOZ_NATIVE_JPEG) \
-DMOZ_NATIVE_LIBEVENT=$(MOZ_NATIVE_LIBEVENT) \
-DMOZ_NATIVE_LIBVPX=$(MOZ_NATIVE_LIBVPX) \
-DMOZ_NATIVE_ICU=$(MOZ_NATIVE_ICU) \
$(srcdir)/system-headers | $(PERL) $(topsrcdir)/nsprpub/config/make-system-wrappers.pl system_wrappers
$(INSTALL) system_wrappers $(DIST)

View File

@ -1132,3 +1132,16 @@ kvm.h
spawn.h
err.h
xlocale.h
#if MOZ_NATIVE_ICU==1
unicode/locid.h
unicode/numsys.h
unicode/ucal.h
unicode/uclean.h
unicode/ucol.h
unicode/udat.h
unicode/udatpg.h
unicode/uenum.h
unicode/unum.h
unicode/ustring.h
unicode/utypes.h
#endif

View File

@ -4114,6 +4114,22 @@ if test -n "$MOZ_NATIVE_FFI"; then
MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_FFI_LIBS"
fi
dnl ========================================================
dnl System ICU Support
dnl ========================================================
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)
MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_ICU_LIBS"
fi
AC_SUBST(MOZ_NATIVE_ICU)
dnl ========================================================
dnl Java SDK support
dnl ========================================================

View File

@ -225,12 +225,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
@ -259,6 +264,7 @@ distclean clean::
$(call SUBMAKE,$@,intl/icu)
endif
endif
#
# END ECMAScript Internationalization API
@ -385,7 +391,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

View File

@ -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)

View File

@ -1132,3 +1132,16 @@ kvm.h
spawn.h
err.h
xlocale.h
#if MOZ_NATIVE_ICU==1
unicode/locid.h
unicode/numsys.h
unicode/ucal.h
unicode/uclean.h
unicode/ucol.h
unicode/udat.h
unicode/udatpg.h
unicode/uenum.h
unicode/unum.h
unicode/ustring.h
unicode/utypes.h
#endif

View File

@ -4263,6 +4263,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
MOZ_ARG_WITH_STRING(intl-api,
[ --with-intl-api, --with-intl-api=build, --without-intl-api
@ -4297,37 +4307,36 @@ fi
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|DragonFly|FreeBSD|NetBSD|OpenBSD)
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

View File

@ -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

View File

@ -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

View File

@ -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..