diff --git a/app/src/processing/app/gradle/Debugger.kt b/app/src/processing/app/gradle/Debugger.kt index aea18ec13..bdc78c954 100644 --- a/app/src/processing/app/gradle/Debugger.kt +++ b/app/src/processing/app/gradle/Debugger.kt @@ -10,6 +10,7 @@ import kotlin.time.TimeSource class Debugger { companion object { + // TODO: Stop if build has failed suspend fun connect(port: Int?): VirtualMachine? { try { Messages.log("Attaching to VM $port") diff --git a/java/gradle/src/main/kotlin/DependenciesTask.kt b/java/gradle/src/main/kotlin/DependenciesTask.kt index ced1cf5a9..8d9e09e25 100644 --- a/java/gradle/src/main/kotlin/DependenciesTask.kt +++ b/java/gradle/src/main/kotlin/DependenciesTask.kt @@ -1,6 +1,7 @@ package org.processing.java.gradle import org.gradle.api.DefaultTask +import org.gradle.api.GradleException import org.gradle.api.file.RegularFileProperty import org.gradle.api.tasks.InputFile import org.gradle.api.tasks.TaskAction @@ -57,26 +58,22 @@ abstract class DependenciesTask: DefaultTask() { // 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-main:2.5.0") + project.dependencies.add("runtimeOnly", "org.jogamp.gluegen:gluegen-rt:2.5.0") - // TODO: Only add the native dependencies for the platform the user is building for - // MacOS specific native dependencies - project.dependencies.add("runtimeOnly", "org.jogamp.jogl:jogl-all:2.5.0:natives-macosx-universal") - project.dependencies.add("runtimeOnly", "org.jogamp.gluegen:gluegen-rt:2.5.0:natives-macosx-universal") + val os = System.getProperty("os.name").lowercase() + val arch = System.getProperty("os.arch").lowercase() - // TODO: Solve windows specific issue - // Windows specific native dependencies - project.dependencies.add("runtimeOnly", "org.jogamp.jogl:jogl-all:2.5.0:natives-windows-amd64") - project.dependencies.add("runtimeOnly", "org.jogamp.gluegen:gluegen-rt:2.5.0:natives-windows-amd64") + 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") + } - // Linux specific native dependencies - project.dependencies.add("runtimeOnly", "org.jogamp.jogl:jogl-all:2.5.0:natives-linux-amd64") - project.dependencies.add("runtimeOnly", "org.jogamp.gluegen:gluegen-rt:2.5.0:natives-linux-amd64") - - // NativeWindow dependencies for all platforms - project.dependencies.add("implementation", "org.jogamp.jogl:nativewindow:2.5.0") - project.dependencies.add("runtimeOnly", "org.jogamp.jogl:nativewindow:2.5.0:natives-macosx-universal") - project.dependencies.add("runtimeOnly", "org.jogamp.jogl:nativewindow:2.5.0:natives-windows-amd64") - project.dependencies.add("runtimeOnly", "org.jogamp.jogl:nativewindow:2.5.0:natives-linux-amd64") + 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") } } \ No newline at end of file diff --git a/java/gradle/src/main/kotlin/ProcessingPlugin.kt b/java/gradle/src/main/kotlin/ProcessingPlugin.kt index 5d1115dcf..ef4557413 100644 --- a/java/gradle/src/main/kotlin/ProcessingPlugin.kt +++ b/java/gradle/src/main/kotlin/ProcessingPlugin.kt @@ -67,9 +67,9 @@ class ProcessingPlugin @Inject constructor(private val objectFactory: ObjectFact extension.extensions.getByType(DesktopExtension::class.java).application { application -> // Set the class to be executed initially application.mainClass = sketchName - application.nativeDistributions.modules("java.management") + application.nativeDistributions.modules("java.management","jdk.jdwp.agent") if(debugPort != null) { - application.jvmArgs("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=$debugPort") + application.jvmArgs("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$debugPort") } } }