blob: 6ee4343a280cd8659d4ff37abbdb2adc77042b1d [file] [log] [blame] [edit]
# 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/component/component_id_index.gni")
import("//build/config.gni")
import("//build/package.gni")
import("//build/test/test_package.gni")
import("//src/sys/build/components.gni")
source_set("lib") {
sources = [
"allow_list.cc",
"allow_list.h",
"cache_control.cc",
"cache_control.h",
"component_controller_impl.cc",
"component_controller_impl.h",
"component_event_provider_impl.cc",
"component_event_provider_impl.h",
"component_id_index.cc",
"component_id_index.h",
"constants.h",
"cpu_watcher.cc",
"cpu_watcher.h",
"crash_introspector.cc",
"crash_introspector.h",
"debug_info_retriever.cc",
"debug_info_retriever.h",
"dynamic_library_loader.cc",
"dynamic_library_loader.h",
"environment_controller_impl.cc",
"environment_controller_impl.h",
"hub/component_hub.cc",
"hub/component_hub.h",
"hub/hub.cc",
"hub/hub.h",
"hub/hub_info.cc",
"hub/hub_info.h",
"hub/realm_hub.cc",
"hub/realm_hub.h",
"job_provider_impl.cc",
"job_provider_impl.h",
"log_connector_impl.cc",
"log_connector_impl.h",
"moniker.cc",
"moniker.h",
"namespace.cc",
"namespace.h",
"namespace_builder.cc",
"namespace_builder.h",
"policy_checker.cc",
"policy_checker.h",
"realm.cc",
"realm.h",
"runner_holder.cc",
"runner_holder.h",
"scheme_map.cc",
"scheme_map.h",
"service_provider_dir_impl.cc",
"service_provider_dir_impl.h",
"storage_watchdog.cc",
"storage_watchdog.h",
"system_diagnostics_directory.cc",
"system_diagnostics_directory.h",
"util.cc",
"util.h",
]
public_deps = [
"//garnet/lib/loader",
"//garnet/public/lib/json",
"//sdk/fidl/fuchsia.hardware.power.statecontrol",
"//sdk/fidl/fuchsia.process",
"//sdk/fidl/fuchsia.sys",
"//sdk/fidl/fuchsia.sys.internal",
"//sdk/fidl/fuchsia.sys.test",
"//sdk/fidl/fuchsia.sys2",
"//sdk/lib/sys/cpp",
"//sdk/lib/sys/inspect/cpp",
"//src/lib/cmx",
"//src/lib/fsl",
"//src/lib/fxl",
"//src/lib/loader_service",
"//src/lib/pkg_url",
"//third_party/googletest:gtest_prod",
"//zircon/public/lib/fit",
"//zircon/public/lib/zx",
"//zircon/public/lib/zxc",
"//zircon/system/ulib/async-loop:async-loop-cpp",
"//zircon/system/ulib/async-loop:async-loop-default",
"//zircon/system/ulib/fdio-caller",
"//zircon/system/ulib/fs",
"//zircon/system/ulib/inspector",
"//zircon/system/ulib/syslog",
"//zircon/system/ulib/task-utils",
"//zircon/system/ulib/trace",
"//zircon/system/ulib/trace-provider:trace-provider-with-fdio",
# TODO(fxbug.dev/57392): Move it back to //third_party once unification completes.
"//zircon/third_party/rapidjson",
]
configs += [ "//build/config:all_source" ]
# TODO(fxbug.dev/58162): delete the below and fix compiler warnings
configs += [ "//build/config:Wno-conversion" ]
}
source_set("appmgr_for_test") {
testonly = true
sources = [
"appmgr.cc",
"appmgr.h",
"lifecycle.cc",
"lifecycle.h",
"startup_service.cc",
"startup_service.h",
]
public_deps = [
":lib",
"fidl/fuchsia.appmgr",
"//sdk/fidl/fuchsia.process.lifecycle:fuchsia.process.lifecycle",
"//sdk/fidl/fuchsia.process.lifecycle:fuchsia.process.lifecycle_llcpp",
"//sdk/fidl/fuchsia.sys",
"//sdk/fidl/fuchsia.sys.test",
"//sdk/lib/sys/cpp",
"//src/lib/fxl",
"//src/sys/lib/stdout-to-debuglog/cpp",
"//zircon/public/lib/zx",
"//zircon/system/ulib/fidl-async:fidl-async-cpp",
"//zircon/system/ulib/fs",
]
}
executable("bin") {
output_name = "appmgr"
sources = [
"appmgr.cc",
"appmgr.h",
"lifecycle.cc",
"lifecycle.h",
"main.cc",
"startup_service.cc",
"startup_service.h",
]
deps = [
":lib",
"fidl/fuchsia.appmgr",
"//sdk/fidl/fuchsia.process.lifecycle:fuchsia.process.lifecycle",
"//sdk/fidl/fuchsia.process.lifecycle:fuchsia.process.lifecycle_llcpp",
"//sdk/lib/sys/cpp",
"//src/sys/lib/stdout-to-debuglog/cpp",
"//zircon/system/ulib/fidl-async:fidl-async-cpp",
]
# appmgr starts early in the boot sequence before shared libraries from
# packages are available, so it has to avoid dynamically linking against
# libraries outside of /boot/lib. These rules ensure that appmgr statically
# links against the C++ standard library and prevents dependencies on some
# shared library targets that are easy to pull in unintentionally.
configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
assert_no_deps = [ "//garnet/public/lib/fostr/*" ]
}
executable("unittest_bin") {
testonly = true
output_name = "appmgr_unittests"
sources = [
"allow_list_unittest.cc",
"component_controller_unittest.cc",
"component_event_provider_unittest.cc",
"component_id_index_unittest.cc",
"cpu_watcher_unittest.cc",
"hub/hub_holder_unittest.cc",
"log_connector_impl_unittest.cc",
"moniker_unittest.cc",
"namespace_builder_unittest.cc",
"namespace_unittest.cc",
"policy_checker_unittest.cc",
"scheme_map_unittest.cc",
"service_provider_dir_unittest.cc",
"storage_unittest.cc",
"storage_watchdog_unittest.cc",
"util_unittest.cc",
]
deps = [
":appmgr_for_test",
":lib",
"//garnet/public/lib/gtest",
"//sdk/fidl/fuchsia.sys.internal",
"//sdk/lib/sys/cpp",
"//sdk/lib/sys/cpp/testing:unit",
"//sdk/lib/vfs/cpp",
"//src/lib/fxl/test:gtest_main",
"//src/testing/fidl:placeholders",
"//third_party/googletest:gmock",
"//zircon/system/ulib/memfs",
]
# TODO(fxbug.dev/58162): delete the below and fix compiler warnings
configs += [ "//build/config:Wno-conversion" ]
}
fuchsia_package_with_single_component("appmgr") {
manifest = "meta/appmgr.cml"
deps = [ ":bin" ]
}
config_data("appmgr_scheme_config") {
for_pkg = "appmgr"
sources = [ "scheme_map.config" ]
outputs = [ "scheme_map/default.config" ]
}
# Supply a component ID index to appmgr. This index contains component ID
# entries for components whose source-code lives in this repository
# (fuchsia.git).
component_id_index("core_component_id_index") {
source = "config/core_component_id_index.json"
}
# If this target is included in the build, all components are allowed to use
# isolated-persistent-storage, even if they are not in the component ID index.
component_id_index("component_id_index_no_restrict_storage") {
source = "config/component_id_index_no_restrict_storage.json"
}
executable("test_component_using_storage_bin") {
output_name = "test_component_using_storage"
sources = [ "test/test_component_using_storage.cc" ]
}
fuchsia_component("test_component_using_storage") {
deps = [ ":test_component_using_storage_bin" ]
manifest = "meta/test_component_using_storage.cmx"
}
fuchsia_unittest_package("appmgr_unittests") {
deps = [
":test_component_using_storage",
":unittest_bin",
]
manifest = "meta/appmgr_unittests.cmx"
test_specs = {
log_settings = {
max_severity = "ERROR"
}
}
}
group("tests") {
testonly = true
deps = [
":appmgr_unittests",
"integration_tests",
]
}