| # 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/config/fuchsia/platform_version.gni") |
| import("//build/config/fuchsia/target_api_level.gni") |
| import("//build/dart/toolchain.gni") |
| import("//build/fidl/toolchain.gni") |
| import("//build/sdk/config.gni") |
| import("//build/sdk/idk.gni") |
| import("//build/sdk/idk_archive.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 = [ ":*" ] |
| |
| # Verify that `override_target_api_level` is actually supported. |
| if (override_target_api_level != "PLATFORM") { |
| _override_is_supported = false |
| foreach(supported_level, platform_version.build_time_supported_api_levels) { |
| if (supported_level == override_target_api_level) { |
| _override_is_supported = true |
| } |
| } |
| |
| # TODO(https://fxbug.dev/330709069): We should actually assert this, but doing |
| # so breaks some builders that are out of sync with the support levels. We |
| # should remove those builders and make this an assertion. |
| if (!_override_is_supported) { |
| print( |
| "`override_target_api_level` (${override_target_api_level}) is not one of the supported API levels: ${platform_version.build_time_supported_api_levels}") |
| print("Attempting to build anyways, but this may not go well...") |
| } |
| } |
| |
| # 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" ] |
| } |
| |
| # 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 |
| } |
| |
| # 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 |
| } |
| |
| # Generates, validates, and archive the "final" IDK, including prebuilt binaries |
| # for several target_cpu architectures and API levels. |
| group("final_fuchsia_idk") { |
| visibility += [ "*" ] |
| deps = [ |
| ":final_fuchsia_idk.archive", |
| ":final_fuchsia_idk.exported", |
| ":final_fuchsia_idk.validation", |
| ] |
| testonly = true |
| } |
| |
| # This targets generates a "final" IDK archive, including prebuilt binaries for |
| # several target_cpu architectures. |
| idk("final_fuchsia_idk.exported") { |
| visibility += [ "*" ] |
| output_name = "fuchsia_idk" |
| sdk_collection_label = ":core" |
| target_cpus = idk_target_cpus |
| api_levels = platform_version.build_time_supported_api_levels |
| |
| # TODO(https://fxbug.dev/306723826): Deal with the fact that the mac builders |
| # are too slow to enable this setting, and therefore the mac IDK won't have |
| # per-api-level prebuilts. |
| if (host_os == "mac") { |
| api_levels = [] |
| } |
| } |
| |
| idk_archive("final_fuchsia_idk.archive") { |
| visibility += [ "*" ] |
| idk = ":final_fuchsia_idk.exported" |
| idk_output_name = "fuchsia_idk" |
| } |
| |
| group("final_fuchsia_idk.validation") { |
| deps = [] |
| if (host_os == "linux") { |
| deps += [ |
| # Not everything builds on the mac builders, so not everything shows up in |
| # the golden files. |
| # |
| # TODO(https://fxbug.dev/306723826): Deal with the fact that the mac |
| # builders are inconsistent. |
| ":final_fuchsia_idk_manifest_golden", |
| |
| # Run the Bazel SDK test suite against the final exported directory, |
| # TODO(https://fxbug.dev/42075205): Make the Bazel SDK test suite runnable on MacOS! |
| "//build/bazel/bazel_sdk:bazel_sdk_tests_idk", |
| ] |
| } |
| 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" |
| } |
| |
| # 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 += [ "*" ] |
| |
| category = "partner" |
| id = sdk_id |
| |
| deps = [ |
| # NOTE: Don't add any other sdk_molecules here. Instead, add atoms to the |
| # ":fuchsia_idk_atoms" or ":fuchsia_idk_atoms_host_tools" 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/*" ] |
| |
| category = "partner" |
| |
| deps = [ ":fuchsia_idk_atoms_for_each_api_level_and_platform" ] |
| |
| if (override_target_api_level == "PLATFORM") { |
| deps += [ |
| # Do not add to this list. Instead, add new items to |
| # fuchsia_idk_atoms_independent_of_api_level, which verifies there are no |
| # API level dependencies. |
| ":fuchsia_idk_atoms_independent_of_api_level", |
| |
| # There are very limited exceptions that do depend on API level but are |
| # only built at "PLATFORM". |
| ":fuchsia_idk_atoms_for_platform_only", |
| ] |
| } else { |
| deps += [ ":fuchsia_idk_atoms_for_each_api_level" ] |
| } |
| |
| host_tools_deps = [ |
| # These tests are meant to run on hosts, so they are more like a "host tool" |
| # than any other category. |
| # |
| # TODO(b/330373943): Figure out what building host tools for |
| # "each API level" means when these host tests are versioned. |
| ":fuchsia_idk_atoms_host_tests", |
| ":fuchsia_idk_atoms_host_tools", |
| ] |
| } |
| |
| # Prebuilt libraries (including the sysroot) must be built and included for all |
| # API levels they support. They are also built at `PLATFORM` (a.k.a., the |
| # API-level-agnostic build, a.k.a., the default platform build), for backwards |
| # compatibility with IDK users that don't yet know about per-API-level |
| # prebuilts. |
| # |
| # TODO(https://fxbug.dev/310006516): Move all these into |
| # `fuchsia_idk_atoms_for_each_api_level` once all IDK users are using the |
| # per-API-level artifacts. |
| sdk_molecule("fuchsia_idk_atoms_for_each_api_level_and_platform") { |
| category = "partner" |
| deps = [ |
| ":core_cc_prebuilt_libraries", |
| ":core_packages_for_each_api_level_and_platform", |
| ":core_sysroot", |
| ] |
| |
| # Successfully building the test at each API level is the test. |
| non_sdk_deps = [ "//zircon/system:availability_test" ] |
| } |
| |
| # Prebuilt libraries and packages that are built exclusively for the API levels |
| # SDK users can target (not `PLATFORM`). |
| sdk_molecule("fuchsia_idk_atoms_for_each_api_level") { |
| category = "partner" |
| deps = [ ":core_packages" ] |
| } |
| |
| if (override_target_api_level == "PLATFORM") { |
| # Do not add dependencies to this target without a really good reason. |
| # Most dependencies should be built at every API level (add to |
| # :fuchsia_idk_atoms_for_each_api_level) or be verifiably independent of the |
| # API level (add to :fuchsia_idk_atoms_independent_of_api_level). |
| sdk_molecule("fuchsia_idk_atoms_for_platform_only") { |
| category = "partner" |
| deps = [ |
| # The C++ source libraries must be buildable at each supported API level |
| # but are only built once. |
| ":core_cc_source_libraries", |
| |
| # This target compiles the FIDL files, but the output used in the SDK is |
| # not specific to any API level. |
| "//sdk/fidl", |
| |
| # TODO(https://fxbug.dev/327223536): `loadable_modules` (a.k.a., the |
| # "Vulkan layers") support being built at individual API levels, but each |
| # of the subbuilds currently puts the build files at the same path, so all |
| # but one of them gets clobbered. Give `loadable_modules` the proper |
| # per-API-level treatment and move this to |
| # :fuchsia_idk_atoms_for_each_api_level_and_platform. |
| ":core_loadable_modules", |
| ] |
| } |
| |
| # IDK atoms that are independent of a specific API level. |
| # This is enforced by an assert_no_deps. |
| sdk_molecule("fuchsia_idk_atoms_independent_of_api_level") { |
| category = "partner" |
| |
| # The following serve as a proxy for the building of FIDL files. A |
| # dependency on these suggests that there is a dependency on FIDL |
| # interface(s), which would likely mean that the code must be built at each |
| # API level and should be in a different molecule.. |
| assert_no_deps = [ |
| "//tools/fidl/fidl_api_diff:host", |
| "//tools/fidl/fidl_api_summarize:fidl_api_summarize($host_toolchain)", |
| "//tools/fidl/fidlc:fidl-lint.host", |
| ] |
| |
| deps = [ |
| ":core_bindlib", |
| ":core_dart_library", |
| ":core_data", |
| ":core_documentation", |
| ":core_licenses", |
| ":version_history", |
| "//sdk/devices", |
| "//sdk/docs", |
| ] |
| } |
| } |
| |
| # IDK atoms that are host tools. These may rely on an API level because they |
| # are not shipped to devices. |
| sdk_molecule("fuchsia_idk_atoms_host_tools") { |
| category = "partner" |
| deps = [ |
| ":host_tools", |
| "//tools/docsgen:ref_docs_sdk", |
| ] |
| } |
| |
| sdk_molecule("fuchsia_idk_atoms_host_tests") { |
| category = "partner" |
| deps = [ ":core_experimental_python_e2e_tests" ] |
| } |
| |
| 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(https://fxbug.dev/42053181): 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(https://fxbug.dev/42053181): 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") { |
| # This collection is not included in any SDK and could be a standard `group()` |
| # except that there are shell scripts that expect |
| # `$OUTPUT_DIR/sdk/exported/zircon_sysroot/` to be populated, |
| # TODO(https://fxbug.dev/331962496): Find a solution that doesn't depend on |
| # sdk_* templates. |
| category = "excluded" |
| |
| 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" ] |
| |
| category = "partner" |
| |
| _host_tools = [ |
| "//src/developer/debug/zxdb:zxdb_sdk", |
| "//src/developer/ffx:bin_sdk", |
| "//src/developer/ffx/plugins/agis:sdk", |
| "//src/developer/ffx/plugins/assembly:sdk", |
| "//src/developer/ffx/plugins/audio:sdk", |
| "//src/developer/ffx/plugins/driver:sdk", |
| "//src/developer/ffx/plugins/fuzz:sdk", |
| "//src/developer/ffx/plugins/emulator:uefi_internal", |
| "//src/developer/ffx/plugins/coverage:sdk", |
| "//src/developer/ffx/plugins/emulator:sdk", |
| "//src/developer/ffx/plugins/inspect:sdk", |
| "//src/developer/ffx/plugins/log:sdk", |
| "//src/developer/ffx/plugins/package:sdk", |
| "//src/developer/ffx/plugins/profile:sdk", |
| "//src/developer/ffx/plugins/product:sdk", |
| "//src/developer/ffx/plugins/process:sdk", |
| "//src/developer/ffx/plugins/setui:sdk", |
| "//src/developer/ffx/plugins/scrutiny:sdk", |
| "//src/developer/ffx/plugins/test:sdk", |
| "//src/developer/ffx/plugins/trace:sdk", |
| "//src/developer/ffx/tools/starnix:sdk", |
| "//src/developer/ffx/plugins/wlan: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/fuchsia-sdk-run:fuchsia-sdk-run_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(https://fxbug.dev/42177692): 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") { |
| category = "partner" |
| deps = [ |
| "//src/devices/bind/fuchsia:fuchsia_sdk", |
| "//src/devices/bind/fuchsia.acpi:fuchsia.acpi_sdk", |
| "//src/devices/bind/fuchsia.adc:fuchsia.adc_sdk", |
| "//src/devices/bind/fuchsia.amlogic.platform:fuchsia.amlogic.platform_sdk", |
| "//src/devices/bind/fuchsia.amlogic.platform.a311d:fuchsia.amlogic.platform.a311d_sdk", |
| "//src/devices/bind/fuchsia.amlogic.platform.meson:fuchsia.amlogic.platform.meson_sdk", |
| "//src/devices/bind/fuchsia.arm.platform:fuchsia.arm.platform_sdk", |
| "//src/devices/bind/fuchsia.block:fuchsia.block_sdk", |
| "//src/devices/bind/fuchsia.broadcom.platform:fuchsia.broadcom.platform_sdk", |
| "//src/devices/bind/fuchsia.broadcom.platform.sdio:fuchsia.broadcom.platform.sdio_sdk", |
| "//src/devices/bind/fuchsia.clock:fuchsia.clock_sdk", |
| "//src/devices/bind/fuchsia.designware.platform:fuchsia.designware.platform_sdk", |
| "//src/devices/bind/fuchsia.devicetree:fuchsia.devicetree_sdk", |
| "//src/devices/bind/fuchsia.ethernet:fuchsia.ethernet_sdk", |
| "//src/devices/bind/fuchsia.focaltech.platform:fuchsia.focaltech.platform_sdk", |
| "//src/devices/bind/fuchsia.google.platform:fuchsia.google.platform_sdk", |
| "//src/devices/bind/fuchsia.gpio:fuchsia.gpio_sdk", |
| "//src/devices/bind/fuchsia.i2c:fuchsia.i2c_sdk", |
| "//src/devices/bind/fuchsia.khadas.platform:fuchsia.khadas.platform_sdk", |
| "//src/devices/bind/fuchsia.nxp.platform:fuchsia.nxp.platform_sdk", |
| "//src/devices/bind/fuchsia.pci:fuchsia.pci_sdk", |
| "//src/devices/bind/fuchsia.platform:fuchsia.platform_sdk", |
| "//src/devices/bind/fuchsia.power:fuchsia.power_sdk", |
| "//src/devices/bind/fuchsia.pwm:fuchsia.pwm_sdk", |
| "//src/devices/bind/fuchsia.realtek.platform:fuchsia.realtek.platform_sdk", |
| "//src/devices/bind/fuchsia.register:fuchsia.register_sdk", |
| "//src/devices/bind/fuchsia.sdio:fuchsia.sdio_sdk", |
| "//src/devices/bind/fuchsia.serial:fuchsia.serial_sdk", |
| "//src/devices/bind/fuchsia.sysmem:fuchsia.sysmem_sdk", |
| "//src/devices/bind/fuchsia.test:fuchsia.test_sdk", |
| "//src/devices/bind/fuchsia.test.platform:fuchsia.test.platform_sdk", |
| "//src/devices/bind/fuchsia.ti.platform:fuchsia.ti.platform_sdk", |
| "//src/devices/bind/fuchsia.usb.phy:fuchsia.usb.phy_sdk", |
| "//src/devices/bind/fuchsia.verisilicon.platform:fuchsia.verisilicon.platform_sdk", |
| ] |
| } |
| |
| sdk_molecule("core_packages") { |
| category = "partner" |
| deps = [ |
| "//src/performance/memory/heapdump/collector:collector_sdk", |
| # TODO(https://fxbug.dev/326231777): Uncomment this once |
| # realm_builder_server can build targeting API levels. |
| # |
| # "//src/lib/fuchsia-component-test/realm_builder_server:realm_builder_server_sdk" |
| ] |
| } |
| |
| # TODO(https://fxbug.dev/310006516): Move the contents of this target to |
| # ":core_packages" once downstream customers no longer need them in "API level |
| # agnostic" form. |
| sdk_molecule("core_packages_for_each_api_level_and_platform") { |
| category = "partner" |
| deps = [ |
| "//src/graphics/magma/tests/integration:magma_conformance_tests_sdk", |
| "//src/graphics/tests/vkreadback:vkreadback_test_sdk", |
| ] |
| } |
| |
| sdk_molecule("core_data") { |
| category = "partner" |
| deps = [ |
| # TODO(ddorwin): Rename these to make it clear that they are data (e.g., _shards). |
| "//sdk/lib/driver_component:driver_component", |
| "//sdk/lib/heapdump_instrumentation:heapdump_instrumentation_shard", |
| "//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") { |
| category = "partner" |
| deps = [ "//third_party/Vulkan-Loader:vulkan_license" ] |
| } |
| |
| sdk_molecule("core_loadable_modules") { |
| category = "partner" |
| deps = [ "//src/lib/vulkan:vulkan_layers" ] |
| } |
| |
| sdk_molecule("core_dart_library") { |
| category = "partner" |
| deps = [ "//sdk/testing/sl4f/client:client_sdk($dart_toolchain)" ] |
| } |
| |
| sdk_molecule("core_experimental_python_e2e_tests") { |
| category = "partner" |
| deps = |
| [ "//src/tests/end_to_end/rtc:rtc_conformance_test_sdk($host_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") { |
| category = "partner" |
| deps = [ |
| "//sdk/lib/fdio:fdio_sdk", |
| "//sdk/lib/magma_client:magma_client_sdk", |
| "//sdk/lib/svc:svc_sdk", |
| "//sdk/lib/vfs/internal:vfs_internal_sdk", |
| "//sdk/lib/virtgralloc:virtgralloc_headers_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", |
| "//zircon/system/ulib/trace-vthread:trace-vthread_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") { |
| category = "partner" |
| 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/component/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/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", |
| "//sdk/lib/zbi-format:zbi-format_sdk", |
| "//src/devices/lib/mmio:mmio_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/hwreg:hwreg_sdk_sdk", |
| "//zircon/system/ulib/inspect:inspect_sdk", |
| "//zircon/system/ulib/trace:trace_sdk", |
| ] |
| } |
| |
| sdk_molecule("core_sysroot") { |
| category = "partner" |
| deps = [ "//zircon/public/sysroot/sdk:sysroot_sdk" ] |
| } |
| |
| # License/copyright files for the SDK. |
| sdk_molecule("core_licenses") { |
| category = "partner" |
| deps = [ |
| ":musl_license", |
| ":open_source", |
| ":sdk_notice", |
| ] |
| } |
| |
| # |
| # BEGIN @internal_sdk |
| # DO NOT ADD anything here! This will soon be removed. |
| # See https://fxbug.dev/333907106. |
| # |
| |
| sdk_molecule("platform_fidls") { |
| visibility += [ ":platform" ] |
| category = "internal" |
| deps = [ |
| "//sdk/fidl/fuchsia.boot:fuchsia.boot_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.buttons:fuchsia.buttons_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.debugger:fuchsia.debugger_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.device:fuchsia.device_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.exception:fuchsia.exception_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.adcimpl:fuchsia.hardware.adcimpl_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.amlogiccanvas:fuchsia.hardware.amlogiccanvas_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.backlight:fuchsia.hardware.backlight_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.block:fuchsia.hardware.block_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.block.driver:fuchsia.hardware.block.driver_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.bluetooth:fuchsia.hardware.bluetooth_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.clock:fuchsia.hardware.clock_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.clockimpl:fuchsia.hardware.clockimpl_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.cpu.ctrl:fuchsia.hardware.cpu.ctrl_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.display:fuchsia.hardware.display_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.ethernet.board:fuchsia.hardware.ethernet.board_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.gpio:fuchsia.hardware.gpio_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.gpioimpl:fuchsia.hardware.gpioimpl_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.gpu.amlogic:fuchsia.hardware.gpu.amlogic_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.gpu.mali:fuchsia.hardware.gpu.mali_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.hrtimer:fuchsia.hardware.hrtimer_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.i2c.businfo:fuchsia.hardware.i2c.businfo_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.i2cimpl:fuchsia.hardware.i2cimpl_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.network.driver:fuchsia.hardware.network.driver_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.platform.device:fuchsia.hardware.platform.device_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.power:fuchsia.hardware.power_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.powersource:fuchsia.hardware.powersource_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.powersource.test:fuchsia.hardware.powersource.test_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.pwm:fuchsia.hardware.pwm_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.registers:fuchsia.hardware.registers_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.sdio:fuchsia.hardware.sdio_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.sdmmc:fuchsia.hardware.sdmmc_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.serial:fuchsia.hardware.serial_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.serialimpl:fuchsia.hardware.serialimpl_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.spi:fuchsia.hardware.spi_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.suspend:fuchsia.hardware.suspend_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.sysmem:fuchsia.hardware.sysmem_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.thermal:fuchsia.hardware.thermal_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.usb.dci:fuchsia.hardware.usb.dci_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.usb.hci:fuchsia.hardware.usb.hci_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.usb.peripheral:fuchsia.hardware.usb.peripheral_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.usb.phy:fuchsia.hardware.usb.phy_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.hardware.vreg:fuchsia.hardware.vreg_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.power.battery:fuchsia.power.battery_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.power.system:fuchsia.power.system_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.scheduler:fuchsia.scheduler_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.sys2:fuchsia.sys2_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.test.manager:fuchsia.test.manager_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.wlan.device:fuchsia.wlan.device_sdk($fidl_toolchain)", |
| "//sdk/fidl/fuchsia.wlan.fullmac:fuchsia.wlan.fullmac_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") { |
| visibility += [ ":platform" ] |
| category = "internal" |
| deps = [ |
| ":version_history", |
| "//sdk/lib/driver/compat/cpp:cpp_sdk", |
| "//sdk/lib/driver/compat/cpp:logging_sdk", |
| "//sdk/lib/driver/devicetree/manager:manager_sdk", |
| "//sdk/lib/driver/devicetree/testing:board-test-helper_sdk", |
| "//sdk/lib/driver/devicetree/visitors:driver-visitor_sdk", |
| "//sdk/lib/driver/devicetree/visitors:load-visitors_sdk", |
| "//sdk/lib/driver/devicetree/visitors:registration_sdk", |
| "//sdk/lib/driver/devicetree/visitors/default:default_sdk", |
| "//sdk/lib/driver/devicetree/visitors/drivers:all-driver-visitors_sdk", |
| "//sdk/lib/driver/testing/cpp:gtest_fixture_sdk", |
| "//src/devices/registers/testing/mock-registers:mock-registers_sdk", |
| "//src/devices/testing/fake-bti:fake-bti_sdk", |
| "//src/devices/testing/fake-mmio-reg:fake-mmio-reg_sdk", |
| "//src/devices/testing/mock-mmio-reg:mock-mmio-reg_sdk", |
| "//src/lib/memory_barriers:memory_barriers_sdk", |
| "//zircon/system/ulib/fzl:fzl_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/42064359. |
| sdk_collection("platform") { |
| visibility += [ "//build/bazel/*" ] |
| |
| category = "internal" |
| id = sdk_id |
| |
| deps = [ |
| ":platform_fidls", |
| ":platform_libs", |
| ] |
| } |
| |
| # |
| # END @internal_sdk |
| # |
| |
| 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") { |
| # 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" ] |
| |
| # Though ffx_action() depends on the manifest generated by this rule, this |
| # collection is not included in any SDK. |
| # TODO(https://fxbug.dev/317385989): Find a solution that doesn't depend on |
| # sdk_* templates. |
| category = "excluded" |
| |
| id = sdk_id |
| |
| # 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)", |
| ] |
| |
| 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. |
| # |
| # This rule copies each of the tools listed below into |
| # `$root_build_dir/sdk/idk_build_tools`. For example, a tool like `cmc` will |
| # appear in `$root_build_dir/sdk/idk_build_tools/host_x64/cmc` on an x64 host. |
| # SDK subbuilds will look for host tools in that directory, so they will only |
| # have access to binaries that they explicitly depend on via this rule. |
| copy("idk_build_tools") { |
| visibility += [ |
| "//build/*", |
| "//sdk/firmware:*", |
| "//vendor/*", |
| ] |
| |
| sources = [ |
| "$host_out_dir/bindc", |
| "$host_out_dir/cmc", |
| "$host_out_dir/configc", |
| "$host_out_dir/far", |
| "$host_out_dir/ffx-package_unversioned", |
| "$host_out_dir/fidl-format", |
| "$host_out_dir/fidl-lint", |
| "$host_out_dir/fidl_api_diff", |
| "$host_out_dir/fidl_api_summarize", |
| "$host_out_dir/fidlc", |
| "$host_out_dir/fidlgen_cpp", |
| "$host_out_dir/fidlgen_hlcpp", |
| "$host_out_dir/fidlgen_rust", |
| "$host_out_dir/json_merge", |
| "$host_out_dir/measure-tape", |
| "$host_out_dir/package-tool", |
| "$host_out_dir/zither", |
| ] |
| |
| # Looks like `host_x64`. |
| _rebased_host_dir = rebase_path(host_out_dir, root_build_dir) |
| outputs = [ "$root_build_dir/sdk/idk_build_tools/${_rebased_host_dir}/{{source_file_part}}" ] |
| |
| deps = [ |
| "//build/tools/json_merge($host_toolchain)", |
| "//src/developer/ffx/plugins/package:ffx_package_tool($host_toolchain)", |
| "//src/sys/pkg/bin/far:bin($host_toolchain)", |
| "//src/sys/pkg/bin/package-tool($host_toolchain)", |
| "//tools/bindc:bin($host_toolchain)", |
| "//tools/cmc:cmc($host_toolchain)", |
| "//tools/configc:configc($host_toolchain)", |
| "//tools/fidl/fidl_api_diff($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_hlcpp($host_toolchain)", |
| "//tools/fidl/fidlgen_rust($host_toolchain)", |
| "//tools/fidl/measure-tape/src:measure-tape($host_toolchain)", |
| "//zircon/tools/zither($host_toolchain)", |
| ] |
| } |
| |
| # Controls the maximum number of simultaneous subbuilds. |
| pool("subbuild_pool") { |
| depth = sdk_max_simultaneous_sub_builds |
| } |
| |
| # 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 += [ "*" ] |
| } |
| |
| # Marker for the allow list for use in Lacewing. |
| group("marker-allowed-for-host-test") { |
| visibility += [ "*" ] |
| } |