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

@ -3,8 +3,6 @@
# 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/.
Library('icu')
DIRS += [
'common',
'data',
@ -14,5 +12,8 @@ DIRS += [
if CONFIG['MOZ_ICU_DATA_ARCHIVE']:
DIRS += ['stubdata']
USE_LIBS += ['icustubdata']
Library('icu')
else:
USE_LIBS += ['icudata']
SharedLibrary('icu')
SHARED_LIBRARY_NAME = 'icu' + CONFIG['MOZ_ICU_VERSION']