-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathGNUmakefile
More file actions
163 lines (133 loc) · 5.67 KB
/
GNUmakefile
File metadata and controls
163 lines (133 loc) · 5.67 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
include make/cur_target.mk
UNIFONT_VERSION=9.0.06
CPPFLAGS+=-DGAME_PRETTY_NAME="\"ARS Emulator\""
#CPPFLAGS+=-DXGL_ENABLE_VBO -DXGL_ENABLE_RECTANGLE_TEXTURES -DXGL_ENABLE_PBO
CPPFLAGS+=-DTEG_NO_POSTINIT -DNO_OPENGL -DTEG_USE_SN
TEG_OBJECTS=obj/teg/io.o obj/teg/main.o obj/teg/miscutil.o obj/teg/config.o
EXE_LIST:=ars-emu
FULL_EXE_LIST:=$(addsuffix -release$(EXE),$(addprefix bin/,$(EXE_LIST)))
ifndef RELEASE_ONLY
FULL_EXE_LIST+=$(addsuffix -debug$(EXE),$(addprefix bin/,$(EXE_LIST)))
endif
ifdef CROSS_COMPILE
all: gen $(FULL_EXE_LIST)
else
all: gen all-data \
$(FULL_EXE_LIST)
endif
define define_exe
bin/$(1)-release$(EXE): obj/$(1).o $(2)
ifndef RELEASE_ONLY
bin/$(1)-debug$(EXE): $$(patsubst %.o,%.debug.o,obj/$(1).o $(2))
endif
endef
EXTRA_OBJECTS?=
ifdef NEED_WINDOWS_ICON
EXTRA_OBJECTS+=obj/ars-emu.res
endif
FX_IMPLEMENTATIONS?=
FX_IMPLEMENTATIONS+=obj/fximp.normal.o
# We include obj/lsx/lsx_bzero.o while making no attempt to prevent it from
# being optimized out, because there is no sensitive data to "leak". The only
# SimpleConfig image currently considered "secure" is publicly available.
$(eval $(call define_exe,ars-emu,obj/ppu_scanline.o obj/cartridge.o obj/cpu_scanline.o obj/cpu_scanline_debug.o obj/cpu_scanline_intprof.o obj/eval.o obj/controller.o obj/apu.o obj/sn_core.o obj/sn_get_system_language.o obj/font.o obj/utfit.o obj/configurator.o obj/prefs.o obj/menu.o obj/menu_main.o obj/menu_fight.o obj/menu_keyboard.o obj/audiocvt.o obj/windower.o obj/lsx/lsx_sha256.o obj/lsx/lsx_bzero.o obj/ppu_common.o obj/fx.o obj/messages.o obj/display.o obj/display_safe.o obj/display_sdl.o obj/upscale.o obj/gamefolder.o obj/gamearchive.o obj/byuuML/byuuML.o obj/barechip.o obj/devcart.o obj/expansions.o obj/floppy.o $(FX_IMPLEMENTATIONS) $(TEG_OBJECTS) $(EXTRA_OBJECTS)))
ifndef CROSS_COMPILE
$(eval $(call define_exe,compile-font,obj/sn_core.o $(TEG_OBJECTS)))
$(eval $(call define_exe,pretty-string,obj/font.o obj/utfit.o obj/sn_core.o $(TEG_OBJECTS)))
$(eval $(call define_exe,fxbench,obj/sn_core.o obj/fx.o $(FX_IMPLEMENTATIONS) $(TEG_OBJECTS) $(EXTRA_OBJECTS)))
endif
gen:
@true # currently nothing to generate
all-data: bin/Data
bin/Data:
@echo "Linking data files..."
@mkdir -p bin
@(cd bin; ln -s ../Data)
ifndef CROSS_COMPILE
Data/Font: bin/compile-font-release$(EXE) dist/unifont-$(UNIFONT_VERSION)/font/precompiled/unifont-$(UNIFONT_VERSION).hex dist/unifont-$(UNIFONT_VERSION)/font/precompiled/unifont_upper-$(UNIFONT_VERSION).hex
@echo "Compiling font..."
@mkdir -p Data
@$^ > $@
Data/SimpleConfig.etarz: obj/SimpleConfig.etars/config.rom obj/SimpleConfig.etars/manifest.bml
@echo "Compressing simple configuration ROM \"cartridge\"..."
@mkdir -p Data
@rm -f Data/SimpleConfig.etarz
@(cd obj; zip --quiet -r ../Data/SimpleConfig.etarz SimpleConfig.etars)
obj/SimpleConfig.etars/config.rom: $(addprefix obj/,$(addsuffix .o,$(notdir $(wildcard asm/*.65c))))
@mkdir -p obj/SimpleConfig.etars
@echo "Linking simple configuration ROM image..."
@echo [objects] > obj/SimpleConfig.link
@for f in $^; do echo $$f >> obj/SimpleConfig.link; done
@wlalink -S obj/SimpleConfig.link obj/SimpleConfig.etars/config.rom
obj/SimpleConfig.etars/manifest.bml: asm/manifest.bml
@mkdir -p obj/SimpleConfig.etars
@echo "Copying simple configuration ROM manifest..."
@cp $< $@
endif
make/cur_target.mk:
@./choose_target.sh
bin/%-release$(EXE): obj/%.o
@mkdir -p bin
@echo Linking "$@" "(release)"...
@$(LD) $(LDFLAGS) $(LDFLAGS_RELEASE) -o "$@" $^ $(LIBS)
bin/%-debug$(EXE): obj/%.debug.o
@mkdir -p bin
@echo Linking "$@" "(debug)"...
@$(LD) $(LDFLAGS) $(LDFLAGS_DEBUG) -o bin/"$*"-debug$(EXE) $^ $(LIBS)
include/gen/%.hh: src/gen_%_hh.lua
@mkdir -p include/gen
@echo Generating "$@"...
@$^
obj/%.o: src/%.m
@mkdir -p obj
@echo Compiling "$<" "(release)"...
@$(CC) $(CPPFLAGS) $(CPPFLAGS_RELEASE) $(CFLAGS) $(CFLAGS_RELEASE) -o "$@" "$<"
obj/%.debug.o: src/%.m
@mkdir -p obj
@echo Compiling "$<" "(debug)"...
@$(CC) $(CPPFLAGS) $(CPPFLAGS_DEBUG) $(CFLAGS) $(CFLAGS_DEBUG) -o "$@" "$<"
obj/%.o: src/%.c
@mkdir -p obj
@echo Compiling "$<" "(release)"...
@$(CC) $(CPPFLAGS) $(CPPFLAGS_RELEASE) $(CFLAGS) $(CFLAGS_RELEASE) -o "$@" "$<"
obj/%.debug.o: src/%.c
@mkdir -p obj
@echo Compiling "$<" "(debug)"...
@$(CC) $(CPPFLAGS) $(CPPFLAGS_DEBUG) $(CFLAGS) $(CFLAGS_DEBUG) -o "$@" "$<"
obj/lsx/%.o: src/lsx/src/%.c
@mkdir -p obj/lsx
@echo Compiling "$<" "(release)"...
@$(CC) $(CPPFLAGS) $(CPPFLAGS_RELEASE) $(CFLAGS) $(CFLAGS_RELEASE) -o "$@" "$<"
obj/lsx/%.debug.o: src/lsx/src/%.c
@mkdir -p obj/lsx
@echo Compiling "$<" "(debug)"...
@$(CC) $(CPPFLAGS) $(CPPFLAGS_DEBUG) $(CFLAGS) $(CFLAGS_DEBUG) -o "$@" "$<"
obj/%.o: src/%.cc
@mkdir -p obj/teg obj/byuuML
@echo Compiling "$<" "(release)"...
@$(CXX) $(CPPFLAGS) $(CPPFLAGS_RELEASE) $(CFLAGS) $(CFLAGS_RELEASE) $(CXXFLAGS) $(CXXFLAGS_RELEASE) -o "$@" "$<"
obj/%.debug.o: src/%.cc
@mkdir -p obj/teg obj/byuuML
@echo Compiling "$<" "(debug)"...
@$(CXX) $(CPPFLAGS) $(CPPFLAGS_DEBUG) $(CFLAGS) $(CFLAGS_DEBUG) $(CXXFLAGS) $(CXXFLAGS_DEBUG) -o "$@" "$<"
obj/%.o: src/libsn/%.cc
@mkdir -p obj
@echo Compiling "$<" "(release)"...
@$(CXX) $(CPPFLAGS) $(CPPFLAGS_RELEASE) $(CFLAGS) $(CFLAGS_RELEASE) $(CXXFLAGS) $(CXXFLAGS_RELEASE) -o "$@" "$<"
obj/%.debug.o: src/libsn/%.cc
@mkdir -p obj
@echo Compiling "$<" "(debug)"...
@$(CXX) $(CPPFLAGS) $(CPPFLAGS_DEBUG) $(CFLAGS) $(CFLAGS_DEBUG) $(CXXFLAGS) $(CXXFLAGS_DEBUG) -o "$@" "$<"
obj/%.res: src/%.rc
@mkdir -p obj
@echo Compiling "$<"...
@$(WINDRES) "$<" -O coff -o "$@"
obj/%.65c.o: asm/%.65c $(wildcard asm/*.inc)
@mkdir -p obj
@echo Assembling "$<"...
@wla-65c02 -q -o "$@" "$<"
clean:
rm -rf bin obj include/gen
include $(wildcard obj/*.d)
include $(wildcard obj/teg/*.d)
.PHONY: all clean data gen all-data