| // Copyright 2018 The Bazel Authors. All rights reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // 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 = "proto3"; |
| |
| package bazel.kotlin; |
| |
| option java_package = "io.bazel.kotlin.model"; |
| |
| // An abstract definition of an annotation processor. This is encoded into a format understood by kapt3. |
| // +stable |
| message AnnotationProcessor { |
| // The annotation processor class. |
| string processor_class = 1; |
| // The Bazel `java_plugin` `generates_api` attribute. |
| bool generates_api = 2; |
| // The full transitive classpath required for annotation processing. |
| repeated string classpath = 3; |
| // The label of the plugin. |
| string label = 4; |
| } |
| |
| // A container for all of the types of compiler plugins needed by the kotlin compilers. |
| // +stable |
| message CompilerPlugins { |
| // Regular java annotation_processor descriptors. |
| repeated AnnotationProcessor annotation_processors = 1; |
| } |
| |
| // Toolchain info this contains info to be used to configure the compile tasks as well as configuring certain features |
| // in IDE plugins. |
| // +stable |
| message KotlinToolchainInfo { |
| // Common properties that should be common to all platforms. |
| message Common { |
| // mandatory |
| string language_version = 1; |
| // mandatory |
| string api_version = 2; |
| // mandatory |
| // oneof "enable", "warn" or "error" |
| string coroutines = 3; |
| } |
| |
| // Properties specific to the JVM. |
| message Jvm { |
| // The property is additionally to configure the source and target bytecode levels in kapt3, javac and kotlin. |
| // mandatory |
| // oneof "1.6", or "1.8" |
| string jvm_target = 1; |
| } |
| |
| Common common = 1; |
| Jvm jvm = 2; |
| } |
| |
| // Mested messages not marked with stable could be refactored. |
| message BuilderCommand { |
| message Info { |
| string label = 1; |
| // derived from label |
| string package = 2; |
| // derived from label |
| string target = 3; |
| |
| string rule_kind = 4; |
| string kotlin_module_name = 5; |
| |
| string passthrough_flags = 6; |
| KotlinToolchainInfo toolchain_info = 7; |
| |
| CompilerPlugins plugins = 8; |
| |
| // All of the plugin descriptors in the format kotlinc understands. |
| // +derived |
| repeated string encoded_plugin_descriptors = 9; |
| |
| // Jars that the kotlin compiler will allow package private access to. |
| repeated string friend_paths = 10; |
| } |
| |
| // Directories used by the builder. |
| // +stable |
| message Directories { |
| // The directory the compiler should use for class files. |
| string classes = 1; |
| // The directory to use by annotation processors to produce classes. |
| string generated_classes = 2; |
| // The directory used by annotation processors. The generated sources are currently only java. |
| string generated_sources = 3; |
| // A temp directory that the compiler may use. The source_jars are expanding into here. |
| string temp = 4; |
| } |
| |
| // Outputs produced by the builder. |
| // +stable |
| message Outputs { |
| // The path to the primary output jar. |
| string jar = 1; |
| // The path to the jdeps file. |
| string jdeps = 2; |
| } |
| |
| message Inputs { |
| // The full classpath |
| repeated string classpath = 1; |
| // The full joined classpath |
| // +derived |
| string joined_classpath = 2; |
| // Direct dependencies of the target. |
| map<string, string> direct_dependencies = 3; |
| // Indirect dependencies of the target. |
| map<string, string> indirect_dependencies = 4; |
| |
| // Partitioned from the builder flags and by expanding the source_jars. |
| // +derived |
| repeated string kotlin_sources = 5; |
| // Partitioned from the builder flags and by expanding the source_jars. |
| // +derived |
| repeated string java_sources = 6; |
| // Created during annotation processing and partitioned from the generated_sources directory. |
| // +dervived |
| repeated string generated_kotlin_sources = 7; |
| // Created during annotation processing and partitioned from the generated_sources directory. |
| // +derived |
| repeated string generated_java_sources = 8; |
| // Jars containing additional sources. |
| repeated string source_jars = 9; |
| } |
| |
| Info info = 1; |
| Directories directories = 2; |
| Outputs outputs = 3; |
| Inputs inputs = 4; |
| } |