# Copyright 2017 Google Inc. # # 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("//flutter/common/config.gni") import("//flutter/testing/testing.gni") if (is_fuchsia) { import("//flutter/tools/fuchsia/gn-sdk/src/gn_configs.gni") } declare_args() { flutter_use_fontconfig = false } if (flutter_use_fontconfig) { assert(is_linux) } config("txt_config") { visibility = [ ":*" ] include_dirs = [ "src" ] } config("allow_posix_names") { if (is_win && is_clang) { # POSIX names of many functions are marked deprecated by default; # disable that since they are used for cross-platform compatibility. defines = [ "_CRT_NONSTDC_NO_DEPRECATE" ] } } source_set("txt") { sources = [ "src/skia/paragraph_builder_skia.cc", "src/skia/paragraph_builder_skia.h", "src/skia/paragraph_skia.cc", "src/skia/paragraph_skia.h", "src/txt/asset_font_manager.cc", "src/txt/asset_font_manager.h", "src/txt/font_asset_provider.cc", "src/txt/font_asset_provider.h", "src/txt/font_collection.cc", "src/txt/font_collection.h", "src/txt/font_features.cc", "src/txt/font_features.h", "src/txt/font_style.h", "src/txt/font_weight.h", "src/txt/line_metrics.h", "src/txt/paragraph.h", "src/txt/paragraph_builder.cc", "src/txt/paragraph_builder.h", "src/txt/paragraph_style.cc", "src/txt/paragraph_style.h", "src/txt/placeholder_run.cc", "src/txt/placeholder_run.h", "src/txt/platform.h", "src/txt/run_metrics.h", "src/txt/test_font_manager.cc", "src/txt/test_font_manager.h", "src/txt/text_baseline.h", "src/txt/text_decoration.cc", "src/txt/text_decoration.h", "src/txt/text_shadow.cc", "src/txt/text_shadow.h", "src/txt/text_style.cc", "src/txt/text_style.h", "src/txt/typeface_font_asset_provider.cc", "src/txt/typeface_font_asset_provider.h", ] public_configs = [ ":txt_config" ] public_deps = [ "//flutter/display_list", "//flutter/fml", "//flutter/impeller/typographer/backends/skia:typographer_skia_backend", "//flutter/skia", "//flutter/third_party/harfbuzz", "//flutter/third_party/icu", ] deps = [ "//flutter/skia", "//flutter/skia/modules/skparagraph", ] libs = [] if (flutter_use_fontconfig) { libs += [ "fontconfig" ] } if (is_mac || is_ios) { sources += [ "src/txt/platform_mac.h", "src/txt/platform_mac.mm", ] deps += [ "//flutter/fml" ] } else if (is_android) { sources += [ "src/txt/platform_android.cc" ] } else if (is_linux) { sources += [ "src/txt/platform_linux.cc" ] } else if (is_fuchsia) { sources += [ "src/txt/platform_fuchsia.cc" ] deps += [ "${fuchsia_sdk}/fidl/fuchsia.fonts" ] } else if (is_win) { sources += [ "src/txt/platform_windows.cc" ] } else { sources += [ "src/txt/platform.cc" ] } } if (enable_unittests) { test_fixtures("txt_fixtures") { fixtures = [ "third_party/fonts/Roboto-Regular.ttf", "third_party/fonts/NotoColorEmoji.ttf", ] if (host_os == "mac") { fixtures += [ "/System/Library/Fonts/Apple Color Emoji.ttc" ] } } executable("txt_benchmarks") { testonly = true sources = [ "benchmarks/skparagraph_benchmarks.cc", "benchmarks/txt_run_all_benchmarks.cc", "tests/txt_test_utils.cc", "tests/txt_test_utils.h", ] deps = [ ":txt", ":txt_fixtures", "//flutter/fml", "//flutter/skia/modules/skparagraph", "//flutter/testing:testing_lib", "//flutter/third_party/benchmark", ] } executable("txt_unittests") { testonly = true sources = [ "tests/font_collection_tests.cc", "tests/paragraph_builder_skia_tests.cc", "tests/paragraph_unittests.cc", "tests/txt_run_all_unittests.cc", ] if (is_mac || is_ios) { sources += [ "tests/platform_mac_tests.cc" ] } public_configs = [ ":txt_config" ] configs += [ ":allow_posix_names" ] deps = [ ":txt", ":txt_fixtures", "//flutter/fml", "//flutter/runtime:test_font", "//flutter/skia/modules/skparagraph:skparagraph", "//flutter/testing:skia", "//flutter/testing:testing_lib", ] # This is needed for //flutter/third_party/googletest for linking zircon # symbols. if (is_fuchsia) { libs = [ "${fuchsia_arch_root}/sysroot/lib/libzircon.so" ] } } }