Issue #2165 - Build ICU as a shared library if we're building Spidermonkey shared.

It seems that if we're going to enable JS_SHARED_LIBRARY, we need ICU to be a
shared library too in order to prevent code duplication in mozjs.dll bloating
it to a whopping 21 MB.
This unfortunately means we have to fold icudata back to icu itself. But since
icudata is still separated from libxul (which is what really matters for #1451),
I think this is a fair compromise.
Building ICU as shared is offered as an option via --enable-shared-icu. But
technically you really need --enable-shared-icu if you're going to use
--enable-shared-js. Unfortunately I can't make configure exit with an error if
MOZ_SHARED_ICU is not defined when JS_SHARED_LIBRARY is enabled, because options
are controlled by different configure scripts (icu is based on bash, while js is
based on python), and I have no idea how to pass MOZ_SHARED_ICU to js's
moz.configure.

Tag #62
This commit is contained in:
Job Bautista 2023-03-19 00:08:48 +08:00 committed by roytam1
commit bad884a7c7
6 changed files with 31 additions and 30 deletions

View file

@ -24,7 +24,10 @@ include('objs.mozbuild')
UNIFIED_SOURCES += intl_unicharutil_util_cppsrcs
Library('unicharutil_external_s')
# This line breaks building ICU as a shared library due to a
# SandboxValidationError from the frontend reader.
if not CONFIG['MOZ_SHARED_ICU']:
Library('unicharutil_external_s')
FORCE_STATIC_LIB = True