From 5ab5097b4d56ab4ce3d00cf0d2a9e78d9dfd0eec Mon Sep 17 00:00:00 2001 From: Elise Date: Fri, 23 Aug 2019 06:59:06 -0400 Subject: [PATCH] Mixin processing runs under scala, allowing java mixins to call scala methods (#125) --- .../net/fabricmc/loom/AbstractPlugin.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/main/java/net/fabricmc/loom/AbstractPlugin.java b/src/main/java/net/fabricmc/loom/AbstractPlugin.java index 71d37f4a..c14eb8d9 100644 --- a/src/main/java/net/fabricmc/loom/AbstractPlugin.java +++ b/src/main/java/net/fabricmc/loom/AbstractPlugin.java @@ -50,6 +50,7 @@ import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.bundling.AbstractArchiveTask; import org.gradle.api.tasks.compile.JavaCompile; import org.gradle.api.tasks.javadoc.Javadoc; +import org.gradle.api.tasks.scala.ScalaCompile; import org.gradle.plugins.ide.eclipse.model.EclipseModel; import org.gradle.plugins.ide.idea.model.IdeaModel; @@ -133,6 +134,7 @@ public class AbstractPlugin implements Plugin { configureIDEs(); configureCompile(); + configureScala(); Map> taskMap = project.getAllTasks(true); for (Map.Entry> entry : taskMap.entrySet()) { @@ -164,6 +166,24 @@ public class AbstractPlugin implements Plugin { return project; } + protected void configureScala() { + project.afterEvaluate(proj -> { + if (project.getPluginManager().hasPlugin("scala")) { + ScalaCompile task = (ScalaCompile) project.getTasks().getByName("compileScala"); + LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); + project.getLogger().warn(":configuring scala compilation processing"); + try { + task.getOptions().getCompilerArgs().add("-AinMapFileNamedIntermediary=" + extension.getMappingsProvider().MAPPINGS_TINY.getCanonicalPath()); + task.getOptions().getCompilerArgs().add("-AoutMapFileNamedIntermediary=" + extension.getMappingsProvider().MAPPINGS_MIXIN_EXPORT.getCanonicalPath()); + task.getOptions().getCompilerArgs().add("-AoutRefMapFile=" + new File(task.getDestinationDir(), extension.getRefmapName()).getCanonicalPath()); + task.getOptions().getCompilerArgs().add("-AdefaultObfuscationEnv=named:intermediary"); + } catch (IOException e) { + e.printStackTrace(); + } + } + }); + } + /** * Permit to add a Maven repository to a target project *