aboutsummaryrefslogtreecommitdiff
path: root/build.gradle.kts
diff options
context:
space:
mode:
Diffstat (limited to 'build.gradle.kts')
-rw-r--r--build.gradle.kts83
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