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