Skip to content
Snippets Groups Projects
BUILD.gn 37.7 KiB
Newer Older
    "source/common/unicode/ucnvsel.h",
    "source/common/unicode/uconfig.h",
    "source/common/unicode/ucpmap.h",
    "source/common/unicode/ucptrie.h",
Jungshik Shin's avatar
Jungshik Shin committed
    "source/common/unicode/ucurr.h",
    "source/common/unicode/udata.h",
Jungshik Shin's avatar
Jungshik Shin committed
    "source/common/unicode/udisplaycontext.h",
    "source/common/unicode/uenum.h",
    "source/common/unicode/uidna.h",
    "source/common/unicode/uiter.h",
Jungshik Shin's avatar
Jungshik Shin committed
    "source/common/unicode/uldnames.h",
    "source/common/unicode/uloc.h",
    "source/common/unicode/umachine.h",
    "source/common/unicode/umisc.h",
    "source/common/unicode/umutablecptrie.h",
    "source/common/unicode/unifilt.h",
    "source/common/unicode/unifunct.h",
    "source/common/unicode/unimatch.h",
    "source/common/unicode/uniset.h",
    "source/common/unicode/unistr.h",
    "source/common/unicode/unorm2.h",
    "source/common/unicode/unorm.h",
    "source/common/unicode/uobject.h",
    "source/common/unicode/urename.h",
    "source/common/unicode/urep.h",
    "source/common/unicode/ures.h",
    "source/common/unicode/uscript.h",
    "source/common/unicode/uset.h",
    "source/common/unicode/usetiter.h",
    "source/common/unicode/ushape.h",
    "source/common/unicode/usprep.h",
    "source/common/unicode/ustring.h",
    "source/common/unicode/ustringtrie.h",
    "source/common/unicode/utext.h",
    "source/common/unicode/utf16.h",
    "source/common/unicode/utf32.h",
    "source/common/unicode/utf8.h",
    "source/common/unicode/utf.h",
    "source/common/unicode/utf_old.h",
    "source/common/unicode/utrace.h",
    "source/common/unicode/utypes.h",
    "source/common/unicode/uvernum.h",
    "source/common/unicode/uversion.h",
    # COMMON_HDR_END
  ]
  defines = [ "U_COMMON_IMPLEMENTATION" ]
  deps = [
    ":icudata",
  ]

  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" ]

  if (is_win || icu_use_data_file) {
Jungshik Shin's avatar
Jungshik Shin committed
    sources += [ "source/stubdata/stubdata.cpp" ]
    defines += [ "U_ICUDATAENTRY_IN_COMMON" ]
  }

  if (is_fuchsia) {
    # Fuchsia puts its own libicuuc.so in /system/lib where we need to put our
    # .so when doing component builds, so we need to give this a different name.
    output_name = "icuuc_cr"
  }
if (is_android && enable_java_templates) {
Peter Kotwicz's avatar
Peter Kotwicz committed
  android_assets("icu_assets") {
    if (icu_use_data_file) {
      sources = [ "$root_out_dir/icudtl.dat" ]
      deps = [ ":icudata" ]
      disable_compression = true
    }
  }
}

# TODO(GYP): Gyp has considerations here for QNX and for the host toolchain
#  that have not been ported over.
if (is_android) {
# Use android_small for now to keep the size till we decide to switch to the new one.
  data_dir = "android_small"
} else if (is_ios) {
  data_dir = "ios"
} else if (is_chromeos) {
  data_dir = "chromeos"
  data_dir = "common"

if (current_cpu == "mips" || current_cpu == "mips64" ||
    host_byteorder == "big") {
  data_bundle_prefix = "icudtb"
} else {
  data_bundle_prefix = "icudtl"
}
data_bundle = "${data_bundle_prefix}.dat"
# TODO(GYP) support use_system_icu.
if (icu_use_data_file) {
  if (is_ios) {
      sources = [ "$data_dir/$data_bundle" ]
      outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
  } else {
    copy("icudata") {
      sources = [ "$data_dir/$data_bundle" ]
      outputs = [ "$root_out_dir/$data_bundle" ]
      data = [ "$root_out_dir/$data_bundle" ]
  data_assembly = "$target_gen_dir/${data_bundle_prefix}_dat.S"
  inline_data_assembly = "$target_gen_dir/${data_bundle_prefix}_dat.cc"
  action("make_data_assembly") {
    script = "scripts/make_data_assembly.py"
    inputs = [ "$data_dir/$data_bundle" ]
    outputs = [ data_assembly ]
    args = [
      rebase_path(inputs[0], root_build_dir),
      rebase_path(data_assembly, root_build_dir),
    ]
    # TODO(GYP): Gyp has considerations here for QNX and for the host
    # toolchain that have not been ported over.
    if (is_mac || is_ios) {
      args += [ "--mac" ]
    } else if (is_win) {
      args += [ "--win" ]
    }
  }

  if (is_win) {
    action("make_inline_data_assembly") {
      deps = [ ":make_data_assembly" ]
      script = "scripts/asm_to_inline_asm.py"
      inputs = [ data_assembly ]
      outputs =  [ inline_data_assembly ]
      args = rebase_path([
        data_assembly,
        inline_data_assembly,
      ], root_build_dir)
    not_needed([ "inline_data_assembly" ])
  }
  source_set("icudata") {
    defines = [ "U_HIDE_DATA_SYMBOL" ]
    if (is_win) {
      sources = [ inline_data_assembly ]
      deps = [ ":make_inline_data_assembly", ]
    } else {
      sources = [ data_assembly ]
      deps = [ ":make_data_assembly", ]