blob: 519421b7e700412d00b4657dd44089eee68e12a2 [file] [log] [blame]
# Copyright 2016 The Fuchsia 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("//build/components.gni")
import("//build/rust/rustc_binary.gni")
import("//build/rust/rustc_library.gni")
import("//build/rust/rustc_test.gni")
import("//build/type/config.gni")
import("//src/fonts/build/fonts.gni")
group("fonts") {
public_deps = [
":pkg",
# XXX: external dependencies on //src/fonts are intending just to get the
# package, but that layout does not follow the convention of directory
# targets including all their tests and buildable artifacts. For now these
# need to be disabled, and all external consumers only intending to import
# fonts support should be moved to using //src/fonts:pkg instead.
# ":open-fonts",
# ":tests",
]
}
group("tests") {
testonly = true
public_deps = [
":font_provider_unit_tests",
"char_set:tests",
"font_info:tests",
"manifest:tests",
"offset_string:tests",
"tests",
"tools:tests",
]
}
# Group of all the dependencies needed for downstream tests that rely on fonts,
# such as Chromium tests.
# Tests that use this dependency should also put
# { "fuchsia.fonts.Provider": "fuchsia-pkg://fuchsia.com/fonts#meta/fonts_for_downstream_tests.cmx" }
# in their component manifests' "facets" > "fuchsia.test" > "injected-services".
group("downstream_test_deps") {
testonly = true
public_deps = [
":downstream-test-fonts-collection",
":fonts",
]
}
rustc_binary("font_provider") {
name = "font_provider"
with_unit_tests = true
edition = "2018"
deps = [
"char_set",
"font_info",
"freetype_ffi",
"manifest",
"//garnet/lib/rust/fidl_fuchsia_fonts_ext",
"//garnet/lib/rust/io_util",
"//sdk/fidl/fuchsia.fonts:fuchsia.fonts-rustc",
"//sdk/fidl/fuchsia.fonts.experimental:fuchsia.fonts.experimental-rustc",
"//sdk/fidl/fuchsia.intl:fuchsia.intl-rustc",
"//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
"//sdk/fidl/fuchsia.mem:fuchsia.mem-rustc",
"//sdk/fidl/fuchsia.pkg:fuchsia.pkg-rustc",
"//src/lib/diagnostics/inspect/runtime/rust",
"//src/lib/diagnostics/inspect/rust",
"//src/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/fuchsia-url",
"//src/lib/syslog/rust:syslog",
"//src/lib/trace/rust:trace",
"//src/lib/trace/rust:trace-provider",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:argh",
"//third_party/rust_crates:async-trait",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:heck",
"//third_party/rust_crates:itertools",
"//third_party/rust_crates:lazy_static",
"//third_party/rust_crates:libc",
"//third_party/rust_crates:log",
"//third_party/rust_crates:parking_lot",
"//third_party/rust_crates:thiserror",
"//third_party/rust_crates:unicase",
]
test_deps = [
"//src/lib/intl/unicode_utils/char_collection",
"//third_party/rust_crates:maplit",
"//third_party/rust_crates:pretty_assertions",
]
non_rust_deps = [ "//third_party/freetype2" ]
sources = [
"src/font_service/asset/asset.rs",
"src/font_service/asset/cache.rs",
"src/font_service/asset/collection.rs",
"src/font_service/asset/loader.rs",
"src/font_service/asset/mod.rs",
"src/font_service/builder.rs",
"src/font_service/debug.rs",
"src/font_service/family.rs",
"src/font_service/inspect.rs",
"src/font_service/mod.rs",
"src/font_service/typeface/collection.rs",
"src/font_service/typeface/matcher.rs",
"src/font_service/typeface/mod.rs",
"src/font_service/typeface/test_util.rs",
"src/font_service/typeface/typeface.rs",
"src/main.rs",
]
}
fuchsia_component("font_provider_cm") {
manifest = "meta/fonts.cml"
component_name = "fonts"
deps = [ ":font_provider" ]
}
# TODO: Remove fonts.cmx once external clients aren't using it.
fuchsia_component("font_provider_cmx") {
manifest = "meta/fonts.cmx"
component_name = "fonts"
deps = [ ":font_provider" ]
}
fuchsia_component("font_provider_cmx_tests") {
manifest = "meta/fonts_for_downstream_tests.cmx"
component_name = "fonts_for_downstream_tests"
deps = [ ":font_provider" ]
}
fuchsia_package("pkg") {
package_name = "fonts"
deps = [
":font_provider_cm",
":font_provider_cmx",
":font_provider_cmx_tests",
]
}
build_type_config_data("build_type") {
for_pkg = "fonts"
}
fuchsia_component("font_provider_unit_tests_cmp") {
testonly = true
manifest = "meta/font_provider_bin_test.cml"
component_name = "font_provider_bin_test"
deps = [ ":font_provider_test" ]
}
fuchsia_test_package("font_provider_unit_tests") {
test_components = [ ":font_provider_unit_tests_cmp" ]
}
# Re-export:
# Group of all open-source font packages. This should be added to
# `universe_package_labels`.
group("open-fonts") {
deps = [ "collections:open-fonts" ]
}
# Re-export:
# Font collection for semi-hermetic downstream tests (e.g. Chromium) that need
# to use a fixed set of fonts.
group("downstream-test-fonts-collection") {
testonly = true
deps = [ "collections:downstream-test-fonts-collection" ]
}
# Re-export:
# Font collection for open-source products. This should be added to
# `base_package_labels` or `cache_package_labels`.
group("open-fonts-collection") {
testonly = true
deps = [ "collections:open-fonts-collection" ]
}
# Re-export:
# Empty font collection for products that spawn a font server but don't want any
# actual fonts. This should be added to `base_package_labels` or
# `cache_package_labels`.
group("empty-font-collection") {
deps = [ "collections:empty-font-collection" ]
}