From b7ba6f6daa65eabd1dd517fb089b4ab42f58a49a Mon Sep 17 00:00:00 2001 From: Edwin Jakobs Date: Wed, 17 Sep 2025 01:03:02 -0700 Subject: [PATCH] Feature variants (#376) Migrate from buildSrc to build-logic. Setup feature variants. --- build-logic/build.gradle.kts | 7 + build-logic/orx-convention/build.gradle.kts | 24 +++ .../extra/convention}/CollectScreenShots.kt | 2 +- .../extra/convention}/EmbedShaders.kt | 0 .../org/openrndr/extra/convention/Utils.kt | 2 - .../component-metadata-rule.gradle.kts | 4 + .../extra/convention/dokka.gradle.kts | 0 .../extra/convention/kotlin-jvm.gradle.kts | 30 ++-- .../kotlin-multiplatform.gradle.kts | 22 ++- .../extra/convention/variant.gradle.kts | 5 + .../src/preload/kotlin/ApplicationPreload.kt | 0 .../orx-variant-plugin/build.gradle.kts | 17 ++ .../src/main/kotlin/VariantPlugin.kt | 169 ++++++++++++++++++ {buildSrc => build-logic}/settings.gradle.kts | 2 + buildSrc/build.gradle.kts | 27 --- .../openrndr/extra/convention/FFmpegRule.kt | 46 ----- .../openrndr/extra/convention/LwjglRule.kt | 48 ----- .../component-metadata-rule.gradle.kts | 11 -- gradle/libs.versions.toml | 4 - openrndr-demos/build.gradle.kts | 2 +- orx-camera/build.gradle.kts | 2 +- orx-color/build.gradle.kts | 7 +- orx-composition/build.gradle.kts | 7 +- orx-compositor/build.gradle.kts | 2 +- orx-delegate-magic/build.gradle.kts | 2 +- orx-depth-camera/build.gradle.kts | 2 +- orx-easing/build.gradle.kts | 7 +- orx-envelopes/build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- orx-expression-evaluator/build.gradle.kts | 2 +- orx-fcurve/build.gradle.kts | 4 +- orx-fft/build.gradle.kts | 2 +- orx-fx/build.gradle.kts | 2 +- orx-gradient-descent/build.gradle.kts | 2 +- orx-hash-grid/build.gradle.kts | 2 +- orx-image-fit/build.gradle.kts | 2 +- orx-integral-image/build.gradle.kts | 2 +- orx-interval-tree/build.gradle.kts | 2 +- orx-jumpflood/build.gradle.kts | 2 +- orx-jvm/build.gradle.kts | 2 +- orx-jvm/orx-axidraw/build.gradle.kts | 2 +- orx-jvm/orx-boofcv/build.gradle.kts | 2 +- orx-jvm/orx-chataigne/build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- orx-jvm/orx-dnk3/build.gradle.kts | 2 +- orx-jvm/orx-file-watcher/build.gradle.kts | 2 +- .../orx-git-archiver-gradle/build.gradle.kts | 2 +- orx-jvm/orx-git-archiver/build.gradle.kts | 2 +- orx-jvm/orx-gui/build.gradle.kts | 2 +- orx-jvm/orx-keyframer/build.gradle.kts | 2 +- orx-jvm/orx-kinect-common/build.gradle.kts | 2 +- orx-jvm/orx-kinect-v1-demo/build.gradle.kts | 6 +- .../build.gradle.kts | 6 - .../build.gradle.kts | 6 - .../build.gradle.kts | 6 - .../build.gradle.kts | 6 - orx-jvm/orx-kinect-v1/build.gradle.kts | 27 ++- orx-jvm/orx-kotlin-parser/build.gradle.kts | 2 +- orx-jvm/orx-midi/build.gradle.kts | 2 +- orx-jvm/orx-minim/build.gradle.kts | 2 +- orx-jvm/orx-olive/build.gradle.kts | 2 +- orx-jvm/orx-osc/build.gradle.kts | 2 +- orx-jvm/orx-panel/build.gradle.kts | 2 +- orx-jvm/orx-poisson-fill/build.gradle.kts | 2 +- orx-jvm/orx-processing/build.gradle.kts | 2 +- orx-jvm/orx-rabbit-control/build.gradle.kts | 2 +- .../build.gradle.kts | 6 - .../build.gradle.kts | 6 - .../build.gradle.kts | 6 - orx-jvm/orx-realsense2/build.gradle.kts | 24 ++- orx-jvm/orx-syphon/build.gradle.kts | 4 +- orx-jvm/orx-video-profiles/build.gradle.kts | 2 +- orx-kdtree/build.gradle.kts | 2 +- orx-marching-squares/build.gradle.kts | 2 +- orx-math/build.gradle.kts | 7 +- orx-mesh-generators/build.gradle.kts | 2 +- orx-mesh-noise/build.gradle.kts | 2 +- orx-mesh/build.gradle.kts | 2 +- orx-module-catalog/build.gradle.kts | 34 +++- orx-no-clear/build.gradle.kts | 2 +- orx-noise/build.gradle.kts | 2 +- orx-noise/src/jvmDemo/kotlin/DemoBla.kt | 18 ++ orx-obj-loader/build.gradle.kts | 2 +- orx-palette/build.gradle.kts | 2 +- orx-parameters/build.gradle.kts | 2 +- orx-property-watchers/build.gradle.kts | 2 +- orx-quadtree/build.gradle.kts | 2 +- orx-shade-styles/build.gradle.kts | 2 +- orx-shader-phrases/build.gradle.kts | 2 +- orx-shapes/build.gradle.kts | 2 +- orx-svg/build.gradle.kts | 2 +- orx-temporal-blur/build.gradle.kts | 2 +- orx-text-on-contour/build.gradle.kts | 2 +- orx-text-writer/build.gradle.kts | 2 +- orx-time-operators/build.gradle.kts | 2 +- orx-timer/build.gradle.kts | 2 +- orx-triangulation/build.gradle.kts | 2 +- orx-turtle/build.gradle.kts | 2 +- orx-view-box/build.gradle.kts | 2 +- settings.gradle.kts | 19 +- 100 files changed, 424 insertions(+), 326 deletions(-) create mode 100644 build-logic/build.gradle.kts create mode 100644 build-logic/orx-convention/build.gradle.kts rename {buildSrc/src/main/kotlin => build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention}/CollectScreenShots.kt (99%) rename {buildSrc/src/main/kotlin => build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention}/EmbedShaders.kt (100%) rename {buildSrc => build-logic/orx-convention}/src/main/kotlin/org/openrndr/extra/convention/Utils.kt (91%) create mode 100644 build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/component-metadata-rule.gradle.kts rename {buildSrc => build-logic/orx-convention}/src/main/kotlin/org/openrndr/extra/convention/dokka.gradle.kts (100%) rename {buildSrc => build-logic/orx-convention}/src/main/kotlin/org/openrndr/extra/convention/kotlin-jvm.gradle.kts (82%) rename {buildSrc => build-logic/orx-convention}/src/main/kotlin/org/openrndr/extra/convention/kotlin-multiplatform.gradle.kts (89%) create mode 100644 build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/variant.gradle.kts rename {buildSrc => build-logic/orx-convention}/src/preload/kotlin/ApplicationPreload.kt (100%) create mode 100644 build-logic/orx-variant-plugin/build.gradle.kts create mode 100644 build-logic/orx-variant-plugin/src/main/kotlin/VariantPlugin.kt rename {buildSrc => build-logic}/settings.gradle.kts (94%) delete mode 100644 buildSrc/build.gradle.kts delete mode 100644 buildSrc/src/main/kotlin/org/openrndr/extra/convention/FFmpegRule.kt delete mode 100644 buildSrc/src/main/kotlin/org/openrndr/extra/convention/LwjglRule.kt delete mode 100644 buildSrc/src/main/kotlin/org/openrndr/extra/convention/component-metadata-rule.gradle.kts delete mode 100644 orx-jvm/orx-kinect-v1-natives-linux-arm64/build.gradle.kts delete mode 100644 orx-jvm/orx-kinect-v1-natives-linux-x64/build.gradle.kts delete mode 100644 orx-jvm/orx-kinect-v1-natives-macos/build.gradle.kts delete mode 100644 orx-jvm/orx-kinect-v1-natives-windows/build.gradle.kts delete mode 100644 orx-jvm/orx-realsense2-natives-linux-x64/build.gradle.kts delete mode 100644 orx-jvm/orx-realsense2-natives-macos/build.gradle.kts delete mode 100644 orx-jvm/orx-realsense2-natives-windows/build.gradle.kts create mode 100644 orx-noise/src/jvmDemo/kotlin/DemoBla.kt diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts new file mode 100644 index 00000000..8156a89b --- /dev/null +++ b/build-logic/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + `kotlin-dsl` +} + +repositories { + gradlePluginPortal() +} \ No newline at end of file diff --git a/build-logic/orx-convention/build.gradle.kts b/build-logic/orx-convention/build.gradle.kts new file mode 100644 index 00000000..03fade28 --- /dev/null +++ b/build-logic/orx-convention/build.gradle.kts @@ -0,0 +1,24 @@ +plugins { + `kotlin-dsl` +} + +val preload: SourceSet by project.sourceSets.creating + +repositories { + mavenCentral() + mavenLocal() +} +val libs = extensions.getByType().named("libs") +dependencies { + implementation(project(":orx-variant-plugin")) + implementation(libs.findLibrary("kotlin-gradle-plugin").get()) + implementation(libs.findLibrary("dokka-gradle-plugin").get()) + "preloadImplementation"(openrndr.application) + "preloadImplementation"(openrndr.orextensions) +} +kotlin { + compilerOptions { + freeCompilerArgs.add("-Xskip-metadata-version-check") + } +} +tasks.getByName("compileKotlin").dependsOn("compilePreloadKotlin") diff --git a/buildSrc/src/main/kotlin/CollectScreenShots.kt b/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/CollectScreenShots.kt similarity index 99% rename from buildSrc/src/main/kotlin/CollectScreenShots.kt rename to build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/CollectScreenShots.kt index e4cbea24..4b82b4a8 100644 --- a/buildSrc/src/main/kotlin/CollectScreenShots.kt +++ b/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/CollectScreenShots.kt @@ -38,7 +38,7 @@ abstract class CollectScreenshotsTask @Inject constructor() : DefaultTask() { @TaskAction fun execute(inputChanges: InputChanges) { - val preloadClass = File(project.rootProject.projectDir, "buildSrc/build/classes/kotlin/preload") + val preloadClass = File(project.rootProject.projectDir, "build-logic/orx-convention/build/classes/kotlin/preload") require(preloadClass.exists()) { "preload class not found: '${preloadClass.absolutePath}'" } diff --git a/buildSrc/src/main/kotlin/EmbedShaders.kt b/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/EmbedShaders.kt similarity index 100% rename from buildSrc/src/main/kotlin/EmbedShaders.kt rename to build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/EmbedShaders.kt diff --git a/buildSrc/src/main/kotlin/org/openrndr/extra/convention/Utils.kt b/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/Utils.kt similarity index 91% rename from buildSrc/src/main/kotlin/org/openrndr/extra/convention/Utils.kt rename to build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/Utils.kt index 93a8cff9..eca448a1 100644 --- a/buildSrc/src/main/kotlin/org/openrndr/extra/convention/Utils.kt +++ b/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/Utils.kt @@ -6,8 +6,6 @@ import org.gradle.nativeplatform.MachineArchitecture import org.gradle.nativeplatform.OperatingSystemFamily import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform -data class JvmNativeVariant(val targetName: String, val os: String, val arch: String) - val currentOperatingSystemName: String = DefaultNativePlatform.getCurrentOperatingSystem().toFamilyName() val currentArchitectureName: String = DefaultNativePlatform.getCurrentArchitecture().name diff --git a/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/component-metadata-rule.gradle.kts b/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/component-metadata-rule.gradle.kts new file mode 100644 index 00000000..18905da5 --- /dev/null +++ b/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/component-metadata-rule.gradle.kts @@ -0,0 +1,4 @@ +package org.openrndr.extra.convention + +addHostMachineAttributesToRuntimeConfigurations() + diff --git a/buildSrc/src/main/kotlin/org/openrndr/extra/convention/dokka.gradle.kts b/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/dokka.gradle.kts similarity index 100% rename from buildSrc/src/main/kotlin/org/openrndr/extra/convention/dokka.gradle.kts rename to build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/dokka.gradle.kts diff --git a/buildSrc/src/main/kotlin/org/openrndr/extra/convention/kotlin-jvm.gradle.kts b/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/kotlin-jvm.gradle.kts similarity index 82% rename from buildSrc/src/main/kotlin/org/openrndr/extra/convention/kotlin-jvm.gradle.kts rename to build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/kotlin-jvm.gradle.kts index 360d38a0..8c493363 100644 --- a/buildSrc/src/main/kotlin/org/openrndr/extra/convention/kotlin-jvm.gradle.kts +++ b/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/kotlin-jvm.gradle.kts @@ -1,9 +1,7 @@ package org.openrndr.extra.convention import ScreenshotsHelper.collectScreenshots -import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.api.tasks.testing.logging.TestExceptionFormat -import org.gradle.kotlin.dsl.the import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform import org.jetbrains.kotlin.gradle.dsl.JvmTarget @@ -11,7 +9,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion val sharedLibs = extensions.getByType(VersionCatalogsExtension::class.java).named("sharedLibs") val openrndr = extensions.getByType(VersionCatalogsExtension::class.java).named("openrndr") -val libs = the() +val libs = extensions.getByType(VersionCatalogsExtension::class.java).named("libs") val shouldPublish = project.name !in setOf("openrndr-demos", "orx-git-archiver-gradle") @@ -34,10 +32,10 @@ repositories { group = "org.openrndr.extra" -val main: SourceSet by sourceSets.getting +val main: SourceSet by project.sourceSets.getting @Suppress("UNUSED_VARIABLE") -val demo: SourceSet by sourceSets.creating { +val demo: SourceSet by project.sourceSets.creating { val skipDemos = setOf( "openrndr-demos", "orx-axidraw", @@ -60,13 +58,11 @@ dependencies { testRuntimeOnly(sharedLibs.findLibrary("slf4j-simple").get()) "demoImplementation"(main.output.classesDirs + main.runtimeClasspath) "demoImplementation"(openrndr.findLibrary("application").get()) - "demoImplementation"(libs.openrndr.extensions) + "demoImplementation"(openrndr.findLibrary("orextensions").get()) - if (DefaultNativePlatform.getCurrentOperatingSystem().isMacOsX) { - "demoRuntimeOnly"(libs.openrndr.gl3.natives.macos.arm64) - } - "demoRuntimeOnly"(libs.openrndr.gl3.core) - "demoRuntimeOnly"(sharedLibs.findLibrary("slf4j.simple").get()) + "demoRuntimeOnly"(openrndr.findLibrary("gl3").get()) + + "demoRuntimeOnly"(sharedLibs.findLibrary("slf4j-simple").get()) } tasks { @@ -88,11 +84,11 @@ tasks { } withType { compilerOptions { - jvmTarget.set(JvmTarget.valueOf("JVM_${libs.versions.jvmTarget.get()}")) + jvmTarget.set(JvmTarget.valueOf("JVM_${libs.findVersion("jvmTarget").get().displayName.replace(".", "_")}")) freeCompilerArgs.add("-Xexpect-actual-classes") - freeCompilerArgs.add("-Xjdk-release=${libs.versions.jvmTarget.get()}") - apiVersion.set(KotlinVersion.valueOf("KOTLIN_${libs.versions.kotlinApi.get().replace(".", "_")}")) - languageVersion.set(KotlinVersion.valueOf("KOTLIN_${libs.versions.kotlinLanguage.get().replace(".", "_")}")) + freeCompilerArgs.add("-Xjdk-release=${libs.findVersion("jvmTarget").get().displayName}") + apiVersion.set(KotlinVersion.valueOf("KOTLIN_${libs.findVersion("kotlinApi").get().displayName.replace(".", "_")}")) + languageVersion.set(KotlinVersion.valueOf("KOTLIN_${libs.findVersion("kotlinLanguage").get().displayName.replace(".", "_")}")) } } } @@ -100,8 +96,8 @@ tasks { java { withJavadocJar() withSourcesJar() - targetCompatibility = JavaVersion.valueOf("VERSION_${libs.versions.jvmTarget.get()}") - sourceCompatibility = JavaVersion.valueOf("VERSION_${libs.versions.jvmTarget.get()}") + targetCompatibility = JavaVersion.valueOf("VERSION_${libs.findVersion("jvmTarget").get().displayName}") + sourceCompatibility = JavaVersion.valueOf("VERSION_${libs.findVersion("jvmTarget").get().displayName}") } val isReleaseVersion = !(version.toString()).endsWith("SNAPSHOT") diff --git a/buildSrc/src/main/kotlin/org/openrndr/extra/convention/kotlin-multiplatform.gradle.kts b/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/kotlin-multiplatform.gradle.kts similarity index 89% rename from buildSrc/src/main/kotlin/org/openrndr/extra/convention/kotlin-multiplatform.gradle.kts rename to build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/kotlin-multiplatform.gradle.kts index c8b23742..5e281f2c 100644 --- a/buildSrc/src/main/kotlin/org/openrndr/extra/convention/kotlin-multiplatform.gradle.kts +++ b/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/kotlin-multiplatform.gradle.kts @@ -1,7 +1,6 @@ package org.openrndr.extra.convention import CollectScreenshotsTask -import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform @@ -11,7 +10,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile -val libs = the() +val libs = extensions.getByType(VersionCatalogsExtension::class.java).named("libs") val sharedLibs = extensions.getByType(VersionCatalogsExtension::class.java).named("sharedLibs") val openrndr = extensions.getByType(VersionCatalogsExtension::class.java).named("openrndr") @@ -37,16 +36,16 @@ group = "org.openrndr.extra" tasks.withType> { compilerOptions { - apiVersion.set(KotlinVersion.valueOf("KOTLIN_${libs.versions.kotlinApi.get().replace(".", "_")}")) - languageVersion.set(KotlinVersion.valueOf("KOTLIN_${libs.versions.kotlinLanguage.get().replace(".", "_")}")) + apiVersion.set(KotlinVersion.valueOf("KOTLIN_${libs.findVersion("kotlinApi").get().displayName.replace(".", "_")}")) + languageVersion.set(KotlinVersion.valueOf("KOTLIN_${libs.findVersion("kotlinLanguage").get().displayName.replace(".", "_")}")) freeCompilerArgs.add("-Xexpect-actual-classes") } } tasks.withType().configureEach { compilerOptions { - jvmTarget.set(JvmTarget.fromTarget(libs.versions.jvmTarget.get())) - freeCompilerArgs.add("-Xjdk-release=${libs.versions.jvmTarget.get()}") + jvmTarget.set(JvmTarget.fromTarget(libs.findVersion("jvmTarget").get().displayName)) + freeCompilerArgs.add("-Xjdk-release=${libs.findVersion("jvmTarget").get().displayName}") } } @@ -65,9 +64,8 @@ kotlin { dependsOn(compileTaskProvider) } dependencies { - if (DefaultNativePlatform.getCurrentOperatingSystem().isMacOsX) { - runtimeOnly(libs.openrndr.gl3.natives.macos.arm64) - } + runtimeOnly(openrndr.findLibrary("gl3").get()) + } } } @@ -91,14 +89,14 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(libs.kotlin.stdlib) + implementation(libs.findLibrary("kotlin-stdlib").get()) implementation(sharedLibs.findLibrary("kotlin-logging").get()) } } val commonTest by getting { dependencies { - implementation(libs.kotlin.test) + implementation(libs.findLibrary("kotlin-test").get()) } } @@ -113,7 +111,7 @@ kotlin { dependencies { implementation(openrndr.findLibrary("application").get()) implementation(openrndr.findLibrary("orextensions").get()) - runtimeOnly(libs.openrndr.gl3.core) + runtimeOnly(openrndr.findLibrary("gl3").get()) runtimeOnly(sharedLibs.findLibrary("slf4j-simple").get()) } } diff --git a/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/variant.gradle.kts b/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/variant.gradle.kts new file mode 100644 index 00000000..5630bc03 --- /dev/null +++ b/build-logic/orx-convention/src/main/kotlin/org/openrndr/extra/convention/variant.gradle.kts @@ -0,0 +1,5 @@ +package org.openrndr.extra.convention + +plugins { + id("orx-variant") +} \ No newline at end of file diff --git a/buildSrc/src/preload/kotlin/ApplicationPreload.kt b/build-logic/orx-convention/src/preload/kotlin/ApplicationPreload.kt similarity index 100% rename from buildSrc/src/preload/kotlin/ApplicationPreload.kt rename to build-logic/orx-convention/src/preload/kotlin/ApplicationPreload.kt diff --git a/build-logic/orx-variant-plugin/build.gradle.kts b/build-logic/orx-variant-plugin/build.gradle.kts new file mode 100644 index 00000000..afb6774b --- /dev/null +++ b/build-logic/orx-variant-plugin/build.gradle.kts @@ -0,0 +1,17 @@ +plugins { + `kotlin-dsl` +} + +repositories { + mavenCentral() +} + + +gradlePlugin { + plugins { + create("orxVariants") { + id = "orx-variant" + implementationClass = "org.openrndr.extra.variant.plugin.VariantPlugin" + } + } +} \ No newline at end of file diff --git a/build-logic/orx-variant-plugin/src/main/kotlin/VariantPlugin.kt b/build-logic/orx-variant-plugin/src/main/kotlin/VariantPlugin.kt new file mode 100644 index 00000000..67441a88 --- /dev/null +++ b/build-logic/orx-variant-plugin/src/main/kotlin/VariantPlugin.kt @@ -0,0 +1,169 @@ +package org.openrndr.extra.variant.plugin + +import org.gradle.api.Action +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.api.artifacts.Configuration +import org.gradle.api.artifacts.Dependency +import org.gradle.api.attributes.Attribute +import org.gradle.api.attributes.Bundling +import org.gradle.api.attributes.Category +import org.gradle.api.attributes.LibraryElements +import org.gradle.api.attributes.Usage +import org.gradle.api.attributes.java.TargetJvmVersion +import org.gradle.api.component.AdhocComponentWithVariants +import org.gradle.api.model.ObjectFactory +import org.gradle.api.plugins.jvm.JvmComponentDependencies +import org.gradle.api.tasks.Nested +import org.gradle.api.tasks.SourceSet +import org.gradle.api.tasks.SourceSetContainer +import org.gradle.api.tasks.TaskContainer +import org.gradle.jvm.tasks.Jar +import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.named +import org.gradle.language.jvm.tasks.ProcessResources +import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform +import javax.inject.Inject + +fun arch(arch: String = System.getProperty("os.arch")): String { + return when (arch) { + "x86-64", "x86_64", "amd64" -> "x86-64" + "arm64", "aarch64" -> "aarch64" + else -> error("unsupported arch $arch") + } +} + +abstract class VariantContainer @Inject constructor( + @Inject val tasks: TaskContainer, + val apiElements: Configuration, + + val runtimeElements: Configuration, + val sourceSet: SourceSet +) { + + @Nested + abstract fun getDependencies(): JvmComponentDependencies + + fun Dependency.withClassifier(classifier: String): String { + return "$group:$name:$version:$classifier" + } + + /** + * Setup dependencies for this variant. + */ + fun dependencies(action: Action) { + action.execute(getDependencies()) + } + + /** + * Specify that this variant comes with a resource bundle. + */ + fun jar(action: Action) { + sourceSet.resources.srcDirs.add(sourceSet.java.srcDirs.first().parentFile.resolve("resources")) + sourceSet.resources.includes.add("**/*.*") + tasks.named(sourceSet.jarTaskName).configure { + include("**/*.*") + dependsOn(tasks.named(sourceSet.processResourcesTaskName)) + manifest { + //this.attributes() + } + this.from(sourceSet.resources.srcDirs) + } + runtimeElements.outgoing.artifact(tasks.named(sourceSet.jarTaskName)) + action.execute(Unit) + } +} + +abstract class VariantExtension( + @Inject val objectFactory: ObjectFactory, + @Inject val project: Project +) { + + fun platform(os: String, arch: String, f: VariantContainer.() -> Unit) { + val sourceSets = project.extensions.getByType(SourceSetContainer::class.java) + + val sourceSetArch = arch.replace("-", "_") + val nameMain = "${os}${sourceSetArch.capitalize()}Main" + val platformMain = sourceSets.create(nameMain) + val tasks = project.tasks + tasks.register(platformMain.jarTaskName, Jar::class.java) { + archiveClassifier.set("$os-$arch") + } + + val configurations = project.configurations + val objects = project.objects + + val main = sourceSets.getByName("main") + val mainApi = configurations.getByName(main.apiElementsConfigurationName) + val mainRuntimeOnly = configurations.getByName(main.runtimeElementsConfigurationName) + + mainApi.attributes { + val osAttribute = Attribute.of("org.gradle.native.operatingSystem", String::class.java) + attribute(osAttribute, "do_not_use_me") + } + + val platformMainRuntimeElements = configurations.create(platformMain.runtimeElementsConfigurationName) { + extendsFrom(mainRuntimeOnly, mainApi) + isCanBeResolved = false + isCanBeConsumed = true + val osAttribute = Attribute.of("org.gradle.native.operatingSystem", String::class.java) + val archAttribute = Attribute.of("org.gradle.native.architecture", String::class.java) + val typeAttribute = Attribute.of("org.jetbrains.kotlin.platform.type", String::class.java) + val environmentAttribute = Attribute.of("org.gradle.jvm.environment", String::class.java) + + attributes { + attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME)) + attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY)) + attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.JAR)) + attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 17) + attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL)) + + attribute(osAttribute, os) + attribute(archAttribute, arch) + attribute(typeAttribute, "jvm") + attribute(environmentAttribute, "standard-jvm") + } + outgoing.artifact(tasks.named(main.jarTaskName)) + outgoing.artifact(tasks.named(platformMain.jarTaskName)) + } + + val javaComponent = project.components.getByName("java") as AdhocComponentWithVariants + javaComponent.addVariantsFromConfiguration(platformMainRuntimeElements) { + platformMain.runtimeClasspath.files.add(platformMain.resources.srcDirs.first()) + } + + val variantContainer = objectFactory.newInstance( + VariantContainer::class.java, + platformMainRuntimeElements, + platformMainRuntimeElements, + platformMain + ) + variantContainer.f() + + platformMainRuntimeElements.dependencies.addAll(variantContainer.getDependencies().runtimeOnly.dependencies.get()) + + /* + Setup dependencies for current platform. This will make in-module tests and demos work. + */ + val currentOperatingSystemName: String = DefaultNativePlatform.getCurrentOperatingSystem().toFamilyName() + val currentArchitectureName: String = arch() + + if (currentOperatingSystemName == os && currentArchitectureName == arch) { + project.dependencies { + add("testRuntimeOnly", platformMain.output) + add("demoRuntimeOnly", platformMain.output) + for (i in platformMainRuntimeElements.dependencies) { + add("testRuntimeOnly", i) + add("demoRuntimeOnly", i) + } + } + } + } +} + +class VariantPlugin : Plugin { + override fun apply(target: Project) { + val project = target + project.extensions.create("variants", VariantExtension::class.java) + } +} \ No newline at end of file diff --git a/buildSrc/settings.gradle.kts b/build-logic/settings.gradle.kts similarity index 94% rename from buildSrc/settings.gradle.kts rename to build-logic/settings.gradle.kts index e7f90242..e8b24cce 100644 --- a/buildSrc/settings.gradle.kts +++ b/build-logic/settings.gradle.kts @@ -1,3 +1,5 @@ +include("orx-convention", "orx-variant-plugin") + dependencyResolutionManagement { repositories { mavenCentral() diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts deleted file mode 100644 index 33b0d360..00000000 --- a/buildSrc/build.gradle.kts +++ /dev/null @@ -1,27 +0,0 @@ -plugins { - `kotlin-dsl` -// alias(sha) -} - -val preload: SourceSet by sourceSets.creating - -repositories { - mavenCentral() - mavenLocal() -} - -dependencies { - implementation(libs.kotlin.gradle.plugin) - implementation(libs.dokka.gradle.plugin) - implementation(libs.kotlin.serialization.gradle.plugin) - // https://github.com/gradle/gradle/issues/15383#issuecomment-779893192 - implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location)) - "preloadImplementation"(openrndr.application) - "preloadImplementation"(libs.openrndr.extensions) -} -kotlin { - compilerOptions { - freeCompilerArgs.add("-Xskip-metadata-version-check") - } -} -tasks.getByName("compileKotlin").dependsOn("compilePreloadKotlin") \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/org/openrndr/extra/convention/FFmpegRule.kt b/buildSrc/src/main/kotlin/org/openrndr/extra/convention/FFmpegRule.kt deleted file mode 100644 index 3a40d673..00000000 --- a/buildSrc/src/main/kotlin/org/openrndr/extra/convention/FFmpegRule.kt +++ /dev/null @@ -1,46 +0,0 @@ -package org.openrndr.extra.convention - -import org.gradle.api.artifacts.CacheableRule -import org.gradle.api.artifacts.ComponentMetadataContext -import org.gradle.api.artifacts.ComponentMetadataRule -import org.gradle.api.model.ObjectFactory -import org.gradle.kotlin.dsl.named -import org.gradle.nativeplatform.MachineArchitecture -import org.gradle.nativeplatform.OperatingSystemFamily -import javax.inject.Inject - -@CacheableRule -abstract class FFmpegRule : ComponentMetadataRule { - val jvmNativeVariants: List = listOf( - JvmNativeVariant("linux-arm64", OperatingSystemFamily.LINUX, "aarch64"), - JvmNativeVariant("linux-arm64", OperatingSystemFamily.LINUX, "arm64-v8"), - JvmNativeVariant("linux-x86_64", OperatingSystemFamily.LINUX, "x86-64"), - JvmNativeVariant("macosx-arm64", OperatingSystemFamily.MACOS, "aarch64"), - JvmNativeVariant("macosx-arm64", OperatingSystemFamily.MACOS, "arm64-v8"), - JvmNativeVariant("macosx-x86_64", OperatingSystemFamily.MACOS, "x86-64"), - JvmNativeVariant("windows-x86_64", OperatingSystemFamily.WINDOWS, "x86-64") - ) - - @get:Inject - abstract val objects: ObjectFactory - - override fun execute(context: ComponentMetadataContext) = context.details.run { - withVariant("runtime") { - attributes { - attributes.attribute(OperatingSystemFamily.OPERATING_SYSTEM_ATTRIBUTE, objects.named("none")) - attributes.attribute(MachineArchitecture.ARCHITECTURE_ATTRIBUTE, objects.named("none")) - } - } - for ((targetName, os, arch) in jvmNativeVariants) { - addVariant("$targetName-$arch-runtime", "runtime") { - attributes { - attributes.attribute(OperatingSystemFamily.OPERATING_SYSTEM_ATTRIBUTE, objects.named(os)) - attributes.attribute(MachineArchitecture.ARCHITECTURE_ATTRIBUTE, objects.named(arch)) - } - withFiles { - addFile("${id.name}-${id.version}-$targetName.jar") - } - } - } - } -} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/org/openrndr/extra/convention/LwjglRule.kt b/buildSrc/src/main/kotlin/org/openrndr/extra/convention/LwjglRule.kt deleted file mode 100644 index 42c87fc9..00000000 --- a/buildSrc/src/main/kotlin/org/openrndr/extra/convention/LwjglRule.kt +++ /dev/null @@ -1,48 +0,0 @@ -package org.openrndr.extra.convention - -import org.gradle.api.artifacts.CacheableRule -import org.gradle.api.artifacts.ComponentMetadataContext -import org.gradle.api.artifacts.ComponentMetadataRule -import org.gradle.api.model.ObjectFactory -import org.gradle.kotlin.dsl.named -import org.gradle.nativeplatform.MachineArchitecture -import org.gradle.nativeplatform.OperatingSystemFamily -import javax.inject.Inject - -@CacheableRule -abstract class LwjglRule : ComponentMetadataRule { - val jvmNativeVariants: List = listOf( - JvmNativeVariant("natives-linux-arm64", OperatingSystemFamily.LINUX, "aarch64"), - JvmNativeVariant("natives-linux-arm64", OperatingSystemFamily.LINUX, "arm64-v8"), - JvmNativeVariant("natives-linux", OperatingSystemFamily.LINUX, "x86-64"), - JvmNativeVariant("natives-macos-arm64", OperatingSystemFamily.MACOS, "aarch64"), - JvmNativeVariant("natives-macos-arm64", OperatingSystemFamily.MACOS, "arm64-v8"), - JvmNativeVariant("natives-macos", OperatingSystemFamily.MACOS, "x86-64"), - JvmNativeVariant("natives-windows", OperatingSystemFamily.WINDOWS, "x86-64") - ) - - @get:Inject - abstract val objects: ObjectFactory - - override fun execute(context: ComponentMetadataContext) = context.details.run { - if (id.group != "org.lwjgl") return - if (id.name == "lwjgl-egl") return - withVariant("runtime") { - attributes { - attributes.attribute(OperatingSystemFamily.OPERATING_SYSTEM_ATTRIBUTE, objects.named("none")) - attributes.attribute(MachineArchitecture.ARCHITECTURE_ATTRIBUTE, objects.named("none")) - } - } - for ((targetName, os, arch) in jvmNativeVariants) { - addVariant("$targetName-$arch-runtime", "runtime") { - attributes { - attributes.attribute(OperatingSystemFamily.OPERATING_SYSTEM_ATTRIBUTE, objects.named(os)) - attributes.attribute(MachineArchitecture.ARCHITECTURE_ATTRIBUTE, objects.named(arch)) - } - withFiles { - addFile("${id.name}-${id.version}-$targetName.jar") - } - } - } - } -} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/org/openrndr/extra/convention/component-metadata-rule.gradle.kts b/buildSrc/src/main/kotlin/org/openrndr/extra/convention/component-metadata-rule.gradle.kts deleted file mode 100644 index 7c57e534..00000000 --- a/buildSrc/src/main/kotlin/org/openrndr/extra/convention/component-metadata-rule.gradle.kts +++ /dev/null @@ -1,11 +0,0 @@ -package org.openrndr.extra.convention - -addHostMachineAttributesToRuntimeConfigurations() - -dependencies { - components { - all() - withModule("org.bytedeco:javacpp") - withModule("org.bytedeco:ffmpeg") - } -} \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e52601e0..d7b86274 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -39,10 +39,6 @@ mockk = { group = "io.mockk", name = "mockk", version.ref = "mockk"} processing-core = { group = "org.processing", name = "core", version.ref = "processing"} -openrndr-extensions = { group = "org.openrndr", name = "openrndr-extensions", version.ref = "openrndr" } -openrndr-gl3-core = { group = "org.openrndr", name = "openrndr-gl3", version.ref = "openrndr" } -openrndr-gl3-natives-macos-arm64 = { group = "org.openrndr", name = "openrndr-gl3-natives-macos-arm64", version.ref = "openrndr" } - boofcv = { group = "org.boofcv", name = "boofcv-core", version.ref = "boofcv" } libfreenect = { group = "org.bytedeco", name = "libfreenect", version.ref = "libfreenect" } librealsense = { group = "org.bytedeco", name = "librealsense2", version.ref = "librealsense" } diff --git a/openrndr-demos/build.gradle.kts b/openrndr-demos/build.gradle.kts index bef5ac65..69f90cb9 100644 --- a/openrndr-demos/build.gradle.kts +++ b/openrndr-demos/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-camera/build.gradle.kts b/orx-camera/build.gradle.kts index 571fa901..7dcb411e 100644 --- a/orx-camera/build.gradle.kts +++ b/orx-camera/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-color/build.gradle.kts b/orx-color/build.gradle.kts index 5a4520aa..b8db0997 100644 --- a/orx-color/build.gradle.kts +++ b/orx-color/build.gradle.kts @@ -1,10 +1,7 @@ @Suppress("DSL_SCOPE_VIOLATION") plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` - // kotlinx-serialization ends up on the classpath through openrndr-math and Gradle doesn't know which - // version was used. If openrndr were an included build, we probably wouldn't need to do this. - // https://github.com/gradle/gradle/issues/20084 - id(libs.plugins.kotlin.serialization.get().pluginId) + id("org.openrndr.extra.convention.kotlin-multiplatform") + alias(libs.plugins.kotlin.serialization) alias(libs.plugins.kotest.multiplatform) } diff --git a/orx-composition/build.gradle.kts b/orx-composition/build.gradle.kts index 80ce4bb8..3a10684a 100644 --- a/orx-composition/build.gradle.kts +++ b/orx-composition/build.gradle.kts @@ -1,9 +1,6 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` - // kotlinx-serialization ends up on the classpath through openrndr-math and Gradle doesn't know which - // version was used. If openrndr were an included build, we probably wouldn't need to do this. - // https://github.com/gradle/gradle/issues/20084 - id(libs.plugins.kotlin.serialization.get().pluginId) + id("org.openrndr.extra.convention.kotlin-multiplatform") + alias(libs.plugins.kotlin.serialization) } kotlin { diff --git a/orx-compositor/build.gradle.kts b/orx-compositor/build.gradle.kts index d2a09468..78cf4f4a 100644 --- a/orx-compositor/build.gradle.kts +++ b/orx-compositor/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-delegate-magic/build.gradle.kts b/orx-delegate-magic/build.gradle.kts index c991af88..c760a41a 100644 --- a/orx-delegate-magic/build.gradle.kts +++ b/orx-delegate-magic/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-depth-camera/build.gradle.kts b/orx-depth-camera/build.gradle.kts index cfa8f65c..4cdcf4a0 100644 --- a/orx-depth-camera/build.gradle.kts +++ b/orx-depth-camera/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-easing/build.gradle.kts b/orx-easing/build.gradle.kts index a693b108..e72dd101 100644 --- a/orx-easing/build.gradle.kts +++ b/orx-easing/build.gradle.kts @@ -1,9 +1,6 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` - // kotlinx-serialization ends up on the classpath through openrndr-math and Gradle doesn't know which - // version was used. If openrndr were an included build, we probably wouldn't need to do this. - // https://github.com/gradle/gradle/issues/20084 - id(libs.plugins.kotlin.serialization.get().pluginId) + id("org.openrndr.extra.convention.kotlin-multiplatform") + alias(libs.plugins.kotlin.serialization) } kotlin { diff --git a/orx-envelopes/build.gradle.kts b/orx-envelopes/build.gradle.kts index f380a876..01327cd8 100644 --- a/orx-envelopes/build.gradle.kts +++ b/orx-envelopes/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-expression-evaluator-typed/build.gradle.kts b/orx-expression-evaluator-typed/build.gradle.kts index 82a6699f..be23d1c9 100644 --- a/orx-expression-evaluator-typed/build.gradle.kts +++ b/orx-expression-evaluator-typed/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-expression-evaluator/build.gradle.kts b/orx-expression-evaluator/build.gradle.kts index dc8e93cf..e334fbdd 100644 --- a/orx-expression-evaluator/build.gradle.kts +++ b/orx-expression-evaluator/build.gradle.kts @@ -2,7 +2,7 @@ import com.strumenta.antlrkotlin.gradle.AntlrKotlinTask import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") alias(libs.plugins.antlr.kotlin) } diff --git a/orx-fcurve/build.gradle.kts b/orx-fcurve/build.gradle.kts index 8a6ce6c9..f00c0ec4 100644 --- a/orx-fcurve/build.gradle.kts +++ b/orx-fcurve/build.gradle.kts @@ -1,6 +1,6 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` - id(libs.plugins.kotlin.serialization.get().pluginId) + id("org.openrndr.extra.convention.kotlin-multiplatform") + alias(libs.plugins.kotlin.serialization) } kotlin { diff --git a/orx-fft/build.gradle.kts b/orx-fft/build.gradle.kts index 5c6a74f8..14aaca0f 100644 --- a/orx-fft/build.gradle.kts +++ b/orx-fft/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-fx/build.gradle.kts b/orx-fx/build.gradle.kts index 4ed2b76e..a7d97d55 100644 --- a/orx-fx/build.gradle.kts +++ b/orx-fx/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } val embedShaders = tasks.register("embedShaders") { diff --git a/orx-gradient-descent/build.gradle.kts b/orx-gradient-descent/build.gradle.kts index a7b8553e..5d4b20b4 100644 --- a/orx-gradient-descent/build.gradle.kts +++ b/orx-gradient-descent/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") alias(libs.plugins.kotest.multiplatform) } diff --git a/orx-hash-grid/build.gradle.kts b/orx-hash-grid/build.gradle.kts index 1eec2ca8..a2b1f9eb 100644 --- a/orx-hash-grid/build.gradle.kts +++ b/orx-hash-grid/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-image-fit/build.gradle.kts b/orx-image-fit/build.gradle.kts index 05b83a73..1c6ae7cd 100644 --- a/orx-image-fit/build.gradle.kts +++ b/orx-image-fit/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-integral-image/build.gradle.kts b/orx-integral-image/build.gradle.kts index 5332487b..64de2327 100644 --- a/orx-integral-image/build.gradle.kts +++ b/orx-integral-image/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-interval-tree/build.gradle.kts b/orx-interval-tree/build.gradle.kts index d9e32162..d695795a 100644 --- a/orx-interval-tree/build.gradle.kts +++ b/orx-interval-tree/build.gradle.kts @@ -1,3 +1,3 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } \ No newline at end of file diff --git a/orx-jumpflood/build.gradle.kts b/orx-jumpflood/build.gradle.kts index b0804ba1..7b97f0a0 100644 --- a/orx-jumpflood/build.gradle.kts +++ b/orx-jumpflood/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } val embedShaders = tasks.register("embedShaders") { diff --git a/orx-jvm/build.gradle.kts b/orx-jvm/build.gradle.kts index 3c33701a..ed1cf45a 100644 --- a/orx-jvm/build.gradle.kts +++ b/orx-jvm/build.gradle.kts @@ -1,3 +1,3 @@ plugins { - org.openrndr.extra.convention.dokka + id("org.openrndr.extra.convention.dokka") } \ No newline at end of file diff --git a/orx-jvm/orx-axidraw/build.gradle.kts b/orx-jvm/orx-axidraw/build.gradle.kts index 0aa4e15a..80ac5657 100644 --- a/orx-jvm/orx-axidraw/build.gradle.kts +++ b/orx-jvm/orx-axidraw/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-jvm/orx-boofcv/build.gradle.kts b/orx-jvm/orx-boofcv/build.gradle.kts index 0fd8d613..d2a760ab 100644 --- a/orx-jvm/orx-boofcv/build.gradle.kts +++ b/orx-jvm/orx-boofcv/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-jvm/orx-chataigne/build.gradle.kts b/orx-jvm/orx-chataigne/build.gradle.kts index 5f695f4e..6fbfa8e7 100644 --- a/orx-jvm/orx-chataigne/build.gradle.kts +++ b/orx-jvm/orx-chataigne/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-jvm/orx-depth-camera-calibrator/build.gradle.kts b/orx-jvm/orx-depth-camera-calibrator/build.gradle.kts index 10328057..541fa4a4 100644 --- a/orx-jvm/orx-depth-camera-calibrator/build.gradle.kts +++ b/orx-jvm/orx-depth-camera-calibrator/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-jvm/orx-dnk3/build.gradle.kts b/orx-jvm/orx-dnk3/build.gradle.kts index 384b9c19..3c3749ab 100644 --- a/orx-jvm/orx-dnk3/build.gradle.kts +++ b/orx-jvm/orx-dnk3/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-jvm/orx-file-watcher/build.gradle.kts b/orx-jvm/orx-file-watcher/build.gradle.kts index 7edb0ea6..d63cb69c 100644 --- a/orx-jvm/orx-file-watcher/build.gradle.kts +++ b/orx-jvm/orx-file-watcher/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-jvm/orx-git-archiver-gradle/build.gradle.kts b/orx-jvm/orx-git-archiver-gradle/build.gradle.kts index 2e3046d3..f707d567 100644 --- a/orx-jvm/orx-git-archiver-gradle/build.gradle.kts +++ b/orx-jvm/orx-git-archiver-gradle/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") `java-gradle-plugin` } diff --git a/orx-jvm/orx-git-archiver/build.gradle.kts b/orx-jvm/orx-git-archiver/build.gradle.kts index b5bbbb07..f88dc2a2 100644 --- a/orx-jvm/orx-git-archiver/build.gradle.kts +++ b/orx-jvm/orx-git-archiver/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-jvm/orx-gui/build.gradle.kts b/orx-jvm/orx-gui/build.gradle.kts index b0c57173..aaf8ada0 100644 --- a/orx-jvm/orx-gui/build.gradle.kts +++ b/orx-jvm/orx-gui/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-jvm/orx-keyframer/build.gradle.kts b/orx-jvm/orx-keyframer/build.gradle.kts index 132f9789..c6e15716 100644 --- a/orx-jvm/orx-keyframer/build.gradle.kts +++ b/orx-jvm/orx-keyframer/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-jvm/orx-kinect-common/build.gradle.kts b/orx-jvm/orx-kinect-common/build.gradle.kts index 61172dff..28841844 100644 --- a/orx-jvm/orx-kinect-common/build.gradle.kts +++ b/orx-jvm/orx-kinect-common/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { api(project(":orx-depth-camera")) diff --git a/orx-jvm/orx-kinect-v1-demo/build.gradle.kts b/orx-jvm/orx-kinect-v1-demo/build.gradle.kts index 6879c64b..04104046 100644 --- a/orx-jvm/orx-kinect-v1-demo/build.gradle.kts +++ b/orx-jvm/orx-kinect-v1-demo/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { @@ -9,6 +9,6 @@ dependencies { implementation(project(":orx-jvm:orx-depth-camera-calibrator")) implementation(project(":orx-fx")) implementation(project(":orx-jvm:orx-gui")) - runtimeOnly(project(":orx-jvm:orx-kinect-v1-${(gradle as ExtensionAware).extra["openrndrClassifier"]}")) - runtimeOnly(libs.openrndr.gl3.core) + runtimeOnly(project(":orx-jvm:orx-kinect-v1")) + runtimeOnly(openrndr.gl3) } \ No newline at end of file diff --git a/orx-jvm/orx-kinect-v1-natives-linux-arm64/build.gradle.kts b/orx-jvm/orx-kinect-v1-natives-linux-arm64/build.gradle.kts deleted file mode 100644 index cd38ca14..00000000 --- a/orx-jvm/orx-kinect-v1-natives-linux-arm64/build.gradle.kts +++ /dev/null @@ -1,6 +0,0 @@ -plugins { - org.openrndr.extra.convention.`kotlin-jvm` -} -dependencies { - runtimeOnly(variantOf(libs.libfreenect) { classifier("linux-arm64") }) -} \ No newline at end of file diff --git a/orx-jvm/orx-kinect-v1-natives-linux-x64/build.gradle.kts b/orx-jvm/orx-kinect-v1-natives-linux-x64/build.gradle.kts deleted file mode 100644 index 99461916..00000000 --- a/orx-jvm/orx-kinect-v1-natives-linux-x64/build.gradle.kts +++ /dev/null @@ -1,6 +0,0 @@ -plugins { - org.openrndr.extra.convention.`kotlin-jvm` -} -dependencies { - runtimeOnly(variantOf(libs.libfreenect) { classifier("linux-x86_64") }) -} \ No newline at end of file diff --git a/orx-jvm/orx-kinect-v1-natives-macos/build.gradle.kts b/orx-jvm/orx-kinect-v1-natives-macos/build.gradle.kts deleted file mode 100644 index 1889d3f5..00000000 --- a/orx-jvm/orx-kinect-v1-natives-macos/build.gradle.kts +++ /dev/null @@ -1,6 +0,0 @@ -plugins { - org.openrndr.extra.convention.`kotlin-jvm` -} -dependencies { - runtimeOnly(variantOf(libs.libfreenect) { classifier("macosx-x86_64") }) -} \ No newline at end of file diff --git a/orx-jvm/orx-kinect-v1-natives-windows/build.gradle.kts b/orx-jvm/orx-kinect-v1-natives-windows/build.gradle.kts deleted file mode 100644 index 05952166..00000000 --- a/orx-jvm/orx-kinect-v1-natives-windows/build.gradle.kts +++ /dev/null @@ -1,6 +0,0 @@ -plugins { - org.openrndr.extra.convention.`kotlin-jvm` -} -dependencies { - runtimeOnly(variantOf(libs.libfreenect) { classifier("windows-x86_64") }) -} \ No newline at end of file diff --git a/orx-jvm/orx-kinect-v1/build.gradle.kts b/orx-jvm/orx-kinect-v1/build.gradle.kts index 80fe4e2a..b5f5ac94 100644 --- a/orx-jvm/orx-kinect-v1/build.gradle.kts +++ b/orx-jvm/orx-kinect-v1/build.gradle.kts @@ -1,7 +1,28 @@ -plugins { - org.openrndr.extra.convention.`kotlin-jvm` -} +plugins { + id("org.openrndr.extra.convention.kotlin-jvm") + id("org.openrndr.extra.convention.variant") +} +variants { + val nativeLibs = listOf(libs.libfreenect, sharedLibs.javacpp) + + val platforms = listOf( + Triple(OperatingSystemFamily.WINDOWS, MachineArchitecture.X86_64, "windows-x86_64"), + Triple(OperatingSystemFamily.MACOS, MachineArchitecture.X86_64, "macosx-x86_64"), + Triple(OperatingSystemFamily.LINUX, MachineArchitecture.X86_64, "linux-x86_64"), + Triple(OperatingSystemFamily.LINUX, MachineArchitecture.ARM64, "linux-arm64"), + ) + + for ((os, arch, classifier) in platforms) { + platform(os, arch) { + dependencies { + nativeLibs.forEach { + runtimeOnly(it.get().withClassifier(classifier)) + } + } + } + } +} dependencies { implementation(openrndr.application) implementation(openrndr.math) diff --git a/orx-jvm/orx-kotlin-parser/build.gradle.kts b/orx-jvm/orx-kotlin-parser/build.gradle.kts index aaa99e6f..3238ea9f 100644 --- a/orx-jvm/orx-kotlin-parser/build.gradle.kts +++ b/orx-jvm/orx-kotlin-parser/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") antlr } diff --git a/orx-jvm/orx-midi/build.gradle.kts b/orx-jvm/orx-midi/build.gradle.kts index 10457e77..1522447d 100644 --- a/orx-jvm/orx-midi/build.gradle.kts +++ b/orx-jvm/orx-midi/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-jvm/orx-minim/build.gradle.kts b/orx-jvm/orx-minim/build.gradle.kts index 5dc4175c..5eb4441f 100644 --- a/orx-jvm/orx-minim/build.gradle.kts +++ b/orx-jvm/orx-minim/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-jvm/orx-olive/build.gradle.kts b/orx-jvm/orx-olive/build.gradle.kts index 9bcc253e..3eed8779 100644 --- a/orx-jvm/orx-olive/build.gradle.kts +++ b/orx-jvm/orx-olive/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } tasks.test { diff --git a/orx-jvm/orx-osc/build.gradle.kts b/orx-jvm/orx-osc/build.gradle.kts index b3b5d2b6..821ffe02 100644 --- a/orx-jvm/orx-osc/build.gradle.kts +++ b/orx-jvm/orx-osc/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-jvm/orx-panel/build.gradle.kts b/orx-jvm/orx-panel/build.gradle.kts index 9e63ef17..13748987 100644 --- a/orx-jvm/orx-panel/build.gradle.kts +++ b/orx-jvm/orx-panel/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } tasks.test { diff --git a/orx-jvm/orx-poisson-fill/build.gradle.kts b/orx-jvm/orx-poisson-fill/build.gradle.kts index 47cd805c..002a6e1f 100644 --- a/orx-jvm/orx-poisson-fill/build.gradle.kts +++ b/orx-jvm/orx-poisson-fill/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-jvm/orx-processing/build.gradle.kts b/orx-jvm/orx-processing/build.gradle.kts index 5637f2bc..8e10eaf3 100644 --- a/orx-jvm/orx-processing/build.gradle.kts +++ b/orx-jvm/orx-processing/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-jvm/orx-rabbit-control/build.gradle.kts b/orx-jvm/orx-rabbit-control/build.gradle.kts index ec0ddf69..ba2eb9d1 100644 --- a/orx-jvm/orx-rabbit-control/build.gradle.kts +++ b/orx-jvm/orx-rabbit-control/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-jvm/orx-realsense2-natives-linux-x64/build.gradle.kts b/orx-jvm/orx-realsense2-natives-linux-x64/build.gradle.kts deleted file mode 100644 index 03b8ede5..00000000 --- a/orx-jvm/orx-realsense2-natives-linux-x64/build.gradle.kts +++ /dev/null @@ -1,6 +0,0 @@ -plugins { - org.openrndr.extra.convention.`kotlin-jvm` -} -dependencies { - runtimeOnly(variantOf(libs.librealsense) { classifier("linux-x86_64") }) -} \ No newline at end of file diff --git a/orx-jvm/orx-realsense2-natives-macos/build.gradle.kts b/orx-jvm/orx-realsense2-natives-macos/build.gradle.kts deleted file mode 100644 index 6e8f5608..00000000 --- a/orx-jvm/orx-realsense2-natives-macos/build.gradle.kts +++ /dev/null @@ -1,6 +0,0 @@ -plugins { - org.openrndr.extra.convention.`kotlin-jvm` -} -dependencies { - runtimeOnly(variantOf(libs.librealsense) { classifier("macosx-x86_64") }) -} \ No newline at end of file diff --git a/orx-jvm/orx-realsense2-natives-windows/build.gradle.kts b/orx-jvm/orx-realsense2-natives-windows/build.gradle.kts deleted file mode 100644 index 1aa320b6..00000000 --- a/orx-jvm/orx-realsense2-natives-windows/build.gradle.kts +++ /dev/null @@ -1,6 +0,0 @@ -plugins { - org.openrndr.extra.convention.`kotlin-jvm` -} -dependencies { - runtimeOnly(variantOf(libs.librealsense) { classifier("windows-x86_64") }) -} \ No newline at end of file diff --git a/orx-jvm/orx-realsense2/build.gradle.kts b/orx-jvm/orx-realsense2/build.gradle.kts index 3f0f4208..164b7397 100644 --- a/orx-jvm/orx-realsense2/build.gradle.kts +++ b/orx-jvm/orx-realsense2/build.gradle.kts @@ -1,11 +1,31 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") + id("org.openrndr.extra.convention.variant") } +variants { + val nativeLibs = listOf(libs.librealsense, sharedLibs.javacpp) + val platforms = listOf( + Triple(OperatingSystemFamily.WINDOWS, MachineArchitecture.X86_64, "windows-x86_64"), + Triple(OperatingSystemFamily.MACOS, MachineArchitecture.X86_64, "macosx-x86_64"), + Triple(OperatingSystemFamily.LINUX, MachineArchitecture.X86_64, "linux-x86_64"), + Triple(OperatingSystemFamily.LINUX, MachineArchitecture.ARM64, "linux-arm64"), + ) + + for ((os, arch, classifier) in platforms) { + platform(os, arch) { + dependencies { + nativeLibs.forEach { + runtimeOnly(it.get().withClassifier(classifier)) + } + } + } + } +} dependencies { implementation(openrndr.application) implementation(openrndr.math) api(libs.librealsense) - demoRuntimeOnly(project(":orx-jvm:orx-realsense2-${(gradle as ExtensionAware).extra["openrndrClassifier"]}")) + demoRuntimeOnly(project(":orx-jvm:orx-realsense2")) demoImplementation(project(":orx-color")) } \ No newline at end of file diff --git a/orx-jvm/orx-syphon/build.gradle.kts b/orx-jvm/orx-syphon/build.gradle.kts index 134ff469..ebc2318b 100644 --- a/orx-jvm/orx-syphon/build.gradle.kts +++ b/orx-jvm/orx-syphon/build.gradle.kts @@ -1,8 +1,8 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { implementation(openrndr.application) - implementation(libs.openrndr.gl3.core) + implementation(openrndr.gl3) } \ No newline at end of file diff --git a/orx-jvm/orx-video-profiles/build.gradle.kts b/orx-jvm/orx-video-profiles/build.gradle.kts index ffeb66ef..3ba5938c 100644 --- a/orx-jvm/orx-video-profiles/build.gradle.kts +++ b/orx-jvm/orx-video-profiles/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-kdtree/build.gradle.kts b/orx-kdtree/build.gradle.kts index 188c771e..a041d4f5 100644 --- a/orx-kdtree/build.gradle.kts +++ b/orx-kdtree/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } diff --git a/orx-marching-squares/build.gradle.kts b/orx-marching-squares/build.gradle.kts index 96c74602..0de67768 100644 --- a/orx-marching-squares/build.gradle.kts +++ b/orx-marching-squares/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-math/build.gradle.kts b/orx-math/build.gradle.kts index db7b561f..abf335c1 100644 --- a/orx-math/build.gradle.kts +++ b/orx-math/build.gradle.kts @@ -1,10 +1,7 @@ @Suppress("DSL_SCOPE_VIOLATION") plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` - // kotlinx-serialization ends up on the classpath through openrndr-math and Gradle doesn't know which - // version was used. If openrndr were an included build, we probably wouldn't need to do this. - // https://github.com/gradle/gradle/issues/20084 - id(libs.plugins.kotlin.serialization.get().pluginId) + id("org.openrndr.extra.convention.kotlin-multiplatform") + alias(libs.plugins.kotlin.serialization) alias(libs.plugins.kotest.multiplatform) } diff --git a/orx-mesh-generators/build.gradle.kts b/orx-mesh-generators/build.gradle.kts index 9e25fcd8..f029b428 100644 --- a/orx-mesh-generators/build.gradle.kts +++ b/orx-mesh-generators/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-mesh-noise/build.gradle.kts b/orx-mesh-noise/build.gradle.kts index 4e52c023..3b68382e 100644 --- a/orx-mesh-noise/build.gradle.kts +++ b/orx-mesh-noise/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-mesh/build.gradle.kts b/orx-mesh/build.gradle.kts index 667a82b5..c3f85178 100644 --- a/orx-mesh/build.gradle.kts +++ b/orx-mesh/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-module-catalog/build.gradle.kts b/orx-module-catalog/build.gradle.kts index 63fe7ed0..d59ecfcc 100644 --- a/orx-module-catalog/build.gradle.kts +++ b/orx-module-catalog/build.gradle.kts @@ -5,16 +5,16 @@ plugins { catalog { versionCatalog { - library("camera", "org.openrnd.extra:orx-camera:$version") - library("color", "org.openrnd.extra:orx-color:$version") + library("camera", "org.openrndr.extra:orx-camera:$version") + library("color", "org.openrndr.extra:orx-color:$version") library("composition", "org.openrndr.extra:orx-composition:$version") library("compositor", "org.openrndr.extra:orx-compositor:$version") library("delegate-magic", "org.openrndr.extra:orx-delegate-magic:$version") library("depth-camera", "org.openrndr.extra:orx-depth-camera:$version") library("easing", "org.openrndr.extra:orx-easing:$version") library("envelopes", "org.openrndr.extra:orx-envelopes:$version") - library("expression-evaluator","org.openrndr.extra:orx-expression-evaluator:$version") - library("expression-evaluator-typed","org.openrndr.extra:orx-expression-evaluator-typed:$version") + library("expression-evaluator", "org.openrndr.extra:orx-expression-evaluator:$version") + library("expression-evaluator-typed", "org.openrndr.extra:orx-expression-evaluator-typed:$version") library("fcurve", "org.openrndr.extra:orx-fcurve:$version") library("fft", "org.openrndr.extra:orx-fft:$version") library("fx", "org.openrndr.extra:orx-fx:$version") @@ -38,7 +38,7 @@ catalog { library("kotlin-parser", "org.openrndr.extra:orx-kotlin-parser:$version") library("midi", "org.openrndr.extra:orx-midi:$version") library("minim", "org.openrndr.extra:orx-minim:$version") - library("olive", "org.openrndr.extra.olive:orx-live:$version") + library("olive", "org.openrndr.extra:orx-olive:$version") library("osc", "org.openrndr.extra:orx-osc:$version") library("panel", "org.openrndr.extra:orx-panel:$version") library("poisson-fill", "org.openrndr.extra:orx-poisson-fill:$version") @@ -72,6 +72,30 @@ catalog { library("triangulation", "org.openrndr.extra:orx-triangulation:$version") library("turtle", "org.openrndr.extra:orx-turtle:$version") library("view-box", "org.openrndr.extra:orx-view-box:$version") + + bundle( + "basic", + listOf( + "camera", + "color", + "composition", + "compositor", + "fx", + "image-fit", + "panel", + "video-profiles", + "math", + "mesh-generators", + "no-clear", + "noise", + "shade-styles", + "shader-phrases", + "shapes", + "svg", + "text-on-contour", + "text-writer" + ) + ) } } diff --git a/orx-no-clear/build.gradle.kts b/orx-no-clear/build.gradle.kts index a0ce74aa..ec04f870 100644 --- a/orx-no-clear/build.gradle.kts +++ b/orx-no-clear/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-noise/build.gradle.kts b/orx-noise/build.gradle.kts index bdd57679..07c83075 100644 --- a/orx-noise/build.gradle.kts +++ b/orx-noise/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") alias(libs.plugins.kotest.multiplatform) } diff --git a/orx-noise/src/jvmDemo/kotlin/DemoBla.kt b/orx-noise/src/jvmDemo/kotlin/DemoBla.kt new file mode 100644 index 00000000..9139ff46 --- /dev/null +++ b/orx-noise/src/jvmDemo/kotlin/DemoBla.kt @@ -0,0 +1,18 @@ +import org.openrndr.application +import org.openrndr.extra.noise.fbm +import org.openrndr.extra.noise.perlin2D + +fun main() { + application { + configure { + width = 1280 + height = 720 + } + program { + extend { + perlin2D.fbm() + + } + } + } +} \ No newline at end of file diff --git a/orx-obj-loader/build.gradle.kts b/orx-obj-loader/build.gradle.kts index ec6c320e..7a7146da 100644 --- a/orx-obj-loader/build.gradle.kts +++ b/orx-obj-loader/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-palette/build.gradle.kts b/orx-palette/build.gradle.kts index d682dc2b..050e0907 100644 --- a/orx-palette/build.gradle.kts +++ b/orx-palette/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-parameters/build.gradle.kts b/orx-parameters/build.gradle.kts index a9857177..79ee4568 100644 --- a/orx-parameters/build.gradle.kts +++ b/orx-parameters/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") alias(libs.plugins.kotest.multiplatform) } diff --git a/orx-property-watchers/build.gradle.kts b/orx-property-watchers/build.gradle.kts index d6ea5d69..be9b61dc 100644 --- a/orx-property-watchers/build.gradle.kts +++ b/orx-property-watchers/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-quadtree/build.gradle.kts b/orx-quadtree/build.gradle.kts index ef694c67..34c58d16 100644 --- a/orx-quadtree/build.gradle.kts +++ b/orx-quadtree/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-shade-styles/build.gradle.kts b/orx-shade-styles/build.gradle.kts index df1a6d76..5ccfc731 100644 --- a/orx-shade-styles/build.gradle.kts +++ b/orx-shade-styles/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-shader-phrases/build.gradle.kts b/orx-shader-phrases/build.gradle.kts index 0f7a64bb..3ff909fa 100644 --- a/orx-shader-phrases/build.gradle.kts +++ b/orx-shader-phrases/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") alias(libs.plugins.kotest.multiplatform) } diff --git a/orx-shapes/build.gradle.kts b/orx-shapes/build.gradle.kts index a464b4c0..06ae0c0a 100644 --- a/orx-shapes/build.gradle.kts +++ b/orx-shapes/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") alias(libs.plugins.kotest.multiplatform) } diff --git a/orx-svg/build.gradle.kts b/orx-svg/build.gradle.kts index 765562f6..5fe57d15 100644 --- a/orx-svg/build.gradle.kts +++ b/orx-svg/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") alias(libs.plugins.kotest.multiplatform) } diff --git a/orx-temporal-blur/build.gradle.kts b/orx-temporal-blur/build.gradle.kts index 8ad44d60..44673ee6 100644 --- a/orx-temporal-blur/build.gradle.kts +++ b/orx-temporal-blur/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-text-on-contour/build.gradle.kts b/orx-text-on-contour/build.gradle.kts index af449d7f..e50f7d7c 100644 --- a/orx-text-on-contour/build.gradle.kts +++ b/orx-text-on-contour/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-text-writer/build.gradle.kts b/orx-text-writer/build.gradle.kts index b6dfd7b3..4ee3e081 100644 --- a/orx-text-writer/build.gradle.kts +++ b/orx-text-writer/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") alias(libs.plugins.kotest.multiplatform) } diff --git a/orx-time-operators/build.gradle.kts b/orx-time-operators/build.gradle.kts index 69885b26..fa05f07a 100644 --- a/orx-time-operators/build.gradle.kts +++ b/orx-time-operators/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-timer/build.gradle.kts b/orx-timer/build.gradle.kts index 7edb0ea6..d63cb69c 100644 --- a/orx-timer/build.gradle.kts +++ b/orx-timer/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-jvm` + id("org.openrndr.extra.convention.kotlin-jvm") } dependencies { diff --git a/orx-triangulation/build.gradle.kts b/orx-triangulation/build.gradle.kts index b33cbb22..7ce1e361 100644 --- a/orx-triangulation/build.gradle.kts +++ b/orx-triangulation/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-turtle/build.gradle.kts b/orx-turtle/build.gradle.kts index b5742672..d9f85476 100644 --- a/orx-turtle/build.gradle.kts +++ b/orx-turtle/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/orx-view-box/build.gradle.kts b/orx-view-box/build.gradle.kts index 94093971..92a9bbb3 100644 --- a/orx-view-box/build.gradle.kts +++ b/orx-view-box/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - org.openrndr.extra.convention.`kotlin-multiplatform` + id("org.openrndr.extra.convention.kotlin-multiplatform") } kotlin { diff --git a/settings.gradle.kts b/settings.gradle.kts index bea7ecdb..ff87e96e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -2,16 +2,8 @@ import org.gradle.internal.os.OperatingSystem rootProject.name = "orx" -@Suppress("INACCESSIBLE_TYPE") -// This is equivalent to `gradle.ext` https://stackoverflow.com/a/65377323/17977931 -val openrndrClassifier: String by (gradle as ExtensionAware).extra( - "natives-" + when (val os = OperatingSystem.current()) { - OperatingSystem.WINDOWS -> "windows" - OperatingSystem.LINUX -> "linux-x64" - OperatingSystem.MAC_OS -> "macos" - else -> error("Unsupported operating system: $os") - } -) + +includeBuild("build-logic") dependencyResolutionManagement { repositories { @@ -88,9 +80,6 @@ include( "orx-quadtree", "orx-jvm:orx-rabbit-control", "orx-jvm:orx-realsense2", - "orx-jvm:orx-realsense2-natives-linux-x64", - "orx-jvm:orx-realsense2-natives-macos", - "orx-jvm:orx-realsense2-natives-windows", "orx-shader-phrases", "orx-shade-styles", "orx-shapes", @@ -102,10 +91,6 @@ include( "orx-triangulation", "orx-jvm:orx-kinect-common", "orx-jvm:orx-kinect-v1", - "orx-jvm:orx-kinect-v1-natives-linux-arm64", - "orx-jvm:orx-kinect-v1-natives-linux-x64", - "orx-jvm:orx-kinect-v1-natives-macos", - "orx-jvm:orx-kinect-v1-natives-windows", "orx-jvm:orx-kinect-v1-demo", "orx-jvm:orx-video-profiles", "orx-depth-camera",