Skip to content

Commit e5fc1ef

Browse files
committed
Automatically work around compiler bug for empty sourceSet
1 parent 9837144 commit e5fc1ef

File tree

5 files changed

+21
-9
lines changed

5 files changed

+21
-9
lines changed

build-logic/build-logic-base/src/main/kotlin/com/ensody/buildlogic/AndroidExt.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ fun Project.setupAndroid(
1313
javaVersion: JavaVersion = JavaVersion.VERSION_17,
1414
) {
1515
configure<BaseExtension> {
16-
namespace = "$group.${name.replace('-', '.')}"
16+
namespace = getDefaultPackageName()
1717
val sdk = 35
1818
compileSdkVersion(sdk)
1919
defaultConfig {

build-logic/build-logic-base/src/main/kotlin/com/ensody/buildlogic/KotlinMultiplatformExt.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,21 @@ fun Project.setupKmp(
1919
javaVersion: JavaVersion = JavaVersion.VERSION_17,
2020
block: KotlinMultiplatformExtension.() -> Unit,
2121
) {
22+
val commonMainDir = file("src/commonMain")
23+
if (!commonMainDir.exists() || commonMainDir.walkBottomUp().none { it.extension == "kt" }) {
24+
val packageName = getDefaultPackageName()
25+
withGeneratedBuildFile("empty", "${packageName.replace(".", "/")}/empty.kt", "commonMain") {
26+
"""
27+
package $packageName
28+
29+
// The Kotlin compiler doesn't like empty binaries
30+
// Workaround for https://youtrack.jetbrains.com/issue/KT-42702
31+
// and https://youtrack.jetbrains.com/issue/KT-47345
32+
internal val empty: Boolean = false
33+
"""
34+
}
35+
}
36+
2237
tasks.withType<Test> {
2338
testLogging {
2439
exceptionFormat = TestExceptionFormat.FULL

build-logic/build-logic-base/src/main/kotlin/com/ensody/buildlogic/Utils.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ fun Project.withGeneratedBuildFile(category: String, path: String, sourceSet: St
4242
generatedFiles.getOrPut(this.path) { mutableSetOf() }.add(outputPath.normalize().absoluteFile)
4343
}
4444

45+
fun Project.getDefaultPackageName(): String =
46+
group.toString().split(".").let { prefix ->
47+
prefix + name.split("-").dropWhile { it == prefix.last() }
48+
}.joinToString(".")
49+
4550
internal val generatedFiles = mutableMapOf<String, MutableSet<File>>()
4651

4752
internal fun File.withParents(): List<File> =

reactivestate-android-test/src/commonMain/kotlin/com/ensody/reactivestate/test/ZzzEmpty.kt

Lines changed: 0 additions & 4 deletions
This file was deleted.

reactivestate-android/src/commonMain/kotlin/com/ensody/reactivestate/ZzzEmpty.kt

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)