Skip to content

Add initial kotlin native toolchain and kt_library rule #1351

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 41 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
913b1ad
Initial changes to support kotlin-native toolchain
smocherla-brex Jul 6, 2025
e5eb0a5
KtKlibInfo
smocherla-brex Jul 6, 2025
94abd2d
Add initial support for kotlin-native toolchain and klib compilation
smocherla-brex Jul 13, 2025
3553ace
Fix cache marker for other platforms
smocherla-brex Jul 13, 2025
d2a3ca9
buildifier
smocherla-brex Jul 13, 2025
f0385a3
remove unused stuff
smocherla-brex Jul 13, 2025
b108308
remove opts.native.bzl
smocherla-brex Jul 14, 2025
5d6557a
Fix builder tests
smocherla-brex Jul 14, 2025
fa6291e
Add capabilties.bzl to release archive
smocherla-brex Jul 14, 2025
685e4d7
Add BUILD.kotlin-native_capabilities.bazel to release archive
smocherla-brex Jul 14, 2025
126931f
Feedback: Remove duplicate code and pass transitive klibs
smocherla-brex Aug 2, 2025
cefedcb
wip: Remove copy_to_directory and create a dedicated native toolchain
smocherla-brex Aug 3, 2025
a564355
Feedback: Pass konan_home as an arg, and attempt to remove marker files
smocherla-brex Aug 4, 2025
a0c2284
Remove some flags that don't seem needed and don't link with stdlib
smocherla-brex Aug 4, 2025
a57be2e
Fix path to konan_home in toolchain
smocherla-brex Aug 4, 2025
809270e
lint and fix starlark tests
smocherla-brex Aug 4, 2025
59b64c6
Rename klib package to native under kotlin/internal
smocherla-brex Aug 4, 2025
ce96a95
Update docs
smocherla-brex Aug 4, 2025
e902025
Make toolchain names and impl names consistent
smocherla-brex Aug 4, 2025
de83c33
Fix starlark tests
smocherla-brex Aug 4, 2025
3d06d53
Fix more references
smocherla-brex Aug 4, 2025
e940430
Fix more tests and buildifier
smocherla-brex Aug 4, 2025
f5b6641
Add -Xklib-relative-path-base and -Xdebug-prefix-map
smocherla-brex Aug 4, 2025
3def59a
Rename to kt_library and structure accordingly
smocherla-brex Aug 4, 2025
bc060d4
Remove konan_home attribute on the JVM toolchain
smocherla-brex Aug 4, 2025
eda9930
Add runfiles support with tests
smocherla-brex Aug 10, 2025
3dafe36
Mark targets within starkark tests as manual
smocherla-brex Aug 10, 2025
53bda70
Be explicit about --target and propagate it from toolchain to builder
smocherla-brex Aug 10, 2025
2e33d76
Set default target correctly
smocherla-brex Aug 10, 2025
0d6850e
Create CLI toolchain for kotlinc-native and use that for builder
smocherla-brex Aug 10, 2025
b1fba97
Fix build/test failures due to stale references
smocherla-brex Aug 10, 2025
cd60552
Fix checksum for windows
smocherla-brex Aug 10, 2025
bba1ea4
Regen docs
smocherla-brex Aug 10, 2025
96eb77a
Need an alias target in kotlin/compiler sadly to make runfiles work
smocherla-brex Aug 10, 2025
4906239
buildifier and fix one reference
smocherla-brex Aug 10, 2025
89c25cd
Fix some integration tests
smocherla-brex Aug 10, 2025
911f49d
Update docs
smocherla-brex Aug 10, 2025
c23bc5f
lint
smocherla-brex Aug 10, 2025
1cac1b1
Add tests for transitive outputs
smocherla-brex Aug 10, 2025
f244d54
Remove unused loads
smocherla-brex Aug 10, 2025
702ff09
Empty commit to retrigger build and deal with android flake
smocherla-brex Aug 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,27 @@ use_repo(
"com_github_google_ksp",
"com_github_jetbrains_kotlin",
"com_github_jetbrains_kotlin_git",
"com_github_jetbrains_kotlin_native_linux_x86_64",
"com_github_jetbrains_kotlin_native_linux_x86_64_git",
"com_github_jetbrains_kotlin_native_macos_aarch64",
"com_github_jetbrains_kotlin_native_macos_aarch64_git",
"com_github_jetbrains_kotlin_native_macos_x86_64",
"com_github_jetbrains_kotlin_native_macos_x86_64_git",
"com_github_jetbrains_kotlin_native_windows_x86_64",
"com_github_jetbrains_kotlin_native_windows_x86_64_git",
"com_github_pinterest_ktlint",
"kotlin_build_tools_impl",
"kotlinx_serialization_core_jvm",
"kotlinx_serialization_json",
"kotlinx_serialization_json_jvm",
)

register_toolchains("//src/main/starlark/core/compile/cli")
register_toolchains("//src/main/starlark/core/compile/cli:all")

register_toolchains("//kotlin/internal:default_toolchain")

register_toolchains("//kotlin/internal/native:all")

# Development dependencies
# TODO(bencodes) A bunch of these dependencies need to be marked as dev_dependencies but before we can do that
# we need to sort out a few cases around how these rules are consumed in various ways.
Expand Down
10 changes: 10 additions & 0 deletions MODULE.release.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,16 @@ use_repo(
"kotlinx_serialization_json",
"kotlinx_serialization_json_jvm",
"kotlin_build_tools_impl",
"com_github_jetbrains_kotlin_native_linux_x86_64",
"com_github_jetbrains_kotlin_native_linux_x86_64_git",
"com_github_jetbrains_kotlin_native_macos_aarch64",
"com_github_jetbrains_kotlin_native_macos_aarch64_git",
"com_github_jetbrains_kotlin_native_macos_x86_64",
"com_github_jetbrains_kotlin_native_macos_x86_64_git",
"com_github_jetbrains_kotlin_native_windows_x86_64",
"com_github_jetbrains_kotlin_native_windows_x86_64_git",
)

register_toolchains("//kotlin/internal:default_toolchain")

register_toolchains("//kotlin/internal/native:all")
10 changes: 8 additions & 2 deletions docs/kotlin.md
Original file line number Diff line number Diff line change
Expand Up @@ -562,7 +562,7 @@ load("@rules_kotlin//kotlin:core.bzl", "kt_register_toolchains")
kt_register_toolchains()
</pre>

This macro registers the kotlin toolchain.
This macro registers the kotlin/JVM toolchain and the kotlin native toolchain.



Expand All @@ -578,7 +578,9 @@ This macro registers the kotlin toolchain.
load("@rules_kotlin//kotlin:repositories.doc.bzl", "kotlin_repositories")

kotlin_repositories(<a href="#kotlin_repositories-is_bzlmod">is_bzlmod</a>, <a href="#kotlin_repositories-compiler_repository_name">compiler_repository_name</a>, <a href="#kotlin_repositories-ksp_repository_name">ksp_repository_name</a>, <a href="#kotlin_repositories-compiler_release">compiler_release</a>,
<a href="#kotlin_repositories-ksp_compiler_release">ksp_compiler_release</a>)
<a href="#kotlin_repositories-ksp_compiler_release">ksp_compiler_release</a>, <a href="#kotlin_repositories-kotlin_native_release_linux_x86_64">kotlin_native_release_linux_x86_64</a>,
<a href="#kotlin_repositories-kotlin_native_release_macos_x86_64">kotlin_native_release_macos_x86_64</a>, <a href="#kotlin_repositories-kotlin_native_release_macos_aarch64">kotlin_native_release_macos_aarch64</a>,
<a href="#kotlin_repositories-kotlin_native_release_windows_x86_64">kotlin_native_release_windows_x86_64</a>)
</pre>

Call this in the WORKSPACE file to setup the Kotlin rules.
Expand All @@ -593,6 +595,10 @@ Call this in the WORKSPACE file to setup the Kotlin rules.
| <a id="kotlin_repositories-ksp_repository_name"></a>ksp_repository_name | <p align="center"> - </p> | `"com_github_google_ksp"` |
| <a id="kotlin_repositories-compiler_release"></a>compiler_release | version provider from versions.bzl. | `struct(sha256 = "1ba08a8b45da99339a0601134cc037b54cf85e9bc0edbe76dcbd27c2d684a977", url_templates = ["https://github.com/JetBrains/kotlin/releases/download/v{version}/kotlin-compiler-{version}.zip"], version = "2.1.21")` |
| <a id="kotlin_repositories-ksp_compiler_release"></a>ksp_compiler_release | (internal) version provider from versions.bzl. | `struct(sha256 = "44e965bb067b2bb5cd9184dab2c3dea6e3eab747d341c07645bb4c88f09e49c8", url_templates = ["https://github.com/google/ksp/releases/download/{version}/artifacts.zip"], version = "2.1.21-2.0.1")` |
| <a id="kotlin_repositories-kotlin_native_release_linux_x86_64"></a>kotlin_native_release_linux_x86_64 | (internal) version provider from versions.bzl | `struct(sha256 = "42fb88529b4039b6ac1961a137ccb1c79fc80315947f3ec31b56834c7ce20d0b", strip_prefix_template = "kotlin-native-prebuilt-linux-x86_64-{version}", url_templates = ["https://github.com/JetBrains/kotlin/releases/download/v{version}/kotlin-native-prebuilt-linux-x86_64-{version}.tar.gz"], version = "2.1.21")` |
| <a id="kotlin_repositories-kotlin_native_release_macos_x86_64"></a>kotlin_native_release_macos_x86_64 | (internal) version provider from versions.bzl | `struct(sha256 = "fc6b5979ec322be803bfac549661aaf0f8f7342aa3bd09008d471fff2757bbdf", strip_prefix_template = "kotlin-native-prebuilt-macos-x86_64-{version}", url_templates = ["https://github.com/JetBrains/kotlin/releases/download/v{version}/kotlin-native-prebuilt-macos-x86_64-{version}.tar.gz"], version = "2.1.21")` |
| <a id="kotlin_repositories-kotlin_native_release_macos_aarch64"></a>kotlin_native_release_macos_aarch64 | <p align="center"> - </p> | `struct(sha256 = "8df16175b962bc4264a5c3b32cb042d91458babbd093c0f36194dc4645f5fe2e", strip_prefix_template = "kotlin-native-prebuilt-macos-aarch64-{version}", url_templates = ["https://github.com/JetBrains/kotlin/releases/download/v{version}/kotlin-native-prebuilt-macos-aarch64-{version}.tar.gz"], version = "2.1.21")` |
| <a id="kotlin_repositories-kotlin_native_release_windows_x86_64"></a>kotlin_native_release_windows_x86_64 | (internal) version provider from versions.bzl | `struct(sha256 = "03301473bb9e68dadfdd265857a2a5913a147e700e345d32db73e0a21a2ffbfa", strip_prefix_template = "kotlin-native-prebuilt-windows-x86_64-{version}", url_templates = ["https://github.com/JetBrains/kotlin/releases/download/v{version}/kotlin-native-prebuilt-windows-x86_64-{version}.zip"], version = "2.1.21")` |


<a id="versions.use_repository"></a>
Expand Down
4 changes: 4 additions & 0 deletions kotlin/compiler/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ load("//src/main/starlark/release:packager.bzl", "release_archive")
# limitations under the License.
load(":compiler.bzl", "kt_configure_compiler")
load(":ksp.bzl", "kt_configure_ksp")
load(":native.bzl", "kt_configure_native_compiler")

package(default_visibility = ["//visibility:public"])

Expand All @@ -24,6 +25,9 @@ kt_configure_compiler()
# Configures the KSP plugins
kt_configure_ksp()

# Configure the native compiler (used only for runfiles in KotlinBuilder)
kt_configure_native_compiler()

release_archive(
name = "pkg",
srcs = glob(["*.bzl"]),
Expand Down
4 changes: 4 additions & 0 deletions kotlin/compiler/BUILD.release.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load(":compiler.bzl", "kt_configure_compiler")
load(":ksp.bzl", "kt_configure_ksp")
load(":native.bzl", "kt_configure_native_compiler")

package(default_visibility = ["//visibility:public"])

Expand All @@ -24,6 +25,9 @@ kt_configure_compiler()
# Configures the KSP plugins
kt_configure_ksp()

# Configure the native compiler (used only for runfiles in KotlinBuilder)
kt_configure_native_compiler()

bzl_library(
name = "compiler",
srcs = glob(["*.bzl"]),
Expand Down
16 changes: 8 additions & 8 deletions kotlin/compiler/compiler.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,18 @@ KOTLIN_STDLIBS = [
"//kotlin/compiler:trove4j",
]

def _import_artifacts(artifacts, rule_kind):
_import_labels(artifacts.plugin, rule_kind)
_import_labels(artifacts.runtime, rule_kind)
_import_labels(artifacts.compile, rule_kind, neverlink = 1)
def _import_artifacts(artifacts, rule_kind, compiler_repo = _KT_COMPILER_REPO):
_import_labels(artifacts.plugin, rule_kind, compiler_repo)
_import_labels(artifacts.runtime, rule_kind, compiler_repo)
_import_labels(artifacts.compile, rule_kind, compiler_repo, neverlink = 1)

def _import_labels(labels, rule_kind, **rule_args):
def _import_labels(labels, rule_kind, compiler_repo, **rule_args):
for (label, file) in labels.items():
if not file.endswith(".jar"):
native.filegroup(
name = label,
srcs = [
"@%s//:%s" % (_KT_COMPILER_REPO, label),
"@%s//:%s" % (compiler_repo, label),
],
)
return
Expand All @@ -46,10 +46,10 @@ def _import_labels(labels, rule_kind, **rule_args):
args = dict(rule_args.items())
args["visibility"] = ["//visibility:public"]
args["name"] = label
args["jars"] = ["@%s//:%s" % (_KT_COMPILER_REPO, label)]
args["jars"] = ["@%s//:%s" % (compiler_repo, label)]
sources = label + "-sources"
if sources in labels:
args["srcjar"] = "@%s//:%s" % (_KT_COMPILER_REPO, sources)
args["srcjar"] = "@%s//:%s" % (compiler_repo, sources)
rule_kind(**args)

def kt_configure_compiler():
Expand Down
17 changes: 17 additions & 0 deletions kotlin/compiler/native.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
load("//kotlin/internal:defs.bzl", "KT_NATIVE_COMPILER_REPO_PREFIX")

def kt_configure_native_compiler():
# Ideally this would not be needed here and be available from the toolchain
# but the builder uses java_binary and jvm_flags are propagated for the runfile paths to it directly
# so it doesn't seem straightforward to do that, so this alias target allows us
# to reference it in the data dependencies there
native.alias(
name = "kotlin-native",
actual = select({
"@bazel_tools//src/conditions:linux_x86_64": "@" + KT_NATIVE_COMPILER_REPO_PREFIX + "_" + "linux_x86_64//:kotlin-native",
"@bazel_tools//src/conditions:darwin": "@" + KT_NATIVE_COMPILER_REPO_PREFIX + "_" + "macos_x86_64//:kotlin-native",
"@bazel_tools//src/conditions:windows": "@" + KT_NATIVE_COMPILER_REPO_PREFIX + "_" + "windows_x86_64//:kotlin-native",
"@bazel_tools//src/conditions:darwin_arm64": "@" + KT_NATIVE_COMPILER_REPO_PREFIX + "_" + "macos_aarch64//:kotlin-native",
}),
visibility = ["//src:__subpackages__"],
)
2 changes: 2 additions & 0 deletions kotlin/internal/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ release_archive(
deps = [
"//kotlin/internal/jvm:pkg",
"//kotlin/internal/lint:pkg",
"//kotlin/internal/native:pkg",
"//kotlin/internal/utils:pkg",
],
)
Expand All @@ -41,6 +42,7 @@ bzl_library(
deps = [
"//kotlin/internal/jvm",
"//kotlin/internal/lint",
"//kotlin/internal/native",
"//kotlin/internal/utils",
"//src/main/starlark",
"//src/main/starlark/core/compile",
Expand Down
1 change: 1 addition & 0 deletions kotlin/internal/BUILD.release.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ bzl_library(
deps = [
"//kotlin/internal/jvm",
"//kotlin/internal/lint",
"//kotlin/internal/native",
"//kotlin/internal/utils",
"//src/main/starlark",
],
Expand Down
7 changes: 7 additions & 0 deletions kotlin/internal/defs.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ load(
_JAVA_RUNTIME_TOOLCHAIN_TYPE = "JAVA_RUNTIME_TOOLCHAIN_TYPE",
_JAVA_TOOLCHAIN_TYPE = "JAVA_TOOLCHAIN_TYPE",
_KtJvmInfo = "KtJvmInfo",
_KtKlibInfo = "KtKlibInfo",
)
load(
"//src/main/starlark/core/plugin:providers.bzl",
Expand All @@ -27,6 +28,7 @@ load(

# The Kotlin Toolchain type.
TOOLCHAIN_TYPE = "%s" % Label("//kotlin/internal:kt_toolchain_type")
NATIVE_TOOLCHAIN_TYPE = "%s" % Label("//kotlin/internal/native:kt_native_toolchain_type")

# Java toolchains
JAVA_TOOLCHAIN_TYPE = _JAVA_TOOLCHAIN_TYPE
Expand All @@ -35,6 +37,9 @@ JAVA_RUNTIME_TOOLCHAIN_TYPE = _JAVA_RUNTIME_TOOLCHAIN_TYPE
# The name of the Kotlin compiler workspace.
KT_COMPILER_REPO = "com_github_jetbrains_kotlin"

# The preifx of the Kotlin native compiler workspace name (will be suffixed with the platform)
KT_NATIVE_COMPILER_REPO_PREFIX = "com_github_jetbrains_kotlin_native"

# The name of the KSP compiler plugin workspace
KSP_COMPILER_PLUGIN_REPO = "com_github_google_ksp"

Expand All @@ -47,3 +52,5 @@ KspPluginInfo = _KspPluginInfo
KtCompilerPluginOption = _KtCompilerPluginOption

KtPluginConfiguration = _KtPluginConfiguration

KtKlibInfo = _KtKlibInfo
24 changes: 24 additions & 0 deletions kotlin/internal/native/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load("//kotlin/internal/native:toolchains.bzl", "kt_configure_native_toolchains")
load("//src/main/starlark/release:packager.bzl", "release_archive")

kt_configure_native_toolchains()

release_archive(
name = "pkg",
srcs = glob(["*.bzl"]),
src_map = {
"BUILD.release.bazel": "BUILD.bazel",
},
)

bzl_library(
name = "native",
srcs = glob(["*.bzl"]),
visibility = ["//kotlin:__subpackages__"],
deps = [
"//kotlin/internal/utils",
"//src/main/starlark/core/repositories/kotlin",
"@bazel_skylib//rules/directory",
],
)
15 changes: 15 additions & 0 deletions kotlin/internal/native/BUILD.release.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load(":toolchains.bzl", "kt_configure_native_toolchains")

kt_configure_native_toolchains()

bzl_library(
name = "native",
srcs = glob(["*.bzl"]),
visibility = ["//kotlin:__subpackages__"],
deps = [
"//kotlin/internal/utils",
"//src/main/starlark/core/repositories/kotlin",
"@bazel_skylib//rules/directory",
],
)
91 changes: 91 additions & 0 deletions kotlin/internal/native/library.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
load("//kotlin/internal:defs.bzl", _KtKlibInfo = "KtKlibInfo", _NATIVE_TOOLCHAIN_TYPE = "NATIVE_TOOLCHAIN_TYPE", _TOOLCHAIN_TYPE = "TOOLCHAIN_TYPE")
load("//kotlin/internal/utils:utils.bzl", "utils")

def _kt_library_impl(ctx):
module_name = utils.derive_module_name(ctx)
builder_args = utils.init_args(ctx, "kt_library", module_name)

klib = ctx.actions.declare_file("{}.klib".format(ctx.label.name))
outputs = [klib]

toolchains = ctx.toolchains[_TOOLCHAIN_TYPE]

# Retrieve konan.home from the chosen toolchain's distribution
native_toolchain_info = ctx.toolchains[_NATIVE_TOOLCHAIN_TYPE].kotlin_native_info
konan_home = native_toolchain_info.konan_home
native_target = native_toolchain_info.target

deps_klibs = []
transitive_klibs = []
runfiles = ctx.runfiles(files = [klib] + ctx.files.data)

for dep in ctx.attr.deps:
deps_klibs.append(dep[_KtKlibInfo].klibs)
transitive_klibs.append(dep[_KtKlibInfo].transitive_klibs)
runfiles = runfiles.merge(dep[DefaultInfo].default_runfiles)

for d in ctx.attr.data:
runfiles = runfiles.merge(d[DefaultInfo].default_runfiles)

libraries = depset(transitive = deps_klibs)
builder_args.add_all("--sources", ctx.files.srcs)
builder_inputs, _, input_manifests = ctx.resolve_command(tools = [toolchains.kotlinbuilder])

builder_args.add("--strict_kotlin_deps", "off")
builder_args.add("--reduced_classpath_mode", "off")
builder_args.add("--output_klib", klib.path)
builder_args.add("--kotlin_native_target", native_target)

libraries = depset(transitive = deps_klibs)
builder_args.add_all("--klibs", libraries)
builder_args.add("--konan_home", konan_home.path)

ctx.actions.run(
mnemonic = "KotlinKlibCompile",
inputs = depset(builder_inputs + ctx.files.srcs, transitive = [libraries, native_toolchain_info.konan_home_files]),
outputs = outputs,
executable = toolchains.kotlinbuilder.files_to_run.executable,
tools = [
toolchains.kotlinbuilder.files_to_run,
],
execution_requirements = {"supports-workers": "1"},
arguments = [ctx.actions.args().add_all(toolchains.builder_args), builder_args],
progress_message = "Compiling Kotlin to Klib %%{label} { kt: %d }" % len(ctx.files.srcs),
input_manifests = input_manifests,
env = {
"REPOSITORY_NAME": utils.builder_workspace_name(ctx),
},
)

return [
DefaultInfo(files = depset(outputs, transitive = transitive_klibs + deps_klibs), runfiles = runfiles),
_KtKlibInfo(
klibs = depset(outputs),
transitive_klibs = depset(transitive = transitive_klibs + deps_klibs),
),
]

kt_library = rule(
implementation = _kt_library_impl,
doc = """
This rule is intended to leverage the new Kotlin IR backend to allow for compiling platform-independent Kotlin code
to be shared between Kotlin code for different platforms (JS/JVM/WASM etc.). It produces a klib file as the output.
""",
attrs = {
"srcs": attr.label_list(
doc = "A list of source files to be compiled to klib",
allow_files = [".kt"],
),
"deps": attr.label_list(
doc = "A list of other kt_klib_library targets that this library depends on for compilation",
providers = [_KtKlibInfo],
),
"data": attr.label_list(
doc = """The list of files needed by this rule at runtime. See general comments about `data` at
[Attributes common to all build rules](https://docs.bazel.build/versions/master/be/common-definitions.html#common-attributes).""",
allow_files = True,
),
},
toolchains = [_TOOLCHAIN_TYPE, _NATIVE_TOOLCHAIN_TYPE],
provides = [_KtKlibInfo],
)
Loading