| # 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", |
| ] |
| } |