From 85d87f4e8a8338449050a01cf3efa4e5d3d3b011 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Fri, 1 Jun 2018 07:22:55 +0100 Subject: [PATCH] Fix Makefile.nestedvm so that it works with make -j. Instead of repeatedly reusing the file name 'PuzzleEngine.class' in the main build directory, now each puzzle's NestedVM translation is left in a separate subdirectory so that they don't collide with each other. A bonus is that we don't have to rename the file back and forth between the rule that builds it and the one that consumes it. --- Recipe | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Recipe b/Recipe index a17f4f3..f94b1f9 100644 --- a/Recipe +++ b/Recipe @@ -122,12 +122,12 @@ install: done !end !begin nestedvm -.PRECIOUS: %.class -%.class: %.mips - java -cp $(NESTEDVM)/build:$(NESTEDVM)/upstream/build/classgen/build \ +%.tmpdir/PuzzleEngine.class: %.mips + mkdir -p $(patsubst %.mips,%,$<).tmpdir + cd $(patsubst %.mips,%,$<).tmpdir && \ + java -cp $(NESTEDVM)/build:$(NESTEDVM)/upstream/build/classgen/build \ org.ibex.nestedvm.Compiler -outformat class -d . \ - PuzzleEngine $< - mv PuzzleEngine.class $@ + PuzzleEngine ../$< org: mkdir -p org/ibex/nestedvm/util @@ -136,16 +136,17 @@ org: cp $(NESTEDVM)/build/org/ibex/nestedvm/Runtime*.class org/ibex/nestedvm cp $(NESTEDVM)/build/org/ibex/nestedvm/util/Platform*.class org/ibex/nestedvm/util cp $(NESTEDVM)/build/org/ibex/nestedvm/util/Seekable*.class org/ibex/nestedvm/util + +applet.manifest: echo "Main-Class: PuzzleApplet" >applet.manifest PuzzleApplet.class: PuzzleApplet.java org javac -source 1.7 -target 1.7 PuzzleApplet.java -%.jar: %.class PuzzleApplet.class org - mv $< PuzzleEngine.class - jar cfm $@ applet.manifest PuzzleEngine.class PuzzleApplet*.class org +%.jar: %.tmpdir/PuzzleEngine.class PuzzleApplet.class applet.manifest org + cd $(patsubst %.jar,%,$@).tmpdir && ln -s ../applet.manifest ../org ../PuzzleApplet*.class . + cd $(patsubst %.jar,%,$@).tmpdir && jar cfm ../$@ applet.manifest PuzzleEngine.class PuzzleApplet*.class org echo '' >$*.html - mv PuzzleEngine.class $< !end # A benchmarking and testing target for the GTK puzzles.