Repository navigation
Expand file tree
/
Copy pathMakefile
More file actions
210 lines (178 loc) · 4.25 KB
/
Copy pathMakefile
File metadata and controls
210 lines (178 loc) · 4.25 KB
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
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
ifdef GENDEV
ROOTDIR = $(GENDEV)
else
ROOTDIR = /opt/toolchains/sega
endif
TARGET ?= D32XR
WAD ?= doom32xf.wad
BINSIZE = 210
TITLE ?= DOOM 32X FUSION
VERSION ?= 0.1
MAPPER = SEGA 32X
ifdef ENABLE_SSF_MAPPER
MAPPER = SEGA SSF
endif
LDSCRIPTSDIR = $(ROOTDIR)/ldscripts
LIBPATH = -L$(ROOTDIR)/sh-elf/lib -L$(ROOTDIR)/sh-elf/lib/gcc/sh-elf/4.6.2 -L$(ROOTDIR)/sh-elf/sh-elf/lib
INCPATH = -I. -I$(ROOTDIR)/sh-elf/include -I$(ROOTDIR)/sh-elf/sh-elf/include -I./liblzss
CCFLAGS = -c -std=c11 -m2 -mb -mtas
CCFLAGS += -Wall -Wextra -pedantic -Wno-unused-parameter -Wimplicit-fallthrough=0 -Wno-missing-field-initializers -Wnonnull
CCFLAGS += -D__32X__ -DMARS
ifndef ENABLE_DMA_SOUND
CCFLAGS += -DDISABLE_DMA_SOUND
endif
CCFLAGS += -fomit-frame-pointer
LDFLAGS = -T mars-ssf.ld -Wl,-Map=output.map -nostdlib -Wl,--gc-sections,--sort-section=alignment --specs=nosys.specs
ASFLAGS = --big
ASFLAGS += --defsym WADBASE=$(BINSIZE)
ifdef ENABLE_FIRE_ANIMATION
CCFLAGS += -DENABLE_FIRE_ANIMATION
endif
ifdef DISABLE_CDFS
CCFLAGS += -DDISABLE_CDFS
endif
ifdef ENABLE_SSF_MAPPER
HWCCFLAGS += -DENABLE_SSF_MAPPER
CCFLAGS += -DENABLE_SSF_MAPPER
ASFLAGS += --defsym ENABLE_SSF_MAPPER=1
endif
ifdef USE_SMALL_LUMPS
CCFLAGS += -DUSE_SMALL_LUMPS
endif
ifdef MIPLEVELS
CCFLAGS += -DMIPLEVELS=$(MIPLEVELS)
endif
debug: CCFLAGS += -g -ggdb
reldebug: CCFLAGS += -g -ggdb
release: CCFLAGS += -ffast-math -funroll-loops -fno-align-loops -fno-align-jumps -fno-align-labels
release: CCFLAGS += -fno-common -ffunction-sections -fdata-sections
release: LDFLAGS += -Os
release: CCFLAGS += -flto=auto
release: LDFLAGS += -flto=auto
MARSHWCFLAGS := $(CCFLAGS)
MARSHWCFLAGS += -O1 -fno-lto
CCFLAGS += -Os
PREFIX = $(ROOTDIR)/sh-elf/bin/sh-elf-
CC = $(PREFIX)gcc
AS = $(PREFIX)as
OBJC = $(PREFIX)objcopy
DD = dd
RM = rm -f
LIBS = $(LIBPATH) -lc -lgcc -lgcc-Os-4-200 -lnosys
OBJS = \
crt0.o \
f_main.o \
f_wipe.o \
in_main.o \
am_main.o \
st_main.o \
m_main.o \
o_main.o \
comnjag.o \
vsprintf.o \
d_main.o \
g_game.o \
info.o \
p_ceilng.o \
p_doors.o \
p_enemy.o \
p_floor.o \
p_inter.o \
p_lights.o \
p_map.o \
p_maputl.o \
p_mobj.o \
p_plats.o \
p_pspr.o \
p_setup.o \
p_spec.o \
p_switch.o \
p_telept.o \
p_tick.o \
p_base.o \
p_user.o \
p_sight.o \
p_shoot.o \
p_move.o \
p_change.o \
p_slide.o \
r_main.o \
r_data.o \
r_phase1.o \
r_phase2.o \
r_phase3.o \
r_phase5.o \
r_phase6.o \
r_phase7.o \
r_phase8.o \
r_phase9.o \
marssound.o \
sounds.o \
tables.o \
w_wad.o \
z_zone.o \
marshw.o \
marsonly.o \
marsnew.o \
marsdraw.o \
marssave.o \
wadbase.o \
comnnew.o \
d_mapinfo.o \
sh2_fixed.o \
sh2_draw.o \
sh2_drawlow.o \
sh2_draw4b.o \
sh2_drawlow4b.o \
sh2_mixer.o \
r_cache.o \
m_fire.o \
lzss.o \
gs_main.o \
roq_read.o \
marsroq.o \
mars_newrb.o
release: $(TARGET).32x
debug: $(TARGET).32x
reldebug: $(TARGET).32x
all: release
m68k.bin:
make -C src-md
$(TARGET).32x: $(TARGET).elf romheaderfix
$(OBJC) -O binary $< temp2.bin
$(DD) if=temp2.bin of=temp.bin bs=$(BINSIZE)K conv=sync
rm -f temp3.bin
cat temp.bin $(WAD) >>temp3.bin
$(DD) if=temp3.bin of=$@ bs=512K conv=sync
rm -f temp.bin temp2.bin temp3.bin
./romheaderfix/romheaderfix "$(MAPPER)" "$(TITLE) v$(VERSION)" $(TARGET).32x
$(TARGET).elf: realbinsize
$(AS) $(ASFLAGS) $(INCPATH) wadbase.s -o wadbase.o
$(CC) $(LDFLAGS) $(OBJS) $(LIBS) -o $(TARGET).elf
realbinsize: temp.bin
$(eval override FILESIZE=$(shell stat -L -c %s temp.bin))
$(eval override BINSIZE=$(shell expr $(FILESIZE) / 1024))
temp.bin: $(TARGET)_tmp.elf
$(OBJC) -O binary $< temp2.bin
$(DD) if=temp2.bin of=temp.bin bs=1K conv=sync
rm -f temp2.bin $(TARGET)_tmp.elf
$(TARGET)_tmp.elf: $(OBJS)
$(CC) $(LDFLAGS) $(OBJS) $(LIBS) -o $(TARGET)_tmp.elf
crt0.o: crt0.s m68k.bin
marshw.o: marshw.c
$(CC) $(MARSHWCFLAGS) $(INCPATH) $< -o $@
%.o: %.c
$(CC) $(CCFLAGS) $(INCPATH) $< -o $@
%.o: liblzss/%.c
$(CC) $(CCFLAGS) $(INCPATH) $< -o $@
%.o: %.s
$(AS) $(ASFLAGS) $(INCPATH) $< -o $@
clean:
make clean -C src-md
$(RM) *.o mr8k.bin $(TARGET).32x $(TARGET).elf output.map temp.bin temp2.bin
iso: $(TARGET).32x
mkdir -p iso
genisoimage -sysid "SEGA SEGACD" -volid "DOOM CD32X FUSION" -full-iso9660-filenames -l -o $(TARGET).iso iso
romheaderfix:
gcc -o romheaderfix/romheaderfix romheaderfix/romheaderfix.c
.PHONY: realbinsize romheaderfix