-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathMakefile
182 lines (148 loc) · 6.63 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
.PHONY: clean test release
SDCC_SRV := sdcc380
DOCKER_RUN = docker-compose run --rm -u $(shell id -u):$(shell id -g) $(SDCC_SRV)
AS = $(DOCKER_RUN) sdasz80
AR = $(DOCKER_RUN) sdar
CC = $(DOCKER_RUN) sdcc
HEX2BIN = hex2bin
MAKE = make -s --no-print-directory
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
COL_RED = \e[1;31m
COL_YELLOW = \e[1;33m
COL_BLUE = \e[1;34m
COL_GRAY = \e[1;30m
COL_WHITE = \e[1;37m
COL_RESET = \e[0m
endif
ifndef VERSION
VERSION := 1.5.1
endif
ifndef CXXFLAGS
CXXFLAGS := -DTEST -D_TRANSCRIPT -D_DEBUG -D_VERBOSE -D_VERBOSE2 -DLANG_ES -DMSXDOS1 -DMSX2
endif
LDFLAGS := -rc
OPFLAGS := --less-pedantic --opt-code-size -pragma-define:CRT_ENABLE_STDIO=0
WRFLAGS := --disable-warning 196 --disable-warning 84
CCFLAGS := --code-loc 0x0180 --data-loc 0 -mz80 --no-std-crt0 --out-fmt-ihx $(OPFLAGS) $(WRFLAGS) $(CXXFLAGS)
MAKEFLAGS = --no-print-directory
FULLOPT = --max-allocs-per-node 2000000
SRCDIR = src/
SRCLIB = $(SRCDIR)libs/
LIBDIR = libs/
INCDIR = include/
OBJDIR = obj/
PKGDIR = package/
DIR_GUARD=@mkdir -p $(OBJDIR)
LIB_GUARD=@mkdir -p $(LIBDIR)
EMUSCRIPTS = -script ./emulation/boot.tcl -script ./emulation/info_daad.tcl
LIBS := dos.lib vdp.lib utils.lib
REL_LIBS := $(addprefix $(OBJDIR), crt0msx_msxdos_advanced.rel heap.rel daad.rel \
daad_global_vars.rel daad_condacts.rel \
daad_platform_msx2.rel) $(addprefix $(LIBDIR), $(LIBS))
PROGRAMS = msx2daad.com
all: $(PROGRAMS) bin/testdaad
$(OBJDIR)%.rel: $(SRCDIR)%.s
@echo $(DOS_LIB_SRC)
@echo "$(COL_BLUE)#### ASM $@$(COL_RESET)"
@$(DIR_GUARD)
@$(AS) -go $@ $^
$(OBJDIR)%.rel: $(SRCDIR)%.c
@echo "$(COL_BLUE)#### CC $@$(COL_RESET)"
@$(DIR_GUARD)
@$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $^
$(OBJDIR)%.c.rel: $(SRCLIB)%.c
@echo "$(COL_BLUE)#### CC $@$(COL_RESET)"
@$(DIR_GUARD)
@$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $^
$(OBJDIR)%.s.rel: $(SRCLIB)%.s
@echo "$(COL_BLUE)#### ASM $@$(COL_RESET)"
@$(DIR_GUARD)
@$(AS) -go $@ $^
$(LIBDIR)dos.lib: $(patsubst $(SRCLIB)%, $(OBJDIR)%.rel, $(wildcard $(SRCLIB)dos_*))
@echo "$(COL_WHITE)######## Compiling $@$(COL_RESET)"
@$(LIB_GUARD)
@$(AR) $(LDFLAGS) $@ $^
$(LIBDIR)vdp.lib: $(patsubst $(SRCLIB)%, $(OBJDIR)%.rel, $(wildcard $(SRCLIB)vdp_*))
@echo "$(COL_WHITE)######## Compiling $@$(COL_RESET)"
@$(LIB_GUARD)
@$(AR) $(LDFLAGS) $@ $^
$(LIBDIR)utils.lib: $(patsubst $(SRCLIB)%, $(OBJDIR)%.rel, $(wildcard $(SRCLIB)utils_*))
@echo "$(COL_WHITE)######## Compiling $@$(COL_RESET)"
@$(LIB_GUARD)
@$(AR) $(LDFLAGS) $@ $^
msx2daad.com: $(REL_LIBS) $(SRCDIR)msx2daad.c
@echo "$(COL_YELLOW)######## Compiling $@$(COL_RESET)"
@$(DIR_GUARD)
@$(CC) $(CCFLAGS) $(FULLOPT) -I$(INCDIR) -L$(LIBDIR) $(subst .com,.c,$^)
@$(HEX2BIN) -e com $(subst .com,.ihx,$@)
@echo "**** Copying .COM files to DSK/"
@cp *.com dsk/
clean:
@rm -f dsk/msx2daad.com
@rm -f *.com *.asm *.lst *.sym *.bin *.ihx *.lk *.map *.noi *.rel
@rm -f $(OBJDIR)/*
@rm -f $(addprefix $(LIBDIR), $(LIBS))
EN_SC5:
$(MAKE) $(MAKEFLAGS) CXXFLAGS="-DMSX2 -DMSXDOS1 -DLANG_EN -DSCREEN=5 -DFONTWIDTH=6 -DVERSION=$(VERSION) $(FULLOPT)" OUTFILE="msx2daad_$(VERSION)_$@.com" _package_single
EN_SC6:
$(MAKE) $(MAKEFLAGS) CXXFLAGS="-DMSX2 -DMSXDOS1 -DLANG_EN -DSCREEN=6 -DFONTWIDTH=6 -DVERSION=$(VERSION) $(FULLOPT)" OUTFILE="msx2daad_$(VERSION)_$@.com" _package_single
EN_SC7:
$(MAKE) $(MAKEFLAGS) CXXFLAGS="-DMSX2 -DMSXDOS1 -DLANG_EN -DSCREEN=7 -DFONTWIDTH=6 -DVERSION=$(VERSION) $(FULLOPT)" OUTFILE="msx2daad_$(VERSION)_$@.com" _package_single
EN_SC8:
$(MAKE) $(MAKEFLAGS) CXXFLAGS="-DMSX2 -DMSXDOS1 -DLANG_EN -DSCREEN=8 -DFONTWIDTH=6 -DVERSION=$(VERSION) $(FULLOPT)" OUTFILE="msx2daad_$(VERSION)_$@.com" _package_single
EN_SC10:
$(MAKE) $(MAKEFLAGS) CXXFLAGS="-DMSX2 -DMSXDOS1 -DLANG_EN -DSCREEN=10 -DFONTWIDTH=6 -DVERSION=$(VERSION) $(FULLOPT)" OUTFILE="msx2daad_$(VERSION)_$@.com" _package_single
EN_SC12:
$(MAKE) $(MAKEFLAGS) CXXFLAGS="-DMSX2 -DMSXDOS1 -DLANG_EN -DSCREEN=12 -DFONTWIDTH=6 -DVERSION=$(VERSION) $(FULLOPT)" OUTFILE="msx2daad_$(VERSION)_$@.com" _package_single
ES_SC5:
$(MAKE) $(MAKEFLAGS) CXXFLAGS="-DMSX2 -DMSXDOS1 -DLANG_ES -DSCREEN=5 -DFONTWIDTH=6 -DVERSION=$(VERSION) $(FULLOPT)" OUTFILE="msx2daad_$(VERSION)_$@.com" _package_single
ES_SC6:
$(MAKE) $(MAKEFLAGS) CXXFLAGS="-DMSX2 -DMSXDOS1 -DLANG_ES -DSCREEN=6 -DFONTWIDTH=6 -DVERSION=$(VERSION) $(FULLOPT)" OUTFILE="msx2daad_$(VERSION)_$@.com" _package_single
ES_SC7:
$(MAKE) $(MAKEFLAGS) CXXFLAGS="-DMSX2 -DMSXDOS1 -DLANG_ES -DSCREEN=7 -DFONTWIDTH=6 -DVERSION=$(VERSION) $(FULLOPT)" OUTFILE="msx2daad_$(VERSION)_$@.com" _package_single
ES_SC8:
$(MAKE) $(MAKEFLAGS) CXXFLAGS="-DMSX2 -DMSXDOS1 -DLANG_ES -DSCREEN=8 -DFONTWIDTH=6 -DVERSION=$(VERSION) $(FULLOPT)" OUTFILE="msx2daad_$(VERSION)_$@.com" _package_single
ES_SC10:
$(MAKE) $(MAKEFLAGS) CXXFLAGS="-DMSX2 -DMSXDOS1 -DLANG_ES -DSCREEN=10 -DFONTWIDTH=6 -DVERSION=$(VERSION) $(FULLOPT)" OUTFILE="msx2daad_$(VERSION)_$@.com" _package_single
ES_SC12:
$(MAKE) $(MAKEFLAGS) CXXFLAGS="-DMSX2 -DMSXDOS1 -DLANG_ES -DSCREEN=12 -DFONTWIDTH=6 -DVERSION=$(VERSION) $(FULLOPT)" OUTFILE="msx2daad_$(VERSION)_$@.com" _package_single
EN_SC8_TR:
$(MAKE) $(MAKEFLAGS) CXXFLAGS="-DTRANSCRIPT -DMSX2 -DMSXDOS1 -DLANG_EN -DSCREEN=8 -DFONTWIDTH=6 -DVERSION=$(VERSION $(FULLOPT))" OUTFILE="msx2daad_$(VERSION)_$@.com" _package_single
ES_SC8_TR:
$(MAKE) $(MAKEFLAGS) CXXFLAGS="-DTRANSCRIPT -DMSX2 -DMSXDOS1 -DLANG_ES -DSCREEN=8 -DFONTWIDTH=6 -DVERSION=$(VERSION) $(FULLOPT)" OUTFILE="msx2daad_$(VERSION)_$@.com" _package_single
_package_single: msx2daad.com
@echo "$(COL_YELLOW)####################### $(OUTFILE)$(COL_RESET)"
@mkdir -p $(PKGDIR)
$(MAKE) clean
$(MAKE) msx2daad.com -j
@cp msx2daad.com $(PKGDIR)$(OUTFILE)
package: EN_SC5 EN_SC6 EN_SC7 EN_SC8 EN_SC10 EN_SC12 \
ES_SC5 ES_SC6 ES_SC7 ES_SC8 ES_SC10 ES_SC12 \
EN_SC8_TR ES_SC8_TR
precomp: $(INCDIR)daad_defines.h clean
@php bin/precomp.php dsk/DAAD.DDB $(INCDIR)daad_defines.h
test: all
@bash -c 'if pgrep -x "openmsx" > /dev/null \
; then \
echo "**** openmsx already running..." \
; else \
# openmsx -machine Philips_NMS_8245 -ext debugdevice -diska dsk/ $(EMUSCRIPTS) \
# openmsx -machine turbor -ext debugdevice -diska dsk/ $(EMUSCRIPTS) \
# openmsx -machine Sony_HB-F1XD -ext debugdevice -diska dsk/ $(EMUSCRIPTS) \
openmsx -machine msx2plus -ext debugdevice -diska dsk/ $(EMUSCRIPTS) \
; fi'
disk: all
@rm -f game.dsk
# @dsktool c 2880 game.dsk
@cd dsk ; dsktool a ../game.dsk *.*
@echo "**** game.dsk generated ****"
@bin/dsk2rom -c 0 -a game.dsk game.rom
@echo "**** game.rom generated ****"
bin/testdaad: bin/testdaad.c
gcc $^ -o $@
release: all
@echo "**** Copying .COM files to DSK/"
@cp *.com dsk/
# @echo "**** Updating .COM files in 'test.dsk'"
# @dsktool a test.dsk $(PROGRAMS) > /dev/null