| // Copyright 2020 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. |
| |
| syntax = "proto3"; |
| |
| package fint; |
| |
| option go_package = "go.fuchsia.dev/fuchsia/tools/integration/fint/proto"; |
| |
| // Static contains all of the non-dynamic configuration values for building |
| // Fuchsia. These values are "static" in the sense that they don't vary |
| // depending on things like git history or local environment, so they can be |
| // checked into version control. |
| message Static { |
| enum Optimize { |
| // If new values are added to an enum, a client using an old version of the |
| // protobuf definition will have all new values mapped to the enum's zero |
| // value. So it's important that the zero value be "special" rather than a |
| // regular value so the client can easily detect that something is wrong. |
| // See http://go/totw-4 for more info. |
| // TODO(olivernewman): Link to a public explanation if and when it becomes |
| // available. |
| OPTIMIZE_UNSPECIFIED = 0; |
| DEBUG = 1; |
| RELEASE = 2; |
| } |
| |
| // The optimization level for the build. |
| Optimize optimize = 1; |
| |
| // The board to build. |
| string board = 2; |
| |
| // The product file to build. |
| string product = 3; |
| |
| // Extra args to pass to gn gen. |
| repeated string gn_args = 4; |
| |
| // Extra targets to pass to Ninja. |
| repeated string ninja_targets = 5; |
| |
| // Fuchsia packages to build and include in the base set. |
| repeated string base_packages = 6; |
| |
| // Fuchsia packages to build and include in the cache set. |
| repeated string cache_packages = 7; |
| |
| // Fuchsia packages to build and include in the universe set. |
| repeated string universe_packages = 8; |
| |
| // Host-only targets to build. |
| repeated string host_labels = 9; |
| |
| enum Arch { |
| ARCH_UNSPECIFIED = 0; // See OPTIMIZE_UNSPECIFIED for rationale. |
| ARM64 = 1; |
| X64 = 2; |
| RISCV64 = 3; |
| } |
| |
| // The target CPU architecture. |
| Arch target_arch = 10; |
| |
| // Values of select_variant GN argument. |
| repeated string variants = 11; |
| |
| // Whether to build images for paving (rather than netbooting). Ignored if |
| // `exclude_images` is true. |
| bool pave = 12; |
| |
| // Whether to build the basic images needed to boot and test on Fuchsia. |
| bool include_images = 13; |
| |
| // Whether to build manifests of prebuilt binaries. |
| bool include_prebuilt_binary_manifests = 14; |
| |
| // Whether to build generated source files specified in the generated sources manifest. |
| bool include_generated_sources = 15; |
| |
| // Whether to build ZBI tests. |
| bool include_zbi_tests = 16; |
| |
| // Whether to build host tests. |
| bool include_host_tests = 17; |
| |
| // Whether to include archives in the build. |
| bool include_archives = 18; |
| |
| // Names of tools referenced in tool_paths.json that we should build with |
| // Ninja. We assume that we should build each tool for the current OS and CPU. |
| repeated string tools = 19; |
| |
| // Whether to skip the ninja build if we're running in CQ and none of the |
| // changed files affect the build. |
| bool skip_if_unaffected = 20; |
| |
| // The path within the checkout of a file containing historical test duration |
| // data specific to the current build config. |
| string test_durations_file = 21; |
| |
| // If `test_durations_file` doesn't exist within the checkout, use this file |
| // instead. It's not specific to the current build config, but it can be |
| // assumed to always exist. |
| string default_test_durations_file = 22; |
| |
| // Whether to use goma for running ninja. Will be ignored (and goma will not |
| // be used) when building with some experimental toolchain versions. |
| // *** Goma is deprecated, this variable will be removed. *** |
| // See b/340581192 and b/340582840. |
| bool use_goma = 23; |
| |
| // Whether to use a go cache when building. |
| bool enable_go_cache = 24; |
| |
| // Whether to use a rust cache when building. |
| bool enable_rust_cache = 25; |
| |
| // Which IDE files to generate. |
| repeated string ide_files = 26; |
| |
| // Passed to --json-ide-script GN flag; GN will execute each of these scripts |
| // after regenerating the project.json IDE file. |
| repeated string json_ide_scripts = 27; |
| |
| // Whether to set --export-rust-project GN flag. |
| bool export_rust_project = 28; |
| |
| // If true, build Rust targets with RBE/reclient. |
| bool rust_rbe_enable = 29; |
| |
| // If true, build C++ targets with RBE/reclient. |
| // This takes precedence over `use_goma`. |
| bool cxx_rbe_enable = 30; |
| |
| // Whether we're performing an incremental build. |
| bool incremental = 31; |
| |
| // Whether to include the the default ninja target. |
| bool include_default_ninja_target = 32; |
| |
| // If true, use a temporary directory for the Go cache rather than a |
| // deterministic directory within the build directory. This is useful for |
| // incremental builds because the gocache does not work correctly with cgo |
| // dependencies (which our build uses), so we don't want to reuse the gocache |
| // between builds. |
| // |
| // Ignored if `enable_go_cache` is set. |
| bool use_temporary_go_cache = 33; |
| |
| enum LintTargets { |
| // Don't build any lint targets. |
| NO_LINT_TARGETS = 0; |
| |
| // Build all lint targets. |
| ALL_LINT_TARGETS = 1; |
| |
| // Only build the lint targets that are affected by the change under test, |
| // determined by comparing each target's declared source files to the |
| // `changed_files` declared in the context spec. |
| AFFECTED_LINT_TARGETS = 2; |
| } |
| |
| // Which language-specific lint targets to include. |
| LintTargets include_lint_targets = 34; |
| |
| // Extra args to pass to ninja. |
| repeated string ninja_args = 35; |
| |
| // |
| // The following fields are used to control the addition of test |
| // groups to a builder. They correspond to GN arguments that are defined in |
| // '//BUILD.gn'. |
| // |
| |
| // Hermetic tests to add to the build configuration. Only hermetic tests that |
| // run on Fuchsia devices can be added here. The build will validate that |
| // any labels added here only contain hermetic tests. |
| repeated string hermetic_test_packages = 36; |
| |
| // Non-hermetic tests to add to the build configuration. Only non-hermetic |
| // tests that run on Fuchsia devices can be added here. The build will |
| // validate that any labels added here only contain non-hermetic tests. |
| repeated string test_packages = 37; |
| |
| // End-to-end tests to add to the build configuration. The build will |
| // validate that any labels added here only contain e2e tests. |
| repeated string e2e_test_labels = 39; |
| |
| // Host tests to add to the build configuration. Host tests should _not_ be |
| // added via the 'host_labels' field. |
| // TODO(b/297926167): Enforce that no tests are found. |
| repeated string host_test_labels = 40; |
| |
| // Any sort of test that is added by a developer. These are not to be added |
| // by infra, but only by 'fx set'. If 'Set()' is called with 'skipLocalArgs' |
| // true (it should be when called by infra), fint will assert that this is an |
| // empty list. |
| repeated string developer_test_labels = 41; |
| |
| // Additional labels to add to the GN build graph, which are then built by the |
| // :default ninja target, but are not added to the product, or any published |
| // package sets. |
| repeated string build_only_labels = 42; |
| |
| // If true, link C/C++ targets remotely with RBE/reclient. |
| bool link_rbe_enable = 43; |
| |
| // If true, enable remote builds for bazel on RBE. |
| bool bazel_rbe_enable = 44; |
| } |