Skip to content

Commit 57e6805

Browse files
committed
Add experimental Build Tools API (BTAPI) for compilation
1 parent e1db289 commit 57e6805

File tree

16 files changed

+1335
-16
lines changed

16 files changed

+1335
-16
lines changed

MODULE.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ maven.install(
7777
"com.squareup.moshi:moshi:1.15.1",
7878
"com.squareup.moshi:moshi-kotlin:1.15.1",
7979
"com.squareup.moshi:moshi-kotlin-codegen:1.15.1",
80+
"org.jetbrains.kotlin:kotlin-build-tools-impl:2.1.20",
8081
],
8182
fail_if_repin_required = True,
8283
fetch_sources = True,

docs/kotlin.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -515,9 +515,9 @@ define_kt_toolchain(<a href="#define_kt_toolchain-name">name</a>, <a href="#defi
515515
<a href="#define_kt_toolchain-experimental_treat_internal_as_private_in_abi_jars">experimental_treat_internal_as_private_in_abi_jars</a>,
516516
<a href="#define_kt_toolchain-experimental_remove_private_classes_in_abi_jars">experimental_remove_private_classes_in_abi_jars</a>, <a href="#define_kt_toolchain-experimental_strict_kotlin_deps">experimental_strict_kotlin_deps</a>,
517517
<a href="#define_kt_toolchain-experimental_report_unused_deps">experimental_report_unused_deps</a>, <a href="#define_kt_toolchain-experimental_reduce_classpath_mode">experimental_reduce_classpath_mode</a>,
518-
<a href="#define_kt_toolchain-experimental_multiplex_workers">experimental_multiplex_workers</a>, <a href="#define_kt_toolchain-javac_options">javac_options</a>, <a href="#define_kt_toolchain-kotlinc_options">kotlinc_options</a>, <a href="#define_kt_toolchain-jvm_stdlibs">jvm_stdlibs</a>,
519-
<a href="#define_kt_toolchain-jvm_runtime">jvm_runtime</a>, <a href="#define_kt_toolchain-jacocorunner">jacocorunner</a>, <a href="#define_kt_toolchain-exec_compatible_with">exec_compatible_with</a>, <a href="#define_kt_toolchain-target_compatible_with">target_compatible_with</a>,
520-
<a href="#define_kt_toolchain-target_settings">target_settings</a>)
518+
<a href="#define_kt_toolchain-experimental_multiplex_workers">experimental_multiplex_workers</a>, <a href="#define_kt_toolchain-experimental_build_tools_api">experimental_build_tools_api</a>, <a href="#define_kt_toolchain-javac_options">javac_options</a>,
519+
<a href="#define_kt_toolchain-kotlinc_options">kotlinc_options</a>, <a href="#define_kt_toolchain-jvm_stdlibs">jvm_stdlibs</a>, <a href="#define_kt_toolchain-jvm_runtime">jvm_runtime</a>, <a href="#define_kt_toolchain-jacocorunner">jacocorunner</a>, <a href="#define_kt_toolchain-exec_compatible_with">exec_compatible_with</a>,
520+
<a href="#define_kt_toolchain-target_compatible_with">target_compatible_with</a>, <a href="#define_kt_toolchain-target_settings">target_settings</a>)
521521
</pre>
522522

523523
Define the Kotlin toolchain.
@@ -538,6 +538,7 @@ Define the Kotlin toolchain.
538538
| <a id="define_kt_toolchain-experimental_report_unused_deps"></a>experimental_report_unused_deps | <p align="center"> - </p> | `None` |
539539
| <a id="define_kt_toolchain-experimental_reduce_classpath_mode"></a>experimental_reduce_classpath_mode | <p align="center"> - </p> | `None` |
540540
| <a id="define_kt_toolchain-experimental_multiplex_workers"></a>experimental_multiplex_workers | <p align="center"> - </p> | `None` |
541+
| <a id="define_kt_toolchain-experimental_build_tools_api"></a>experimental_build_tools_api | <p align="center"> - </p> | `None` |
541542
| <a id="define_kt_toolchain-javac_options"></a>javac_options | <p align="center"> - </p> | `Label("@rules_kotlin//kotlin/internal:default_javac_options")` |
542543
| <a id="define_kt_toolchain-kotlinc_options"></a>kotlinc_options | <p align="center"> - </p> | `Label("@rules_kotlin//kotlin/internal:default_kotlinc_options")` |
543544
| <a id="define_kt_toolchain-jvm_stdlibs"></a>jvm_stdlibs | <p align="center"> - </p> | `None` |

kotlin/internal/jvm/compile.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,7 @@ def _run_kt_builder_action(
462462
args.add("--strict_kotlin_deps", toolchains.kt.experimental_strict_kotlin_deps)
463463
args.add_all("--classpath", compile_deps.compile_jars)
464464
args.add("--reduced_classpath_mode", toolchains.kt.experimental_reduce_classpath_mode)
465+
args.add("--build_tools_api", toolchains.kt.experimental_build_tools_api)
465466
args.add_all("--sources", srcs.all_srcs, omit_if_empty = True)
466467
args.add_all("--source_jars", srcs.src_jars + generated_src_jars, omit_if_empty = True)
467468
args.add_all("--deps_artifacts", deps_artifacts, omit_if_empty = True)

kotlin/internal/toolchains.bzl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ def _kotlin_toolchain_impl(ctx):
9191
experimental_strict_kotlin_deps = ctx.attr.experimental_strict_kotlin_deps,
9292
experimental_report_unused_deps = ctx.attr.experimental_report_unused_deps,
9393
experimental_reduce_classpath_mode = ctx.attr.experimental_reduce_classpath_mode,
94+
experimental_build_tools_api = ctx.attr.experimental_build_tools_api,
9495
javac_options = ctx.attr.javac_options[JavacOptions] if ctx.attr.javac_options else None,
9596
kotlinc_options = ctx.attr.kotlinc_options[KotlincOptions] if ctx.attr.kotlinc_options else None,
9697
empty_jar = ctx.file._empty_jar,
@@ -247,6 +248,10 @@ _kt_toolchain = rule(
247248
"KOTLINBUILDER_REDUCED",
248249
],
249250
),
251+
"experimental_build_tools_api": attr.bool(
252+
doc = "Enables experimental support for Build Tools API integration",
253+
default = False,
254+
),
250255
"javac_options": attr.label(
251256
doc = "Compiler options for javac",
252257
providers = [JavacOptions],
@@ -321,6 +326,7 @@ def define_kt_toolchain(
321326
experimental_report_unused_deps = None,
322327
experimental_reduce_classpath_mode = None,
323328
experimental_multiplex_workers = None,
329+
experimental_build_tools_api = None,
324330
javac_options = Label("//kotlin/internal:default_javac_options"),
325331
kotlinc_options = Label("//kotlin/internal:default_kotlinc_options"),
326332
jvm_stdlibs = None,
@@ -349,6 +355,7 @@ def define_kt_toolchain(
349355
experimental_strict_kotlin_deps = experimental_strict_kotlin_deps,
350356
experimental_report_unused_deps = experimental_report_unused_deps,
351357
experimental_reduce_classpath_mode = experimental_reduce_classpath_mode,
358+
experimental_build_tools_api = experimental_build_tools_api,
352359
javac_options = javac_options,
353360
kotlinc_options = kotlinc_options,
354361
visibility = ["//visibility:public"],

kotlin/settings/BUILD.bazel

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,9 @@ bool_flag(
4242
build_setting_default = False,
4343
visibility = ["//visibility:public"],
4444
)
45+
46+
bool_flag(
47+
name = "experimental_build_tools_api",
48+
build_setting_default = False,
49+
visibility = ["//visibility:public"],
50+
)

0 commit comments

Comments
 (0)