diff --git a/src/main/java/jace/assembly/AcmeCompiler.java b/src/main/java/jace/assembly/AcmeCompiler.java index e5f1b72..a25ef1d 100644 --- a/src/main/java/jace/assembly/AcmeCompiler.java +++ b/src/main/java/jace/assembly/AcmeCompiler.java @@ -89,6 +89,15 @@ public class AcmeCompiler implements CompileResult { ByteArrayOutputStream baosErr; PrintStream err; + private String normalizeWindowsPath(String path) { + if (path.contains("\\")) { + char firstLetter = path.toLowerCase().charAt(0); + return "/"+firstLetter+path.substring(1).replaceAll("\\\\", "/"); + } else { + return path; + } + } + private void invokeAcme(File sourceFile, File workingDirectory) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IOException { String oldPath = System.getProperty("user.dir"); redirectSystemOutput(); @@ -96,7 +105,7 @@ public class AcmeCompiler implements CompileResult { compiledAsset = File.createTempFile(sourceFile.getName(), "bin", sourceFile.getParentFile()); System.setProperty("user.dir", workingDirectory.getAbsolutePath()); AcmeCrossAssembler acme = new AcmeCrossAssembler(); - String[] params = {"--outfile", compiledAsset.getAbsolutePath(), "-f", "cbm", "--maxerrors","16",sourceFile.getAbsolutePath()}; + String[] params = {"--outfile", normalizeWindowsPath(compiledAsset.getAbsolutePath()), "-f", "cbm", "--maxerrors","16",normalizeWindowsPath(sourceFile.getAbsolutePath())}; int status = acme.run("Acme", params); successful = status == 0; if (!successful) { diff --git a/src/main/java/jace/assembly/AcmeCrossAssembler.java b/src/main/java/jace/assembly/AcmeCrossAssembler.java index 729f785..1264223 100644 --- a/src/main/java/jace/assembly/AcmeCrossAssembler.java +++ b/src/main/java/jace/assembly/AcmeCrossAssembler.java @@ -1,7 +1,9 @@ package jace.assembly; + +import org.ibex.nestedvm.UnixRuntime; /* This file was generated from acme by Mips2Java on Tue Jul 14 00:46:52 CDT 2015 */ -public final class AcmeCrossAssembler extends org.ibex.nestedvm.UnixRuntime { +public final class AcmeCrossAssembler extends UnixRuntime { /* program counter */ private int pc = 0; diff --git a/src/main/java/jace/ide/Program.java b/src/main/java/jace/ide/Program.java index 63e372c..26e393e 100644 --- a/src/main/java/jace/ide/Program.java +++ b/src/main/java/jace/ide/Program.java @@ -221,6 +221,7 @@ public class Program { if (lastResult.isSuccessful()) { getHandler().execute(lastResult); } else { + lastResult.getOtherMessages().forEach(System.err::println); getHandler().clean(lastResult); } }