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