aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2018-06-01 07:22:55 +0100
committerSimon Tatham <anakin@pobox.com>2018-06-01 07:24:15 +0100
commit85d87f4e8a8338449050a01cf3efa4e5d3d3b011 (patch)
tree2fe7b79b12aebba4c70587331fa4c915992a920a
parent32f96080ad2f1bf263e101c245f0332eed021d5a (diff)
downloadpuzzles-85d87f4e8a8338449050a01cf3efa4e5d3d3b011.zip
puzzles-85d87f4e8a8338449050a01cf3efa4e5d3d3b011.tar.gz
puzzles-85d87f4e8a8338449050a01cf3efa4e5d3d3b011.tar.bz2
puzzles-85d87f4e8a8338449050a01cf3efa4e5d3d3b011.tar.xz
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.
-rw-r--r--Recipe19
1 files 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 '<applet archive="'$@'" code="PuzzleApplet" width="700" height="500"></applet>' >$*.html
- mv PuzzleEngine.class $<
!end
# A benchmarking and testing target for the GTK puzzles.