Home | History | Annotate | Download | only in icu
      1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 {
      6   'variables': {
      7     'use_system_icu%': 0,
      8     'icu_use_data_file_flag%': 0,
      9     'want_separate_host_toolset%': 1,
     10   },
     11   'target_defaults': {
     12     'direct_dependent_settings': {
     13       'defines': [
     14         # Tell ICU to not insert |using namespace icu;| into its headers,
     15         # so that chrome's source explicitly has to use |icu::|.
     16         'U_USING_ICU_NAMESPACE=0',
     17       ],
     18     },
     19     'defines': [
     20       'U_USING_ICU_NAMESPACE=0',
     21     ],
     22     'conditions': [
     23       ['component=="static_library"', {
     24         'defines': [
     25           'U_STATIC_IMPLEMENTATION',
     26         ],
     27       }],
     28       ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
     29          or OS=="netbsd" or OS=="mac" or OS=="android") and \
     30         (target_arch=="arm" or target_arch=="ia32" or \
     31          target_arch=="mipsel")', {
     32         'target_conditions': [
     33           ['_toolset=="host"', {
     34             'cflags': [ '-m32' ],
     35             'ldflags': [ '-m32' ],
     36             'asflags': [ '-32' ],
     37             'xcode_settings': {
     38               'ARCHS': [ 'i386' ],
     39             },
     40           }],
     41         ],
     42       }],
     43     ],
     44     'include_dirs': [
     45       'source/common',
     46       'source/i18n',
     47     ],
     48     'msvs_disabled_warnings': [4005, 4068, 4355, 4996, 4267],
     49   },
     50   'conditions': [
     51     ['use_system_icu==0 or want_separate_host_toolset==1', {
     52       'targets': [
     53         {
     54           'target_name': 'icudata',
     55           'type': 'static_library',
     56           'defines': [
     57             'U_HIDE_DATA_SYMBOL',
     58           ],
     59           'sources': [
     60              # These are hand-generated, but will do for now.  The linux
     61              # version is an identical copy of the (mac) icudt46l_dat.S file,
     62              # modulo removal of the .private_extern and .const directives and
     63              # with no leading underscore on the icudt46_dat symbol.
     64              'android/icudt46l_dat.S',
     65              'linux/icudt46l_dat.S',
     66              'mac/icudt46l_dat.S',
     67           ],
     68           'conditions': [
     69             [ 'use_system_icu==1', {
     70               'toolsets': ['host'],
     71             }, {
     72               'toolsets': ['host', 'target'],
     73             }],
     74             [ 'OS == "win"', {
     75               'type': 'none',
     76               'copies': [
     77                 {
     78                   'destination': '<(PRODUCT_DIR)',
     79                   'files': [
     80                     'windows/icudt.dll',
     81                   ],
     82                 },
     83               ],
     84             }],
     85             [ 'OS != "win" and icu_use_data_file_flag', {
     86               # Remove any assembly data file.
     87               'sources/': [['exclude', 'icudt46l_dat']],
     88               # Compile in the stub data symbol.
     89               'sources': ['source/stubdata/stubdata.c'],
     90               # Make sure any binary depending on this gets the data file.
     91               'link_settings': {
     92                 'target_conditions': [
     93                   ['(OS == "mac" and _mac_bundle) or OS=="ios"', {
     94                     'mac_bundle_resources': [
     95                       'source/data/in/icudt46l.dat',
     96                     ],
     97                   }, {
     98                     'copies': [{
     99                       'destination': '<(PRODUCT_DIR)',
    100                       'files': [
    101                         'source/data/in/icudt46l.dat',
    102                       ],
    103                     }],
    104                   }],
    105                 ],  # target_conditions
    106               },  # link_settings
    107             }],
    108           ],
    109           'target_conditions': [
    110             [ 'OS == "win" or OS == "mac" or OS == "ios" or '
    111               '(OS == "android" and (_toolset == "target" or host_os != "linux"))', {
    112               'sources!': ['linux/icudt46l_dat.S'],
    113             }],
    114             [ 'OS != "android" or _toolset == "host"', {
    115               'sources!': ['android/icudt46l_dat.S'],
    116             }],
    117             [ 'OS != "mac" and OS != "ios" and '
    118               '(OS != "android" or _toolset != "host" or host_os != "mac")', {
    119               'sources!': ['mac/icudt46l_dat.S'],
    120             }],
    121           ],
    122         },
    123         {
    124           'target_name': 'icui18n',
    125           'type': '<(component)',
    126           'sources': [
    127             'source/i18n/anytrans.cpp',
    128             'source/i18n/astro.cpp',
    129             'source/i18n/basictz.cpp',
    130             'source/i18n/bms.cpp',
    131             'source/i18n/bmsearch.cpp',
    132             'source/i18n/bocsu.c',
    133             'source/i18n/brktrans.cpp',
    134             'source/i18n/buddhcal.cpp',
    135             'source/i18n/calendar.cpp',
    136             'source/i18n/casetrn.cpp',
    137             'source/i18n/cecal.cpp',
    138             'source/i18n/chnsecal.cpp',
    139             'source/i18n/choicfmt.cpp',
    140             'source/i18n/coleitr.cpp',
    141             'source/i18n/coll.cpp',
    142             'source/i18n/colldata.cpp',
    143             'source/i18n/coptccal.cpp',
    144             'source/i18n/cpdtrans.cpp',
    145             'source/i18n/csdetect.cpp',
    146             'source/i18n/csmatch.cpp',
    147             'source/i18n/csr2022.cpp',
    148             'source/i18n/csrecog.cpp',
    149             'source/i18n/csrmbcs.cpp',
    150             'source/i18n/csrsbcs.cpp',
    151             'source/i18n/csrucode.cpp',
    152             'source/i18n/csrutf8.cpp',
    153             'source/i18n/curramt.cpp',
    154             'source/i18n/currfmt.cpp',
    155             'source/i18n/currpinf.cpp',
    156             'source/i18n/currunit.cpp',
    157             'source/i18n/datefmt.cpp',
    158             'source/i18n/dcfmtsym.cpp',
    159             'source/i18n/decContext.c',
    160             'source/i18n/decNumber.c',
    161             'source/i18n/decimfmt.cpp',
    162             'source/i18n/digitlst.cpp',
    163             'source/i18n/dtfmtsym.cpp',
    164             'source/i18n/dtitvfmt.cpp',
    165             'source/i18n/dtitvinf.cpp',
    166             'source/i18n/dtptngen.cpp',
    167             'source/i18n/dtrule.cpp',
    168             'source/i18n/esctrn.cpp',
    169             'source/i18n/ethpccal.cpp',
    170             'source/i18n/fmtable.cpp',
    171             'source/i18n/fmtable_cnv.cpp',
    172             'source/i18n/format.cpp',
    173             'source/i18n/fphdlimp.cpp',
    174             'source/i18n/fpositer.cpp',
    175             'source/i18n/funcrepl.cpp',
    176             'source/i18n/gregocal.cpp',
    177             'source/i18n/gregoimp.cpp',
    178             'source/i18n/hebrwcal.cpp',
    179             'source/i18n/indiancal.cpp',
    180             'source/i18n/inputext.cpp',
    181             'source/i18n/islamcal.cpp',
    182             'source/i18n/japancal.cpp',
    183             'source/i18n/locdspnm.cpp',
    184             'source/i18n/measfmt.cpp',
    185             'source/i18n/measure.cpp',
    186             'source/i18n/msgfmt.cpp',
    187             'source/i18n/name2uni.cpp',
    188             'source/i18n/nfrs.cpp',
    189             'source/i18n/nfrule.cpp',
    190             'source/i18n/nfsubs.cpp',
    191             'source/i18n/nortrans.cpp',
    192             'source/i18n/nultrans.cpp',
    193             'source/i18n/numfmt.cpp',
    194             'source/i18n/numsys.cpp',
    195             'source/i18n/olsontz.cpp',
    196             'source/i18n/persncal.cpp',
    197             'source/i18n/plurfmt.cpp',
    198             'source/i18n/plurrule.cpp',
    199             'source/i18n/quant.cpp',
    200             'source/i18n/rbnf.cpp',
    201             'source/i18n/rbt.cpp',
    202             'source/i18n/rbt_data.cpp',
    203             'source/i18n/rbt_pars.cpp',
    204             'source/i18n/rbt_rule.cpp',
    205             'source/i18n/rbt_set.cpp',
    206             'source/i18n/rbtz.cpp',
    207             'source/i18n/regexcmp.cpp',
    208             'source/i18n/regexst.cpp',
    209             'source/i18n/regextxt.cpp',
    210             'source/i18n/reldtfmt.cpp',
    211             'source/i18n/rematch.cpp',
    212             'source/i18n/remtrans.cpp',
    213             'source/i18n/repattrn.cpp',
    214             'source/i18n/search.cpp',
    215             'source/i18n/selfmt.cpp',
    216             'source/i18n/simpletz.cpp',
    217             'source/i18n/smpdtfmt.cpp',
    218             'source/i18n/sortkey.cpp',
    219             'source/i18n/strmatch.cpp',
    220             'source/i18n/strrepl.cpp',
    221             'source/i18n/stsearch.cpp',
    222             'source/i18n/taiwncal.cpp',
    223             'source/i18n/tblcoll.cpp',
    224             'source/i18n/timezone.cpp',
    225             'source/i18n/titletrn.cpp',
    226             'source/i18n/tmunit.cpp',
    227             'source/i18n/tmutamt.cpp',
    228             'source/i18n/tmutfmt.cpp',
    229             'source/i18n/tolowtrn.cpp',
    230             'source/i18n/toupptrn.cpp',
    231             'source/i18n/translit.cpp',
    232             'source/i18n/transreg.cpp',
    233             'source/i18n/tridpars.cpp',
    234             'source/i18n/tzrule.cpp',
    235             'source/i18n/tztrans.cpp',
    236             'source/i18n/ucal.cpp',
    237             'source/i18n/ucln_in.c',
    238             'source/i18n/ucol.cpp',
    239             'source/i18n/ucol_bld.cpp',
    240             'source/i18n/ucol_cnt.cpp',
    241             'source/i18n/ucol_elm.cpp',
    242             'source/i18n/ucol_res.cpp',
    243             'source/i18n/ucol_sit.cpp',
    244             'source/i18n/ucol_tok.cpp',
    245             'source/i18n/ucol_wgt.cpp',
    246             'source/i18n/ucoleitr.cpp',
    247             'source/i18n/ucsdet.cpp',
    248             'source/i18n/ucurr.cpp',
    249             'source/i18n/udat.cpp',
    250             'source/i18n/udatpg.cpp',
    251             'source/i18n/ulocdata.c',
    252             'source/i18n/umsg.cpp',
    253             'source/i18n/unesctrn.cpp',
    254             'source/i18n/uni2name.cpp',
    255             'source/i18n/unum.cpp',
    256             'source/i18n/uregex.cpp',
    257             'source/i18n/uregexc.cpp',
    258             'source/i18n/usearch.cpp',
    259             'source/i18n/uspoof.cpp',
    260             'source/i18n/uspoof_build.cpp',
    261             'source/i18n/uspoof_conf.cpp',
    262             'source/i18n/uspoof_impl.cpp',
    263             'source/i18n/uspoof_wsconf.cpp',
    264             'source/i18n/utmscale.c',
    265             'source/i18n/utrans.cpp',
    266             'source/i18n/vtzone.cpp',
    267             'source/i18n/vzone.cpp',
    268             'source/i18n/windtfmt.cpp',
    269             'source/i18n/winnmfmt.cpp',
    270             'source/i18n/wintzimpl.cpp',
    271             'source/i18n/zonemeta.cpp',
    272             'source/i18n/zrule.cpp',
    273             'source/i18n/zstrfmt.cpp',
    274             'source/i18n/ztrans.cpp',
    275           ],
    276           'defines': [
    277             'U_I18N_IMPLEMENTATION',
    278           ],
    279           'dependencies': [
    280             'icuuc',
    281           ],
    282           'direct_dependent_settings': {
    283             'include_dirs': [
    284               'source/i18n',
    285             ],
    286           },
    287           'conditions': [
    288             [ 'use_system_icu==1', {
    289               'toolsets': ['host'],
    290             }, {
    291               'toolsets': ['host', 'target'],
    292             }],
    293             [ 'os_posix == 1 and OS != "mac" and OS != "ios"', {
    294               # Since ICU wants to internally use its own deprecated APIs, don't
    295               # complain about it.
    296               'cflags': [
    297                 '-Wno-deprecated-declarations',
    298               ],
    299               'cflags_cc': [
    300                 '-frtti',
    301               ],
    302             }],
    303             ['OS == "mac" or OS == "ios"', {
    304               'xcode_settings': {
    305                 'GCC_ENABLE_CPP_RTTI': 'YES',       # -frtti
    306               },
    307             }],
    308             ['OS == "win"', {
    309               'msvs_settings': {
    310                 'VCCLCompilerTool': {
    311                   'RuntimeTypeInfo': 'true',
    312                 },
    313               }
    314             }],
    315             ['clang==1', {
    316               'xcode_settings': {
    317                 'WARNING_CFLAGS': [
    318                   # ICU uses its own deprecated functions.
    319                   '-Wno-deprecated-declarations',
    320                   # ICU prefers `a && b || c` over `(a && b) || c`.
    321                   '-Wno-logical-op-parentheses',
    322                   # ICU has some `unsigned < 0` checks.
    323                   '-Wno-tautological-compare',
    324                   # uspoof.h has a U_NAMESPACE_USE macro. That's a bug,
    325                   # the header should use U_NAMESPACE_BEGIN instead.
    326                   # http://bugs.icu-project.org/trac/ticket/9054
    327                   '-Wno-header-hygiene',
    328                   # Looks like a real issue, see http://crbug.com/114660
    329                   '-Wno-return-type-c-linkage',
    330                 ],
    331               },
    332               'cflags': [
    333                 '-Wno-deprecated-declarations',
    334                 '-Wno-logical-op-parentheses',
    335                 '-Wno-tautological-compare',
    336                 '-Wno-header-hygiene',
    337                 '-Wno-return-type-c-linkage',
    338               ],
    339             }],
    340             ['OS == "android" and clang==0', {
    341                 # Disable sincos() optimization to avoid a linker error since
    342                 # Android's math library doesn't have sincos().  Either
    343                 # -fno-builtin-sin or -fno-builtin-cos works.
    344                 'cflags': [
    345                     '-fno-builtin-sin',
    346                 ],
    347             }],
    348             ['OS == "android" and use_system_stlport == 1', {
    349               'target_conditions': [
    350                 ['_toolset == "target"', {
    351                   # ICU requires RTTI, which is not present in the system's
    352                   # stlport, so we have to include gabi++.
    353                   'include_dirs': [
    354                     '<(android_src)/abi/cpp/include',
    355                   ],
    356                   'link_settings': {
    357                     'libraries': [
    358                       '-lgabi++',
    359                     ],
    360                   },
    361                 }],
    362               ],
    363             }],
    364           ],
    365         },
    366         {
    367           'target_name': 'icuuc',
    368           'type': '<(component)',
    369           'sources': [
    370             'source/common/bmpset.cpp',
    371             'source/common/brkeng.cpp',
    372             'source/common/brkiter.cpp',
    373             'source/common/bytestream.cpp',
    374             'source/common/caniter.cpp',
    375             'source/common/chariter.cpp',
    376             'source/common/charstr.cpp',
    377             'source/common/cmemory.c',
    378             'source/common/cstring.c',
    379             'source/common/cwchar.c',
    380             'source/common/dictbe.cpp',
    381             'source/common/dtintrv.cpp',
    382             'source/common/errorcode.cpp',
    383             'source/common/filterednormalizer2.cpp',
    384             'source/common/icudataver.c',
    385             'source/common/icuplug.c',
    386             'source/common/locavailable.cpp',
    387             'source/common/locbased.cpp',
    388             'source/common/locdispnames.cpp',
    389             'source/common/locid.cpp',
    390             'source/common/loclikely.cpp',
    391             'source/common/locmap.c',
    392             'source/common/locresdata.cpp',
    393             'source/common/locutil.cpp',
    394             'source/common/mutex.cpp',
    395             'source/common/normalizer2.cpp',
    396             'source/common/normalizer2impl.cpp',
    397             'source/common/normlzr.cpp',
    398             'source/common/parsepos.cpp',
    399             'source/common/propname.cpp',
    400             'source/common/propsvec.c',
    401             'source/common/punycode.c',
    402             'source/common/putil.c',
    403             'source/common/rbbi.cpp',
    404             'source/common/rbbidata.cpp',
    405             'source/common/rbbinode.cpp',
    406             'source/common/rbbirb.cpp',
    407             'source/common/rbbiscan.cpp',
    408             'source/common/rbbisetb.cpp',
    409             'source/common/rbbistbl.cpp',
    410             'source/common/rbbitblb.cpp',
    411             'source/common/resbund.cpp',
    412             'source/common/resbund_cnv.cpp',
    413             'source/common/ruleiter.cpp',
    414             'source/common/schriter.cpp',
    415             'source/common/serv.cpp',
    416             'source/common/servlk.cpp',
    417             'source/common/servlkf.cpp',
    418             'source/common/servls.cpp',
    419             'source/common/servnotf.cpp',
    420             'source/common/servrbf.cpp',
    421             'source/common/servslkf.cpp',
    422             'source/common/stringpiece.cpp',
    423             'source/common/triedict.cpp',
    424             'source/common/uarrsort.c',
    425             'source/common/ubidi.c',
    426             'source/common/ubidi_props.c',
    427             'source/common/ubidiln.c',
    428             'source/common/ubidiwrt.c',
    429             'source/common/ubrk.cpp',
    430             'source/common/ucase.c',
    431             'source/common/ucasemap.c',
    432             'source/common/ucat.c',
    433             'source/common/uchar.c',
    434             'source/common/uchriter.cpp',
    435             'source/common/ucln_cmn.c',
    436             'source/common/ucmndata.c',
    437             'source/common/ucnv.c',
    438             'source/common/ucnv2022.c',
    439             'source/common/ucnv_bld.c',
    440             'source/common/ucnv_cb.c',
    441             'source/common/ucnv_cnv.c',
    442             'source/common/ucnv_err.c',
    443             'source/common/ucnv_ext.c',
    444             'source/common/ucnv_io.c',
    445             'source/common/ucnv_lmb.c',
    446             'source/common/ucnv_set.c',
    447             'source/common/ucnv_u16.c',
    448             'source/common/ucnv_u32.c',
    449             'source/common/ucnv_u7.c',
    450             'source/common/ucnv_u8.c',
    451             'source/common/ucnvbocu.c',
    452             'source/common/ucnvdisp.c',
    453             'source/common/ucnvhz.c',
    454             'source/common/ucnvisci.c',
    455             'source/common/ucnvlat1.c',
    456             'source/common/ucnvmbcs.c',
    457             'source/common/ucnvscsu.c',
    458             'source/common/ucnvsel.cpp',
    459             'source/common/ucol_swp.cpp',
    460             'source/common/udata.cpp',
    461             'source/common/udatamem.c',
    462             'source/common/udataswp.c',
    463             'source/common/uenum.c',
    464             'source/common/uhash.c',
    465             'source/common/uhash_us.cpp',
    466             'source/common/uidna.cpp',
    467             'source/common/uinit.c',
    468             'source/common/uinvchar.c',
    469             'source/common/uiter.cpp',
    470             'source/common/ulist.c',
    471             'source/common/uloc.c',
    472             'source/common/uloc_tag.c',
    473             'source/common/umapfile.c',
    474             'source/common/umath.c',
    475             'source/common/umutex.c',
    476             'source/common/unames.c',
    477             'source/common/unifilt.cpp',
    478             'source/common/unifunct.cpp',
    479             'source/common/uniset.cpp',
    480             'source/common/uniset_props.cpp',
    481             'source/common/unisetspan.cpp',
    482             'source/common/unistr.cpp',
    483             'source/common/unistr_case.cpp',
    484             'source/common/unistr_cnv.cpp',
    485             'source/common/unistr_props.cpp',
    486             'source/common/unorm.cpp',
    487             'source/common/unorm_it.c',
    488             'source/common/unormcmp.cpp',
    489             'source/common/uobject.cpp',
    490             'source/common/uprops.cpp',
    491             'source/common/ures_cnv.c',
    492             'source/common/uresbund.c',
    493             'source/common/uresdata.c',
    494             'source/common/usc_impl.c',
    495             'source/common/uscript.c',
    496             'source/common/uset.cpp',
    497             'source/common/uset_props.cpp',
    498             'source/common/usetiter.cpp',
    499             'source/common/ushape.c',
    500             'source/common/usprep.cpp',
    501             'source/common/ustack.cpp',
    502             'source/common/ustr_cnv.c',
    503             'source/common/ustr_wcs.c',
    504             'source/common/ustrcase.c',
    505             'source/common/ustrenum.cpp',
    506             'source/common/ustrfmt.c',
    507             'source/common/ustring.c',
    508             'source/common/ustrtrns.c',
    509             'source/common/utext.cpp',
    510             'source/common/utf_impl.c',
    511             'source/common/util.cpp',
    512             'source/common/util_props.cpp',
    513             'source/common/utrace.c',
    514             'source/common/utrie.c',
    515             'source/common/utrie2.cpp',
    516             'source/common/utrie2_builder.c',
    517             'source/common/uts46.cpp',
    518             'source/common/utypes.c',
    519             'source/common/uvector.cpp',
    520             'source/common/uvectr32.cpp',
    521             'source/common/uvectr64.cpp',
    522             'source/common/wintz.c',
    523           ],
    524           'defines': [
    525             'U_COMMON_IMPLEMENTATION',
    526           ],
    527           'dependencies': [
    528             'icudata',
    529           ],
    530           'direct_dependent_settings': {
    531             'include_dirs': [
    532               'source/common',
    533             ],
    534             'conditions': [
    535               [ 'component=="static_library"', {
    536                 'defines': [
    537                   'U_STATIC_IMPLEMENTATION',
    538                 ],
    539               }],
    540             ],
    541           },
    542           'conditions': [
    543             [ 'use_system_icu==1', {
    544               'toolsets': ['host'],
    545             }, {
    546               'toolsets': ['host', 'target'],
    547             }],
    548             [ 'OS == "win"', {
    549               'sources': [
    550                 'source/stubdata/stubdata.c',
    551               ],
    552             }],
    553             [ 'os_posix == 1 and OS != "mac" and OS != "ios"', {
    554               'cflags': [
    555                 # Since ICU wants to internally use its own deprecated APIs,
    556                 # don't complain about it.
    557                 '-Wno-deprecated-declarations',
    558                 '-Wno-unused-function',
    559               ],
    560               'cflags_cc': [
    561                 '-frtti',
    562               ],
    563             }],
    564             ['OS == "mac" or OS == "ios"', {
    565               'xcode_settings': {
    566                 'GCC_ENABLE_CPP_RTTI': 'YES',       # -frtti
    567               },
    568             }],
    569             ['OS == "win"', {
    570               'msvs_settings': {
    571                 'VCCLCompilerTool': {
    572                   'RuntimeTypeInfo': 'true',
    573                 },
    574               },
    575             }],
    576             ['OS == "android" and use_system_stlport == 1', {
    577               'target_conditions': [
    578                 ['_toolset == "target"', {
    579                   # ICU requires RTTI, which is not present in the system's
    580                   # stlport, so we have to include gabi++.
    581                   'include_dirs': [
    582                     '<(android_src)/abi/cpp/include',
    583                   ],
    584                   'link_settings': {
    585                     'libraries': [
    586                       '-lgabi++',
    587                     ],
    588                   },
    589                 }],
    590               ],
    591             }],
    592             ['clang==1', {
    593               'xcode_settings': {
    594                 'WARNING_CFLAGS': [
    595                   # ICU uses its own deprecated functions.
    596                   '-Wno-deprecated-declarations',
    597                   # ICU prefers `a && b || c` over `(a && b) || c`.
    598                   '-Wno-logical-op-parentheses',
    599                   # ICU has some `unsigned < 0` checks.
    600                   '-Wno-tautological-compare',
    601                   # uresdata.c has switch(RES_GET_TYPE(x)) code. The
    602                   # RES_GET_TYPE macro returns an UResType enum, but some switch
    603                   # statement contains case values that aren't part of that
    604                   # enum (e.g. URES_TABLE32 which is in UResInternalType). This
    605                   # is on purpose.
    606                   '-Wno-switch',
    607                 ],
    608               },
    609               'cflags': [
    610                 '-Wno-deprecated-declarations',
    611                 '-Wno-logical-op-parentheses',
    612                 '-Wno-tautological-compare',
    613                 '-Wno-switch',
    614               ],
    615             }],
    616           ],
    617         },
    618       ],
    619     }],
    620     ['use_system_icu==1', {
    621       'targets': [
    622         {
    623           'target_name': 'system_icu',
    624           'type': 'none',
    625           'conditions': [
    626             ['want_separate_host_toolset==1', {
    627               'toolsets': ['target'],
    628             }, {
    629               'toolsets': ['host', 'target'],
    630             }],
    631             ['OS=="android"', {
    632               'direct_dependent_settings': {
    633                 'include_dirs': [
    634                   '<(android_src)/external/icu4c/common',
    635                   '<(android_src)/external/icu4c/i18n',
    636                 ],
    637               },
    638               'link_settings': {
    639                 'libraries': [
    640                   '-licui18n',
    641                   '-licuuc',
    642                 ],
    643               },
    644             },{ # OS!="android"
    645               'link_settings': {
    646                 'ldflags': [
    647                   '<!@(icu-config --ldflags)',
    648                 ],
    649                 'libraries': [
    650                   '<!@(icu-config --ldflags-libsonly)',
    651                 ],
    652               },
    653             }],
    654           ],
    655         },
    656         {
    657           'target_name': 'icudata',
    658           'type': 'none',
    659           'dependencies': ['system_icu'],
    660           'export_dependent_settings': ['system_icu'],
    661           'conditions': [
    662             ['want_separate_host_toolset==1', {
    663               'toolsets': ['target'],
    664             }, {
    665               'toolsets': ['host', 'target'],
    666             }],
    667           ],
    668         },
    669         {
    670           'target_name': 'icui18n',
    671           'type': 'none',
    672           'dependencies': ['system_icu'],
    673           'export_dependent_settings': ['system_icu'],
    674           'variables': {
    675             'headers_root_path': 'source/i18n',
    676             'header_filenames': [
    677               # This list can easily be updated using the command below:
    678               # find third_party/icu/source/i18n/unicode -iname '*.h' \
    679               # -printf "'%p',\n" | \
    680               # sed -e 's|third_party/icu/source/i18n/||' | sort -u
    681               'unicode/basictz.h',
    682               'unicode/bmsearch.h',
    683               'unicode/bms.h',
    684               'unicode/calendar.h',
    685               'unicode/choicfmt.h',
    686               'unicode/coleitr.h',
    687               'unicode/colldata.h',
    688               'unicode/coll.h',
    689               'unicode/curramt.h',
    690               'unicode/currpinf.h',
    691               'unicode/currunit.h',
    692               'unicode/datefmt.h',
    693               'unicode/dcfmtsym.h',
    694               'unicode/decimfmt.h',
    695               'unicode/dtfmtsym.h',
    696               'unicode/dtitvfmt.h',
    697               'unicode/dtitvinf.h',
    698               'unicode/dtptngen.h',
    699               'unicode/dtrule.h',
    700               'unicode/fieldpos.h',
    701               'unicode/fmtable.h',
    702               'unicode/format.h',
    703               'unicode/fpositer.h',
    704               'unicode/gregocal.h',
    705               'unicode/locdspnm.h',
    706               'unicode/measfmt.h',
    707               'unicode/measunit.h',
    708               'unicode/measure.h',
    709               'unicode/msgfmt.h',
    710               'unicode/numfmt.h',
    711               'unicode/numsys.h',
    712               'unicode/plurfmt.h',
    713               'unicode/plurrule.h',
    714               'unicode/rbnf.h',
    715               'unicode/rbtz.h',
    716               'unicode/regex.h',
    717               'unicode/search.h',
    718               'unicode/selfmt.h',
    719               'unicode/simpletz.h',
    720               'unicode/smpdtfmt.h',
    721               'unicode/sortkey.h',
    722               'unicode/stsearch.h',
    723               'unicode/tblcoll.h',
    724               'unicode/timezone.h',
    725               'unicode/tmunit.h',
    726               'unicode/tmutamt.h',
    727               'unicode/tmutfmt.h',
    728               'unicode/translit.h',
    729               'unicode/tzrule.h',
    730               'unicode/tztrans.h',
    731               'unicode/ucal.h',
    732               'unicode/ucoleitr.h',
    733               'unicode/ucol.h',
    734               'unicode/ucsdet.h',
    735               'unicode/ucurr.h',
    736               'unicode/udat.h',
    737               'unicode/udatpg.h',
    738               'unicode/uldnames.h',
    739               'unicode/ulocdata.h',
    740               'unicode/umsg.h',
    741               'unicode/unirepl.h',
    742               'unicode/unum.h',
    743               'unicode/uregex.h',
    744               'unicode/usearch.h',
    745               'unicode/uspoof.h',
    746               'unicode/utmscale.h',
    747               'unicode/utrans.h',
    748               'unicode/vtzone.h',
    749             ],
    750           },
    751           'includes': [
    752             '../../build/shim_headers.gypi',
    753           ],
    754           'conditions': [
    755             ['want_separate_host_toolset==1', {
    756               'toolsets': ['target'],
    757             }, {
    758               'toolsets': ['host', 'target'],
    759             }],
    760           ],
    761         },
    762         {
    763           'target_name': 'icuuc',
    764           'type': 'none',
    765           'dependencies': ['system_icu'],
    766           'export_dependent_settings': ['system_icu'],
    767           'variables': {
    768             'headers_root_path': 'source/common',
    769             'header_filenames': [
    770               # This list can easily be updated using the command below:
    771               # find third_party/icu/source/common/unicode -iname '*.h' \
    772               # -printf "'%p',\n" | \
    773               # sed -e 's|third_party/icu/source/common/||' | sort -u
    774               'unicode/brkiter.h',
    775               'unicode/bytestream.h',
    776               'unicode/caniter.h',
    777               'unicode/chariter.h',
    778               'unicode/dbbi.h',
    779               'unicode/docmain.h',
    780               'unicode/dtintrv.h',
    781               'unicode/errorcode.h',
    782               'unicode/icudataver.h',
    783               'unicode/icuplug.h',
    784               'unicode/idna.h',
    785               'unicode/localpointer.h',
    786               'unicode/locid.h',
    787               'unicode/normalizer2.h',
    788               'unicode/normlzr.h',
    789               'unicode/pandroid.h',
    790               'unicode/parseerr.h',
    791               'unicode/parsepos.h',
    792               'unicode/pfreebsd.h',
    793               'unicode/plinux.h',
    794               'unicode/pmac.h',
    795               'unicode/popenbsd.h',
    796               'unicode/ppalmos.h',
    797               'unicode/ptypes.h',
    798               'unicode/putil.h',
    799               'unicode/pwin32.h',
    800               'unicode/rbbi.h',
    801               'unicode/rep.h',
    802               'unicode/resbund.h',
    803               'unicode/schriter.h',
    804               'unicode/std_string.h',
    805               'unicode/strenum.h',
    806               'unicode/stringpiece.h',
    807               'unicode/symtable.h',
    808               'unicode/ubidi.h',
    809               'unicode/ubrk.h',
    810               'unicode/ucasemap.h',
    811               'unicode/ucat.h',
    812               'unicode/uchar.h',
    813               'unicode/uchriter.h',
    814               'unicode/uclean.h',
    815               'unicode/ucnv_cb.h',
    816               'unicode/ucnv_err.h',
    817               'unicode/ucnv.h',
    818               'unicode/ucnvsel.h',
    819               'unicode/uconfig.h',
    820               'unicode/udata.h',
    821               'unicode/udeprctd.h',
    822               'unicode/udraft.h',
    823               'unicode/uenum.h',
    824               'unicode/uidna.h',
    825               'unicode/uintrnal.h',
    826               'unicode/uiter.h',
    827               'unicode/uloc.h',
    828               'unicode/umachine.h',
    829               'unicode/umisc.h',
    830               'unicode/unifilt.h',
    831               'unicode/unifunct.h',
    832               'unicode/unimatch.h',
    833               'unicode/uniset.h',
    834               'unicode/unistr.h',
    835               'unicode/unorm2.h',
    836               'unicode/unorm.h',
    837               'unicode/uobject.h',
    838               'unicode/uobslete.h',
    839               'unicode/urename.h',
    840               'unicode/urep.h',
    841               'unicode/ures.h',
    842               'unicode/uscript.h',
    843               'unicode/uset.h',
    844               'unicode/usetiter.h',
    845               'unicode/ushape.h',
    846               'unicode/usprep.h',
    847               'unicode/ustring.h',
    848               'unicode/usystem.h',
    849               'unicode/utext.h',
    850               'unicode/utf16.h',
    851               'unicode/utf32.h',
    852               'unicode/utf8.h',
    853               'unicode/utf.h',
    854               'unicode/utf_old.h',
    855               'unicode/utrace.h',
    856               'unicode/utypeinfo.h',
    857               'unicode/utypes.h',
    858               'unicode/uvernum.h',
    859               'unicode/uversion.h',
    860             ],
    861           },
    862           'includes': [
    863             '../../build/shim_headers.gypi',
    864           ],
    865           'conditions': [
    866             ['want_separate_host_toolset==1', {
    867               'toolsets': ['target'],
    868             }, {
    869               'toolsets': ['host', 'target'],
    870             }],
    871           ],
    872         },
    873       ],
    874     }],
    875   ],
    876 }
    877