]> cloudbase.mooo.com Git - z180-stamp.git/blame - z180/Makefile
New command: cfboot - boot from cf card.
[z180-stamp.git] / z180 / Makefile
CommitLineData
a16ba2b0
L
1
2
29605004 3SRC := init.180 ddtz.180
64cc2207
L
4SRC += console.180
5SRC += msgbuf-a.180 conbuf-a.180
6SRC += asci1-p.180
a16ba2b0
L
7SRC += romend.180
8
9INC := config.inc z180reg.inc z180.lib
10
11OBJ := $(SRC:.180=.rel)
12
13#CP/M emulator
14CPMEMU = zxcc
15
23f85294 16#Location of CP/M binaries
a16ba2b0
L
17CPMBIN = /usr/local/lib/cpm/bin80
18
19#AS = $(CPMEMU) $(CPMBIN)/m80.com
20AS = $(CPMEMU) slr180.com
21LN = $(CPMEMU) slrnk+.com
22#LN = $(CPMEMU) ccpline.com
23
24AS_OPT := MFS
25
26AS_QUIET = 1
27LN_QUIET = 1
28
23f85294 29#LNKCMD =
a16ba2b0
L
30LN_VERB = /V
31LN_PROG = 0
32LN_DATA = C000
33
34
35.suffixes:
36#.suffixes: .180 .rel
37
38.phony: all
78a3a76d 39all: hdrom.c hdrom.h
a16ba2b0
L
40
41$(OBJ): $(INC)
42
78a3a76d 43hdrom.h: hdrom.c
a16ba2b0
L
44
45comma:= ,
46empty:=
47space:= $(empty) $(empty)
48
49ccpline = $(CPMEMU) $(1) -$(subst $(space),$(comma),$(strip $(2)))
50
51define cpm-asm =
52COMMAND="$(AS) -$(basename $<)/$(AS_OPT)"; \
53OUTPUT=$$(mktemp); echo $${COMMAND}; \
54$${COMMAND} > $${OUTPUT}; \
55grep -q '^ 0 Error(s) Detected' $${OUTPUT}; ERROR=$$? ; \
56if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; rm -f $@; fi ; \
57exit $${ERROR}
58endef
59
60define cpm-link =
61 COMMAND="$(call ccpline, slrnk+, $(basename $@)/H/M /V \
62 /P:$(LN_PROG) /D:$(LN_DATA) $(basename $^) /E /Q)";\
63 OUTPUT=$$(mktemp); echo $${COMMAND};\
64 $${COMMAND} > $${OUTPUT};\
65 ERROR=0;\
66 cat $${OUTPUT};\
67 grep -q ' Duplicate Symbol ' $${OUTPUT} && ERROR=2; \
68 grep -q '\- Previously Defined' $${OUTPUT} && ERROR=2; \
69 [ "$${ERROR}" = "0" ] && grep -q '^ ** ' $${OUTPUT} && ERROR=1 ; \
70 [ "$${ERROR}" != "0" ] && rm -f $@; \
71 exit $${ERROR}
72endef
73
74#Use: MAKESYM Filename[.ext][/PXXXX][/DXXXX][/CXXXX]
29605004 75#egrep '^[[:xdigit:]]{4}[[:space:]]+[[:xdigit:]]{4}[[:space:]]+D.*init\.rel' hdrom.map
a16ba2b0
L
76define cpm-mksym =
77COMMAND="$(CPMEMU) makesym -$^ -/P -D"; \
78OUTPUT=$$(mktemp); echo $${COMMAND}; \
79$${COMMAND} > $${OUTPUT}; \
80grep -q '^ 0 Error(s) Detected' $${OUTPUT}; ERROR=$$? ; \
81if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; rm -f $@; fi ; \
82exit $${ERROR}
83endef
84
23f85294 85hdrom.c: hdrom.hex
a16ba2b0
L
86 srec_cat -o $@ -c_array $(basename $<) -C_COMpressed -include $< -Intel
87
88hdrom.hex : $(OBJ)
89 @#$(cpm-link)
90 ld80 -o $@ -ms $(@:.hex=.map) -P $(LN_PROG) -D $(LN_DATA) $^
91
a2907f2e 92%.rel %.lst: %.180
a16ba2b0
L
93 @$(cpm-asm)
94
95hdrom.map: hdrom.hex
96
23f85294 97%.sym: hdrom.map %.lst
a16ba2b0
L
98 @$(cpm-mksym)
99
100.phony: clean realclean
101clean:
102 rm -f $(OBJ) $(OBJ:.rel=.lst) $(OBJ:.rel=.sym) hdrom.hex
103
104realclean: clean
105 rm -f *.prn *~ hdrom.map
106
107
108#==================================================================
109
110%.REL: %.MAC
111 @COMMAND="$(AS) =$<"; \
112 OUTPUT=$$(mktemp); echo $${COMMAND}; \
113 $${COMMAND} > $${OUTPUT}; \
114 grep -q 'No Fatal error(s).$$' $${OUTPUT}; ERROR=$$? ; \
115 if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; rm $@; fi ; \
116 rm $${OUTPUT}; \
117 exit $${ERROR}
118
119
120%.PRN: %.MAC
121 @COMMAND="$(AS) ,$@=$<"; \
122 OUTPUT=$$(mktemp); echo $${COMMAND}; \
123 $${COMMAND} > $${OUTPUT}; \
124 grep -q 'No Fatal error(s).$$' $${OUTPUT}; ERROR=$$? ; \
125 if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; fi ; \
126 rm $${OUTPUT}; \
127 exit $${ERROR}