aboutsummaryrefslogtreecommitdiff
path: root/build.gradle.kts
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--build.gradle.kts138
1 files changed, 138 insertions, 0 deletions
diff --git a/build.gradle.kts b/build.gradle.kts
new file mode 100644
index 0000000..a86dced
--- /dev/null
+++ b/build.gradle.kts
@@ -0,0 +1,138 @@
+import org.gradle.internal.os.OperatingSystem
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+
+val kotlinVersion = "1.3.41"
+
+plugins {
+ java
+ kotlin("jvm") version("1.3.41")
+}
+group = "org.openrndr.template"
+version = "1.0-SNAPSHOT"
+
+val applicationMainClass = "TemplateProgramKt"
+val applicationFullLogging = false
+
+val openrndrUseSnapshot = false
+val openrndrVersion = if (openrndrUseSnapshot) "0.4.0-SNAPSHOT" else "0.3.35-rc1"
+val openrndrOs = when (OperatingSystem.current()) {
+ OperatingSystem.WINDOWS -> "windows"
+ OperatingSystem.MAC_OS -> "macos"
+ OperatingSystem.LINUX -> "linux-x64"
+ else -> throw IllegalArgumentException("os not supported")
+}
+
+// supported features are: video, panel
+val openrndrFeatures = setOf("video")
+
+val panelUseSnapshot = false
+val panelVersion = "0.3.16"
+
+val orxUseSnapshot = false
+val orxVersion = "0.0.30"
+
+// supported features are: orx-camera, orx-compositor,orx-easing, orx-filter-extension,orx-file-watcher,
+// orx-integral-image, orx-interval-tree, orx-jumpflood,orx-kdtree, orx-mesh-generators,orx-midi, orx-no-clear,
+// orx-noise, orx-obj, orx-olive
+
+val orxFeatures = setOf("orx-noise")
+
+repositories {
+ mavenCentral()
+ if (openrndrUseSnapshot || orxUseSnapshot || panelUseSnapshot) {
+ mavenLocal()
+ }
+ maven(url = "https://dl.bintray.com/openrndr/openrndr")
+ maven(url = "https://jitpack.io")
+}
+
+fun DependencyHandler.orx(module: String): Any {
+ return if (!orxUseSnapshot) {
+ "com.github.openrndr.orx:$module:v$orxVersion"
+ } else {
+ "org.openrndr.extra:$module:$orxVersion"
+ }
+}
+
+fun DependencyHandler.openrndr(module: String): Any {
+ return "org.openrndr:openrndr-$module:$openrndrVersion"
+}
+
+fun DependencyHandler.openrndrNatives(module: String): Any {
+ return "org.openrndr:openrndr-$module-natives-$openrndrOs:$openrndrVersion"
+}
+
+dependencies {
+ runtime(openrndr("gl3"))
+ runtime(openrndrNatives("gl3"))
+ compile(openrndr("core"))
+ compile(openrndr("svg"))
+ compile(openrndr("animatable"))
+ compile(openrndr("extensions"))
+ compile(openrndr("filter"))
+
+ compile("org.jetbrains.kotlinx", "kotlinx-coroutines-core","1.3.0-RC")
+
+ compile("io.github.microutils", "kotlin-logging","1.7.2")
+
+ if (!applicationFullLogging) {
+ runtime("org.slf4j","slf4j-nop","1.7.25")
+ } else {
+ runtime("org.apache.logging.log4j", "log4j-slf4j-impl", "2.12.0")
+ runtime("com.fasterxml.jackson.core", "jackson-databind", "2.8.7")
+ runtime("com.fasterxml.jackson.dataformat", "jackson-dataformat-yaml", "2.8.7")
+ }
+
+ if ("video" in openrndrFeatures) {
+ compile(openrndr("ffmpeg"))
+ runtime(openrndrNatives("ffmpeg"))
+ }
+
+ if ("panel" in openrndrFeatures) {
+ compile("com.github.openrndr:openrndr-panel:v$panelVersion")
+ }
+
+ for (feature in orxFeatures) {
+ compile(orx(feature))
+ }
+
+ if ("orx-olive" in orxFeatures) {
+ compile("org.jetbrains.kotlin", "kotlin-scripting-compiler-embeddable")
+ }
+
+ implementation(kotlin("stdlib-jdk8"))
+ testCompile("junit", "junit", "4.12")
+}
+
+configure<JavaPluginConvention> {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+}
+tasks.withType<KotlinCompile> {
+ kotlinOptions.jvmTarget = "1.8"
+}
+
+tasks.withType<Jar> {
+ manifest {
+ attributes["Main-Class"] = applicationMainClass
+ }
+ doFirst {
+ from(configurations.compileClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
+ from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
+ }
+
+ exclude(listOf("META-INF/*.RSA", "META-INF/*.SF", "META-INF/*.DSA", "**/module-info*"))
+ archiveFileName.set("application-$openrndrOs.jar")
+}
+
+tasks.create("zipDistribution", Zip::class.java) {
+ archiveFileName.set("application-$openrndrOs.zip")
+ from("./") {
+ include("data/**")
+ }
+ from("$buildDir/libs/application-$openrndrOs.jar")
+}.dependsOn(tasks.jar)
+
+tasks.create("run", JavaExec::class.java) {
+ main = applicationMainClass
+ classpath = sourceSets.main.get().runtimeClasspath
+}.dependsOn(tasks.build) \ No newline at end of file