diff options
Diffstat (limited to 'build.gradle.kts')
-rw-r--r-- | build.gradle.kts | 83 |
1 files changed, 70 insertions, 13 deletions
diff --git a/build.gradle.kts b/build.gradle.kts index 46fe2f7..d3d62b5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,15 +6,19 @@ * 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.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.plugin.SubpluginOption import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import java.nio.charset.StandardCharsets +import java.util.Base64 plugins { java @@ -28,7 +32,7 @@ plugins { id("fabric-loom") version "1.9.2" alias(libs.plugins.shadow) id("moe.nea.licenseextractificator") - id("moe.nea.mc-auto-translations") version "0.1.0" + id("moe.nea.mc-auto-translations") version "0.2.0" } version = getGitTagInfo(libs.versions.minecraft.get()) @@ -167,7 +171,8 @@ fun createIsolatedSourceSet(name: String, path: String = "compat/$name", isEnabl } dependencies { runtimeOnly(ss.output) - (ss.implementationConfigurationName)(sourceSets.main.get().output) + (ss.implementationConfigurationName)(project.files(tasks.compileKotlin.map { it.destinationDirectory })) + (ss.implementationConfigurationName)(project.files(tasks.compileJava.map { it.destinationDirectory })) } tasks.shadowJar { from(ss.output) @@ -177,7 +182,7 @@ fun createIsolatedSourceSet(name: String, path: String = "compat/$name", isEnabl classpath.from(configurations.getByName(ss.compileClasspathConfigurationName)) } collectTranslations { - this.classes.from(sourceSets.main.get().kotlin.classesDirectory) + this.classes.from(ss.kotlin.classesDirectory) } return ss } @@ -218,13 +223,14 @@ val configuredSourceSet = createIsolatedSourceSet("configured", isEnabled = false) // Wait for update (also low prio, because configured sucks) val sodiumSourceSet = createIsolatedSourceSet("sodium", isEnabled = false) val citResewnSourceSet = createIsolatedSourceSet("citresewn", isEnabled = false) // TODO: Wait for update -val yaclSourceSet = createIsolatedSourceSet("yacl", isEnabled = false) +val yaclSourceSet = createIsolatedSourceSet("yacl") val explosiveEnhancementSourceSet = createIsolatedSourceSet("explosiveEnhancement", isEnabled = false) // TODO: wait for their port val wildfireGenderSourceSet = createIsolatedSourceSet("wildfireGender") -val modmenuSourceSet = createIsolatedSourceSet("modmenu", isEnabled = false) +val jadeSourceSet = createIsolatedSourceSet("jade") +val modmenuSourceSet = createIsolatedSourceSet("modmenu") val reiSourceSet = createIsolatedSourceSet("rei") -val moulconfigSourceSet = createIsolatedSourceSet("moulconfig", isEnabled = false) +val moulconfigSourceSet = createIsolatedSourceSet("moulconfig") val customTexturesSourceSet = createIsolatedSourceSet("texturePacks", "texturePacks") dependencies { @@ -246,8 +252,8 @@ dependencies { (explosiveEnhancementSourceSet.modImplementationConfigurationName)(libs.explosiveenhancement) modImplementation(libs.hypixelmodapi) include(libs.hypixelmodapi.fabric) - compileOnly(project(":javaplugin")) - annotationProcessor(project(":javaplugin")) + compileOnly(projects.javaplugin) + annotationProcessor(projects.javaplugin) implementation("com.google.auto.service:auto-service-annotations:1.1.1") ksp("dev.zacsweers.autoservice:auto-service-ksp:1.2.0") include(libs.manninghamMills) @@ -271,6 +277,7 @@ dependencies { (wildfireGenderSourceSet.implementationConfigurationName)(customTexturesSourceSet.output) (configuredSourceSet.modImplementationConfigurationName)(libs.configured) (sodiumSourceSet.modImplementationConfigurationName)(libs.sodium) + (jadeSourceSet.modImplementationConfigurationName)(libs.jade) (citResewnSourceSet.modImplementationConfigurationName)( innerJarsOf("citresewn", dependencies.create(libs.citresewn.get())) @@ -308,8 +315,8 @@ dependencies { testImplementation("io.kotest:kotest-runner-junit5:6.0.0.M1") testAgent(project(":testagent", configuration = "shadow")) - implementation(project(":symbols")) - ksp(project(":symbols")) + implementation(projects.symbols) + ksp(projects.symbols) } loom { @@ -336,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}") } } } @@ -433,6 +440,7 @@ tasks.processResources { "version" to project.version.toString(), "minecraft_version" to libs.versions.minecraft.get(), "fabric_kotlin_version" to libs.versions.fabric.kotlin.get(), + "fabric_api_version" to libs.versions.fabric.api.get(), "rei_version" to libs.versions.rei.get() ) replacements.forEach { (key, value) -> inputs.property(key, value) } @@ -462,6 +470,55 @@ 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.withType<AbstractArchiveTask>().configureEach { isPreserveFileTimestamps = false |