]> git.sur5r.net Git - cc65/blob - test/dasm/Makefile
f8942ef739ac00816aa39debbf740a0cf92c3ed7
[cc65] / test / dasm / Makefile
1 # Makefile for the disassembler regression tests
2
3 ifneq ($(shell echo),)
4   CMD_EXE = 1
5 endif
6
7 ifdef CMD_EXE
8   EXE = .exe
9   MKDIR = mkdir $(subst /,\,$1)
10   RMDIR = -rmdir /s /q $(subst /,\,$1)
11   DEL = del /f $(subst /,\,$1)
12 else
13   EXE =
14   MKDIR = mkdir -p $1
15   RMDIR = $(RM) -r $1
16   DEL = $(RM) $1
17 endif
18
19 CL65 := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
20 DA65 := $(if $(wildcard ../../bin/da65*),../../bin/da65,da65)
21
22 WORKDIR = ../../testwrk/dasm
23
24 DIFF = $(WORKDIR)/bdiff$(EXE)
25
26 CC = gcc
27 CFLAGS = -O2
28
29 START = --start-addr 0x8000
30
31 .PHONY: all clean
32
33 SOURCES := $(wildcard *.s)
34 CPUS = $(foreach src,$(SOURCES),$(src:%-disass.s=%))
35 BINS = $(foreach cpu,$(CPUS),$(WORKDIR)/$(cpu)-reass.bin)
36
37 # default target defined later
38 all: $(BINS)
39
40 $(WORKDIR):
41         $(call MKDIR,$(WORKDIR))
42
43 $(DIFF): ../bdiff.c | $(WORKDIR)
44         $(CC) $(CFLAGS) -o $@ $<
45
46 define DISASS_template
47
48 $(WORKDIR)/$1-disass.bin: $1-disass.s | $(WORKDIR)
49         $(CL65) --cpu $1 -t none $(START) -o $$@ $$<
50
51 $(WORKDIR)/$1-reass.s: $(WORKDIR)/$1-disass.bin
52         $(DA65) --cpu $1 $(START) -o $$@ $$<
53
54 $(WORKDIR)/$1-reass.bin: $(WORKDIR)/$1-reass.s $(DIFF)
55         $(CL65) --cpu $1 -t none $(START) -o $$@ $$<
56         $(DIFF) $$@ $(WORKDIR)/$1-disass.bin
57
58 endef # DISASS_template
59
60 $(foreach cpu,$(CPUS),$(eval $(call DISASS_template,$(cpu))))
61
62 clean:
63         @$(call RMDIR,$(WORKDIR))
64         @$(call DEL,$(SOURCES:.s=.o))