diff --git a/targettest/Makefile b/targettest/Makefile index 8207fc560..be6842f0f 100644 --- a/targettest/Makefile +++ b/targettest/Makefile @@ -160,6 +160,10 @@ ifeq ($(SYS),vic20) LDFLAGS+=-Ln $@.lbl endif +ifeq ($(SYS),pce) + LDFLAGS+=-D__CARTSIZE__=0x8000 +endif + .o: ifeq ($(SYS),vic20) $(LD) $(LDFLAGS_$(@F)_$(SYS)) $(LDFLAGS) -o $@ -C vic20-32k.cfg -m $@.map $^ $(SYS).lib @@ -167,11 +171,17 @@ else $(LD) $(LDFLAGS_$(@F)_$(SYS)) $(LDFLAGS) -o $@ -t $(SYS) -m $@.map $^ $(SYS).lib endif +# -------------------------------------------------------------------------- +# Lists of subdirectories + +DIRLIST = accelerator apple2 atari atari5200 cbm gamate pce sym1 + # -------------------------------------------------------------------------- # Lists of executables # omitted: seek EXELIST_c64 = \ + minimal \ arg-test \ clock \ clock-test \ @@ -204,8 +214,206 @@ EXELIST_c64 = \ tinyshell \ uname-test +# omitted: seek +EXELIST_c128 = \ + minimal \ + arg-test \ + clock \ + clock-test \ + conio \ + cpeek-test \ + cprintf \ + cursor \ + deb \ + dir-test \ + div-test \ + em-test \ + exec-test1 \ + exec-test2 \ + fileio-test \ + ft \ + getopt-test \ + heaptest \ + joy-test \ + moddiv-test \ + mouse-test \ + mul-test \ + posixio-test \ + rename-test \ + scanf-test \ + ser-test \ + strdup-test \ + strnlen \ + stroserror-test \ + strqtok-test \ + tinyshell \ + uname-test + + +# omitted: seek clock clock-test mouse-test ser-test +EXELIST_c16 = \ + minimal \ + arg-test \ + conio \ + cpeek-test \ + cprintf \ + cursor \ + deb \ + dir-test \ + div-test \ + em-test \ + exec-test1 \ + exec-test2 \ + fileio-test \ + ft \ + getopt-test \ + heaptest \ + joy-test \ + moddiv-test \ + mul-test \ + posixio-test \ + rename-test \ + scanf-test \ + strdup-test \ + strnlen \ + stroserror-test \ + strqtok-test \ + tinyshell \ + uname-test + +# omitted: seek ser-test +EXELIST_cbm510 = \ + minimal \ + arg-test \ + clock \ + clock-test \ + conio \ + cpeek-test \ + cprintf \ + cursor \ + deb \ + dir-test \ + div-test \ + em-test \ + exec-test1 \ + exec-test2 \ + fileio-test \ + ft \ + getopt-test \ + heaptest \ + joy-test \ + moddiv-test \ + mouse-test \ + mul-test \ + posixio-test \ + rename-test \ + scanf-test \ + strdup-test \ + strnlen \ + stroserror-test \ + strqtok-test \ + tinyshell \ + uname-test + +# omitted: joy-test mouse-test seek +EXELIST_cbm610 = \ + minimal \ + arg-test \ + clock \ + clock-test \ + conio \ + cpeek-test \ + cprintf \ + cursor \ + deb \ + dir-test \ + div-test \ + em-test \ + exec-test1 \ + exec-test2 \ + fileio-test \ + ft \ + getopt-test \ + heaptest \ + moddiv-test \ + mul-test \ + posixio-test \ + rename-test \ + scanf-test \ + ser-test \ + strdup-test \ + strnlen \ + stroserror-test \ + strqtok-test \ + tinyshell \ + uname-test + +# omitted: clock-test em-test mouse-test seek ser-test +EXELIST_pet = \ + minimal \ + arg-test \ + clock \ + conio \ + cpeek-test \ + cprintf \ + cursor \ + deb \ + dir-test \ + div-test \ + exec-test1 \ + exec-test2 \ + fileio-test \ + ft \ + getopt-test \ + heaptest \ + joy-test \ + moddiv-test \ + mul-test \ + posixio-test \ + rename-test \ + scanf-test \ + strdup-test \ + strnlen \ + stroserror-test \ + strqtok-test \ + tinyshell \ + uname-test + +# omitted: clock-test em-test mouse-test seek +EXELIST_plus4 = \ + minimal \ + arg-test \ + clock \ + conio \ + cpeek-test \ + cprintf \ + cursor \ + deb \ + dir-test \ + div-test \ + exec-test1 \ + exec-test2 \ + fileio-test \ + ft \ + getopt-test \ + heaptest \ + joy-test \ + moddiv-test \ + mul-test \ + posixio-test \ + rename-test \ + scanf-test \ + ser-test \ + strdup-test \ + strnlen \ + stroserror-test \ + strqtok-test \ + tinyshell \ + uname-test + # omitted: seek clock-test mouse-test ser-test EXELIST_vic20 = \ + minimal \ arg-test \ clock \ conio \ @@ -237,6 +445,7 @@ EXELIST_vic20 = \ # omitted: cpeek-test, clock EXELIST_apple2 = \ + minimal \ arg-test \ clock-test \ conio \ @@ -272,6 +481,7 @@ EXELIST_apple2enh = $(EXELIST_apple2) # omitted: cpeek-test EXELIST_atari = \ + minimal \ arg-test \ clock-test \ clock \ @@ -306,11 +516,185 @@ EXELIST_atari = \ EXELIST_atarixl = $(EXELIST_atari) -# none of the testcode can work on the 2600 -# EXELIST_atari2600 = +# omitted: clock-test clock cpeek-test deb dir-test em-test exec-test1 exec-test2 +# joy-test mouse-test rename-test seek ser-test stroserror-test tinyshell +EXELIST_telestrat = \ + minimal \ + arg-test \ + conio \ + cprintf \ + cursor \ + div-test \ + fileio-test \ + ft \ + getopt-test \ + heaptest \ + moddiv-test \ + mul-test \ + posixio-test \ + scanf-test \ + strdup-test \ + strnlen \ + strqtok-test \ + uname-test -# none of the testcode can work on supervision -# EXELIST_supervision = +# omitted: arg-test clock-test clock cpeek-test conio cprintf cursor deb dir-test +# em-test exec-test1 exec-test2 fileio-test ft getopt-test heaptest joy-test +# mouse-test mul-test posixio-test rename-test scanf-test seek ser-test strdup-test +# stroserror-test tinyshell uname-test +EXELIST_sym1 = \ + minimal \ + div-test \ + moddiv-test \ + strnlen \ + strqtok-test + +# omitted: clock-test cpeek-test conio deb dir-test em-test exec-test1 exec-test2 +# fileio-test ft mouse-test posixio-test rename-test seek ser-test tinyshell +EXELIST_atmos = \ + minimal \ + arg-test \ + clock \ + cprintf \ + cursor \ + div-test \ + getopt-test \ + heaptest \ + joy-test \ + moddiv-test \ + mul-test \ + scanf-test \ + strdup-test \ + strnlen \ + stroserror-test \ + strqtok-test \ + uname-test + +# omitted: arg-test clock-test clock cpeek-test conio cprintf deb dir-test div-test +# em-test exec-test1 exec-test2 fileio-test ft getopt-test heaptest joy-test moddiv-test +# mouse-test mul-test posixio-test rename-test scanf-test seek ser-test strdup-test +# strnlen stroserror-test strqtok-test tinyshell uname-test +EXELIST_creativision = \ + minimal \ + cursor + +# omitted: cpeek-test seek ser-test +EXELIST_cx16 = \ + minimal \ + arg-test \ + clock-test \ + clock \ + conio \ + cprintf \ + cursor \ + deb \ + dir-test \ + div-test \ + em-test \ + exec-test1 \ + exec-test2 \ + fileio-test \ + ft \ + getopt-test \ + heaptest \ + joy-test \ + moddiv-test \ + mouse-test \ + mul-test \ + posixio-test \ + rename-test \ + scanf-test \ + strdup-test \ + strnlen \ + stroserror-test \ + strqtok-test \ + tinyshell \ + uname-test + +# omitted: arg-test clock-test clock cpeek-test cprintf cursor deb dir-test div-test +# em-test exec-test1 exec-test2 fileio-test ft getopt-test heaptest joy-test moddiv-test +# mouse-test mul-test posixio-test rename-test scanf-test seek ser-test strdup-test +# strnlen stroserror-test strqtok-test tinyshell uname-test +EXELIST_nes = \ + minimal \ + conio + +# omitted: arg-test clock-test clock cpeek-test cprintf cursor deb dir-test div-test +# em-test exec-test1 exec-test2 fileio-test ft getopt-test heaptest joy-test moddiv-test +# mouse-test mul-test posixio-test rename-test scanf-test seek ser-test strdup-test +# strnlen stroserror-test strqtok-test tinyshell uname-test +EXELIST_pce = \ + minimal \ + conio + +# omitted: arg-test clock-test clock cpeek-test conio cprintf deb dir-test div-test +# em-test exec-test1 exec-test2 fileio-test ft getopt-test heaptest joy-test moddiv-test +# mouse-test posixio-test rename-test scanf-test seek ser-test strdup-test strnlen +# stroserror-test strqtok-test tinyshell uname-test +EXELIST_osic1p = \ + minimal \ + cursor \ + mul-test + +# omitted: arg-test clock-test clock cpeek-test conio cprintf deb dir-test div-test +# em-test exec-test1 exec-test2 fileio-test ft getopt-test heaptest joy-test moddiv-test +# mouse-test posixio-test rename-test scanf-test seek ser-test strdup-test strnlen +# stroserror-test strqtok-test tinyshell uname-test +EXELIST_geos-apple = \ + minimal \ + cursor \ + mul-test + +# omitted: arg-test clock-test clock cpeek-test conio cprintf deb dir-test div-test +# em-test exec-test1 exec-test2 fileio-test ft getopt-test heaptest joy-test moddiv-test +# mouse-test posixio-test rename-test scanf-test seek ser-test strdup-test strnlen +# stroserror-test strqtok-test tinyshell uname-test + +EXELIST_geos-cbm = \ + minimal \ + cursor \ + mul-test + +# omitted: clock clock-test conio cpeek-test cprintf cursor deb dir-test em-test +# exec-test1 exec-test2 ft heaptest joy-test mouse-test mul-test rename-test seek +# ser-test strdup-test stroserror-test tinyshell uname-test +EXELIST_sim6502 = \ + minimal \ + arg-test \ + div-test \ + fileio-test \ + getopt-test \ + moddiv-test \ + posixio-test \ + scanf-test \ + strnlen \ + strqtok-test + +EXELIST_sim65c02 = $(EXELIST_sim6502) + +EXELIST_atari2600 = \ + minimal + +EXELIST_atari5200 = \ + minimal + +EXELIST_gamate = \ + minimal + +EXELIST_supervision = \ + minimal + +# none of the testcode can work on the bbc (no library support) +EXELIST_bbc = \ + notavailable + +# none of the testcode can work on lunix (no library support) +EXELIST_lunix = \ + notavailable + +# none of the testcode can work on the lynx (library support is broken!) +EXELIST_lynx = \ + notavailable # Unlisted targets will try to build everything. # That lets us learn what they cannot build, and what settings @@ -319,22 +703,27 @@ ifndef EXELIST_$(SYS) EXELIST_$(SYS) := ${patsubst %.c,%,$(wildcard *.c)} endif +define SUBDIR_recipe + +@$(MAKE) -C $(dir) --no-print-directory $@ + +endef # SUBDIR_recipe + # -------------------------------------------------------------------------- # Rules to make the binaries and the disk testcode: $(EXELIST_$(SYS)) + $(foreach dir,$(DIRLIST),$(SUBDIR_recipe)) + +# empty target used to skip systems that will not work with any program in this dir +notavailable: +ifeq ($(MAKELEVEL),0) + @echo "info: generic targettest programs not available for" $(SYS) +endif disk: $(DISK_$(SYS)) -all: testcode - make -C accelerator - make -C apple2 - make -C atari - make -C atari5200 - make -C cbm SYS=$(SYS) - make -C gamate - make -C pce - make -C sym1 +all: # -------------------------------------------------------------------------- # some programs link against getsp.o @@ -435,11 +824,4 @@ mostlyclean: clean: mostlyclean @$(DEL) $(EXELIST_$(SYS)) $(DISK_$(SYS)) 2>$(NULLDEV) - make -C accelerator clean - make -C apple2 clean - make -C atari clean - make -C atari5200 clean - make -C cbm SYS=$(SYS) clean - make -C gamate clean - make -C pce clean - make -C sym1 clean + $(foreach dir,$(DIRLIST),$(SUBDIR_recipe)) diff --git a/targettest/accelerator/Makefile b/targettest/accelerator/Makefile index 90871f20c..a46ec43c0 100644 --- a/targettest/accelerator/Makefile +++ b/targettest/accelerator/Makefile @@ -26,9 +26,32 @@ else LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65) endif -all: c64-scpu-test.prg c128-scpu-test.prg c64dtv-test.prg \ - c64-c128-test.prg c128-test.prg chameleon-test.prg \ - c65-test.prg turbomaster-test.prg +EXELIST_c64 = \ + c64-scpu-test.prg \ + c128-scpu-test.prg \ + c64dtv-test.prg \ + c64-c128-test.prg \ + chameleon-test.prg \ + c65-test.prg \ + turbomaster-test.prg + +EXELIST_c128 = \ + c128-test.prg + +ifneq ($(EXELIST_$(SYS)),) +testcode: $(EXELIST_$(SYS)) +else +testcode: notavailable +endif + +# empty target used to skip systems that will not work with any program in this dir +notavailable: +ifeq ($(MAKELEVEL),0) + @echo "info: accelerator tests not available for" $(SYS) +else +# suppress the "nothing to be done for 'testcode' message + @echo > $(NULLDEV) +endif c64-scpu-test.prg: c64-c128-scpu-test.c $(CL) -t c64 c64-c128-scpu-test.c -o c64-scpu-test.prg diff --git a/targettest/apple2/Makefile b/targettest/apple2/Makefile index 15a4075af..d71c5be3a 100644 --- a/targettest/apple2/Makefile +++ b/targettest/apple2/Makefile @@ -29,7 +29,25 @@ else LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65) endif -all: hgrshow hgrtest dhgrshow +EXELIST_apple2 = \ + hgrshow \ + hgrtest \ + dhgrshow + +ifneq ($(EXELIST_$(SYS)),) +testcode: $(EXELIST_$(SYS)) +else +testcode: notavailable +endif + +# empty target used to skip systems that will not work with any program in this dir +notavailable: +ifeq ($(MAKELEVEL),0) + @echo "info: apple2 tests not available for" $(SYS) +else +# suppress the "nothing to be done for 'testcode' message + @echo > $(NULLDEV) +endif disk: hgr.dsk dhgr.dsk diff --git a/targettest/atari/Makefile b/targettest/atari/Makefile index 05388ddd7..609d2c758 100644 --- a/targettest/atari/Makefile +++ b/targettest/atari/Makefile @@ -27,8 +27,30 @@ else LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65) endif -all: charmapping.xex defdev.xex displaylist.xex mem.xex multi.xex ostype.xex \ - scrcode.com sys.xex +EXELIST_atari = \ + charmapping.xex \ + defdev.xex \ + displaylist.xex \ + mem.xex \ + multi.xex \ + ostype.xex \ + scrcode.com \ + sys.xex + +ifneq ($(EXELIST_$(SYS)),) +testcode: $(EXELIST_$(SYS)) +else +testcode: notavailable +endif + +# empty target used to skip systems that will not work with any program in this dir +notavailable: +ifeq ($(MAKELEVEL),0) + @echo "info: atari tests not available for" $(SYS) +else +# suppress the "nothing to be done for 'testcode' message + @echo > $(NULLDEV) +endif charmapping.xex: charmapping.c $(CL) -t atari -o charmapping.xex charmapping.c diff --git a/targettest/atari5200/Makefile b/targettest/atari5200/Makefile index 532bb815e..ab0c99f1c 100644 --- a/targettest/atari5200/Makefile +++ b/targettest/atari5200/Makefile @@ -27,7 +27,23 @@ else LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65) endif -all: hello +EXELIST_atari5200 = \ + hello + +ifneq ($(EXELIST_$(SYS)),) +testcode: $(EXELIST_$(SYS)) +else +testcode: notavailable +endif + +# empty target used to skip systems that will not work with any program in this dir +notavailable: +ifeq ($(MAKELEVEL),0) + @echo "info: atari 5200 tests not available for" $(SYS) +else +# suppress the "nothing to be done for 'testcode' message + @echo > $(NULLDEV) +endif hello: hello.c $(CL) -t atari5200 -o hello hello.c diff --git a/targettest/cbm/Makefile b/targettest/cbm/Makefile index 3a4eff86f..47ae5171d 100644 --- a/targettest/cbm/Makefile +++ b/targettest/cbm/Makefile @@ -30,7 +30,27 @@ else LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65) endif -all: petscii.prg cbmdir-test.prg +EXELIST_c64 = \ + petscii.prg \ + cbmdir-test.prg + +EXELIST_vic20 = \ + cbmdir-test.prg + +ifneq ($(EXELIST_$(SYS)),) +testcode: $(EXELIST_$(SYS)) +else +testcode: notavailable +endif + +# empty target used to skip systems that will not work with any program in this dir +notavailable: +ifeq ($(MAKELEVEL),0) + @echo "info: cbm tests not available for" $(SYS) +else +# suppress the "nothing to be done for 'testcode' message + @echo > $(NULLDEV) +endif ifeq ($(SYS),c64) petscii.prg: petscii.c diff --git a/targettest/gamate/Makefile b/targettest/gamate/Makefile index 69ac30dc5..74a3d8c50 100644 --- a/targettest/gamate/Makefile +++ b/targettest/gamate/Makefile @@ -27,7 +27,23 @@ else LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65) endif -all: audiotest.bin lcdtest.bin ctest.bin +EXELIST_gamate = \ + audiotest.bin lcdtest.bin ctest.bin + +ifneq ($(EXELIST_$(SYS)),) +testcode: $(EXELIST_$(SYS)) +else +testcode: notavailable +endif + +# empty target used to skip systems that will not work with any program in this dir +notavailable: +ifeq ($(MAKELEVEL),0) + @echo "info: gamate tests not available for" $(SYS) +else +# suppress the "nothing to be done for 'testcode' message + @echo > $(NULLDEV) +endif audiotest.bin: audiotest.s $(CL) -l audiotest.lst -t gamate -o audiotest.bin audiotest.s diff --git a/targettest/pce/Makefile b/targettest/pce/Makefile index 695fed0a5..598c38575 100644 --- a/targettest/pce/Makefile +++ b/targettest/pce/Makefile @@ -42,7 +42,23 @@ else COUNT := 1 endif -all: conio.bin +EXELIST_pce = \ + conio.bin + +ifneq ($(EXELIST_$(SYS)),) +testcode: $(EXELIST_$(SYS)) +else +testcode: notavailable +endif + +# empty target used to skip systems that will not work with any program in this dir +notavailable: +ifeq ($(MAKELEVEL),0) + @echo "info: pce tests not available for" $(SYS) +else +# suppress the "nothing to be done for 'testcode' message + @echo > $(NULLDEV) +endif %.bin: %.c $(CL) -t pce $< -Wl -D__CARTSIZE__=${CARTSIZE} -m $*.map -o $@ diff --git a/targettest/sym1/Makefile b/targettest/sym1/Makefile index 8e469a599..c9f9eb099 100644 --- a/targettest/sym1/Makefile +++ b/targettest/sym1/Makefile @@ -26,7 +26,23 @@ else LD := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65) endif -all: symHello.bin symTiny.bin symDisplay.bin symIO.bin symNotepad.bin +EXELIST_sym1 = \ + symHello.bin symTiny.bin symDisplay.bin symIO.bin symNotepad.bin + +ifneq ($(EXELIST_$(SYS)),) +testcode: $(EXELIST_$(SYS)) +else +testcode: notavailable +endif + +# empty target used to skip systems that will not work with any program in this dir +notavailable: +ifeq ($(MAKELEVEL),0) + @echo "info: sym1 tests not available for" $(SYS) +else +# suppress the "nothing to be done for 'testcode' message + @echo > $(NULLDEV) +endif symHello.bin: symHello.c $(CL) -t sym1 -O -o symHello.bin symHello.c