Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 7 additions & 1 deletion examples/kotlin/.bazelrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
common --enable_bzlmod

# Bazel 9: external modules still using bare native symbols. Auto-inject loads.
common --incompatible_autoload_externally=+@rules_cc,+@rules_shell
common --incompatible_autoload_externally=+@rules_cc,+@rules_shell

# The rules_android builder tools require a JDK 17 toolchain.
common --java_language_version=17
common --java_runtime_version=17
common --tool_java_language_version=17
common --tool_java_runtime_version=17
2 changes: 1 addition & 1 deletion examples/kotlin/.bazelversion
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8.4.2
9.1.1
10 changes: 10 additions & 0 deletions examples/kotlin/AndroidLib.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.intuit.bazel.kotlin.android

/** A small public surface so the generated ABI `.api` has recognizable signatures. */
public class AndroidLib {
public val greeting: String = "hello"

public fun greet(name: String): String = "$greeting, $name"

public fun add(a: Int, b: Int): Int = a + b
}
12 changes: 11 additions & 1 deletion examples/kotlin/BUILD
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
load("@rules_kotlin//kotlin:lint.bzl", "ktlint_config")
load("@rules_player//kotlin:defs.bzl", "abi_update_all", "kt_jvm", "lint_fix_all")
load("@rules_player//kotlin:defs.bzl", "abi_update_all", "kt_android", "kt_jvm", "lint_fix_all")

ktlint_config(
name = "lint_config",
Expand All @@ -14,6 +14,16 @@ kt_jvm(
test_srcs = ["Tests.kt"],
)

# Regression coverage for #112: the published kt_android target is a
# source-less android_library wrapper, so the ABI dump must target the
# underlying kt_android_library base. api_file defaults, generating
# android_lib-abi-dump / -abi-check / -abi-update.
kt_android(
name = "android_lib",
main_srcs = ["AndroidLib.kt"],
manifest = "src/main/AndroidManifest.xml",
)

abi_update_all(
name = "abi-update-all",
)
Expand Down
22 changes: 20 additions & 2 deletions examples/kotlin/MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,25 @@ local_path_override(
)

bazel_dep(name = "rules_kotlin", version = "2.1.8")
bazel_dep(name = "rules_jvm_external", version = "6.8")
bazel_dep(name = "rules_java", version = "7.2.0")
bazel_dep(name = "rules_jvm_external", version = "6.9")
bazel_dep(name = "rules_android", version = "0.7.2")

# Android tooling + SDK so the kt_android example below can build.
# The SDK is autodetected from $ANDROID_HOME by android_sdk_repository_extension.
remote_android_extensions = use_extension(
"@rules_android//bzlmod_extensions:android_extensions.bzl",
"remote_android_tools_extensions",
)
use_repo(remote_android_extensions, "android_tools")

android_sdk_repository_extension = use_extension(
"@rules_android//rules/android_sdk_repository:rule.bzl",
"android_sdk_repository_extension",
)
use_repo(android_sdk_repository_extension, "androidsdk")

register_toolchains("@androidsdk//:sdk-toolchain", "@androidsdk//:all")

maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
maven.install(
Expand All @@ -28,4 +46,4 @@ maven.install(
"https://plugins.gradle.org/m2/",
],
)
use_repo(maven, "maven")
use_repo(maven, "maven")
1,154 changes: 702 additions & 452 deletions examples/kotlin/MODULE.bazel.lock

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions examples/kotlin/api/android_lib.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
public final class com/intuit/bazel/kotlin/android/AndroidLib {
public fun <init> ()V
public final fun add (II)I
public final fun getGreeting ()Ljava/lang/String;
public final fun greet (Ljava/lang/String;)Ljava/lang/String;
}

4 changes: 4 additions & 0 deletions examples/kotlin/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.intuit.bazel.kotlin.android">
</manifest>
4 changes: 2 additions & 2 deletions kotlin/private/kt_android.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ def kt_android(

maven_coordinates = "%s:%s:aar:%s" % (group, name, version if version else "{pom_version}") if should_publish else None

kt_android_library_and_test(
base_target = kt_android_library_and_test(
name = name,
manifest = manifest,
tags = ["maven_coordinates=%s" % (maven_coordinates)] if maven_coordinates else None,
Expand Down Expand Up @@ -209,7 +209,7 @@ def kt_android(
if api_file != None:
abi(
name = name,
target = ":" + name,
target = base_target,
api_file = None if api_file == ABI_FILE_DEFAULT else api_file,
public_packages = abi_public_packages,
public_classes = abi_public_classes,
Expand Down
2 changes: 2 additions & 0 deletions kotlin/private/kt_android_library_and_test.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -133,3 +133,5 @@ def kt_android_library_and_test(
test_class = test_class,
deps = instrumented_test_deps,
)

return ":" + base_name