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

import("//third_party/icu/config.gni")

# 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",
    "U_ENABLE_DYLOAD=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") {
  cflags = []
  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",
    ]
  }
  if (is_clang) {
    cflags += [
      "-Wno-deprecated-declarations",
      "-Wno-logical-op-parentheses",
      "-Wno-tautological-compare",
      "-Wno-switch",
    ]
  }
}

component("icui18n") {
  sources = [
    "source/i18n/alphaindex.cpp",
    "source/i18n/anytrans.cpp",
    "source/i18n/astro.cpp",
    "source/i18n/basictz.cpp",
    "source/i18n/bocsu.cpp",
    "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/compactdecimalformat.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/dangical.cpp",
    "source/i18n/datefmt.cpp",
    "source/i18n/dcfmtsym.cpp",
    "source/i18n/decContext.c",
    "source/i18n/decfmtst.cpp",
    "source/i18n/decimfmt.cpp",
    "source/i18n/decNumber.c",
    "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_cnv.cpp",
    "source/i18n/fmtable.cpp",
    "source/i18n/format.cpp",
    "source/i18n/fphdlimp.cpp",
    "source/i18n/fpositer.cpp",
    "source/i18n/funcrepl.cpp",
    "source/i18n/gender.cpp",
    "source/i18n/gregocal.cpp",
    "source/i18n/gregoimp.cpp",
    "source/i18n/hebrwcal.cpp",
    "source/i18n/identifier_info.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/regeximp.cpp",
    "source/i18n/regexst.cpp",
    "source/i18n/regextxt.cpp",
    "source/i18n/region.cpp",
    "source/i18n/reldtfmt.cpp",
    "source/i18n/rematch.cpp",
    "source/i18n/remtrans.cpp",
    "source/i18n/repattrn.cpp",
    "source/i18n/scriptset.cpp",
    "source/i18n/search.cpp",
    "source/i18n/selfmt.cpp",
    "source/i18n/simpletz.cpp",
    "source/i18n/smpdtfmt.cpp",
    "source/i18n/smpdtfst.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/tzfmt.cpp",
    "source/i18n/tzgnames.cpp",
    "source/i18n/tznames.cpp",
    "source/i18n/tznames_impl.cpp",
    "source/i18n/tzrule.cpp",
    "source/i18n/tztrans.cpp",
    "source/i18n/ucal.cpp",
    "source/i18n/ucln_in.c",
    "source/i18n/ucol_bld.cpp",
    "source/i18n/ucol_cnt.cpp",
    "source/i18n/ucol.cpp",
    "source/i18n/ucoleitr.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/ucsdet.cpp",
    "source/i18n/ucurr.cpp",
    "source/i18n/udat.cpp",
    "source/i18n/udateintervalformat.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/unumsys.cpp",
    "source/i18n/upluralrules.cpp",
    "source/i18n/uregexc.cpp",
    "source/i18n/uregex.cpp",
    "source/i18n/uregion.cpp",
    "source/i18n/usearch.cpp",
    "source/i18n/uspoof_build.cpp",
    "source/i18n/uspoof_conf.cpp",
    "source/i18n/uspoof.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/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" ]
  public_configs = [ ":icu_config" ]

  cflags = []
  if (is_android || is_linux) {
    cflags += [
      # ICU uses its own deprecated functions.
      "-Wno-deprecated-declarations",
    ]
  }
  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/appendable.cpp",
    "source/common/bmpset.cpp",
    "source/common/brkeng.cpp",
    "source/common/brkiter.cpp",
    "source/common/bytestream.cpp",
    "source/common/bytestriebuilder.cpp",
    "source/common/bytestrie.cpp",
    "source/common/bytestrieiterator.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/dictionarydata.cpp",
    "source/common/dtintrv.cpp",
    "source/common/errorcode.cpp",
    "source/common/filterednormalizer2.cpp",
    "source/common/icudataver.c",
    "source/common/icuplug.c",
    "source/common/listformatter.cpp",
    "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/messagepattern.cpp",
    "source/common/normalizer2.cpp",
    "source/common/normalizer2impl.cpp",
    "source/common/normlzr.cpp",
    "source/common/parsepos.cpp",
    "source/common/patternprops.cpp",
    "source/common/propname.cpp",
    "source/common/propsvec.c",
    "source/common/punycode.cpp",
    "source/common/putil.cpp",
    "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_cnv.cpp",
    "source/common/resbund.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/stringtriebuilder.cpp",
    "source/common/uarrsort.c",
    "source/common/ubidi.c",
    "source/common/ubidiln.c",
    "source/common/ubidi_props.c",
    "source/common/ubidiwrt.c",
    "source/common/ubrk.cpp",
    "source/common/ucase.cpp",
    "source/common/ucasemap.cpp",
    "source/common/ucasemap_titlecase_brkiter.cpp",
    "source/common/ucat.c",
    "source/common/uchar.c",
    "source/common/ucharstriebuilder.cpp",
    "source/common/ucharstrie.cpp",
    "source/common/ucharstrieiterator.cpp",
    "source/common/uchriter.cpp",
    "source/common/ucln_cmn.c",
    "source/common/ucmndata.c",
    "source/common/ucnv2022.cpp",
    "source/common/ucnv_bld.cpp",
    "source/common/ucnvbocu.cpp",
    "source/common/ucnv.c",
    "source/common/ucnv_cb.c",
    "source/common/ucnv_cnv.c",
    "source/common/ucnv_ct.c",
    "source/common/ucnvdisp.c",
    "source/common/ucnv_err.c",
    "source/common/ucnv_ext.cpp",
    "source/common/ucnvhz.c",
    "source/common/ucnv_io.cpp",
    "source/common/ucnvisci.c",
    "source/common/ucnvlat1.c",
    "source/common/ucnv_lmb.c",
    "source/common/ucnvmbcs.c",
    "source/common/ucnvscsu.c",
    "source/common/ucnvsel.cpp",
    "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/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.cpp",
    "source/common/uinvchar.c",
    "source/common/uiter.cpp",
    "source/common/ulist.c",
    "source/common/uloc.cpp",
    "source/common/uloc_tag.c",
    "source/common/umapfile.c",
    "source/common/umath.c",
    "source/common/umutex.cpp",
    "source/common/unames.cpp",
    "source/common/unifilt.cpp",
    "source/common/unifunct.cpp",
    "source/common/uniset_closure.cpp",
    "source/common/uniset.cpp",
    "source/common/uniset_props.cpp",
    "source/common/unisetspan.cpp",
    "source/common/unistr_case.cpp",
    "source/common/unistr_case_locale.cpp",
    "source/common/unistr_cnv.cpp",
    "source/common/unistr.cpp",
    "source/common/unistr_props.cpp",
    "source/common/unistr_titlecase_brkiter.cpp",
    "source/common/unormcmp.cpp",
    "source/common/unorm.cpp",
    "source/common/unorm_it.c",
    "source/common/uobject.cpp",
    "source/common/uprops.cpp",
    "source/common/uresbund.cpp",
    "source/common/ures_cnv.c",
    "source/common/uresdata.c",
    "source/common/usc_impl.c",
    "source/common/uscript.c",
    "source/common/uscript_props.cpp",
    "source/common/uset.cpp",
    "source/common/usetiter.cpp",
    "source/common/uset_props.cpp",
    "source/common/ushape.cpp",
    "source/common/usprep.cpp",
    "source/common/ustack.cpp",
    "source/common/ustrcase.cpp",
    "source/common/ustrcase_locale.cpp",
    "source/common/ustr_cnv.c",
    "source/common/ustrenum.cpp",
    "source/common/ustrfmt.c",
    "source/common/ustring.cpp",
    "source/common/ustr_titlecase_brkiter.cpp",
    "source/common/ustrtrns.cpp",
    "source/common/ustr_wcs.cpp",
    "source/common/utext.cpp",
    "source/common/utf_impl.c",
    "source/common/util.cpp",
    "source/common/util_props.cpp",
    "source/common/utrace.c",
    "source/common/utrie2_builder.cpp",
    "source/common/utrie2.cpp",
    "source/common/utrie.cpp",
    "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",
  ]

  public_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/icudtl.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.
      #
      # TODO(GYP): Gyp has considerations here for QNX and for the host toolchain
      #  that have not been ported over.
      if (is_linux) {
        sources = [
          "linux/icudtl_dat.S",
        ]
      } else if (is_mac) {
        sources = [
          "mac/icudtl_dat.S",
        ]
      } else if (is_android) {
        sources = [
          "android/icudtl_dat.S",
        ]
      } else {
        assert(false, "No icu data for this platform")
      }
      defines = [ "U_HIDE_DATA_SYMBOL" ]
    }
  }
}
