]> cloudbase.mooo.com Git - z180-stamp.git/blob - z180/Makefile
command printenv: new option -s: Print env variables in setenv commands.
[z180-stamp.git] / z180 / Makefile
1
2
3 SRC := init.180 ddtz.180
4 SRC += console.180
5 SRC += msgbuf-a.180 conbuf-a.180
6 SRC += asci1-p.180
7 SRC += romend.180
8
9 INC := config.inc z180reg.inc z180.lib
10
11 OBJ := $(SRC:.180=.rel)
12
13 #CP/M emulator
14 CPMEMU = zxcc
15
16 #Location of CP/M binaries
17 CPMBIN = /usr/local/lib/cpm/bin80
18
19 #AS = $(CPMEMU) $(CPMBIN)/m80.com
20 AS = $(CPMEMU) slr180.com
21 LN = $(CPMEMU) slrnk+.com
22 #LN = $(CPMEMU) ccpline.com
23
24 AS_OPT := MFS
25
26 AS_QUIET = 1
27 LN_QUIET = 1
28
29 #LNKCMD =
30 LN_VERB = /V
31 LN_PROG = 0
32 LN_DATA = C000
33
34
35 .suffixes:
36 #.suffixes: .180 .rel
37
38 .phony: all
39 all: hdrom.c hdrom.h
40
41 $(OBJ): $(INC)
42
43 hdrom.h: hdrom.c
44
45 comma:= ,
46 empty:=
47 space:= $(empty) $(empty)
48
49 ccpline = $(CPMEMU) $(1) -$(subst $(space),$(comma),$(strip $(2)))
50
51 define cpm-asm =
52 COMMAND="$(AS) -$(basename $<)/$(AS_OPT)"; \
53 OUTPUT=$$(mktemp); echo $${COMMAND}; \
54 $${COMMAND} > $${OUTPUT}; \
55 grep -q '^ 0 Error(s) Detected' $${OUTPUT}; ERROR=$$? ; \
56 if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; rm -f $@; fi ; \
57 exit $${ERROR}
58 endef
59
60 define 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}
72 endef
73
74 #Use: MAKESYM Filename[.ext][/PXXXX][/DXXXX][/CXXXX]
75 #egrep '^[[:xdigit:]]{4}[[:space:]]+[[:xdigit:]]{4}[[:space:]]+D.*init\.rel' hdrom.map
76 define cpm-mksym =
77 COMMAND="$(CPMEMU) makesym -$^ -/P -D"; \
78 OUTPUT=$$(mktemp); echo $${COMMAND}; \
79 $${COMMAND} > $${OUTPUT}; \
80 grep -q '^ 0 Error(s) Detected' $${OUTPUT}; ERROR=$$? ; \
81 if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; rm -f $@; fi ; \
82 exit $${ERROR}
83 endef
84
85 hdrom.c: hdrom.hex
86 srec_cat -o $@ -c_array $(basename $<) -C_COMpressed -include $< -Intel
87
88 hdrom.hex : $(OBJ)
89 @#$(cpm-link)
90 ld80 -o $@ -ms $(@:.hex=.map) -P $(LN_PROG) -D $(LN_DATA) $^
91
92 %.rel %.lst: %.180
93 @$(cpm-asm)
94
95 hdrom.map: hdrom.hex
96
97 %.sym: hdrom.map %.lst
98 @$(cpm-mksym)
99
100 .phony: clean realclean
101 clean:
102 rm -f $(OBJ) $(OBJ:.rel=.lst) $(OBJ:.rel=.sym) hdrom.hex
103
104 realclean: 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}