skia2/third_party/icu/BUILD.gn
Ben Wagner 3d9ab7e7ec Separate general defaults from Skia defaults
In the build there are some defaults which actually apply to every
use of a built-in target type, but there are some (particularaly
warnings) which apply only to targets controlled by Skia. Currently
these unwanted defaults are magically known to exist and removed
wherever they are not wanted. Instead, create 'skia_' prefixed target
templates and apply these defaults to those instead.

Change-Id: I3a2afb53c7205a2e2748d1cfad46319f2e93d3b3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/385516
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2021-03-22 15:30:56 +00:00

118 lines
3.2 KiB
Plaintext

# Copyright 2016 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("../../gn/skia.gni")
import("../third_party.gni")
import("icu.gni")
declare_args() {
skia_use_system_icu = is_official_build
}
if (skia_use_system_icu) {
system("icu") {
libs = [ "icuuc" ]
defines = [ "U_USING_ICU_NAMESPACE=0" ]
}
} else {
if (target_cpu == "wasm") {
data_assembly = "$target_gen_dir/icudtl_dat.cpp"
} else {
data_assembly = "$target_gen_dir/icudtl_dat.S"
}
data_dir = "../externals/icu/"
if (target_cpu == "wasm") {
# Use a super super super stripped down version for wasm,
# which is the same thing flutter is using.
data_dir += "flutter"
} else if (is_android) {
data_dir += "android"
} else if (is_ios) {
data_dir += "ios"
} else {
data_dir += "common"
}
action("make_data_assembly") {
if (target_cpu == "wasm") {
_u_icu_version_major_num =
"65" # defined in source/common/unicode/uvernum.h
script = "make_data_cpp.py"
inputs = [ "$data_dir/icudtl.dat" ]
outputs = [ data_assembly ]
args = [
"icudt${_u_icu_version_major_num}_dat",
rebase_path(inputs[0], root_build_dir),
rebase_path(data_assembly, root_build_dir),
]
} else {
script = "../externals/icu/scripts/make_data_assembly.py"
inputs = [ "$data_dir/icudtl.dat" ]
outputs = [ "$data_assembly" ]
args = [
rebase_path(inputs[0], root_build_dir),
rebase_path(data_assembly, root_build_dir),
]
if (is_mac || is_ios) {
args += [ "--mac" ]
}
}
}
third_party("icu") {
public_include_dirs = [
"../externals/icu/source/common",
"../externals/icu/source/i18n",
".",
]
public_defines = [
"U_USING_ICU_NAMESPACE=0",
"U_DISABLE_RENAMING",
"SK_USING_THIRD_PARTY_ICU",
]
configs = [ "//gn/portable:add_rtti" ]
defines = [
# http://userguide.icu-project.org/howtouseicu
"U_COMMON_IMPLEMENTATION",
"U_STATIC_IMPLEMENTATION",
"U_ENABLE_DYLOAD=0",
"U_I18N_IMPLEMENTATION",
# If we don't set this to zero, ICU will set it to 600,
# which makes Macs set _POSIX_C_SOURCE=200112L,
# which makes Macs set __DARWIN_C_LEVEL=_POSIX_C_SOURCE instead of =__DARWIN_C_FULL,
# which makes <time.h> not expose timespec_get,
# which makes recent libc++ <ctime> not #include-able with -std=c++17.
"_XOPEN_SOURCE=0",
]
if (target_cpu == "wasm") {
# Tell ICU that we are a 32 bit platform, otherwise,
# double-conversion-utils.h doesn't know how to operate.
defines += [ "__i386__" ]
}
sources = icu_sources
if (is_win) {
deps = [ ":icudata" ]
public_defines += [
"U_NOEXCEPT=",
"U_STATIC_IMPLEMENTATION",
]
libs = [ "Advapi32.lib" ]
sources += [
"../externals/icu/source/stubdata/stubdata.cpp",
"SkLoadICU.cpp",
]
} else {
sources += [ "$data_assembly" ]
deps = [ ":make_data_assembly" ]
}
}
copy("icudata") {
sources = [ "../externals/icu/common/icudtl.dat" ]
outputs = [ "$root_out_dir/icudtl.dat" ]
data = [ "$root_out_dir/icudtl.dat" ]
}
}