Skip to content
Merged
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
5 changes: 1 addition & 4 deletions benchmark/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import com.dokar.quickjs.disableUnsupportedPlatformTasks

plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.kotlinBenchmark)
alias(libs.plugins.kotlinAllOpen)
id("com.dokar.quickjs.disable-unsupported-platform-tasks")
}

kotlin {
Expand Down Expand Up @@ -34,5 +33,3 @@ benchmark {
allOpen {
annotation("org.openjdk.jmh.annotations.State")
}

disableUnsupportedPlatformTasks()
File renamed without changes.
23 changes: 23 additions & 0 deletions build-logic/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
plugins {
`kotlin-dsl`
`java-gradle-plugin`
}

repositories {
google()
mavenCentral()
gradlePluginPortal()
}

gradlePlugin {
plugins {
create("quickJsNativeBuild") {
id = "com.dokar.quickjs.native-build"
implementationClass = "com.dokar.quickjs.QuickJsNativeBuildPlugin"
}
create("disableUnsupportedPlatformTasks") {
id = "com.dokar.quickjs.disable-unsupported-platform-tasks"
implementationClass = "com.dokar.quickjs.DisableUnsupportedPlatformTasksPlugin"
}
}
}
16 changes: 16 additions & 0 deletions build-logic/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}

dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}

rootProject.name = "build-logic"
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,4 @@ private fun currentPlatform(): Platform {
}
}
throw IllegalStateException("Unsupported os, name: $osName, arch: $osArch")
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.dokar.quickjs

import org.gradle.api.Plugin
import org.gradle.api.Project

class QuickJsNativeBuildPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.afterEvaluate {
applyQuickJsNativeBuildTasks(project.file("native/CMakeLists.txt"))
}
}
}

class DisableUnsupportedPlatformTasksPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.gradle.projectsEvaluated {
project.disableUnsupportedPlatformTasks()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,8 @@ private fun Project.findBuildPlatformsFromStartTaskNames(): List<Platform> {
if (isPublishing) {
val allPlatforms = Platform.values().toList()
return when (currentPlatform) {
Platform.linux_x64 -> allPlatforms.filter {
Platform.linux_x64,
Platform.linux_aarch64 -> allPlatforms.filter {
it == Platform.linux_x64 || it == Platform.linux_aarch64
}
Platform.windows_x64 -> allPlatforms.filter { it == Platform.windows_x64 }
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.dokar.quickjs

import org.gradle.api.Project

fun Project.disableUnsupportedPlatformTasks() {
val isPublishing = gradle.startParameter.taskNames.any {
it.contains("publish", ignoreCase = true)
}

tasks.configureEach {
val taskName = name.lowercase()
val platform = when {
taskName.contains("linuxx64") -> Platform.linux_x64
taskName.contains("linuxarm64") -> Platform.linux_aarch64
taskName.contains("mingwx64") -> Platform.windows_x64
taskName.contains("macosx64") -> Platform.macos_x64
taskName.contains("macosarm64") -> Platform.macos_aarch64
taskName.contains("iosx64") -> Platform.ios_x64
taskName.contains("iosarm64") -> Platform.ios_aarch64
taskName.contains("iossimulatorarm64") -> Platform.ios_simulator_aarch64
else -> null
} ?: return@configureEach

enabled = if (isPublishing) {
when (currentPlatform) {
Platform.linux_x64,
Platform.linux_aarch64 -> {
platform == Platform.linux_x64 || platform == Platform.linux_aarch64
}

Platform.windows_x64 -> platform == Platform.windows_x64

Platform.macos_x64,
Platform.macos_aarch64 -> true

else -> false
}
} else {
when (platform) {
Platform.linux_x64 -> currentPlatform == Platform.linux_x64
Platform.linux_aarch64 -> currentPlatform == Platform.linux_aarch64
Platform.windows_x64 -> currentPlatform == Platform.windows_x64
Platform.macos_x64 -> currentPlatform == Platform.macos_x64
Platform.macos_aarch64 -> currentPlatform == Platform.macos_aarch64
Platform.ios_x64 -> currentPlatform == Platform.macos_x64
Platform.ios_aarch64,
Platform.ios_simulator_aarch64 -> currentPlatform == Platform.macos_aarch64
}
}
}
}
8 changes: 0 additions & 8 deletions buildSrc/build.gradle.kts

This file was deleted.

1 change: 0 additions & 1 deletion buildSrc/settings.gradle.kts

This file was deleted.

This file was deleted.

5 changes: 1 addition & 4 deletions quickjs-converter-ktxserialization/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import com.dokar.quickjs.disableUnsupportedPlatformTasks

plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidLibrary)
alias(libs.plugins.mavenPublish)
alias(libs.plugins.serialization)
id("com.dokar.quickjs.disable-unsupported-platform-tasks")
}

kotlin {
Expand Down Expand Up @@ -61,8 +60,6 @@ android {
}
}

disableUnsupportedPlatformTasks()

afterEvaluate {
// Disable Android tests
tasks.matching { it.name == "testDebugUnitTest" }.configureEach {
Expand Down
5 changes: 1 addition & 4 deletions quickjs-converter-moshi/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import com.dokar.quickjs.disableUnsupportedPlatformTasks

plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidLibrary)
alias(libs.plugins.mavenPublish)
alias(libs.plugins.ksp)
id("com.dokar.quickjs.disable-unsupported-platform-tasks")
}

kotlin {
Expand Down Expand Up @@ -51,8 +50,6 @@ dependencies {
add("kspJvmTest", libs.moshi.kotlin.codegen)
}

disableUnsupportedPlatformTasks()

afterEvaluate {
// Disable Android tests
tasks.matching { it.name == "testDebugUnitTest" }.configureEach {
Expand Down
8 changes: 2 additions & 6 deletions quickjs/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
/// Based on https://github.com/cashapp/zipline/blob/trunk/zipline/build.gradle.kts
import com.dokar.quickjs.applyQuickJsNativeBuildTasks
import com.dokar.quickjs.disableUnsupportedPlatformTasks
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget

plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidLibrary)
alias(libs.plugins.mavenPublish)
id("com.dokar.quickjs.native-build")
id("com.dokar.quickjs.disable-unsupported-platform-tasks")
}

kotlin {
Expand Down Expand Up @@ -140,10 +140,6 @@ android {
}
}

applyQuickJsNativeBuildTasks(cmakeFile)

disableUnsupportedPlatformTasks()

afterEvaluate {
// Disable Android tests
tasks.matching { it.name == "testDebugUnitTest" }.configureEach {
Expand Down
4 changes: 1 addition & 3 deletions samples/repl/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
@file:OptIn(org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCacheApi::class)

import com.dokar.quickjs.disableUnsupportedPlatformTasks
import org.jetbrains.kotlin.gradle.plugin.mpp.DisableCacheInKotlinVersion

plugins {
alias(libs.plugins.kotlinMultiplatform)
id("com.dokar.quickjs.disable-unsupported-platform-tasks")
}

kotlin {
Expand Down Expand Up @@ -57,5 +57,3 @@ java {
// application {
// mainClass.set("ReplMainKt")
// }

disableUnsupportedPlatformTasks()
2 changes: 2 additions & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
pluginManagement {
includeBuild("build-logic")

repositories {
google {
content {
Expand Down
Loading