add debug setting and thread it to the builder via the toolchain
diff --git a/kotlin/BUILD b/kotlin/BUILD
index d20fe7f..b69cba7 100644
--- a/kotlin/BUILD
+++ b/kotlin/BUILD
@@ -16,13 +16,26 @@
load("//kotlin:toolchains.bzl", "define_kt_toolchain")
load("//kotlin/internal:bootstrap.bzl", "kt_toolchain_ide_info")
+config_setting(
+ name = "builder_debug_setting",
+ values = {
+ "define": "kt_debug=1"
+ }
+)
+
toolchain_type(
name = "kt_toolchain_type",
visibility = ["//visibility:public"]
)
-define_kt_toolchain(name = "default_toolchain")
+define_kt_toolchain(
+ name = "default_toolchain",
+ debug=select({
+ "//kotlin:builder_debug_setting": 1,
+ "//conditions:default": 0
+ })
+)
kt_toolchain_ide_info(name="kt_toolchain_ide_info")
-exports_files(["toolchains.bzl", "kotlin.bzl"], visibility=["//docs:__subpackages__"])
\ No newline at end of file
+exports_files(["toolchains.bzl", "kotlin.bzl"], visibility=["//docs:__subpackages__"])
diff --git a/kotlin/builder/proto/jars/libkotlin_model_proto-speed.jar b/kotlin/builder/proto/jars/libkotlin_model_proto-speed.jar
index 6b75802..1411450 100755
--- a/kotlin/builder/proto/jars/libkotlin_model_proto-speed.jar
+++ b/kotlin/builder/proto/jars/libkotlin_model_proto-speed.jar
Binary files differ
diff --git a/kotlin/builder/proto/kotlin_model.proto b/kotlin/builder/proto/kotlin_model.proto
index ead4726..5344fed 100644
--- a/kotlin/builder/proto/kotlin_model.proto
+++ b/kotlin/builder/proto/kotlin_model.proto
@@ -96,6 +96,8 @@
repeated string friend_paths = 8;
// The path of the primary output for the task, this is derived from the flagfile.
string primary_output_path = 9;
+ // If this is true the builder will print out debug messages.
+ int32 debug = 10;
}
// Mested messages not marked with stable could be refactored.
diff --git a/kotlin/builder/src/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt
index 70ce4ae..8fd3bc0 100644
--- a/kotlin/builder/src/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt
+++ b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt
@@ -115,11 +115,13 @@
PLUGINS("--kotlin_plugins"),
FRIEND_PATHS("--kotlin_friend_paths"),
OUTPUT_JDEPS("--kotlin_output_jdeps"),
+ DEBUG("--kotlin_debug"),
TASK_ID("--kotlin_task_id");
}
private fun buildTaskInfo(argMap: ArgMap): CompilationTaskInfo.Builder =
with(CompilationTaskInfo.newBuilder()) {
+ debug = argMap.mandatorySingle(KotlinBuilderFlags.DEBUG).toInt()
label = argMap.mandatorySingle(JavaBuilderFlags.TARGET_LABEL)
argMap.mandatorySingle(JavaBuilderFlags.RULE_KIND).split("_").also {
check(it.size == 3 && it[0] == "kt") { "invalid rule kind $it" }
diff --git a/kotlin/internal/compile.bzl b/kotlin/internal/compile.bzl
index 9ff4051..1d61f17 100644
--- a/kotlin/internal/compile.bzl
+++ b/kotlin/internal/compile.bzl
@@ -33,6 +33,7 @@
args.add("--kotlin_api_version", toolchain.api_version)
args.add("--kotlin_language_version", toolchain.language_version)
args.add("--kotlin_passthrough_flags", "-Xcoroutines=%s" % toolchain.coroutines)
+ args.add("--kotlin_debug", toolchain.debug)
return args
diff --git a/kotlin/toolchains.bzl b/kotlin/toolchains.bzl
index a0b9c5e..0e08ab8 100644
--- a/kotlin/toolchains.bzl
+++ b/kotlin/toolchains.bzl
@@ -71,6 +71,9 @@
"1.2",
],
),
+ "debug": attr.int(
+ doc="if this is non zero then the builder will produce debug logging."
+ ),
"coroutines": attr.string(
default = "enable",
values = [
@@ -111,6 +114,7 @@
language_version = ctx.attr.language_version,
api_version = ctx.attr.api_version,
coroutines = ctx.attr.coroutines,
+ debug = ctx.attr.debug,
jvm_target = ctx.attr.jvm_target,
@@ -141,8 +145,17 @@
coroutines: the -Xcoroutines flag, enabled by default as it's considered production ready 1.2.0 onward.
"""
-def define_kt_toolchain(name, language_version=None, api_version=None, jvm_target=None, coroutines=None):
- """Define a Kotlin JVM Toolchain, the name is used in the `toolchain` rule so can be used to register the toolchain in the WORKSPACE file."""
+def define_kt_toolchain(
+ name,
+ language_version=None,
+ api_version=None,
+ jvm_target=None,
+ coroutines=None,
+ debug=0
+):
+ """Define a Kotlin JVM Toolchain, the name is used in the `toolchain` rule so can be used to register the toolchain
+ in the WORKSPACE file.
+ """
impl_name = name + "_impl"
kt_toolchain(
name = impl_name,
@@ -150,6 +163,7 @@
api_version = api_version,
jvm_target = jvm_target,
coroutines = coroutines,
+ debug=debug,
visibility = ["//visibility:public"]
)
native.toolchain(