aboutsummaryrefslogtreecommitdiff
path: root/cmd/release_config/release_config_proto/build_flags_out.proto
blob: 6f34d6f678e497d292337e469c94676f6d1136bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto2";
package android.release_config_proto;
option go_package = "android/soong/release_config/release_config_proto";

import "build_flags_src.proto";

// This protobuf file defines messages used to represent the release config for
// the android build system, delivered as a build artifact for use by tools such
// as Gantry.
//
// The following format requirements apply across various message fields:
//
// # name: name of the flag
//
//    format: an uppercase string in SNAKE_CASE format starting with RELEASE_,
//      no consecutive underscores, and no leading digit. For example
//      RELEASE_MY_PACKAGE_FLAG is a valid name, while MY_PACKAGE_FLAG, and
//      RELEASE_MY_PACKAGE__FLAG are invalid.
//
// # package: package to which the flag belongs
//
//    format: lowercase strings in snake_case format, delimited by dots, no
//      consecutive underscores and no leading digit in each string. For example
//      com.android.mypackage is a valid name while com.android.myPackage,
//      com.android.1mypackage are invalid

message tracepoint {
  // Path to declaration or value file relative to $TOP
  optional string source = 1;
  optional value value = 201;
}

message flag_artifact {
  // The original declaration
  optional flag_declaration flag_declaration = 1;

  // Value for the flag
  optional value value = 201;

  // Trace of where the flag value was assigned.
  repeated tracepoint traces = 8;
}

message flag_artifacts {
  // The artifacts
  repeated flag_artifact flag_artifacts = 1;
}

message release_config_artifact {
  // The name of the release config.
  // See # name for format detail
  optional string name = 1;

  // Other names by which this release is known (for example, `next`)
  repeated string other_names = 2;

  // The complete set of build flags in this release config, after all
  // inheritance and other processing is complete.
  repeated flag_artifact flag_artifacts = 3;

  // The (complete) list of aconfig_value_sets Soong modules to use.
  repeated string aconfig_value_sets = 4;

  // The names of the release_config_artifacts from which we inherited.
  // Included for reference only.
  repeated string inherits = 5;

  // The release config directories used for this config.
  // For example, "build/release".
  repeated string directories = 6;
}

message release_configs_artifact {
  // The active release config for this build.
  optional release_config_artifact release_config = 1;

  // All other release configs defined for this TARGET_PRODUCT.
  repeated release_config_artifact other_release_configs = 2;

  // Map of release_config_artifact.directories to release_config_map message.
  map<string, release_config_map> release_config_maps_map = 3;
}