# Copyright 2014 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.

declare_args() {
  # Tells icu to load an external data file rather than rely on the icudata
  # being linked directly into the binary.
  icu_use_data_file = false
}

# Meta target that includes both icuuc and icui18n. Most targets want both.
# You can depend on the individually if you need to.
group("icu") {
  deps = [
    ":icui18n",
    ":icuuc",
  ]
}

# Shared config used by ICU and all dependents.
config("icu_config") {
  defines = [
    "U_USING_ICU_NAMESPACE=0",
  ]

  if (component_mode != "shared_library") {
    defines += [ "U_STATIC_IMPLEMENTATION" ]
  }

  include_dirs = [
    "source/common",
    "source/i18n",
  ]
}

# Config used only by ICU code.
config("icu_code") {
  if (is_win) {
    # Disable some compiler warnings.
    cflags = [
      "/wd4005",  # Macro redefinition.
      "/wd4068",  # Unknown pragmas.
      "/wd4267",  # Conversion from size_t on 64-bits.
      "/wd4996",  # Deprecated functions.
    ]
  } else if (is_linux) {
    cflags = [
      # Since ICU wants to internally use its own deprecated APIs, don't
      # complain about it.
      "-Wno-deprecated-declarations",
      "-Wno-unused-function",
    ]
  } else if (is_clang) {
    cflags = [
      "-Wno-deprecated-declarations",
      "-Wno-logical-op-parentheses",
      "-Wno-tautological-compare",
      "-Wno-switch",
    ]
  }
}

component("icui18n") {
  sources = [
    "source/i18n/anytrans.cpp",
    "source/i18n/astro.cpp",
    "source/i18n/basictz.cpp",
    "source/i18n/bms.cpp",
    "source/i18n/bmsearch.cpp",
    "source/i18n/bocsu.c",
    "source/i18n/brktrans.cpp",
    "source/i18n/buddhcal.cpp",
    "source/i18n/calendar.cpp",
    "source/i18n/casetrn.cpp",
    "source/i18n/cecal.cpp",
    "source/i18n/chnsecal.cpp",
    "source/i18n/choicfmt.cpp",
    "source/i18n/coleitr.cpp",
    "source/i18n/coll.cpp",
    "source/i18n/colldata.cpp",
    "source/i18n/coptccal.cpp",
    "source/i18n/cpdtrans.cpp",
    "source/i18n/csdetect.cpp",
    "source/i18n/csmatch.cpp",
    "source/i18n/csr2022.cpp",
    "source/i18n/csrecog.cpp",
    "source/i18n/csrmbcs.cpp",
    "source/i18n/csrsbcs.cpp",
    "source/i18n/csrucode.cpp",
    "source/i18n/csrutf8.cpp",
    "source/i18n/curramt.cpp",
    "source/i18n/currfmt.cpp",
    "source/i18n/currpinf.cpp",
    "source/i18n/currunit.cpp",
    "source/i18n/datefmt.cpp",
    "source/i18n/dcfmtsym.cpp",
    "source/i18n/decContext.c",
    "source/i18n/decNumber.c",
    "source/i18n/decimfmt.cpp",
    "source/i18n/digitlst.cpp",
    "source/i18n/dtfmtsym.cpp",
    "source/i18n/dtitvfmt.cpp",
    "source/i18n/dtitvinf.cpp",
    "source/i18n/dtptngen.cpp",
    "source/i18n/dtrule.cpp",
    "source/i18n/esctrn.cpp",
    "source/i18n/ethpccal.cpp",
    "source/i18n/fmtable.cpp",
    "source/i18n/fmtable_cnv.cpp",
    "source/i18n/format.cpp",
    "source/i18n/fphdlimp.cpp",
    "source/i18n/fpositer.cpp",
    "source/i18n/funcrepl.cpp",
    "source/i18n/gregocal.cpp",
    "source/i18n/gregoimp.cpp",
    "source/i18n/hebrwcal.cpp",
    "source/i18n/indiancal.cpp",
    "source/i18n/inputext.cpp",
    "source/i18n/islamcal.cpp",
    "source/i18n/japancal.cpp",
    "source/i18n/locdspnm.cpp",
    "source/i18n/measfmt.cpp",
    "source/i18n/measure.cpp",
    "source/i18n/msgfmt.cpp",
    "source/i18n/name2uni.cpp",
    "source/i18n/nfrs.cpp",
    "source/i18n/nfrule.cpp",
    "source/i18n/nfsubs.cpp",
    "source/i18n/nortrans.cpp",
    "source/i18n/nultrans.cpp",
    "source/i18n/numfmt.cpp",
    "source/i18n/numsys.cpp",
    "source/i18n/olsontz.cpp",
    "source/i18n/persncal.cpp",
    "source/i18n/plurfmt.cpp",
    "source/i18n/plurrule.cpp",
    "source/i18n/quant.cpp",
    "source/i18n/rbnf.cpp",
    "source/i18n/rbt.cpp",
    "source/i18n/rbt_data.cpp",
    "source/i18n/rbt_pars.cpp",
    "source/i18n/rbt_rule.cpp",
    "source/i18n/rbt_set.cpp",
    "source/i18n/rbtz.cpp",
    "source/i18n/regexcmp.cpp",
    "source/i18n/regexst.cpp",
    "source/i18n/regextxt.cpp",
    "source/i18n/reldtfmt.cpp",
    "source/i18n/rematch.cpp",
    "source/i18n/remtrans.cpp",
    "source/i18n/repattrn.cpp",
    "source/i18n/search.cpp",
    "source/i18n/selfmt.cpp",
    "source/i18n/simpletz.cpp",
    "source/i18n/smpdtfmt.cpp",
    "source/i18n/sortkey.cpp",
    "source/i18n/strmatch.cpp",
    "source/i18n/strrepl.cpp",
    "source/i18n/stsearch.cpp",
    "source/i18n/taiwncal.cpp",
    "source/i18n/tblcoll.cpp",
    "source/i18n/timezone.cpp",
    "source/i18n/titletrn.cpp",
    "source/i18n/tmunit.cpp",
    "source/i18n/tmutamt.cpp",
    "source/i18n/tmutfmt.cpp",
    "source/i18n/tolowtrn.cpp",
    "source/i18n/toupptrn.cpp",
    "source/i18n/translit.cpp",
    "source/i18n/transreg.cpp",
    "source/i18n/tridpars.cpp",
    "source/i18n/tzrule.cpp",
    "source/i18n/tztrans.cpp",
    "source/i18n/ucal.cpp",
    "source/i18n/ucln_in.c",
    "source/i18n/ucol.cpp",
    "source/i18n/ucol_bld.cpp",
    "source/i18n/ucol_cnt.cpp",
    "source/i18n/ucol_elm.cpp",
    "source/i18n/ucol_res.cpp",
    "source/i18n/ucol_sit.cpp",
    "source/i18n/ucol_tok.cpp",
    "source/i18n/ucol_wgt.cpp",
    "source/i18n/ucoleitr.cpp",
    "source/i18n/ucsdet.cpp",
    "source/i18n/ucurr.cpp",
    "source/i18n/udat.cpp",
    "source/i18n/udatpg.cpp",
    "source/i18n/ulocdata.c",
    "source/i18n/umsg.cpp",
    "source/i18n/unesctrn.cpp",
    "source/i18n/uni2name.cpp",
    "source/i18n/unum.cpp",
    "source/i18n/uregex.cpp",
    "source/i18n/uregexc.cpp",
    "source/i18n/usearch.cpp",
    "source/i18n/uspoof.cpp",
    "source/i18n/uspoof_build.cpp",
    "source/i18n/uspoof_conf.cpp",
    "source/i18n/uspoof_impl.cpp",
    "source/i18n/uspoof_wsconf.cpp",
    "source/i18n/utmscale.c",
    "source/i18n/utrans.cpp",
    "source/i18n/vtzone.cpp",
    "source/i18n/vzone.cpp",
    "source/i18n/windtfmt.cpp",
    "source/i18n/winnmfmt.cpp",
    "source/i18n/wintzimpl.cpp",
    "source/i18n/zonemeta.cpp",
    "source/i18n/zrule.cpp",
    "source/i18n/zstrfmt.cpp",
    "source/i18n/ztrans.cpp",
  ]
  defines = [
    "U_I18N_IMPLEMENTATION",
  ]
  deps = [
    ":icuuc",
  ]

  # ICU uses RTTI, replace the default "no rtti" config.
  configs -= [
    "//build/config/compiler:no_rtti",  # ICU uses RTTI.
    "//build/config/compiler:chromium_code",
  ]
  configs += [
    "//build/config/compiler:rtti",
    "//build/config/compiler:no_chromium_code",
  ]

  configs += [ ":icu_code" ]
  direct_dependent_configs = [ ":icu_config" ]

  if (is_clang) {
    # uspoof.h has a U_NAMESPACE_USE macro. That's a bug,
    # the header should use U_NAMESPACE_BEGIN instead.
    # http://bugs.icu-project.org/trac/ticket/9054
    configs -= [ "//build/config/clang:extra_warnings" ]

    cflags = [
      "-Wno-header-hygiene",
      # Looks like a real issue, see http://crbug.com/114660
      "-Wno-return-type-c-linkage",
    ]
  }
}

component("icuuc") {
  sources = [
    "source/common/bmpset.cpp",
    "source/common/brkeng.cpp",
    "source/common/brkiter.cpp",
    "source/common/bytestream.cpp",
    "source/common/caniter.cpp",
    "source/common/chariter.cpp",
    "source/common/charstr.cpp",
    "source/common/cmemory.c",
    "source/common/cstring.c",
    "source/common/cwchar.c",
    "source/common/dictbe.cpp",
    "source/common/dtintrv.cpp",
    "source/common/errorcode.cpp",
    "source/common/filterednormalizer2.cpp",
    "source/common/icudataver.c",
    "source/common/icuplug.c",
    "source/common/locavailable.cpp",
    "source/common/locbased.cpp",
    "source/common/locdispnames.cpp",
    "source/common/locid.cpp",
    "source/common/loclikely.cpp",
    "source/common/locmap.c",
    "source/common/locresdata.cpp",
    "source/common/locutil.cpp",
    "source/common/mutex.cpp",
    "source/common/normalizer2.cpp",
    "source/common/normalizer2impl.cpp",
    "source/common/normlzr.cpp",
    "source/common/parsepos.cpp",
    "source/common/propname.cpp",
    "source/common/propsvec.c",
    "source/common/punycode.c",
    "source/common/putil.c",
    "source/common/rbbi.cpp",
    "source/common/rbbidata.cpp",
    "source/common/rbbinode.cpp",
    "source/common/rbbirb.cpp",
    "source/common/rbbiscan.cpp",
    "source/common/rbbisetb.cpp",
    "source/common/rbbistbl.cpp",
    "source/common/rbbitblb.cpp",
    "source/common/resbund.cpp",
    "source/common/resbund_cnv.cpp",
    "source/common/ruleiter.cpp",
    "source/common/schriter.cpp",
    "source/common/serv.cpp",
    "source/common/servlk.cpp",
    "source/common/servlkf.cpp",
    "source/common/servls.cpp",
    "source/common/servnotf.cpp",
    "source/common/servrbf.cpp",
    "source/common/servslkf.cpp",
    "source/common/stringpiece.cpp",
    "source/common/triedict.cpp",
    "source/common/uarrsort.c",
    "source/common/ubidi.c",
    "source/common/ubidi_props.c",
    "source/common/ubidiln.c",
    "source/common/ubidiwrt.c",
    "source/common/ubrk.cpp",
    "source/common/ucase.c",
    "source/common/ucasemap.c",
    "source/common/ucat.c",
    "source/common/uchar.c",
    "source/common/uchriter.cpp",
    "source/common/ucln_cmn.c",
    "source/common/ucmndata.c",
    "source/common/ucnv.c",
    "source/common/ucnv2022.c",
    "source/common/ucnv_bld.c",
    "source/common/ucnv_cb.c",
    "source/common/ucnv_cnv.c",
    "source/common/ucnv_err.c",
    "source/common/ucnv_ext.c",
    "source/common/ucnv_io.c",
    "source/common/ucnv_lmb.c",
    "source/common/ucnv_set.c",
    "source/common/ucnv_u16.c",
    "source/common/ucnv_u32.c",
    "source/common/ucnv_u7.c",
    "source/common/ucnv_u8.c",
    "source/common/ucnvbocu.c",
    "source/common/ucnvdisp.c",
    "source/common/ucnvhz.c",
    "source/common/ucnvisci.c",
    "source/common/ucnvlat1.c",
    "source/common/ucnvmbcs.c",
    "source/common/ucnvscsu.c",
    "source/common/ucnvsel.cpp",
    "source/common/ucol_swp.cpp",
    "source/common/udata.cpp",
    "source/common/udatamem.c",
    "source/common/udataswp.c",
    "source/common/uenum.c",
    "source/common/uhash.c",
    "source/common/uhash_us.cpp",
    "source/common/uidna.cpp",
    "source/common/uinit.c",
    "source/common/uinvchar.c",
    "source/common/uiter.cpp",
    "source/common/ulist.c",
    "source/common/uloc.c",
    "source/common/uloc_tag.c",
    "source/common/umapfile.c",
    "source/common/umath.c",
    "source/common/umutex.c",
    "source/common/unames.c",
    "source/common/unifilt.cpp",
    "source/common/unifunct.cpp",
    "source/common/uniset.cpp",
    "source/common/uniset_props.cpp",
    "source/common/unisetspan.cpp",
    "source/common/unistr.cpp",
    "source/common/unistr_case.cpp",
    "source/common/unistr_cnv.cpp",
    "source/common/unistr_props.cpp",
    "source/common/unorm.cpp",
    "source/common/unorm_it.c",
    "source/common/unormcmp.cpp",
    "source/common/uobject.cpp",
    "source/common/uprops.cpp",
    "source/common/ures_cnv.c",
    "source/common/uresbund.c",
    "source/common/uresdata.c",
    "source/common/usc_impl.c",
    "source/common/uscript.c",
    "source/common/uset.cpp",
    "source/common/uset_props.cpp",
    "source/common/usetiter.cpp",
    "source/common/ushape.c",
    "source/common/usprep.cpp",
    "source/common/ustack.cpp",
    "source/common/ustr_cnv.c",
    "source/common/ustr_wcs.c",
    "source/common/ustrcase.c",
    "source/common/ustrenum.cpp",
    "source/common/ustrfmt.c",
    "source/common/ustring.c",
    "source/common/ustrtrns.c",
    "source/common/utext.cpp",
    "source/common/utf_impl.c",
    "source/common/util.cpp",
    "source/common/util_props.cpp",
    "source/common/utrace.c",
    "source/common/utrie.c",
    "source/common/utrie2.cpp",
    "source/common/utrie2_builder.c",
    "source/common/uts46.cpp",
    "source/common/utypes.c",
    "source/common/uvector.cpp",
    "source/common/uvectr32.cpp",
    "source/common/uvectr64.cpp",
    "source/common/wintz.c",
  ]
  defines = [
    "U_COMMON_IMPLEMENTATION",
  ]
  deps = [
    ":icudata",
  ]
  configs += [ ":icu_code" ]

  configs -= [
    "//build/config/compiler:no_rtti",  # ICU uses RTTI.
    "//build/config/compiler:chromium_code",
  ]
  configs += [
    "//build/config/compiler:rtti",
    "//build/config/compiler:no_chromium_code",
  ]

  direct_dependent_configs = [ ":icu_config" ]

  if (is_win || icu_use_data_file) {
    sources += [ "source/stubdata/stubdata.c" ]
  }
}

# TODO(GYP) support use_system_icu.
if (icu_use_data_file) {
  if (is_ios) {
    # TODO(GYP): Support mac resource bundle shown below.
    # 'link_settings': {
    #   'mac_bundle_resources': [
    #     'source/data/in/icudtl.dat',
    #   ],
    # }
  } else {
    copy("icudata") {
      if (is_android) {
        sources = [ "android/icudt.dat" ]
      } else {
        sources = [ "source/data/in/icudtl.dat" ]
      }

      outputs = [ "$root_out_dir/icudtl.dat" ]
    }
  }
} else {
  if (is_win) {
    # On Windows the target DLL is pre-built so just use a copy rule.
    copy("icudata") {
      sources = [ "windows/icudt.dll" ]
      outputs = [ "$root_out_dir/icudt.dll" ]
    }
  } else {
    source_set("icudata") {
      # These are hand-generated, but will do for now.  The linux version is an
      # identical copy of the (mac) icudt46l_dat.S file, modulo removal of the
      # .private_extern and .const directives and with no leading underscore on
      # the icudt46_dat symbol.
      #
      # TODO(GYP): Gyp has considerations here for QNX and for the host toolchain
      #  that have not been ported over.
      if (is_linux) {
        sources = [ "linux/icudt46l_dat.S" ]
      } else if (is_mac) {
        sources = [ "mac/icudt46l_dat.S" ]
      } else if (is_android) {
        sources = [ "android/icudt46l_dat.S" ]
      } else {
        assert(false, "No icu data for this platform")
      }
      defines = [ "U_HIDE_DATA_SYMBOL" ]
    }
  }
}
