diff --git a/test/asm/Makefile b/test/asm/Makefile index e951c2015..d722c47db 100644 --- a/test/asm/Makefile +++ b/test/asm/Makefile @@ -1,77 +1,34 @@ -# Makefile for the assembler regression tests +# top-level Makefile for the regression tests ifneq ($(shell echo),) CMD_EXE = 1 endif ifdef CMD_EXE - EXE = .exe - MKDIR = mkdir $(subst /,\,$1) - RMDIR = -rmdir /q /s $(subst /,\,$1) + RMDIR = -rmdir /s /q $(subst /,\,$1) else - EXE = - MKDIR = mkdir -p $1 RMDIR = $(RM) -r $1 endif -ifdef QUIET - .SILENT: -endif +WORKDIR = ../testwrk/asm -CA65 := $(if $(wildcard ../../bin/ca65*),../../bin/ca65,ca65) -LD65 := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65) +SUBDIRS = cpudetect opcodes listing -WORKDIR = ../../testwrk/asm +.PHONY: test continue mostlyclean clean -ISEQUAL = ../../testwrk/isequal$(EXE) +test: mostlyclean continue -CC = gcc -CFLAGS = -O2 +define CALL_template -.PHONY: all clean +continue:: + @$(MAKE) -C $1 all -OPCODE_REFS := $(wildcard *-opcodes.ref) -OPCODE_BINS = $(OPCODE_REFS:%.ref=$(WORKDIR)/%.bin) -OPCODE_CPUS = $(OPCODE_REFS:%-opcodes.ref=%) +mostlyclean:: + @$(MAKE) -C $1 clean -CPUDETECT_REFS := $(wildcard *-cpudetect.ref) -CPUDETECT_BINS = $(CPUDETECT_REFS:%.ref=$(WORKDIR)/%.bin) -CPUDETECT_CPUS = $(CPUDETECT_REFS:%-cpudetect.ref=%) +endef -all: $(OPCODE_BINS) $(CPUDETECT_BINS) $(WORKDIR)/paramcount.o +$(foreach subdir,$(SUBDIRS),$(eval $(call CALL_template,$(subdir)))) -$(WORKDIR): - $(call MKDIR,$(WORKDIR)) - -$(ISEQUAL): ../isequal.c | $(WORKDIR) - $(CC) $(CFLAGS) -o $@ $< - -define OPCODE_template - -$(WORKDIR)/$1-opcodes.bin: $1-opcodes.s $(ISEQUAL) - $(if $(QUIET),echo asm/$1-opcodes.bin) - $(CA65) -t none --cpu $1 -l $$(@:.bin=.lst) -o $$(@:.bin=.o) $$< - $(LD65) -t none -o $$@ $$(@:.bin=.o) none.lib - $(ISEQUAL) $1-opcodes.ref $$@ - -endef # OPCODE_template - -$(foreach cpu,$(OPCODE_CPUS),$(eval $(call OPCODE_template,$(cpu)))) - -define CPUDETECT_template - -$(WORKDIR)/$1-cpudetect.bin: cpudetect.s $1-cpudetect.ref $(ISEQUAL) - $(if $(QUIET),echo asm/$1-cpudetect.bin) - $(CA65) -t none --cpu $1 -l $$(@:.bin=.lst) -o $$(@:.bin=.o) $$< - $(LD65) -t none -o $$@ $$(@:.bin=.o) none.lib - $(ISEQUAL) $1-cpudetect.ref $$@ - -endef # CPUDETECT_template - -$(foreach cpu,$(CPUDETECT_CPUS),$(eval $(call CPUDETECT_template,$(cpu)))) - -$(WORKDIR)/%.o: %.s | $(WORKDIR) - $(CA65) -l $(@:.o=.lst) -o $@ $< - -clean: +clean: mostlyclean @$(call RMDIR,$(WORKDIR)) diff --git a/test/asm/4510-cpudetect.ref b/test/asm/cpudetect/4510-cpudetect.ref similarity index 100% rename from test/asm/4510-cpudetect.ref rename to test/asm/cpudetect/4510-cpudetect.ref diff --git a/test/asm/6502-cpudetect.ref b/test/asm/cpudetect/6502-cpudetect.ref similarity index 100% rename from test/asm/6502-cpudetect.ref rename to test/asm/cpudetect/6502-cpudetect.ref diff --git a/test/asm/6502dtv-cpudetect.ref b/test/asm/cpudetect/6502dtv-cpudetect.ref similarity index 100% rename from test/asm/6502dtv-cpudetect.ref rename to test/asm/cpudetect/6502dtv-cpudetect.ref diff --git a/test/asm/6502x-cpudetect.ref b/test/asm/cpudetect/6502x-cpudetect.ref similarity index 100% rename from test/asm/6502x-cpudetect.ref rename to test/asm/cpudetect/6502x-cpudetect.ref diff --git a/test/asm/65816-cpudetect.ref b/test/asm/cpudetect/65816-cpudetect.ref similarity index 100% rename from test/asm/65816-cpudetect.ref rename to test/asm/cpudetect/65816-cpudetect.ref diff --git a/test/asm/65c02-cpudetect.ref b/test/asm/cpudetect/65c02-cpudetect.ref similarity index 100% rename from test/asm/65c02-cpudetect.ref rename to test/asm/cpudetect/65c02-cpudetect.ref diff --git a/test/asm/65sc02-cpudetect.ref b/test/asm/cpudetect/65sc02-cpudetect.ref similarity index 100% rename from test/asm/65sc02-cpudetect.ref rename to test/asm/cpudetect/65sc02-cpudetect.ref diff --git a/test/asm/cpudetect/Makefile b/test/asm/cpudetect/Makefile new file mode 100644 index 000000000..ffddb1ad8 --- /dev/null +++ b/test/asm/cpudetect/Makefile @@ -0,0 +1,61 @@ +# Makefile for the assembler regression tests + +ifneq ($(shell echo),) + CMD_EXE = 1 +endif + +ifdef CMD_EXE + EXE = .exe + MKDIR = mkdir $(subst /,\,$1) + RMDIR = -rmdir /q /s $(subst /,\,$1) +else + EXE = + MKDIR = mkdir -p $1 + RMDIR = $(RM) -r $1 +endif + +ifdef QUIET + .SILENT: +endif + +CA65 := $(if $(wildcard ../../../bin/ca65*),../../../bin/ca65,ca65) +LD65 := $(if $(wildcard ../../../bin/ld65*),../../../bin/ld65,ld65) + +WORKDIR = ../../../testwrk/asm/cpudetect + +ISEQUAL = ../../../testwrk/isequal$(EXE) + +CC = gcc +CFLAGS = -O2 + +.PHONY: all clean + +CPUDETECT_REFS := $(wildcard *-cpudetect.ref) +CPUDETECT_BINS = $(CPUDETECT_REFS:%.ref=$(WORKDIR)/%.bin) +CPUDETECT_CPUS = $(CPUDETECT_REFS:%-cpudetect.ref=%) + +all: $(CPUDETECT_BINS) + +$(WORKDIR): + $(call MKDIR,$(WORKDIR)) + +$(ISEQUAL): ../../isequal.c | $(WORKDIR) + $(CC) $(CFLAGS) -o $@ $< + +define CPUDETECT_template + +$(WORKDIR)/$1-cpudetect.bin: cpudetect.s $1-cpudetect.ref $(ISEQUAL) + $(if $(QUIET),echo asm/$1-cpudetect.bin) + $(CA65) -t none --cpu $1 -l $$(@:.bin=.lst) -o $$(@:.bin=.o) $$< + $(LD65) -t none -o $$@ $$(@:.bin=.o) none.lib + $(ISEQUAL) $1-cpudetect.ref $$@ + +endef # CPUDETECT_template + +$(foreach cpu,$(CPUDETECT_CPUS),$(eval $(call CPUDETECT_template,$(cpu)))) + +$(WORKDIR)/%.o: %.s | $(WORKDIR) + $(CA65) -l $(@:.o=.lst) -o $@ $< + +clean: + @$(call RMDIR,$(WORKDIR)) diff --git a/test/asm/cpudetect.s b/test/asm/cpudetect/cpudetect.s similarity index 100% rename from test/asm/cpudetect.s rename to test/asm/cpudetect/cpudetect.s diff --git a/test/asm/huc6280-cpudetect.ref b/test/asm/cpudetect/huc6280-cpudetect.ref similarity index 100% rename from test/asm/huc6280-cpudetect.ref rename to test/asm/cpudetect/huc6280-cpudetect.ref diff --git a/test/asm/listing/Makefile b/test/asm/listing/Makefile new file mode 100644 index 000000000..f4a7df81c --- /dev/null +++ b/test/asm/listing/Makefile @@ -0,0 +1,89 @@ +# Makefile for the assembler regression tests + +ifneq ($(shell echo),) + CMD_EXE = 1 +endif + +ifdef CMD_EXE + EXE = .exe + MKDIR = mkdir $(subst /,\,$1) + RMDIR = -rmdir /q /s $(subst /,\,$1) +else + EXE = + MKDIR = mkdir -p $1 + RMDIR = $(RM) -r $1 +endif + +ifdef QUIET + .SILENT: +endif + +CA65 := $(if $(wildcard ../../../bin/ca65*),../../../bin/ca65,ca65) +LD65 := $(if $(wildcard ../../../bin/ld65*),../../../bin/ld65,ld65) + +WORKDIR = ../../../testwrk/asm/listing + +ISEQUAL = ../../../testwrk/isequal$(EXE) + +CC = gcc +CFLAGS = -O2 + +.PHONY: all clean + +LISTING_SRC := $(wildcard *.s) +LISTING_TESTS = $(LISTING_SRC:%.s=%) +LISTING_BINS = $(LISTING_SRC:%.s=$(WORKDIR)/%.bin) + +all: $(LISTING_BINS) + +$(WORKDIR): + $(call MKDIR,$(WORKDIR)) + +$(ISEQUAL): ../../isequal.c | $(WORKDIR) + $(CC) $(CFLAGS) -o $@ $< + + +define LISTING_template + +$(WORKDIR)/$1.bin: $1.s $(ISEQUAL) + $(if $(QUIET),echo asm/$1.bin) + + # compile without generating listing + $(CA65) -t none -o $$(@:.bin=.o) $$< + $(LD65) -t none -o $$@ $$(@:.bin=.o) none.lib + +ifneq ($(wildcard $1.bin-ref),) + $(ISEQUAL) $1.bin-ref $$@ +endif + + $(CA65) -t none -l $$(@:.bin=.list.orig) -o $$(@:.bin=.list-o) $$< + $(LD65) -t none -o $$(@:.bin=.list-bin) $$(@:.bin=.list-o) none.lib + + # check if the result bin is the same as without listing file + $(ISEQUAL) $$@ $$(@:.bin=.list-bin) + +ifneq ($(wildcard $1.list-ref),) + # we have a reference file, compare that, too + + # remove first line which contains a version number + tail -n +2 $$(@:.bin=.lst.orig) > $$(@:.bin=.lst) + $(ISEQUAL) $1.list-ref $$(@:.bin=.lst) +endif + +# $(CA65) -t none -f -l $$(@:.bin=.flist.orig) -o $$(@:.bin=.flist-o) $$< +# $(LD65) -t none -o $$(@:.bin=.flist-bin) $$(@:.bin=.flist-o) none.lib + +# # check if the result bin is the same as without listing file +# $(ISEQUAL) $$@ $$(@:.bin=.flist-bin) + +endef # LISTING_template + + +$(foreach listing,$(LISTING_TESTS),$(eval $(call LISTING_template,$(listing)))) + + +$(WORKDIR)/%.o: %.s | $(WORKDIR) + $(CA65) -l $(@:.o=.lst) -o $@ $< + +clean: + @$(call RMDIR,$(WORKDIR)) diff --git a/test/asm/paramcount.s b/test/asm/listing/paramcount.s similarity index 100% rename from test/asm/paramcount.s rename to test/asm/listing/paramcount.s diff --git a/test/asm/4510-opcodes.ref b/test/asm/opcodes/4510-opcodes.ref similarity index 100% rename from test/asm/4510-opcodes.ref rename to test/asm/opcodes/4510-opcodes.ref diff --git a/test/asm/4510-opcodes.s b/test/asm/opcodes/4510-opcodes.s similarity index 100% rename from test/asm/4510-opcodes.s rename to test/asm/opcodes/4510-opcodes.s diff --git a/test/asm/6502-opcodes.ref b/test/asm/opcodes/6502-opcodes.ref similarity index 100% rename from test/asm/6502-opcodes.ref rename to test/asm/opcodes/6502-opcodes.ref diff --git a/test/asm/6502-opcodes.s b/test/asm/opcodes/6502-opcodes.s similarity index 100% rename from test/asm/6502-opcodes.s rename to test/asm/opcodes/6502-opcodes.s diff --git a/test/asm/6502dtv-opcodes.ref b/test/asm/opcodes/6502dtv-opcodes.ref similarity index 100% rename from test/asm/6502dtv-opcodes.ref rename to test/asm/opcodes/6502dtv-opcodes.ref diff --git a/test/asm/6502dtv-opcodes.s b/test/asm/opcodes/6502dtv-opcodes.s similarity index 100% rename from test/asm/6502dtv-opcodes.s rename to test/asm/opcodes/6502dtv-opcodes.s diff --git a/test/asm/6502x-opcodes.ref b/test/asm/opcodes/6502x-opcodes.ref similarity index 100% rename from test/asm/6502x-opcodes.ref rename to test/asm/opcodes/6502x-opcodes.ref diff --git a/test/asm/6502x-opcodes.s b/test/asm/opcodes/6502x-opcodes.s similarity index 100% rename from test/asm/6502x-opcodes.s rename to test/asm/opcodes/6502x-opcodes.s diff --git a/test/asm/65c02-opcodes.ref b/test/asm/opcodes/65c02-opcodes.ref similarity index 100% rename from test/asm/65c02-opcodes.ref rename to test/asm/opcodes/65c02-opcodes.ref diff --git a/test/asm/65c02-opcodes.s b/test/asm/opcodes/65c02-opcodes.s similarity index 100% rename from test/asm/65c02-opcodes.s rename to test/asm/opcodes/65c02-opcodes.s diff --git a/test/asm/65sc02-opcodes.ref b/test/asm/opcodes/65sc02-opcodes.ref similarity index 100% rename from test/asm/65sc02-opcodes.ref rename to test/asm/opcodes/65sc02-opcodes.ref diff --git a/test/asm/65sc02-opcodes.s b/test/asm/opcodes/65sc02-opcodes.s similarity index 100% rename from test/asm/65sc02-opcodes.s rename to test/asm/opcodes/65sc02-opcodes.s diff --git a/test/asm/opcodes/Makefile b/test/asm/opcodes/Makefile new file mode 100644 index 000000000..00be96d91 --- /dev/null +++ b/test/asm/opcodes/Makefile @@ -0,0 +1,61 @@ +# Makefile for the assembler regression tests + +ifneq ($(shell echo),) + CMD_EXE = 1 +endif + +ifdef CMD_EXE + EXE = .exe + MKDIR = mkdir $(subst /,\,$1) + RMDIR = -rmdir /q /s $(subst /,\,$1) +else + EXE = + MKDIR = mkdir -p $1 + RMDIR = $(RM) -r $1 +endif + +ifdef QUIET + .SILENT: +endif + +CA65 := $(if $(wildcard ../../../bin/ca65*),../../../bin/ca65,ca65) +LD65 := $(if $(wildcard ../../../bin/ld65*),../../../bin/ld65,ld65) + +WORKDIR = ../../../testwrk/asm/opcodes + +ISEQUAL = ../../../testwrk/isequal$(EXE) + +CC = gcc +CFLAGS = -O2 + +.PHONY: all clean + +OPCODE_REFS := $(wildcard *-opcodes.ref) +OPCODE_BINS = $(OPCODE_REFS:%.ref=$(WORKDIR)/%.bin) +OPCODE_CPUS = $(OPCODE_REFS:%-opcodes.ref=%) + +all: $(OPCODE_BINS) + +$(WORKDIR): + $(call MKDIR,$(WORKDIR)) + +$(ISEQUAL): ../../isequal.c | $(WORKDIR) + $(CC) $(CFLAGS) -o $@ $< + +define OPCODE_template + +$(WORKDIR)/$1-opcodes.bin: $1-opcodes.s $(ISEQUAL) + $(if $(QUIET),echo asm/$1-opcodes.bin) + $(CA65) -t none --cpu $1 -l $$(@:.bin=.lst) -o $$(@:.bin=.o) $$< + $(LD65) -t none -o $$@ $$(@:.bin=.o) none.lib + $(ISEQUAL) $1-opcodes.ref $$@ + +endef # OPCODE_template + +$(foreach cpu,$(OPCODE_CPUS),$(eval $(call OPCODE_template,$(cpu)))) + +$(WORKDIR)/%.o: %.s | $(WORKDIR) + $(CA65) -l $(@:.o=.lst) -o $@ $< + +clean: + @$(call RMDIR,$(WORKDIR)) diff --git a/test/asm/huc6280-opcodes.ref b/test/asm/opcodes/huc6280-opcodes.ref similarity index 100% rename from test/asm/huc6280-opcodes.ref rename to test/asm/opcodes/huc6280-opcodes.ref diff --git a/test/asm/huc6280-opcodes.s b/test/asm/opcodes/huc6280-opcodes.s similarity index 100% rename from test/asm/huc6280-opcodes.s rename to test/asm/opcodes/huc6280-opcodes.s diff --git a/test/asm/m740-opcodes.s b/test/asm/opcodes/m740-opcodes.s similarity index 100% rename from test/asm/m740-opcodes.s rename to test/asm/opcodes/m740-opcodes.s