diff options
author | Linnea Gräf <nea@nea.moe> | 2025-02-02 00:08:18 +0100 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2025-02-02 00:08:18 +0100 |
commit | 89bceb6735a1e934287c3e01636a203758b085c8 (patch) | |
tree | 0766b8d4c10510bdd09f69fc1b50f7a4c1849372 /build.gradle.kts | |
parent | c2aefe09ab9bb8fec234ec10cbfc127dd6f7e4d2 (diff) | |
download | Firmament-89bceb6735a1e934287c3e01636a203758b085c8.tar.gz Firmament-89bceb6735a1e934287c3e01636a203758b085c8.tar.bz2 Firmament-89bceb6735a1e934287c3e01636a203758b085c8.zip |
feat: Highlight century cake slice players
Diffstat (limited to 'build.gradle.kts')
-rw-r--r-- | build.gradle.kts | 76 |
1 files changed, 73 insertions, 3 deletions
diff --git a/build.gradle.kts b/build.gradle.kts index 1a31f16..40eb5d8 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,15 +6,21 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ +import com.google.common.hash.Hashing import com.google.devtools.ksp.gradle.KspTaskJvm import com.google.gson.Gson import com.google.gson.JsonObject import moe.nea.licenseextractificator.LicenseDiscoveryTask import moe.nea.mcautotranslations.gradle.CollectTranslations import net.fabricmc.loom.LoomGradleExtension +import org.apache.tools.ant.taskdefs.condition.Os +import org.gradle.platform.OperatingSystem import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.plugin.SubpluginOption +import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsPlugin.Companion.kotlinNodeJsEnvSpec import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import java.nio.charset.StandardCharsets +import java.util.Base64 plugins { java @@ -337,9 +343,9 @@ loom { named("client") { property("devauth.enabled", "true") vmArg("-ea") - vmArg("-XX:+AllowEnhancedClassRedefinition") - vmArg("-XX:HotswapAgent=external") - vmArg("-javaagent:${hotswap.resolve().single().absolutePath}") +// vmArg("-XX:+AllowEnhancedClassRedefinition") +// vmArg("-XX:HotswapAgent=external") +// vmArg("-javaagent:${hotswap.resolve().single().absolutePath}") } } } @@ -463,6 +469,70 @@ tasks.create("printAllLicenses", LicenseDiscoveryTask::class.java, licensing).ap } outputs.upToDateWhen { false } } +fun patchRenderDoc( + javaLauncher: JavaLauncher, +): JavaLauncher { + val wrappedJavaExecutable = javaLauncher.executablePath.asFile.absolutePath + require("\"" !in wrappedJavaExecutable) + val hashBytes = Hashing.sha256().hashString(wrappedJavaExecutable, StandardCharsets.UTF_8) + val hash = Base64.getUrlEncoder().encodeToString(hashBytes.asBytes()) + .replace("=", "") + val wrapperJavaRoot = rootProject.layout.buildDirectory + .dir("binaries/renderdoc-wrapped-java/$hash/") + .get() + val isWindows = Os.isFamily(Os.FAMILY_WINDOWS) + val wrapperJavaExe = + if (isWindows) wrapperJavaRoot.file("java.cmd") + else wrapperJavaRoot.file("java") + return object : JavaLauncher { + override fun getMetadata(): JavaInstallationMetadata { + return object : JavaInstallationMetadata by javaLauncher.metadata { + override fun isCurrentJvm(): Boolean { + return false + } + } + } + + override fun getExecutablePath(): RegularFile { + val fileF = wrapperJavaExe.asFile + if (!fileF.exists()) { + fileF.parentFile.mkdirs() + if (isWindows) { + fileF.writeText(""" + setlocal enableextensions + start "" renderdoccmd.exe capture --opt-hook-children --wait-for-exit --working-dir . "$wrappedJavaExecutable" %* + endlocal + """.trimIndent()) + } else { + fileF.writeText(""" + #!/usr/bin/env bash + exec renderdoccmd capture --opt-hook-children --wait-for-exit --working-dir . "$wrappedJavaExecutable" "$@" + """.trimIndent()) + fileF.setExecutable(true) + } + } + return wrapperJavaExe + } + } +} +tasks.runClient { + javaLauncher.set(javaToolchains.launcherFor(java.toolchain).map { patchRenderDoc(it) }) +} +//tasks.register<Exec>("runRenderDoc") { +// val runClient = tasks.runClient.get() +// commandLine( +// "renderdoc", +// "capture", +// "--opt-hook-children", +// "--wait-for-exit", +// "--working-dir", +// runClient.workingDir, +// runClient.javaLauncher.get().executablePath.asFile.absoluteFile, +// ) +// args(runClient.allJvmArgs) +// args() +// +//} tasks.withType<AbstractArchiveTask>().configureEach { isPreserveFileTimestamps = false |