Skip to content

Commit 67ac864

Browse files
committed
Fixes for compat with main 17.
1 parent fef550b commit 67ac864

9 files changed

Lines changed: 68 additions & 38 deletions

File tree

app/build.gradle.kts

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import org.jetbrains.compose.ExperimentalComposeLibrary
55
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
66
import org.jetbrains.compose.desktop.application.tasks.AbstractJPackageTask
77
import org.jetbrains.compose.internal.de.undercouch.gradle.tasks.download.Download
8-
import processing.gradle.SignResourcesTask
8+
import java.io.FileOutputStream
9+
import java.util.zip.ZipEntry
10+
import java.util.zip.ZipOutputStream
911

1012
// TODO: Update to 2.10.20 and add hot-reloading: https://github.com/JetBrains/compose-hot-reload
1113

@@ -433,8 +435,15 @@ tasks.register<Copy>("includeJavaMode") {
433435
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
434436
dirPermissions { unix("rwx------") }
435437
}
438+
val enableWebGPU = findProperty("enableWebGPU")?.toString()?.toBoolean() ?: false
439+
436440
tasks.register<Copy>("includeJdk") {
437-
from(Jvm.current().javaHome.absolutePath)
441+
val jdkVersion = if (enableWebGPU) 24 else 17
442+
val jdkHome = project.the<JavaToolchainService>().launcherFor {
443+
languageVersion.set(JavaLanguageVersion.of(jdkVersion))
444+
}.map { it.metadata.installationPath.asFile }
445+
446+
from(jdkHome)
438447
destinationDir = composeResources("jdk").get().asFile
439448

440449
fileTree(destinationDir).files.forEach { file ->
@@ -517,7 +526,7 @@ tasks.register("includeProcessingResources"){
517526
finalizedBy("signResources")
518527
}
519528

520-
tasks.register<SignResourcesTask>("signResources") {
529+
tasks.register("signResources") {
521530
onlyIf {
522531
OperatingSystem.current().isMacOsX
523532
&&
@@ -562,10 +571,11 @@ tasks.register<SignResourcesTask>("signResources") {
562571
exclude("*.jar")
563572
exclude("*.so")
564573
exclude("*.dll")
565-
}.forEach{ file ->
566-
exec {
567-
commandLine("codesign", "--timestamp", "--force", "--deep","--options=runtime", "--sign", "Developer ID Application", file)
568-
}
574+
}.forEach{ f ->
575+
ProcessBuilder("codesign", "--timestamp", "--force", "--deep", "--options=runtime", "--sign", "Developer ID Application", f.absolutePath)
576+
.inheritIO()
577+
.start()
578+
.waitFor()
569579
}
570580
jars.forEach { file ->
571581
FileOutputStream(File(file.parentFile, file.nameWithoutExtension)).use { fos ->

build.gradle.kts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,31 @@ plugins {
1212
// Can be deleted after the migration to Gradle is complete
1313
layout.buildDirectory = file(".build")
1414

15-
val enableWebGPU = findProperty("enableWebGPU")?.toString()?.toBoolean() ?: true
15+
val enableWebGPU = findProperty("enableWebGPU")?.toString()?.toBoolean() ?: false
16+
val javaVersion = if (enableWebGPU) "24" else "17"
17+
val kotlinJvmTarget = if (enableWebGPU) {
18+
org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_24
19+
} else {
20+
org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
21+
}
1622

1723
allprojects {
1824
tasks.withType<JavaCompile>().configureEach {
19-
val javaVersion = if (enableWebGPU) "24" else "17"
2025
sourceCompatibility = javaVersion
2126
targetCompatibility = javaVersion
2227
}
2328

2429
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
2530
compilerOptions {
26-
val kotlinTarget = if (enableWebGPU) {
27-
org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_24
28-
} else {
29-
org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
31+
jvmTarget.set(kotlinJvmTarget)
32+
}
33+
}
34+
35+
plugins.withType<JavaPlugin> {
36+
extensions.configure<JavaPluginExtension> {
37+
toolchain {
38+
languageVersion.set(JavaLanguageVersion.of(javaVersion.toInt()))
3039
}
31-
jvmTarget.set(kotlinTarget)
3240
}
3341
}
3442
}

core/build.gradle.kts

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ repositories {
1212
maven { url = uri("https://jogamp.org/deployment/maven") }
1313
}
1414

15-
val enableWebGPU = findProperty("enableWebGPU")?.toString()?.toBoolean() ?: true
15+
val enableWebGPU = findProperty("enableWebGPU")?.toString()?.toBoolean() ?: false
1616

1717
sourceSets{
1818
main{
@@ -40,25 +40,27 @@ dependencies {
4040
implementation(libs.jogl)
4141
implementation(libs.gluegen)
4242

43-
val lwjglVersion = "3.3.6"
44-
val lwjglNatives = when {
45-
System.getProperty("os.name").lowercase().contains("mac") -> {
46-
if (System.getProperty("os.arch").contains("aarch64")) {
47-
"natives-macos-arm64"
48-
} else {
49-
"natives-macos"
43+
if (enableWebGPU) {
44+
val lwjglVersion = "3.3.6"
45+
val lwjglNatives = when {
46+
System.getProperty("os.name").lowercase().contains("mac") -> {
47+
if (System.getProperty("os.arch").contains("aarch64")) {
48+
"natives-macos-arm64"
49+
} else {
50+
"natives-macos"
51+
}
5052
}
53+
System.getProperty("os.name").lowercase().contains("win") -> "natives-windows"
54+
System.getProperty("os.name").lowercase().contains("linux") -> "natives-linux"
55+
else -> "natives-linux"
5156
}
52-
System.getProperty("os.name").lowercase().contains("win") -> "natives-windows"
53-
System.getProperty("os.name").lowercase().contains("linux") -> "natives-linux"
54-
else -> "natives-linux"
55-
}
5657

57-
implementation(platform("org.lwjgl:lwjgl-bom:$lwjglVersion"))
58-
implementation("org.lwjgl", "lwjgl")
59-
implementation("org.lwjgl", "lwjgl-glfw")
60-
runtimeOnly("org.lwjgl", "lwjgl", classifier = lwjglNatives)
61-
runtimeOnly("org.lwjgl", "lwjgl-glfw", classifier = lwjglNatives)
58+
implementation(platform("org.lwjgl:lwjgl-bom:$lwjglVersion"))
59+
implementation("org.lwjgl", "lwjgl")
60+
implementation("org.lwjgl", "lwjgl-glfw")
61+
runtimeOnly("org.lwjgl", "lwjgl", classifier = lwjglNatives)
62+
runtimeOnly("org.lwjgl", "lwjgl-glfw", classifier = lwjglNatives)
63+
}
6264

6365
testImplementation(libs.junit)
6466
}

core/src/processing/webgpu/PSurfaceGLFW.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ protected void runDrawLoop() {
394394

395395
sketch.start();
396396

397-
while (running && !sketch.finished) {
397+
while (running) {
398398
checkPause();
399399

400400
GLFW.glfwPollEvents();
@@ -405,7 +405,9 @@ protected void runDrawLoop() {
405405
break;
406406
}
407407

408-
sketch.handleDraw();
408+
if (!sketch.finished) {
409+
sketch.handleDraw();
410+
}
409411

410412
long afterTime = System.nanoTime();
411413
long timeDiff = afterTime - beforeTime;

gradle/plugins/library/src/main/kotlin/ProcessingLibraryPlugin.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,9 @@ class ProcessingLibraryPlugin : Plugin<Project> {
3636
target.dependencies.add("compileOnly", "org.processing:core:$processingVersion")
3737
}
3838
}
39+
val javaVersionOverride = target.findProperty("enableWebGPU")?.toString()?.toBoolean()?.let { if (it) 24 else 17 } ?: 17
3940
target.extensions.configure(JavaPluginExtension::class.java) { extension ->
40-
extension.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
41+
extension.toolchain.languageVersion.set(JavaLanguageVersion.of(javaVersionOverride))
4142
}
4243

4344
target.plugins.withType(JavaPlugin::class.java) {

gradle/plugins/settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
plugins {
2-
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
2+
id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
33
}
44

55
include("library")

java/src/processing/mode/java/JavaBuild.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public class JavaBuild {
6666
private boolean foundMain = false;
6767
private String classPath;
6868
protected String sketchClassName;
69+
protected String sketchRenderer;
6970

7071
/**
7172
* This will include the code folder, any library folders, etc. that might
@@ -118,6 +119,7 @@ public String build(File srcFolder, File binFolder, boolean sizeWarning) throws
118119
// that will bubble up to whomever called build().
119120
if (Compiler.compile(this)) {
120121
sketchClassName = classNameFound;
122+
sketchRenderer = result.getSketchRenderer();
121123
return classNameFound;
122124
}
123125
return null;
@@ -128,6 +130,10 @@ public String getSketchClassName() {
128130
return sketchClassName;
129131
}
130132

133+
public String getSketchRenderer() {
134+
return sketchRenderer;
135+
}
136+
131137

132138
/**
133139
* Build all the code for this sketch.

java/src/processing/mode/java/PreprocService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -667,7 +667,7 @@ private void setupParser(boolean resolveBindings, String className,
667667

668668
if (resolveBindings) {
669669
parser.setUnitName(className);
670-
parser.setEnvironment(classPathArray, null, null, false);
670+
parser.setEnvironment(classPathArray, null, null, true);
671671
parser.setResolveBindings(true);
672672
}
673673
}

java/src/processing/mode/java/runner/Runner.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -343,8 +343,9 @@ protected StringList getMachineParams() {
343343
//params.append("-Dcom.apple.mrj.application.apple.menu.about.name=" +
344344
// build.getSketchClassName());
345345

346-
// required for GLFW and Metal when using WebGPU
347-
params.append("-XstartOnFirstThread");
346+
if ("WEBGPU".equals(build.getSketchRenderer())) {
347+
params.append("-XstartOnFirstThread");
348+
}
348349
}
349350
/*
350351
if (Platform.isWindows()) {

0 commit comments

Comments
 (0)