blob: 1fefd96472d9d15e142542e67fc3cd6b53b2c741 [file] [log] [blame]
// 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;
}