blob: 192f13a1a23b13b9727f342f5af10a03d9b7441c [file] [log] [blame] [edit]
# Copyright 2018 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.
# Definitions to build each of the Fuchsia SDKs.
import("//build/config/build_api_module.gni")
import("//build/dart/toolchain.gni")
import("//build/fidl/toolchain.gni")
import("//build/sdk/config.gni")
import("//build/sdk/generate_final_idk.gni")
import("//build/sdk/sdk_collection.gni")
import("//build/sdk/sdk_documentation.gni")
import("//build/sdk/sdk_final_manifest_golden.gni")
import("//build/sdk/sdk_molecule.gni")
import("//tools/check-licenses/build/license_data.gni")
import("config.gni")
visibility = [ ":*" ]
# Another list of validation targets, these will only be built in the
# top-level build, and should depend on //sdk:final_fuchsia_idk.exported
# directly to validate its content.
_fuchsia_core_idk_final_validation_deps =
[ ":final_fuchsia_idk_manifest_golden" ]
if (host_os == "linux") {
_fuchsia_core_idk_final_validation_deps += [
# Run the Bazel SDK test suite against the final exported directory,
# TODO(fxbug.dev/124321): Make the Bazel SDK test suite runnable on MacOS!
"//build/bazel/bazel_sdk:bazel_sdk_tests_idk",
]
}
# A list of sdk_collection() targets that correspond to all
# IDK targets in the "public" and "partner" category. For now
# this is only the Fuchsia Core IDK, with the exceptional addition
# of //sdk:zircon_sysroot. See the documentation comment for the
# latter to understand why this is needed.
#
# Note that //sdk:zircon_sysroot simply depends on
# //zircon/public/sysroot/sdk:sysroot_sdk which is already
# a transitive dependency of //sdk:core, so technically adding
# this target here only ensures that `fx build sdk` will
# also create $OUTPUT_DIR/sdk/exported/zircon_sysroot/ by
# default, and should not affect other uses of _sdk_public_deps.
_sdk_public_deps = [
":core",
":zircon_sysroot",
]
# This default target should depend on all public or partner IDKs.
group("sdk") {
visibility += [ "//:*" ]
testonly = true
public_deps = _sdk_public_deps
data_deps = [ ":sdk_source_set_list" ]
deps = [ ":sdk_atom_manifest_goldens($target_toolchain)" ]
}
# This file contains the list of all source files used in sdk_source_set()
# targets reachable from //sdk:sdk. The schema is simply a JSON list, where
# each item is the path to a single source file, relative to the source
# directory. Path are not sorted and appear in order of metadata walk, which
# is unstable.
build_api_module("sdk_source_set_list") {
visibility += [ "//:*" ]
testonly = true
data_keys = [ "sdk_source_set_sources" ]
deps = _sdk_public_deps
}
# Create generated file for fidldoc to read.
generated_file("all_fidl_sdk_json") {
deps = [ "//sdk/fidl" ]
outputs = [ "$root_build_dir/all_fidl_sdk_json.txt" ]
data_keys = [ "fidl_json" ]
}
# Compatibility testing goldens for SDK publishable FIDLs.
# This is a list of scopes like { src = "", dst = "" } specifying which files
# to copy from the build directory into the source tree.
generated_file("compatibility_testing_goldens") {
visibility += [ "*" ]
testonly = true
deps = [
# Pulls in SDKs containing the FIDLs to generate golden files for
"//sdk",
]
outputs = [ "$root_build_dir/compatibility_testing_goldens.json" ]
output_conversion = "json"
data_keys = [ "compatibility_testing_goldens" ]
}
# Contains the list of all plasa fragment files, which have a dump of the
# public API surfaces.
generated_file("plasa_manifest") {
visibility += [ "//sdk/ctf/plasa:*" ]
testonly = true
data_keys = [ "plasa" ]
outputs = [ "$root_build_dir/manifest.plasa.json" ]
output_conversion = "json"
deps = _sdk_public_deps
}
# This targets generates a "final" IDK archive, including prebuilt binaries for
# several target_cpu architectures.
generate_final_idk("final_fuchsia_idk") {
visibility += [ "*" ]
output_name = "fuchsia_idk"
sdk_collection_label = ":core"
final_validation_target_labels = _fuchsia_core_idk_final_validation_deps
testonly = true
}
sdk_final_manifest_golden("final_fuchsia_idk_manifest_golden") {
golden = "manifests/fuchsia_idk.manifest"
idk_name = "fuchsia_idk"
idk_exported_label = ":final_fuchsia_idk.exported"
testonly = true
}
# NOTHING TO SEE HERE FOLKS.
#
# This build rule is an implementation detail. It should probably get
# consolidated with ":final_fuchsia_idk".
sdk_collection("core") {
visibility += [ "*" ]
id = sdk_id
category = "partner"
deps = [
# NOTE: Don't add any other sdk_molecules here. Instead, add atoms to the
# ":fuchsia_idk_atoms" sdk_molecule.
":fuchsia_idk_atoms",
]
}
# A "molecule" of SDK atoms exposing the stable and officially supported APIs
# and ABI of the Fuchsia platform.
#
# Due to limitations of the build system at the GN/Bazel boundary, this cannot
# contain testonly atoms. Libraries and packages for use in tests absolutely
# belong in the IDK, but unfortunately, before they can be added, the `testonly`
# attribute must be removed.
sdk_molecule("fuchsia_idk_atoms") {
visibility += [ "//vendor/*" ]
# Prebulilt libraries and packages must be built and included for all API
# levels they support. The sysroot includes prebuilt libraries.
deps = [
":core_cc_prebuilt_libraries",
":core_loadable_modules",
":core_sysroot",
]
if (!sdk_inside_supported_api_sub_build) {
# TODO(fxbug.dev/300271055): assert_no_deps that these targets do not
# depend on API level core_cc_source_libraries would be an exception.
deps += [
":core_bindlib",
# The C++ source libraries must be buildable at each supported API level
# but are only built once.
":core_cc_source_libraries",
":core_dart_library",
":core_data",
":core_documentation",
":core_licenses",
":version_history",
"//sdk/devices",
"//sdk/docs",
"//sdk/fidl",
# TODO(fxbug.dev/133231): Move this to the `deps` section of
# `fuchsia_idk_atoms` once we can actually build the packages at
# individual API levels.
":core_packages",
]
}
if (!sdk_no_host_tools) {
deps += [
":host_tools",
"//tools/docsgen:ref_docs_sdk",
]
}
}
group("tests_no_e2e") {
visibility += [ "*" ]
testonly = true
assert_no_deps = e2e_test_libs
deps = [
"//sdk/ctf/plasa:tests",
"//sdk/lib:tests",
]
}
group("tests") {
visibility += [ "*" ]
testonly = true
deps = [
":tests_no_e2e",
# `testing:tests` contains unit tests for sl4f, which depend on sl4f so it
# can't live inside `test_no_e2e`.
"//sdk/testing:tests",
]
}
sdk_atom("version_history") {
id = "sdk://version_history"
category = "partner"
meta = {
dest = "version_history.json"
source = "version_history.json"
schema = "version_history-22rnd667"
type = "version_history"
}
}
# License/rights related information for the SDK.
sdk_documentation("open_source") {
name = "open_source"
category = "public"
files = []
foreach(file,
[
"AUTHORS",
"LICENSE",
"PATENTS",
]) {
files += [
{
source = "//$file"
dest = file
},
]
}
}
# Licensing information for the 'libc'-style musl library.
sdk_documentation("musl_license") {
name = "musl_license"
category = "public"
files = [
{
source = "//zircon/third_party/ulib/musl/COPYRIGHT"
dest = "COPYRIGHT.musl"
},
]
}
# Build this target to generate a NOTICE file for the SDK.
# Uncomment the next line, build it, then manually copy the output
# to "//tools/check-licenses/assets/sdk/NOTICE.fuchsia"
# TODO(fxbug.dev/102264): Build the NOTICE file automatically during SDK generation.
#
#license_data("sdk_notice_gen") {
# target = "//sdk"
#}
# Notice file for all contents in the Fuchsia SDK.
# TODO(fxbug.dev/102264): Replace this with individual notices for each SDK element.
sdk_documentation("sdk_notice") {
name = "sdk_notice"
category = "public"
files = [
{
source = "//tools/check-licenses/assets/sdk/NOTICE.fuchsia"
dest = "NOTICE.fuchsia"
},
]
}
# A tiny SDK collection used to export the content of the Zircon sysroot
# This is only needed because several other parts of the Fuchsia build
# depend on $OUTPUT_DIR/sdk/exported/zircon_sysroot/ to be available
# and properly populated, see [1] for all details.
#
# Note that //zircon/public/sysroot/sdk:sysroot_sdk is already
# a transitive dependency of //sdk:core, so using the content of
# $OUTPUT_DIR/sdk/exported/core/ would be equivalent, except that
# this directory is much longer to build (since it contains host tools).
#
# [1] https://cs.opensource.google/search?q=zircon_sysroot&ss=fuchsia%2Ffuchsia
sdk_collection("zircon_sysroot") {
category = "internal"
deps = [ "//zircon/public/sysroot/sdk:sysroot_sdk" ]
}
# Tools and data used on a 'host' development machine; where host is often
# Linux or Mac OS.
sdk_molecule("host_tools") {
visibility += [ "//tools/docsgen:invoke_clidoc" ]
_host_tools = [
"//src/developer/debug/zxdb:zxdb_sdk",
"//src/developer/ffx:bin_sdk",
"//src/developer/ffx/plugins/assembly:sdk",
"//src/developer/ffx/plugins/audio:sdk",
"//src/developer/ffx/plugins/emulator:uefi_internal",
"//src/developer/ffx/plugins/coverage:sdk",
"//src/developer/ffx/plugins/package:sdk",
"//src/developer/ffx/plugins/product:sdk",
"//src/developer/ffx/plugins/scrutiny:sdk",
"//src/developer/ffx/plugins/test:sdk",
"//src/performance/trace2json:bin_sdk",
"//src/storage/bin/fvm:fvm_sdk",
"//src/storage/blobfs/tools:blobfs_sdk",
"//src/storage/minfs/tools:minfs_sdk",
"//src/storage/tools/blobfs-compression:blobfs-compression_sdk",
"//src/sys/pkg/bin/far:bin_sdk",
"//src/sys/pkg/bin/pm:pm_bin_sdk",
"//src/sys/pkg/testing/fake-omaha-client:bin_sdk",
"//tools/bindc:bindc_sdk",
"//tools/bootserver_old:bootserver_sdk",
"//tools/cmc:cmc_sdk",
"//tools/configc:configc_sdk",
"//tools/fidl/fidlc:fidl-format_sdk",
"//tools/fidl/fidlc:fidlc_sdk",
"//tools/fidl/fidlgen_cpp:fidlgen_cpp_sdk",
"//tools/fidl/fidlgen_hlcpp:fidlgen_hlcpp_sdk",
"//tools/fidl/fidlgen_rust:fidlgen_rust_sdk",
"//tools/fidlcat:fidlcat_sdk",
"//tools/funnel:funnel_sdk",
"//tools/net/device-finder:device-finder_sdk",
"//tools/sdk-tools/fpublish:fpublish_sdk",
"//tools/sdk-tools/fserve:fserve_sdk",
"//tools/sdk-tools/fssh:fssh_sdk",
"//tools/symbolizer:sdk",
"//zircon/tools/merkleroot:merkleroot_sdk",
"//zircon/tools/zbi:zbi_sdk",
# TODO(fxbug.dev/95661): Remove these once the emulators are available independently.
"//src/developer/ffx/plugins/emulator:aemu_internal",
"//src/developer/ffx/plugins/emulator:qemu_internal",
]
_toolchains = []
if (host_os == "linux" && sdk_cross_compile_host_tools) {
_toolchains += [
host_x64_toolchain,
host_arm64_toolchain,
]
} else {
_toolchains = [ host_toolchain ]
}
deps = []
foreach(toolchain, _toolchains) {
foreach(dep, _host_tools) {
deps += [ "$dep($toolchain)" ]
}
}
}
sdk_molecule("core_bindlib") {
deps = [
"//src/devices/bind/fuchsia:fuchsia_sdk",
"//src/devices/bind/fuchsia.arm.platform:fuchsia.arm.platform_sdk",
"//src/devices/bind/fuchsia.nxp.platform:fuchsia.nxp.platform_sdk",
"//src/devices/bind/fuchsia.platform:fuchsia.platform_sdk",
]
}
sdk_molecule("core_packages") {
deps = [
"//src/lib/fuchsia-component-test/realm_builder_server:realm_builder_server_sdk",
"//src/performance/memory/heapdump/collector:collector_sdk",
]
}
sdk_molecule("core_data") {
deps = [
# TODO(ddorwin): Rename these to make it clear that they are data (e.g., _shards).
"//sdk/lib/inspect",
"//sdk/lib/sys/component:realm_builder_shard_sdk",
"//sdk/lib/syslog",
"//sdk/lib/vulkan",
"//src/developer/ffx/lib/symbol-index:symbol-index-sdk",
]
}
sdk_molecule("core_documentation") {
deps = [ "//third_party/Vulkan-Loader:vulkan_license" ]
}
sdk_molecule("core_loadable_modules") {
deps = [ "//src/lib/vulkan:vulkan_layers" ]
}
sdk_molecule("core_dart_library") {
deps = [ "//sdk/testing/sl4f/client:client_sdk($dart_toolchain)" ]
}
# C/C++ code that must be provided as prebuilt libraries for each supported API
# level. Must export symbols with C linkage.
sdk_molecule("core_cc_prebuilt_libraries") {
deps = [
"//sdk/lib/fdio:fdio_sdk",
"//sdk/lib/svc:svc_sdk",
"//src/devices/bin/driver_runtime:driver_runtime_sdk",
"//src/performance/memory/heapdump/instrumentation:instrumentation_sdk",
"//third_party/Vulkan-Loader:libvulkan_sdk",
"//zircon/system/ulib/async-default:async-default_sdk",
"//zircon/system/ulib/async-loop:async-loop-default_sdk",
"//zircon/system/ulib/sync:sync_sdk",
"//zircon/system/ulib/syslog:syslog_sdk",
"//zircon/system/ulib/trace-engine:trace-engine_sdk",
"//zircon/system/ulib/trace-provider:trace-provider-so_sdk",
]
if (!sdk_inside_supported_api_sub_build) {
deps += [
# TODO(https://fxbug.dev/132284): Fix compilation of the following atoms
# when targeting older API levels and move to the list above.
"//sdk/lib/magma_client:magma_client_sdk",
]
}
}
# C++ code that is provided as source in the SDK. Must be buildable at each
# supported API level, though this is not part of the build.
# Prefer providing source code if all dependencies are available in the SDK.
sdk_molecule("core_cc_source_libraries") {
deps = [
"//sdk/lib/async-loop-testing/cpp:cpp_sdk",
"//sdk/lib/async_patterns/cpp:cpp_sdk",
"//sdk/lib/async_patterns/testing/cpp:cpp_sdk",
"//sdk/lib/component/incoming/cpp:cpp_sdk",
"//sdk/lib/component/outgoing/cpp:cpp_sdk",
"//sdk/lib/driver/component/cpp:cpp_sdk",
"//sdk/lib/driver/devfs/cpp:cpp_sdk",
"//sdk/lib/driver/testing/cpp:cpp_sdk",
"//sdk/lib/fidl/cpp:cpp_sdk",
"//sdk/lib/fidl/cpp/wire:wire_sdk",
"//sdk/lib/fidl_driver:fidl_driver_natural_sdk",
"//sdk/lib/fidl_driver:fidl_driver_sdk",
"//sdk/lib/fit-promise:fit-promise_sdk",
"//sdk/lib/input_report_reader:input_report_reader_sdk",
"//sdk/lib/inspect/service/cpp:cpp_sdk",
"//sdk/lib/magma_common:magma_common_sdk",
"//sdk/lib/media/cpp:cpp_sdk",
"//sdk/lib/stdcompat:stdcompat_sdk",
"//sdk/lib/sys/component/cpp/testing:cpp_library_sdk",
"//sdk/lib/sys/cpp:cpp_sdk",
"//sdk/lib/sys/cpp/testing:cpp_sdk",
"//sdk/lib/sys/inspect/cpp:cpp_sdk",
"//sdk/lib/sys/testing:testing_sdk",
"//sdk/lib/syslog/structured_backend:structured_backend_sdk",
"//sdk/lib/trace",
"//sdk/lib/ui/scenic/cpp:cpp_sdk",
"//sdk/lib/ui/scenic/cpp/testing:testing_sdk",
"//sdk/lib/vfs/cpp:cpp_sdk",
"//src/lib/fidl/cpp:cpp_sdk",
"//src/lib/fidl/cpp:hlcpp_conversion_sdk",
"//src/lib/fidl/cpp:natural_ostream_sdk",
"//zircon/system/ulib/async:async-cpp_sdk",
"//zircon/system/ulib/async:async_sdk",
"//zircon/system/ulib/async-loop:async-loop-cpp_sdk",
"//zircon/system/ulib/async-loop:async-loop_sdk",
"//zircon/system/ulib/async-testing:async-testing_sdk",
"//zircon/system/ulib/inspect:inspect_sdk",
"//zircon/system/ulib/trace:trace_sdk",
]
}
sdk_molecule("core_sysroot") {
deps = [ "//zircon/public/sysroot/sdk:sysroot_sdk" ]
}
# License/copyright files for the SDK.
sdk_molecule("core_licenses") {
deps = [
":musl_license",
":open_source",
":sdk_notice",
]
}
sdk_molecule("platform_fidls") {
deps = [
"//sdk/fidl/fuchsia.debugger:fuchsia.debugger_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.exception:fuchsia.exception_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.hardware.platform.device:fuchsia.hardware.platform.device_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.hardware.sdmmc:fuchsia.hardware.sdmmc_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.sys2:fuchsia.sys2_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.test.manager:fuchsia.test.manager_sdk($fidl_toolchain)",
]
}
# This SDK molecule is a collection of libraries only available to the in-tree
# Bazel build. See //sdk:platform.
sdk_molecule("platform_libs") {
deps = [
":version_history",
"//sdk/lib/driver/compat/cpp:cpp_sdk",
"//sdk/lib/syslog/cpp:backend_fuchsia_lib_sdk",
"//src/developer/debug/ipc:ipc_sdk",
"//src/developer/debug/shared:shared_sdk",
"//src/devices/block/lib/sdmmc:sdmmc_sdk",
"//src/lib/containers/cpp:cpp_sdk",
"//src/lib/diagnostics/accessor2logger:accessor2logger_sdk",
"//src/lib/elflib:elflib_sdk",
"//src/lib/fxl:fxl_sdk",
"//src/lib/process:process_sdk",
"//third_party/re2:re2_sdk",
"//zircon/public/sysroot/sdk:sysroot_sdk",
]
}
# A collection of SDK atoms used to populate the @internal_sdk Bazel
# repository. Only used for the GN > Bazel migration of the build system.
# Content are bound to change a lot. Nothing else should rely on this.
# See https://fxrev.dev/737558 and https://fxbug.dev/113063.
sdk_collection("platform") {
visibility += [ "*" ]
id = sdk_id
category = "internal"
deps = [
":platform_fidls",
":platform_libs",
]
}
if (is_host) {
# A collection that only contains host tools that are used by the
# Fuchsia build system itself. In particular, this is where
# `ffx` will pick companion host tools when running in-tree.
sdk_collection("host_tools.internal") {
id = sdk_id
category = "partner"
# This is a collection of host tools that are used _by_ ffx itself to
# perform actions within the build. As such, it CANNOT have a dependency
# the main ffx binary, or any of the subtools, or it will cause all
# ffx_action()'s using subtools to be dependent on the compilation of the
# main ffx binary (and/or all subtools), adding minutes to any incremental
# build of an ffx subtool.
assert_no_deps = [
"//src/developer/ffx:bin_sdk",
"//src/developer/ffx:ffx_tool",
"//src/developer/ffx/frontends/ffx:ffx_bin($host_toolchain)",
]
# This (sorta) restricts the use of this group to instances of the
# `ffx_action()` template, which uses the group below (which doesn't have
# visibility restrictions to have a dependency on this group.)
visibility = []
visibility = [ "//src/developer/ffx/build:internal_sdk_tools_for_ffx" ]
deps = [
"//src/developer/debug/zxdb:zxdb_sdk",
"//src/storage/bin/fvm:fvm_sdk",
"//src/storage/blobfs/tools:blobfs_sdk",
"//src/storage/minfs/tools:minfs_sdk",
"//src/storage/tools/blobfs-compression:blobfs-compression_sdk",
"//src/sys/pkg/bin/far:bin_sdk",
"//src/sys/pkg/bin/pm:pm_bin_sdk",
"//tools/bootserver_old:bootserver_sdk",
"//tools/cmc:cmc_sdk",
"//tools/fidl/fidlc:fidl-format_sdk",
"//tools/fidl/fidlc:fidlc_sdk",
"//tools/fidl/fidlgen_hlcpp:fidlgen_hlcpp_sdk",
"//tools/fidlcat:fidlcat_sdk",
"//tools/net/device-finder:device-finder_sdk",
"//tools/symbolizer:sdk",
"//zircon/tools/merkleroot:merkleroot_sdk",
"//zircon/tools/zbi:zbi_sdk",
]
}
}
# Host tools necessary to build the IDK. Keep this minimal, so IDK subbuilds can
# start running as quickly as possible.
group("idk_build_tools") {
visibility += [
"//build/*",
"//vendor/*",
]
deps = [
"//src/sys/pkg/bin/package-tool($host_toolchain)",
"//tools/bindc:bin($host_toolchain)",
"//tools/cmc:cmc($host_toolchain)",
"//tools/fidl/fidl_api_summarize($host_toolchain)",
"//tools/fidl/fidlc:fidl-format($host_toolchain)",
"//tools/fidl/fidlc:fidl-lint($host_toolchain)",
"//tools/fidl/fidlc($host_toolchain)",
"//tools/fidl/fidlgen_cpp($host_toolchain)",
"//tools/fidl/fidlgen_rust($host_toolchain)",
"//zircon/tools/zither($host_toolchain)",
]
}
# Firmware IDK. See /src/firmware/README.md
generate_final_idk("firmware") {
output_name = "firmware"
sdk_collection_label = ":firmware_collection"
final_validation_target_labels = [ ":firmware_manifest_golden" ]
}
sdk_final_manifest_golden("firmware_manifest_golden") {
golden = "manifests/firmware.manifest"
idk_name = "firmware"
idk_exported_label = ":firmware.exported"
}
sdk_collection("firmware_collection") {
category = "experimental"
deps = [
"//sdk/docs:firmware",
"//sdk/lib/zbi-format:zbi-format_sdk",
"//src/firmware/lib/abr:abr_sdk",
"//src/firmware/lib/storage:storage_sdk",
"//src/firmware/lib/zbi:zbi_sdk",
"//src/firmware/lib/zircon_boot:zircon_boot_sdk",
"//third_party/android/platform/external/avb:avb_sdk",
"//zircon/public/sysroot/sdk:sysroot_sdk",
]
}
# Tools Fuchsia driver developers used on the host platform; where host is often
# Linux or Mac OS.
# WARNING (fxbug.dev/116642): the driver SDK will soon be removed.
# DO NOT ADD anything here!
sdk_molecule("driver_host_tools") {
_driver_host_tools = [
"//src/devices/tools/fidlgen_banjo:fidlgen_banjo_bin_sdk",
"//tools/bindc:bindc_sdk",
"//tools/fidl/fidlgen_cpp:fidlgen_cpp_sdk",
# TODO(fxbug.dev/80525): Change to "fidlgen_cpp" once Bazel SDK uses the non-experimental name.
"//tools/fidl/fidlgen_cpp:fidlgen_cpp_experimental_driver_only_toolchain_sdk",
]
if (host_os == "linux" && sdk_cross_compile_host_tools) {
_toolchains = [
host_x64_toolchain,
host_arm64_toolchain,
]
} else {
_toolchains = [ host_toolchain ]
}
deps = []
foreach(toolchain, _toolchains) {
foreach(dep, _driver_host_tools) {
deps += [ "$dep($toolchain)" ]
}
}
}
# WARNING (fxbug.dev/116642): the driver SDK will soon be removed.
# DO NOT ADD anything here!
sdk_molecule("bind") {
deps = [
"//src/devices/bind/fuchsia:fuchsia_sdk",
"//src/devices/bind/fuchsia.acpi:fuchsia.acpi_sdk",
"//src/devices/bind/fuchsia.i2c:fuchsia.i2c_sdk",
"//src/devices/bind/fuchsia.pci:fuchsia.pci_sdk",
"//src/devices/bind/fuchsia.test:fuchsia.test_sdk",
"//src/devices/bind/fuchsia.usb:fuchsia.usb_sdk",
]
}
# Controls the maximum number of simultaneous subbuilds.
pool("subbuild_pool") {
depth = sdk_max_simultaneous_sub_builds
}
# WARNING (fxbug.dev/116642): the driver SDK will soon be removed.
# DO NOT ADD anything here!
sdk_molecule("driver_fidl") {
deps = [
"//sdk/fidl/fuchsia.device.fs:fuchsia.device.fs_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.driver.framework:fuchsia.driver.framework_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.hardware.i2c:fuchsia.hardware.i2c_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.hardware.pci:fuchsia.hardware.pci_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.wlan.common:fuchsia.wlan.common_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.wlan.ieee80211:fuchsia.wlan.ieee80211_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.wlan.internal:fuchsia.wlan.internal_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.wlan.phyimpl:fuchsia.wlan.phyimpl_sdk($fidl_toolchain)",
"//sdk/fidl/fuchsia.wlan.softmac:fuchsia.wlan.softmac_sdk($fidl_toolchain)",
]
}
# An SDK collection providing SDK atoms used for driver development.
# Their API/ABI is not stable at all. Note: this cannot contain
# testonly atoms.
sdk_collection("driver") {
visibility += [ "*" ]
id = sdk_id
category = "experimental"
deps = [
# NOTE: Don't add any other sdk_molecules here. Instead, add atoms to the
# ":fuchsia_idk_atoms" or ":driver_atoms" sdk_molecules.
":driver_atoms",
]
}
# An SDK molecule providing SDK atoms used for driver development. Their API/ABI
# is not stable at all. Note: this cannot contain testonly atoms.
sdk_molecule("driver_atoms") {
category = "experimental"
deps = [
":bind",
":driver_fidl",
":fuchsia_idk_atoms",
"//sdk/lib/component/incoming/cpp:cpp_sdk",
"//sdk/lib/component/outgoing/cpp:cpp_sdk",
"//sdk/lib/driver/component/cpp:cpp_sdk",
"//sdk/lib/driver/devfs/cpp:cpp_sdk",
"//sdk/lib/driver/runtime:driver_runtime_cpp_sdk",
"//sdk/lib/driver/runtime:driver_runtime_sdk",
"//sdk/lib/driver_component:driver_component",
"//sdk/lib/fidl/cpp/wire:wire_sdk",
"//sdk/lib/fidl_driver:fidl_driver_natural_sdk",
"//sdk/lib/fidl_driver:fidl_driver_sdk",
"//sdk/lib/input_report_reader:input_report_reader_sdk",
"//sdk/lib/inspect/component/cpp:inspect_component_cpp_sdk",
"//src/devices/bin/driver_runtime:driver_runtime_sdk",
"//src/devices/lib/mmio:mmio_sdk",
"//src/lib/fidl/cpp:cpp_sdk",
"//zircon/system/ulib/hwreg:hwreg_sdk_sdk",
]
if (!sdk_no_host_tools) {
deps += [ ":driver_host_tools" ]
}
}
action("get_atoms_from_sdk_manifest") {
testonly = true
deps = []
inputs = []
outputs = []
sdk_manifests = []
foreach(dep, _sdk_public_deps) {
name = get_label_info(dep, "name")
copy_dep = dep + "_final_manifest"
foreach(output, get_target_outputs(copy_dep)) {
sdk_manifests += [ rebase_path(output, root_build_dir) ]
inputs += [ output ]
}
deps += [ copy_dep ]
outputs += [ "$target_gen_dir/$name" ]
}
script = "//sdk/ctf/build/scripts/get_atoms_from_sdk_manifest.py"
args = [ "--sdk_manifests" ]
args += sdk_manifests
args += [
"--output_path",
rebase_path(target_gen_dir, root_build_dir),
]
}
golden_files("sdk_atom_manifest_goldens") {
testonly = true
comparisons = []
sdk_manifests = get_target_outputs(":get_atoms_from_sdk_manifest")
foreach(manifest, sdk_manifests) {
name = get_path_info(manifest, "name")
comparisons += [
{
golden = "//sdk/manifests/atoms/${name}.golden"
candidate = manifest
},
]
}
deps = [ ":get_atoms_from_sdk_manifest($target_toolchain)" ]
}
# These markers are used to define dependencies on FIDL bindings
# so host tools can assert_no_deps to make sure all host tools
# in the SDK are only using FIDL libraries included in the SDK.
group("marker-cts") {
visibility += [ "*" ]
}
group("marker-excluded") {
visibility += [ "*" ]
}
group("marker-experimental") {
visibility += [ "*" ]
}
group("marker-internal") {
visibility += [ "*" ]
}
group("marker-unknown") {
visibility += [ "*" ]
}
group("marker-partner") {
visibility += [ "*" ]
}
group("marker-partner_internal") {
visibility += [ "*" ]
}
group("marker-public") {
visibility += [ "*" ]
}
# Marker for the allow list for use in a subtool.
group("marker-allowed-for-ffx-subtool") {
visibility += [ "*" ]
}