]>
Commit | Line | Data |
---|---|---|
1 | # Build ddt180.com from ddt180.z80 | |
2 | ||
3 | CPM := 0 | |
4 | ||
5 | PROG := ddt180 | |
6 | OBJ := $(PROG).rel | |
7 | ||
8 | ifneq ($(CPM),0) | |
9 | SUFFIX := z80 | |
10 | else | |
11 | SUFFIX := 180 | |
12 | endif | |
13 | ||
14 | EXTRA_DIST := autorevision.cache version.inc | |
15 | ||
16 | ||
17 | DIST_NAME = $(PROG)_$(VERS).zip | |
18 | PREFIX = $(PROG)_$(VERS) | |
19 | ||
20 | ASM := zxcc slr$(SUFFIX).com | |
21 | LINK := zxcc link80.com | |
22 | CP := cp | |
23 | RM := rm -f | |
24 | GIT := git | |
25 | ZIP := zip | |
26 | ||
27 | AS_OPT := MFSX | |
28 | ||
29 | .phony: all | |
30 | all: $(PROG).com | |
31 | ||
32 | .intermediate: $(PROG).180 | |
33 | ||
34 | $(PROG).180: $(PROG).z80 | |
35 | cp $< $@ | |
36 | ||
37 | $(PROG).com: $(PROG).prl Makefile | |
38 | @# Remove the PRL header record (256 bytes) | |
39 | dd status=none bs=256 skip=1 if=$< of=$@ | |
40 | ||
41 | $(PROG).prl: $(OBJ) | |
42 | $(LINK) -'$(PROG)[op]' | |
43 | ||
44 | $(PROG).rel: config.inc version.inc | |
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 | |
64 | @echo update $@ to $(VERS) | |
65 | @printf "defvers macro\r\n\ | |
66 | db '$(VERS)'\r\n\ | |
67 | endm\r\n\032" > $@ | |
68 | ||
69 | config.inc: Makefile | |
70 | @printf "\ | |
71 | CPM equ $(CPM)\r\n\ | |
72 | \032" > $@ | |
73 | ||
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) | |
81 | ||
82 | .phony: clean | |
83 | clean: | |
84 | rm -f $(PROG).com $(PROG).180 *.rel *.lst *.prl | |
85 | ||
86 | .SUFFIXES: | |
87 | .SUFFIXES: .z80 .180 .rel .prl | |
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=$$? ; \ | |
95 | if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; rm -f $@; \ | |
96 | else awk -f filter-unref.awk ddt180.lst; fi ; \ | |
97 | exit $${ERROR} | |
98 | endef | |
99 | ||
100 | %.rel %lst: %.$(SUFFIX) | |
101 | @$(cpm-asm) |