diff options
| author | Edwin Jakobs <edwin@rndr.studio> | 2019-08-01 15:57:24 +0200 |
|---|---|---|
| committer | Edwin Jakobs <edwin@rndr.studio> | 2019-08-01 15:57:24 +0200 |
| commit | a41b530d32c579c27d59857fee900bf9dd8bff9b (patch) | |
| tree | 2041e9f7db508478f467608ad06e193189a3d70c /build.gradle.kts | |
| download | art-playground-openrndr-a41b530d32c579c27d59857fee900bf9dd8bff9b.tar.gz art-playground-openrndr-a41b530d32c579c27d59857fee900bf9dd8bff9b.zip | |
New gradle/kts based OPENRNDR program template
Diffstat (limited to 'build.gradle.kts')
| -rw-r--r-- | build.gradle.kts | 138 |
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 |
