mirror of
https://github.com/cc65/cc65.git
synced 2024-11-20 12:32:58 +00:00
b931e65811
Fixes #1267 Avoid ICE, but treat plain int bit-fields declared via typedef as signed rather than unsigned. It is more efficient to treat them as unsigned, but this requires distinguishing int from signed int, and this is curently not done.
148 lines
5.0 KiB
Makefile
148 lines
5.0 KiB
Makefile
# Makefile for the remaining tests that need special care in one way or another
|
|
|
|
ifneq ($(shell echo),)
|
|
CMD_EXE = 1
|
|
endif
|
|
|
|
ifdef CMD_EXE
|
|
S = $(subst /,\,/)
|
|
NOT = - # Hack
|
|
EXE = .exe
|
|
NULLDEV = nul:
|
|
MKDIR = mkdir $(subst /,\,$1)
|
|
RMDIR = -rmdir /s /q $(subst /,\,$1)
|
|
else
|
|
S = /
|
|
NOT = !
|
|
EXE =
|
|
NULLDEV = /dev/null
|
|
MKDIR = mkdir -p $1
|
|
RMDIR = $(RM) -r $1
|
|
endif
|
|
|
|
ifdef QUIET
|
|
.SILENT:
|
|
NULLOUT = >$(NULLDEV)
|
|
NULLERR = 2>$(NULLDEV)
|
|
endif
|
|
|
|
SIM65FLAGS = -x 200000000
|
|
|
|
CC65 := $(if $(wildcard ../../bin/cc65*),..$S..$Sbin$Scc65,cc65)
|
|
CA65 := $(if $(wildcard ../../bin/ca65*),..$S..$Sbin$Sca65,ca65)
|
|
LD65 := $(if $(wildcard ../../bin/ld65*),..$S..$Sbin$Sld65,ld65)
|
|
SIM65 := $(if $(wildcard ../../bin/sim65*),..$S..$Sbin$Ssim65,sim65)
|
|
|
|
WORKDIR = ..$S..$Stestwrk$Smisc
|
|
|
|
OPTIONS = g O Os Osi Osir Osr Oi Oir Or
|
|
|
|
ISEQUAL = $(WORKDIR)$Sisequal$(EXE)
|
|
|
|
CC = gcc
|
|
CFLAGS = -O2
|
|
|
|
.PHONY: all clean
|
|
|
|
SOURCES := $(wildcard *.c)
|
|
TESTS = $(foreach option,$(OPTIONS),$(SOURCES:%.c=$(WORKDIR)/%.$(option).6502.prg))
|
|
TESTS += $(foreach option,$(OPTIONS),$(SOURCES:%.c=$(WORKDIR)/%.$(option).65c02.prg))
|
|
|
|
all: $(TESTS)
|
|
|
|
$(WORKDIR):
|
|
$(call MKDIR,$(WORKDIR))
|
|
|
|
$(ISEQUAL): ../isequal.c | $(WORKDIR)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
define PRG_template
|
|
|
|
# should compile, but gives an error
|
|
$(WORKDIR)/bug760.$1.$2.prg: bug760.c | $(WORKDIR)
|
|
@echo "FIXME: " $$@ "currently does not compile."
|
|
$(if $(QUIET),echo misc/bug760.$1.$2.prg)
|
|
$(NOT) $(CC65) -t sim$2 -$1 -o $$@ $$< $(NULLERR)
|
|
|
|
# should compile, but gives an error
|
|
$(WORKDIR)/bug1209-ind-goto-rev.$1.$2.prg: bug1209-ind-goto-rev.c | $(WORKDIR)
|
|
@echo "FIXME: " $$@ "currently does not compile."
|
|
$(if $(QUIET),echo misc/bug1209-ind-goto-rev.$1.$2.prg)
|
|
$(CC65) -t sim$2 -$1 -o $$(@:.prg=.s) $$< $(NULLERR)
|
|
$(CA65) -t sim$2 -o $$(@:.prg=.o) $$(@:.prg=.s) $(NULLERR)
|
|
$(NOT) $(LD65) -t sim$2 -o $$@ $$(@:.prg=.o) sim$2.lib $(NULLERR)
|
|
|
|
# should compile, but gives an error
|
|
$(WORKDIR)/bug1209-ind-goto-rev-2.$1.$2.prg: bug1209-ind-goto-rev-2.c | $(WORKDIR)
|
|
@echo "FIXME: " $$@ "currently does not compile."
|
|
$(if $(QUIET),echo misc/bug1209-ind-goto-rev-2.$1.$2.prg)
|
|
$(CC65) -t sim$2 -$1 -o $$(@:.prg=.s) $$< $(NULLERR)
|
|
$(CA65) -t sim$2 -o $$(@:.prg=.o) $$(@:.prg=.s) $(NULLERR)
|
|
$(NOT) $(LD65) -t sim$2 -o $$@ $$(@:.prg=.o) sim$2.lib $(NULLERR)
|
|
|
|
# should compile, but gives an error
|
|
$(WORKDIR)/bug1209-ind-goto-rev-3.$1.$2.prg: bug1209-ind-goto-rev-3.c | $(WORKDIR)
|
|
@echo "FIXME: " $$@ "currently does not compile."
|
|
$(if $(QUIET),echo misc/bug1209-ind-goto-rev-3.$1.$2.prg)
|
|
$(CC65) -t sim$2 -$1 -o $$(@:.prg=.s) $$< $(NULLERR)
|
|
$(CA65) -t sim$2 -o $$(@:.prg=.o) $$(@:.prg=.s) $(NULLERR)
|
|
$(NOT) $(LD65) -t sim$2 -o $$@ $$(@:.prg=.o) sim$2.lib $(NULLERR)
|
|
|
|
# should compile, but gives an error
|
|
$(WORKDIR)/pptest2.$1.$2.prg: pptest2.c | $(WORKDIR)
|
|
@echo "FIXME: " $$@ "currently does not compile."
|
|
$(if $(QUIET),echo misc/pptest2.$1.$2.prg)
|
|
$(NOT) $(CC65) -t sim$2 -$1 -o $$@ $$< $(NULLERR)
|
|
|
|
# should compile, but gives an error
|
|
$(WORKDIR)/bug1263.$1.$2.prg: bug1263.c | $(WORKDIR)
|
|
@echo "FIXME: " $$@ "currently does not compile."
|
|
$(if $(QUIET),echo misc/bug1263.$1.$2.prg)
|
|
$(NOT) $(CC65) -t sim$2 -$1 -o $$@ $$< $(NULLERR)
|
|
|
|
# this one requires --std=c89, it fails with --std=c99
|
|
# it fails currently at runtime
|
|
$(WORKDIR)/bug1265.$1.$2.prg: bug1265.c | $(WORKDIR)
|
|
$(if $(QUIET),echo misc/bug1265.$1.$2.prg)
|
|
$(CC65) --standard c89 -t sim$2 -$1 -o $$(@:.prg=.s) $$< $(NULLERR)
|
|
$(CA65) -t sim$2 -o $$(@:.prg=.o) $$(@:.prg=.s) $(NULLERR)
|
|
$(LD65) -t sim$2 -o $$@ $$(@:.prg=.o) sim$2.lib $(NULLERR)
|
|
$(NOT) $(SIM65) $(SIM65FLAGS) $$@ $(NULLOUT) $(NULLERR)
|
|
|
|
# should compile, but then hangs in an endless loop
|
|
$(WORKDIR)/endless.$1.$2.prg: endless.c | $(WORKDIR)
|
|
$(if $(QUIET),echo misc/endless.$1.$2.prg)
|
|
$(CC65) -t sim$2 -$1 -o $$(@:.prg=.s) $$< $(NULLERR)
|
|
$(CA65) -t sim$2 -o $$(@:.prg=.o) $$(@:.prg=.s) $(NULLERR)
|
|
$(LD65) -t sim$2 -o $$@ $$(@:.prg=.o) sim$2.lib $(NULLERR)
|
|
$(NOT) $(SIM65) $(SIM65FLAGS) $$@ $(NULLOUT) $(NULLERR)
|
|
|
|
# these need reference data that can't be generated by a host-compiled program,
|
|
# in a useful way
|
|
$(WORKDIR)/limits.$1.$2.prg: limits.c $(ISEQUAL) | $(WORKDIR)
|
|
$(if $(QUIET),echo misc/limits.$1.$2.prg)
|
|
$(CC65) -t sim$2 -$1 -o $$(@:.prg=.s) $$< $(NULLERR)
|
|
$(CA65) -t sim$2 -o $$(@:.prg=.o) $$(@:.prg=.s) $(NULLERR)
|
|
$(LD65) -t sim$2 -o $$@ $$(@:.prg=.o) sim$2.lib $(NULLERR)
|
|
$(SIM65) $(SIM65FLAGS) $$@ > $(WORKDIR)/limits.$1.$2.out
|
|
$(ISEQUAL) $(WORKDIR)/limits.$1.$2.out limits.ref
|
|
|
|
$(WORKDIR)/goto.$1.$2.prg: goto.c $(ISEQUAL) | $(WORKDIR)
|
|
$(if $(QUIET),echo misc/goto.$1.$2.prg)
|
|
$(CC65) -t sim$2 -$1 -o $$@ $$< 2>$(WORKDIR)/goto.$1.$2.out
|
|
$(ISEQUAL) $(WORKDIR)/goto.$1.$2.out goto.ref
|
|
|
|
# the rest are tests that fail currently for one reason or another
|
|
$(WORKDIR)/sitest.$1.$2.prg: sitest.c | $(WORKDIR)
|
|
@echo "FIXME: " $$@ "currently does not compile."
|
|
$(NOT) $(CC65) -t sim$2 -$1 -o $$@ $$< $(NULLERR)
|
|
# $(SIM65) $(SIM65FLAGS) $$@ $(NULLOUT)
|
|
|
|
endef # PRG_template
|
|
|
|
$(foreach option,$(OPTIONS),$(eval $(call PRG_template,$(option),6502)))
|
|
$(foreach option,$(OPTIONS),$(eval $(call PRG_template,$(option),65c02)))
|
|
|
|
clean:
|
|
@$(call RMDIR,$(WORKDIR))
|