-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
57 lines (37 loc) · 1.14 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
top: all
all: ch8s diss
default = self-selfb-pi
external = ibm maze pong2 brix invaders tetris 3-corax+ 4-flags 5-quirks 6-keypad
internal = life three evens pi scroll scroll-what scroll-message bf ace dump seven self selfb selfb-pi
bfs = bf-reverse bf-fibs bf-collatz
int = ibm maze three evens pi scroll-message ace dump seven brix pong2 bf-fibs bf-collatz
self = $(patsubst %, self-%, $(int) selfb-pi)
self2 = $(patsubst %, self-self-%, $(int))
all = $(external) $(internal) $(bfs) $(self) $(self2)
ch8s: $(patsubst %, roms/%.ch8, $(all))
diss: $(patsubst %, dis/%.dis, $(all))
.PRECIOUS: roms/self-%.ch8
roms/self-%.ch8: roms/self.ch8 roms/%.ch8
cat $^ > $@
.PRECIOUS: roms/selfb-%.ch8
roms/selfb-%.ch8: roms/selfb.ch8 roms/%.ch8
cat $^ > $@
# assemble (from Haskell DSL)
ass-%: roms/%.ch8
@ echo -n
.PRECIOUS: roms/%.ch8
roms/%.ch8: app/*.hs
stack run ass $* > $@
roms/bf-%.ch8: bf/%.b app/*.hs
stack run ass bf $* > $@
# disassemble (.ch8 file)
dis-%: dis/%.dis
@ echo -n
.PRECIOUS: dis/%.dis
dis/%.dis: roms/%.ch8
stack run dis $^ > $@ || rm $@
# run (.ch8 file)
run: run-$(default)
@ echo -n
run-%: roms/%.ch8 dis-%
stack run run $<