Skip to content
Open
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
2 changes: 1 addition & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -543,7 +543,7 @@ tasks.register("signResources"){
exclude("*.so")
exclude("*.dll")
}.forEach{ file ->
exec {
providers.exec {
commandLine("codesign", "--timestamp", "--force", "--deep","--options=runtime", "--sign", "Developer ID Application", file)
}
}
Expand Down
1 change: 1 addition & 0 deletions app/utils/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ repositories {
}

dependencies {
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
testImplementation(platform("org.junit:junit-bom:5.10.0"))
testImplementation("org.junit.jupiter:junit-jupiter")
}
Expand Down
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
7 changes: 5 additions & 2 deletions gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 12 additions & 10 deletions gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions java/gradle/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,11 @@ tasks.withType<Test>().configureEach {
}

tasks.register("writeVersion") {
// make the version available to the plugin at runtime by writing it to a properties file in the resources directory
doLast {
val version = project.version.toString().takeIf { it != "unspecified" } ?: return@doLast
val file = layout.buildDirectory.file("resources/main/version.properties").get().asFile
file.parentFile.mkdirs()
file.writeText("version=${project.version}")
file.writeText("version=$version")
}
}

Expand Down
41 changes: 16 additions & 25 deletions java/gradle/src/main/kotlin/DependenciesTask.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package org.processing.java.gradle

import org.gradle.api.DefaultTask
import org.gradle.api.GradleException
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction
import java.io.File
import java.io.ObjectInputStream
Expand All @@ -15,12 +17,16 @@ abstract class DependenciesTask: DefaultTask() {
@InputFile
val librariesMetaData: RegularFileProperty = project.objects.fileProperty()

@get:OutputDirectory
val outputJarsDirectory: DirectoryProperty = project.objects.directoryProperty()

@InputFile
val sketchMetaData: RegularFileProperty = project.objects.fileProperty()

init{
librariesMetaData.convention(project.layout.buildDirectory.file("processing/libraries"))
sketchMetaData.convention(project.layout.buildDirectory.file("processing/sketch"))
outputJarsDirectory.convention(project.layout.buildDirectory.dir("processing/libs"))
}

@TaskAction
Expand All @@ -44,36 +50,21 @@ abstract class DependenciesTask: DefaultTask() {
library.jars.forEach { jar ->
jar.classes.forEach { className ->
if (className.startsWith(statement)) {
dependencies.addAll(library.jars.map { it.path } )
dependencies.addAll(library.jars.map { it.path })
return@import
}
}
}
}
}
project.dependencies.add("implementation", project.files(dependencies) )

// TODO: Mutating the dependencies of configuration ':implementation' after it has been resolved or consumed. This

// TODO: Add only if user is compiling for P2D or P3D
// Add JOGL and Gluegen dependencies
project.dependencies.add("runtimeOnly", "org.jogamp.jogl:jogl-all-main:2.5.0")
project.dependencies.add("runtimeOnly", "org.jogamp.gluegen:gluegen-rt:2.5.0")

val os = System.getProperty("os.name").lowercase()
val arch = System.getProperty("os.arch").lowercase()

val variant = when {
os.contains("mac") -> "macosx-universal"
os.contains("win") && arch.contains("64") -> "windows-amd64"
os.contains("linux") && arch.contains("aarch64") -> "linux-aarch64"
os.contains("linux") && arch.contains("arm") -> "linux-arm"
os.contains("linux") && arch.contains("amd64") -> "linux-amd64"
else -> throw GradleException("Unsupported OS/architecture: $os / $arch")
// Copy discovered jars to the output directory so they can be wired into the
// compilation classpath at configuration time (Gradle 9 forbids mutating
// configurations after they have been observed/resolved).
val outputDir = outputJarsDirectory.get().asFile
outputDir.deleteRecursively()
outputDir.mkdirs()
dependencies.forEach { jar ->
jar.copyTo(outputDir.resolve(jar.name), overwrite = true)
}

project.dependencies.add("runtimeOnly", "org.jogamp.gluegen:gluegen-rt:2.5.0:natives-$variant")
project.dependencies.add("runtimeOnly", "org.jogamp.jogl:nativewindow:2.5.0:natives-$variant")
project.dependencies.add("runtimeOnly", "org.jogamp.jogl:newt:2.5.0:natives-$variant")
}
}
25 changes: 24 additions & 1 deletion java/gradle/src/main/kotlin/ProcessingPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package org.processing.java.gradle

import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.GradleException
import org.gradle.api.file.SourceDirectorySet
import org.gradle.api.internal.file.DefaultSourceDirectorySet
import org.gradle.api.internal.tasks.TaskDependencyFactory
Expand Down Expand Up @@ -199,16 +200,38 @@ class ProcessingPlugin @Inject constructor(private val objectFactory: ObjectFact
}

val depsTaskName = sourceSet.getTaskName("addLegacyDependencies", "PDE")
project.tasks.register(depsTaskName, DependenciesTask::class.java){ task ->
val depsTask = project.tasks.register(depsTaskName, DependenciesTask::class.java){ task ->
// Link the output of the libraries task to the dependencies task
task.librariesMetaData.set(librariesScan.get().librariesMetaData)
task.dependsOn(pdeTask, librariesScan)
}

project.dependencies.add("implementation",
project.fileTree(depsTask.flatMap { it.outputJarsDirectory }).builtBy(depsTask))

val os = System.getProperty("os.name").lowercase()
val arch = System.getProperty("os.arch").lowercase()
val variant = when {
os.contains("mac") -> "macosx-universal"
os.contains("win") && arch.contains("64") -> "windows-amd64"
os.contains("linux") && arch.contains("aarch64") -> "linux-aarch64"
os.contains("linux") && arch.contains("arm") -> "linux-arm"
os.contains("linux") && arch.contains("amd64") -> "linux-amd64"
else -> throw GradleException("Unsupported OS/architecture: $os / $arch")
}
project.dependencies.add("runtimeOnly", "org.jogamp.jogl:jogl-all-main:2.5.0")
project.dependencies.add("runtimeOnly", "org.jogamp.gluegen:gluegen-rt:2.5.0")
project.dependencies.add("runtimeOnly", "org.jogamp.gluegen:gluegen-rt:2.5.0:natives-$variant")
project.dependencies.add("runtimeOnly", "org.jogamp.jogl:nativewindow:2.5.0:natives-$variant")
project.dependencies.add("runtimeOnly", "org.jogamp.jogl:newt:2.5.0:natives-$variant")


// Make sure that the PDE tasks runs before the java compilation task
project.tasks.named(sourceSet.compileJavaTaskName) { task ->
task.dependsOn(pdeTaskName, depsTaskName)
}


}
}
abstract class DefaultPDESourceDirectorySet @Inject constructor(
Expand Down