]>
Commit | Line | Data |
---|---|---|
288de889 | 1 | # Build ddt180.com from ddt180.z80 |
668cf0f7 | 2 | |
dfd599a0 L |
3 | CPM := 0 |
4 | ||
288de889 | 5 | PROG := ddt180 |
dfd599a0 | 6 | OBJ := $(PROG).rel |
668cf0f7 | 7 | |
dfd599a0 L |
8 | ifneq ($(CPM),0) |
9 | SUFFIX := z80 | |
10 | else | |
11 | SUFFIX := 180 | |
12 | endif | |
668cf0f7 | 13 | |
8bc5ea22 L |
14 | EXTRA_DIST := autorevision.cache version.inc |
15 | ||
668cf0f7 | 16 | |
8bc5ea22 L |
17 | DIST_NAME = $(PROG)_$(VERS).zip |
18 | PREFIX = $(PROG)_$(VERS) | |
668cf0f7 | 19 | |
dfd599a0 | 20 | ASM := zxcc slr$(SUFFIX).com |
8bc5ea22 L |
21 | LINK := zxcc link80.com |
22 | CP := cp | |
23 | RM := rm -f | |
24 | GIT := git | |
25 | ZIP := zip | |
26 | ||
786e99f6 | 27 | AS_OPT := MFSX |
668cf0f7 L |
28 | |
29 | .phony: all | |
30 | all: $(PROG).com | |
31 | ||
dfd599a0 | 32 | .intermediate: $(PROG).180 |
668cf0f7 | 33 | |
dfd599a0 L |
34 | $(PROG).180: $(PROG).z80 |
35 | cp $< $@ | |
668cf0f7 | 36 | |
0f361185 | 37 | $(PROG).com: $(PROG).prl Makefile |
668cf0f7 L |
38 | @# Remove the PRL header record (256 bytes) |
39 | dd status=none bs=256 skip=1 if=$< of=$@ | |
40 | ||
41 | $(PROG).prl: $(OBJ) | |
0f361185 | 42 | $(LINK) -'$(PROG)[op]' |
668cf0f7 | 43 | |
dfd599a0 | 44 | $(PROG).rel: config.inc version.inc |
8bc5ea22 L |
45 | |
46 | $(foreach X,$(subst =,:=,$(subst ",,$(filter VCS_%,\ | |
47 | $(shell autorevision -t sh -o $(CURDIR)/autorevision.cache)))),$(eval $X)) | |
48 | ||
49 | VERS := $(shell echo "$(VCS_TAG)" | sed -e 's/^v//g') | |
50 | ||
51 | ifneq ($(VCS_TICK),0) | |
52 | VERS := $(VERS)-$(VCS_TICK) | |
53 | endif | |
54 | ifneq ($(VCS_BRANCH),master) | |
55 | VERS := $(VERS)-$(VCS_BRANCH) | |
56 | endif | |
57 | ifeq ($(VCS_WC_MODIFIED),1) | |
58 | VERS := $(VERS)-dirty | |
59 | endif | |
60 | ||
61 | ||
62 | ||
63 | version.inc: autorevision.cache | |
9711a430 | 64 | @echo update $@ to $(VERS) |
8bc5ea22 L |
65 | @printf "defvers macro\r\n\ |
66 | db '$(VERS)'\r\n\ | |
67 | endm\r\n\032" > $@ | |
668cf0f7 | 68 | |
dfd599a0 L |
69 | config.inc: Makefile |
70 | @printf "\ | |
71 | CPM equ $(CPM)\r\n\ | |
72 | \032" > $@ | |
73 | ||
8bc5ea22 L |
74 | .phony: dist |
75 | dist: $(PROG).com version.inc | |
76 | $(GIT) archive --format=zip --prefix=$(PREFIX)/ -9 -o $(DIST_NAME) HEAD^{tree} | |
77 | @mkdir -p $(PREFIX) | |
78 | @$(CP) -p $(EXTRA_DIST) $(PREFIX) | |
79 | $(ZIP) -r -9 $(DIST_NAME) $(PREFIX) $(PROG).com | |
80 | @$(RM) -r $(PREFIX) | |
668cf0f7 L |
81 | |
82 | .phony: clean | |
83 | clean: | |
dfd599a0 | 84 | rm -f $(PROG).com $(PROG).180 *.rel *.lst *.prl |
668cf0f7 L |
85 | |
86 | .SUFFIXES: | |
dfd599a0 | 87 | .SUFFIXES: .z80 .180 .rel .prl |
668cf0f7 L |
88 | |
89 | ||
90 | define cpm-asm = | |
91 | COMMAND="$(ASM) -$(basename $<)/$(AS_OPT)"; \ | |
92 | OUTPUT=$$(mktemp); echo $${COMMAND}; \ | |
93 | $${COMMAND} > $${OUTPUT}; \ | |
94 | grep -q '^ 0 Error(s) Detected' $${OUTPUT}; ERROR=$$? ; \ | |
786e99f6 L |
95 | if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; rm -f $@; \ |
96 | else awk -f filter-unref.awk ddt180.lst; fi ; \ | |
668cf0f7 L |
97 | exit $${ERROR} |
98 | endef | |
99 | ||
dfd599a0 | 100 | %.rel %lst: %.$(SUFFIX) |
668cf0f7 | 101 | @$(cpm-asm) |