11package org.processing.java.gradle
22
33import org.gradle.api.DefaultTask
4+ import org.gradle.api.GradleException
45import org.gradle.api.file.RegularFileProperty
56import org.gradle.api.tasks.InputFile
67import org.gradle.api.tasks.TaskAction
@@ -57,26 +58,22 @@ abstract class DependenciesTask: DefaultTask() {
5758 // TODO: Add only if user is compiling for P2D or P3D
5859 // Add JOGL and Gluegen dependencies
5960 project.dependencies.add(" runtimeOnly" , " org.jogamp.jogl:jogl-all-main:2.5.0" )
60- project.dependencies.add(" runtimeOnly" , " org.jogamp.gluegen:gluegen-rt-main :2.5.0" )
61+ project.dependencies.add(" runtimeOnly" , " org.jogamp.gluegen:gluegen-rt:2.5.0" )
6162
62- // TODO: Only add the native dependencies for the platform the user is building for
63- // MacOS specific native dependencies
64- project.dependencies.add(" runtimeOnly" , " org.jogamp.jogl:jogl-all:2.5.0:natives-macosx-universal" )
65- project.dependencies.add(" runtimeOnly" , " org.jogamp.gluegen:gluegen-rt:2.5.0:natives-macosx-universal" )
63+ val os = System .getProperty(" os.name" ).lowercase()
64+ val arch = System .getProperty(" os.arch" ).lowercase()
6665
67- // TODO: Solve windows specific issue
68- // Windows specific native dependencies
69- project.dependencies.add( " runtimeOnly " , " org.jogamp.jogl:jogl-all:2.5.0:natives- windows-amd64" )
70- project.dependencies.add( " runtimeOnly " , " org.jogamp.gluegen:gluegen-rt:2.5.0:natives-windows-amd64 " )
71-
72- // Linux specific native dependencies
73- project.dependencies.add( " runtimeOnly " , " org.jogamp.jogl:jogl-all:2.5.0:natives-linux-amd64 " )
74- project.dependencies.add( " runtimeOnly " , " org.jogamp.gluegen:gluegen-rt:2.5.0:natives-linux-amd64 " )
66+ val variant = when {
67+ os.contains( " mac " ) -> " macosx-universal "
68+ os.contains( " win " ) && arch.contains( " 64 " ) -> " windows-amd64"
69+ os.contains( " linux " ) && arch.contains( " aarch64 " ) -> " linux-aarch64 "
70+ os.contains( " linux " ) && arch.contains( " arm " ) -> " linux-arm "
71+ os.contains( " linux " ) && arch.contains( " amd64 " ) -> " linux-amd64 "
72+ else -> throw GradleException ( " Unsupported OS/architecture: $os / $arch " )
73+ }
7574
76- // NativeWindow dependencies for all platforms
77- project.dependencies.add(" implementation" , " org.jogamp.jogl:nativewindow:2.5.0" )
78- project.dependencies.add(" runtimeOnly" , " org.jogamp.jogl:nativewindow:2.5.0:natives-macosx-universal" )
79- project.dependencies.add(" runtimeOnly" , " org.jogamp.jogl:nativewindow:2.5.0:natives-windows-amd64" )
80- project.dependencies.add(" runtimeOnly" , " org.jogamp.jogl:nativewindow:2.5.0:natives-linux-amd64" )
75+ project.dependencies.add(" runtimeOnly" , " org.jogamp.gluegen:gluegen-rt:2.5.0:natives-$variant " )
76+ project.dependencies.add(" runtimeOnly" , " org.jogamp.jogl:nativewindow:2.5.0:natives-$variant " )
77+ project.dependencies.add(" runtimeOnly" , " org.jogamp.jogl:newt:2.5.0:natives-$variant " )
8178 }
8279}
0 commit comments