123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- # Copyright 2016 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- import("//build/config/linux/pkg_config.gni")
- import("//build/shim_headers.gni")
- group("icu") {
- public_deps = [
- ":icui18n",
- ":icuuc",
- ]
- }
- config("icu_config") {
- defines = [
- "USING_SYSTEM_ICU=1",
- "ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC",
- # U_EXPORT (defined in unicode/platform.h) is used to set public visibility
- # on classes through the U_COMMON_API and U_I18N_API macros (among others).
- # When linking against the system ICU library, we want its symbols to have
- # public LTO visibility. This disables CFI checks for the ICU classes and
- # allows whole-program optimization to be applied to the rest of Chromium.
- #
- # Both U_COMMON_API and U_I18N_API macros would be defined to U_EXPORT only
- # when U_COMBINED_IMPLEMENTATION is defined (see unicode/utypes.h). Because
- # we override the default system UCHAR_TYPE (char16_t), it is not possible
- # to use U_COMBINED_IMPLEMENTATION at this moment, meaning the U_COMMON_API
- # and U_I18N_API macros are set to U_IMPORT which is an empty definition.
- #
- # Until building with UCHAR_TYPE=char16_t is supported, one way to apply
- # public visibility (and thus public LTO visibility) to all ICU classes is
- # to define U_IMPORT to have the same value as U_EXPORT. For more details,
- # please see: https://crbug.com/822820
- "U_IMPORT=U_EXPORT",
- ]
- }
- pkg_config("system_icui18n") {
- packages = [ "icu-i18n" ]
- }
- pkg_config("system_icuuc") {
- packages = [ "icu-uc" ]
- }
- source_set("icui18n") {
- deps = [ ":icui18n_shim" ]
- public_configs = [
- ":icu_config",
- ":system_icui18n",
- ]
- }
- source_set("icuuc") {
- deps = [ ":icuuc_shim" ]
- public_configs = [
- ":icu_config",
- ":system_icuuc",
- ]
- }
- shim_headers("icui18n_shim") {
- root_path = "source/i18n"
- headers = [
- # This list can easily be updated using the commands below:
- # cd third_party/icu/source/i18n
- # find unicode -iname '*.h' -printf ' "%p",\n' | LC_ALL=C sort -u
- "unicode/alphaindex.h",
- "unicode/basictz.h",
- "unicode/calendar.h",
- "unicode/choicfmt.h",
- "unicode/coleitr.h",
- "unicode/coll.h",
- "unicode/compactdecimalformat.h",
- "unicode/curramt.h",
- "unicode/currpinf.h",
- "unicode/currunit.h",
- "unicode/datefmt.h",
- "unicode/dcfmtsym.h",
- "unicode/decimfmt.h",
- "unicode/dtfmtsym.h",
- "unicode/dtitvfmt.h",
- "unicode/dtitvinf.h",
- "unicode/dtptngen.h",
- "unicode/dtrule.h",
- "unicode/fieldpos.h",
- "unicode/fmtable.h",
- "unicode/format.h",
- "unicode/fpositer.h",
- "unicode/gender.h",
- "unicode/gregocal.h",
- "unicode/listformatter.h",
- "unicode/measfmt.h",
- "unicode/measunit.h",
- "unicode/measure.h",
- "unicode/msgfmt.h",
- "unicode/numfmt.h",
- "unicode/numsys.h",
- "unicode/plurfmt.h",
- "unicode/plurrule.h",
- "unicode/rbnf.h",
- "unicode/rbtz.h",
- "unicode/regex.h",
- "unicode/region.h",
- "unicode/reldatefmt.h",
- "unicode/scientificnumberformatter.h",
- "unicode/search.h",
- "unicode/selfmt.h",
- "unicode/simpletz.h",
- "unicode/smpdtfmt.h",
- "unicode/sortkey.h",
- "unicode/stsearch.h",
- "unicode/tblcoll.h",
- "unicode/timezone.h",
- "unicode/tmunit.h",
- "unicode/tmutamt.h",
- "unicode/tmutfmt.h",
- "unicode/translit.h",
- "unicode/tzfmt.h",
- "unicode/tznames.h",
- "unicode/tzrule.h",
- "unicode/tztrans.h",
- "unicode/ucal.h",
- "unicode/ucol.h",
- "unicode/ucoleitr.h",
- "unicode/ucsdet.h",
- "unicode/udat.h",
- "unicode/udateintervalformat.h",
- "unicode/udatpg.h",
- "unicode/ufieldpositer.h",
- "unicode/uformattable.h",
- "unicode/ugender.h",
- "unicode/ulocdata.h",
- "unicode/umsg.h",
- "unicode/unirepl.h",
- "unicode/unum.h",
- "unicode/unumsys.h",
- "unicode/upluralrules.h",
- "unicode/uregex.h",
- "unicode/uregion.h",
- "unicode/ureldatefmt.h",
- "unicode/usearch.h",
- "unicode/uspoof.h",
- "unicode/utmscale.h",
- "unicode/utrans.h",
- "unicode/vtzone.h",
- ]
- }
- shim_headers("icuuc_shim") {
- root_path = "source/common"
- headers = [
- # This list can easily be updated using the commands below:
- # cd third_party/icu/source/common
- # find unicode -iname '*.h' -printf ' "%p",\n' | LC_ALL=C sort -u
- "unicode/appendable.h",
- "unicode/brkiter.h",
- "unicode/bytestream.h",
- "unicode/bytestrie.h",
- "unicode/bytestriebuilder.h",
- "unicode/caniter.h",
- "unicode/casemap.h",
- "unicode/char16ptr.h",
- "unicode/chariter.h",
- "unicode/dbbi.h",
- "unicode/docmain.h",
- "unicode/dtintrv.h",
- "unicode/edits.h",
- "unicode/enumset.h",
- "unicode/errorcode.h",
- "unicode/filteredbrk.h",
- "unicode/icudataver.h",
- "unicode/icuplug.h",
- "unicode/idna.h",
- "unicode/localematcher.h",
- "unicode/localpointer.h",
- "unicode/locdspnm.h",
- "unicode/locid.h",
- "unicode/messagepattern.h",
- "unicode/normalizer2.h",
- "unicode/normlzr.h",
- "unicode/parseerr.h",
- "unicode/parsepos.h",
- "unicode/platform.h",
- "unicode/ptypes.h",
- "unicode/putil.h",
- "unicode/rbbi.h",
- "unicode/rep.h",
- "unicode/resbund.h",
- "unicode/schriter.h",
- "unicode/simpleformatter.h",
- "unicode/std_string.h",
- "unicode/strenum.h",
- "unicode/stringpiece.h",
- "unicode/stringtriebuilder.h",
- "unicode/symtable.h",
- "unicode/ubidi.h",
- "unicode/ubiditransform.h",
- "unicode/ubrk.h",
- "unicode/ucasemap.h",
- "unicode/ucat.h",
- "unicode/uchar.h",
- "unicode/ucharstrie.h",
- "unicode/ucharstriebuilder.h",
- "unicode/uchriter.h",
- "unicode/uclean.h",
- "unicode/ucnv.h",
- "unicode/ucnv_cb.h",
- "unicode/ucnv_err.h",
- "unicode/ucnvsel.h",
- "unicode/uconfig.h",
- "unicode/ucurr.h",
- "unicode/udata.h",
- "unicode/udisplaycontext.h",
- "unicode/uenum.h",
- "unicode/uidna.h",
- "unicode/uiter.h",
- "unicode/uldnames.h",
- "unicode/ulistformatter.h",
- "unicode/uloc.h",
- "unicode/umachine.h",
- "unicode/umisc.h",
- "unicode/unifilt.h",
- "unicode/unifunct.h",
- "unicode/unimatch.h",
- "unicode/uniset.h",
- "unicode/unistr.h",
- "unicode/unorm.h",
- "unicode/unorm2.h",
- "unicode/uobject.h",
- "unicode/urename.h",
- "unicode/urep.h",
- "unicode/ures.h",
- "unicode/uscript.h",
- "unicode/uset.h",
- "unicode/usetiter.h",
- "unicode/ushape.h",
- "unicode/usprep.h",
- "unicode/ustring.h",
- "unicode/ustringtrie.h",
- "unicode/utext.h",
- "unicode/utf.h",
- "unicode/utf16.h",
- "unicode/utf32.h",
- "unicode/utf8.h",
- "unicode/utf_old.h",
- "unicode/utrace.h",
- "unicode/utypes.h",
- "unicode/uvernum.h",
- "unicode/uversion.h",
- ]
- }
|