File: makefile

package info (click to toggle)
hatari 2.6.1%2Bdfsg-2
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 11,236 kB
  • sloc: ansic: 167,249; cpp: 8,685; python: 6,324; objc: 1,888; asm: 1,754; sh: 1,688; javascript: 149; makefile: 87; xml: 32
file content (136 lines) | stat: -rw-r--r-- 4,320 bytes parent folder | download
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# Makefile to build the Atari test program and other required files
# for the TOS tester and to run it with minimal or fairly full
# set of options.

# default target is minimal 'test', everything else gets build as its deps
all: test

# targets without corresponding file
.PHONY: clean pylint test test-all toolcheck


# tos/ subdir should be either symlink to where you have your TOS
# images, or real directory with symlinks to TOS images you want
# to test with this. Or TOSDIR variable needs to point where they are:
#   TOSDIR=/path/to/toses/ make

TOSDIR ?= tos

# TOSDIR should contain at least this!
BUILD_TOS = $(TOSDIR)/etos1024k.img

# Hatari machine config for AHCC build
BUILD_CONFIG = --layout uk --tos-res high --machine tt --tos $(BUILD_TOS)

# where the code & test programs are
DIR = disk

# AHCC related files expected for building by disk/ahcc-* hconsole scripts
AHCC_FILES  = $(DIR)/ahcc_p.ttp $(DIR)/include $(DIR)/lib
BUILD_TOOLS = $(AHCC_FILES) $(BUILD_TOS)


# Building test programs requires:
# - EmuTOS, AHCC and installed Hatari
#
# before running make:
# - symlink etos1024k.img under $(TOSDIR)/ subdir
# - symlink ahcc_p.ttp + its include & lib dirs under $(DIR)/ subdir
#
# -> otherwise toolcheck fails

toolcheck:
	@which hatari
	@for i in $(BUILD_TOOLS); do \
		if [ \! -e $$i ]; then \
			echo "ERROR: required re-build file '$$i' missing!"; \
			false; \
		fi; \
	done


# build the full and minimal GEMDOS emu testers.


GEMDOS_TEST   = $(DIR)/GEMDOS.PRG
GEMDOS_SCRIPT = $(DIR)/ahcc-gemdos
GEMDOS_DEP    = $(DIR)/gemdos.c $(DIR)/common.c $(DIR)/gemdos.prj

# build the full GEMDOS tester
$(GEMDOS_TEST): $(GEMDOS_DEP)
	$(MAKE) toolcheck
	$(RM) $(DIR)/*.O $(DIR)/*.MAP $(DIR)/*.tmp
	../../tools/hconsole/hconsole.py $(GEMDOS_SCRIPT) -- $(BUILD_CONFIG) $(DIR)
	[ -f $(DIR)/GEMDOS.O ] && [ \! -f $(DIR)/ldfile.tmp ] # verify compiling & linking succeeded


MINIMAL_TEST   = $(DIR)/MINIMAL.PRG
MINIMAL_SCRIPT = $(DIR)/ahcc-minimal
MINIMAL_DEP    = $(DIR)/minimal.c $(DIR)/common.c $(DIR)/minimal.prj

# build the minimal GEMDOS tester
$(MINIMAL_TEST): $(MINIMAL_DEP)
	$(MAKE) toolcheck
	$(RM) $(DIR)/*.O $(DIR)/*.MAP $(DIR)/*.tmp
	../../tools/hconsole/hconsole.py $(MINIMAL_SCRIPT) -- $(BUILD_CONFIG) $(DIR)
	[ -f $(DIR)/MINIMAL.O ] && [ \! -f $(DIR)/ldfile.tmp ] # verify compiling & linking succeeded


clean:
	$(RM) $(DIR)/*.O $(DIR)/*.MAP $(DIR)/*.tmp


# create blank DD floppy image
blank-a.st.gz:
	dd if=/dev/zero of=blank-a.st bs=1024 count=720
	mformat -a -t 80 -h 2 -n 9 -i blank-a.st ::
	gzip blank-a.st


# create 360KB (single side) test floppy that autoruns test program using *.INF file.
# requires:
# - mformat & mcopy from mtools
bootdesk.st.gz: $(MINIMAL_TEST) $(DIR)/TEXT floppy/*.INF
	dd if=/dev/zero of=bootdesk.st bs=1024 count=360
	mformat -a -t 80 -h 1 -n 9 -i bootdesk.st ::
	MTOOLS_NO_VFAT=1 mcopy -i bootdesk.st -spmv $+ ::
	$(RM) $@
	gzip bootdesk.st

# create 360KB (single side) test floppy that autoruns test program from auto/
# as very old TOS versions don't like the *.INF file autorun feature.
# requires:
# - mformat, mcopy & mmd from mtools
bootauto.st.gz: $(MINIMAL_TEST) $(DIR)/TEXT
	dd if=/dev/zero of=bootauto.st bs=1024 count=360
	mformat -a -t 80 -h 1 -n 9 -i bootauto.st ::
	MTOOLS_NO_VFAT=1 mmd -i bootauto.st ::AUTO
	MTOOLS_NO_VFAT=1 mcopy -i bootauto.st -pmv $(DIR)/TEXT ::
	MTOOLS_NO_VFAT=1 mcopy -i bootauto.st -pmv $(MINIMAL_TEST) ::AUTO
	$(RM) $@
	gzip bootauto.st


# optional 16MB HD image for EmuTOS/ACSI testing without HD drivers
# converts floppy desktop infos for HD (A: -> C:)
hd.img: $(MINIMAL_TEST) $(DIR)/TEXT floppy/*.INF
	mkdir tmp
	cp -a $(MINIMAL_TEST) $(DIR)/TEXT tmp/
	for i in floppy/*.INF; do sed -e 's/A:/C:/g' < $$i > tmp/$${i##*/}; done
	../../tools/atari-hd-image.sh 16 $@ LABEL tmp
	$(RM) -r tmp


# requires:
# - Building of floppies & GEMDOS_TEST to have succeeded
# - Latest Hatari to be installed, or to run this with something like:
#   PATH=../../build/src:$PATH make
test: blank-a.st.gz bootauto.st.gz bootdesk.st.gz $(GEMDOS_TEST)
	./tos_tester.py --disks floppy,gemdos --graphics mono --memsizes 4 --machines ste $(BUILD_TOS)

# run all default tests
test-full: blank-a.st.gz bootauto.st.gz bootdesk.st.gz
	./tos_tester.py $(TOSDIR)/*.img

pylint:
	PYTHONPATH=../../tools/hconsole/ pylint tos_tester.py