# Copyright (c) 2023 Huawei Technologies Co., Ltd. All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import("//build/gn/fangtian.gni")
import("//ace_engine/ft_build/ace_config.gni")
import("../flutter_config.gni")
config("libharfbuzz_compile_flags") {
cflags_cc = [
"-std=c++14",
"-fno-exceptions",
"-fno-rtti",
"-Os",
]
cflags = [
"-fPIC",
"-w",
"-fstrict-aliasing",
"-Os",
"-fdata-sections",
"-ffunction-sections",
"-gline-tables-only",
"-funwind-tables",
"-Wno-unused-parameter",
]
include_dirs = [
"$flutter_root/skia/third_party/harfbuzz",
"$flutter_root/skia/third_party/externals/harfbuzz/src",
]
}
template("ace_libharfbuzz") {
forward_variables_from(invoker, "*")
ft_source_set(target_name) {
defines += invoker.defines
defines += [
"HAVE_ICU",
"HAVE_ICU_BUILTIN",
"HAVE_INTEL_ATOMIC_PRIMITIVES",
"HAVE_OT",
"U_USING_ICU_NAMESPACE=0",
"SK_USING_THIRD_PARTY_ICU",
"UPRV_BLOCK_MACRO_BEGIN=",
"UPRV_BLOCK_MACRO_END=",
]
cflags_cc += invoker.cflags_cc
configs = [ ":libharfbuzz_compile_flags" ]
if (platform == "android") {
configs += [ "$ace_root/build:reduce_eh_frame_config" ]
}
sources = [
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-aat-layout.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-aat-map.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-blob.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-buffer-serialize.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-buffer.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-common.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-face.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-font.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-icu.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-map.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-cff1-table.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-cff2-table.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-color.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-face.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-font.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-layout.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-map.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-math.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-name.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-arabic.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-default.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-hangul.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-hebrew.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-indic-table.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-indic.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-khmer.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-myanmar.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-thai.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-use-table.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-use.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-vowel-constraints.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-shape-fallback.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-shape-normalize.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-shape.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-tag.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ot-var.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-set.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-shape-plan.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-shape.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-shaper.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-static.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-subset-cff-common.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-subset-cff1.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-subset-cff2.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-subset-input.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-subset-plan.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-subset.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-ucd.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-unicode.cc",
"$flutter_root/skia/third_party/externals/harfbuzz/src/hb-warning.cc",
]
deps = [ "$ace_flutter_engine_root/icu:ace_libicu_$platform" ]
}
}
foreach(item, ace_platforms) {
ace_libharfbuzz("ace_libharfbuzz_" + item.name) {
platform = item.name
defines = []
cflags_cc = []
config = {
}
if (defined(item.config)) {
config = item.config
}
if (defined(config.defines)) {
defines = config.defines
}
if (defined(config.cflags_cc)) {
cflags_cc = config.cflags_cc
}
}
}