Commit | Line | Data |
---|---|---|
d4d62665 | 1 | TARGET ?= PicoDrive |
079bc1bf | 2 | DEBUG ?= 0 |
65e4c57b | 3 | CFLAGS += -Wall -g |
d4d62665 | 4 | CFLAGS += -I. |
079bc1bf | 5 | ifeq "$(DEBUG)" "0" |
84162df4 | 6 | CFLAGS += -O3 -DNDEBUG |
f9020f35 | 7 | endif |
00faec9c | 8 | |
65e4c57b | 9 | # This is actually needed, bevieve me. |
10 | # If you really have to disable this, set NO_ALIGN_FUNCTIONS elsewhere. | |
11 | ifndef NO_ALIGN_FUNCTIONS | |
12 | CFLAGS += -falign-functions=2 | |
13 | endif | |
e743be20 | 14 | |
d4d62665 | 15 | all: config.mak target_ |
16 | ||
17 | ifndef NO_CONFIG_MAK | |
18 | ifneq ($(wildcard config.mak),) | |
19 | config.mak: ./configure | |
20 | @echo $@ is out-of-date, running configure | |
21 | @sed -n "/.*Configured with/s/[^:]*: //p" $@ | sh | |
22 | include config.mak | |
23 | else | |
24 | config.mak: | |
25 | @echo "Please run ./configure before running make!" | |
26 | @exit 1 | |
27 | endif | |
28 | else # NO_CONFIG_MAK | |
29 | config.mak: | |
30 | endif | |
31 | ||
32 | # default settings | |
33 | ifeq "$(ARCH)" "arm" | |
34 | use_cyclone ?= 1 | |
35 | use_drz80 ?= 1 | |
36 | use_sh2drc ?= 1 | |
0a91c6e9 | 37 | use_svpdrc ?= 1 |
d4d62665 | 38 | |
0a91c6e9 | 39 | asm_memory ?= 1 |
40 | asm_render ?= 1 | |
41 | asm_ym2612 ?= 1 | |
42 | asm_misc ?= 1 | |
0a91c6e9 | 43 | asm_cdmemory ?= 1 |
44 | asm_mix ?= 1 | |
d4d62665 | 45 | else # if not arm |
d4d62665 | 46 | use_fame ?= 1 |
d4d62665 | 47 | use_cz80 ?= 1 |
898d51a7 | 48 | ifneq (,$(findstring 86,$(ARCH))) |
49 | use_sh2drc ?= 1 | |
50 | endif | |
d4d62665 | 51 | endif |
e743be20 | 52 | |
e743be20 | 53 | -include Makefile.local |
54 | ||
d4bea61c PC |
55 | ifeq "$(PLATFORM)" "opendingux" |
56 | opk: $(TARGET).opk | |
57 | ||
58 | $(TARGET).opk: $(TARGET) | |
59 | $(RM) -rf .opk_data | |
60 | cp -r platform/opendingux/data .opk_data | |
61 | cp $< .opk_data/PicoDrive | |
62 | $(STRIP) .opk_data/PicoDrive | |
63 | mksquashfs .opk_data $@ -all-root -noappend -no-exports -no-xattrs | |
64 | ||
65 | OBJS += platform/opendingux/inputmap.o | |
66 | ||
67 | # OpenDingux is a generic platform, really. | |
68 | PLATFORM := generic | |
69 | endif | |
8450a2f5 C |
70 | ifeq ("$(PLATFORM)",$(filter "$(PLATFORM)","rpi1" "rpi2")) |
71 | CFLAGS += -DHAVE_GLES -DRASPBERRY | |
72 | CFLAGS += -I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads/ -I/opt/vc/include/interface/vmcs_host/linux/ | |
9c0ac970 C |
73 | LDFLAGS += -ldl -lbcm_host -L/opt/vc/lib |
74 | # Stupid renaming occured in latest raspbian... | |
75 | ifneq (,$(wildcard /opt/vc/lib/libbrcmGLESv2.so)) | |
76 | LDFLAGS += -lbrcmEGL -lbrcmGLESv2 | |
77 | else | |
78 | LDFLAGS += -lEGL -lGLESv2 | |
79 | endif | |
8450a2f5 C |
80 | OBJS += platform/linux/emu.o platform/linux/blit.o # FIXME |
81 | OBJS += platform/common/plat_sdl.o | |
82 | OBJS += platform/libpicofe/plat_sdl.o platform/libpicofe/in_sdl.o | |
83 | OBJS += platform/libpicofe/plat_dummy.o | |
84 | OBJS += platform/libpicofe/gl.o | |
85 | OBJS += platform/libpicofe/gl_platform.o | |
86 | USE_FRONTEND = 1 | |
87 | endif | |
2446536b | 88 | ifeq "$(PLATFORM)" "generic" |
89 | OBJS += platform/linux/emu.o platform/linux/blit.o # FIXME | |
90 | OBJS += platform/common/plat_sdl.o | |
91 | OBJS += platform/libpicofe/plat_sdl.o platform/libpicofe/in_sdl.o | |
92 | OBJS += platform/libpicofe/plat_dummy.o | |
93 | USE_FRONTEND = 1 | |
94 | endif | |
95 | ifeq "$(PLATFORM)" "pandora" | |
96 | platform/common/menu_pico.o: CFLAGS += -DPANDORA | |
fcdf2aff | 97 | platform/libpicofe/linux/plat.o: CFLAGS += -DPANDORA |
2446536b | 98 | OBJS += platform/pandora/plat.o |
99 | OBJS += platform/pandora/asm_utils.o | |
100 | OBJS += platform/common/arm_utils.o | |
101 | OBJS += platform/libpicofe/linux/fbdev.o | |
102 | OBJS += platform/libpicofe/linux/xenv.o | |
103 | OBJS += platform/libpicofe/pandora/plat.o | |
104 | USE_FRONTEND = 1 | |
105 | endif | |
75a30842 | 106 | ifeq "$(PLATFORM)" "gp2x" |
107 | OBJS += platform/common/arm_utils.o | |
108 | OBJS += platform/libpicofe/gp2x/in_gp2x.o | |
109 | OBJS += platform/libpicofe/gp2x/soc.o | |
110 | OBJS += platform/libpicofe/gp2x/soc_mmsp2.o | |
111 | OBJS += platform/libpicofe/gp2x/soc_pollux.o | |
112 | OBJS += platform/libpicofe/gp2x/plat.o | |
113 | OBJS += platform/libpicofe/gp2x/pollux_set.o | |
114 | OBJS += platform/gp2x/940ctl.o | |
115 | OBJS += platform/gp2x/plat.o | |
116 | OBJS += platform/gp2x/emu.o | |
117 | OBJS += platform/gp2x/vid_mmsp2.o | |
118 | OBJS += platform/gp2x/vid_pollux.o | |
119 | OBJS += platform/gp2x/warm.o | |
120 | USE_FRONTEND = 1 | |
121 | PLATFORM_MP3 = 1 | |
122 | endif | |
2446536b | 123 | ifeq "$(PLATFORM)" "libretro" |
7612bf90 | 124 | OBJS += platform/libretro/libretro.o |
2446536b | 125 | endif |
126 | ||
127 | ifeq "$(USE_FRONTEND)" "1" | |
128 | ||
e743be20 | 129 | # common |
d4d62665 | 130 | OBJS += platform/common/main.o platform/common/emu.o \ |
131 | platform/common/menu_pico.o platform/common/config_file.o | |
e743be20 | 132 | |
133 | # libpicofe | |
134 | OBJS += platform/libpicofe/input.o platform/libpicofe/readpng.o \ | |
135 | platform/libpicofe/fonts.o platform/libpicofe/linux/in_evdev.o \ | |
d4d62665 | 136 | platform/libpicofe/linux/plat.o |
e743be20 | 137 | |
d4d62665 | 138 | # libpicofe - sound |
139 | OBJS += platform/libpicofe/sndout.o | |
140 | ifneq ($(findstring oss,$(SOUND_DRIVERS)),) | |
141 | platform/libpicofe/sndout.o: CFLAGS += -DHAVE_OSS | |
142 | OBJS += platform/libpicofe/linux/sndout_oss.o | |
143 | endif | |
144 | ifneq ($(findstring alsa,$(SOUND_DRIVERS)),) | |
145 | platform/libpicofe/sndout.o: CFLAGS += -DHAVE_ALSA | |
146 | OBJS += platform/libpicofe/linux/sndout_alsa.o | |
147 | endif | |
148 | ifneq ($(findstring sdl,$(SOUND_DRIVERS)),) | |
149 | platform/libpicofe/sndout.o: CFLAGS += -DHAVE_SDL | |
150 | OBJS += platform/libpicofe/sndout_sdl.o | |
151 | endif | |
e743be20 | 152 | |
e743be20 | 153 | ifeq "$(ARCH)" "arm" |
d4d62665 | 154 | OBJS += platform/libpicofe/arm_linux.o |
d4d62665 | 155 | endif |
e743be20 | 156 | |
2446536b | 157 | endif # USE_FRONTEND |
158 | ||
fc11dd05 | 159 | OBJS += platform/common/mp3.o |
75a30842 | 160 | ifeq "$(PLATFORM_MP3)" "1" |
161 | else ifeq "$(HAVE_LIBAVCODEC)" "1" | |
fc11dd05 | 162 | OBJS += platform/common/mp3_libavcodec.o |
163 | else | |
2446536b | 164 | OBJS += platform/common/mp3_dummy.o |
fc11dd05 | 165 | endif |
2446536b | 166 | |
325ee167 | 167 | ifeq "$(PLATFORM)" "libretro" |
e743be20 | 168 | # zlib |
169 | OBJS += zlib/gzio.o zlib/inffast.o zlib/inflate.o zlib/inftrees.o zlib/trees.o \ | |
170 | zlib/deflate.o zlib/crc32.o zlib/adler32.o zlib/zutil.o zlib/compress.o zlib/uncompr.o | |
325ee167 | 171 | CFLAGS += -Izlib |
172 | endif | |
e743be20 | 173 | # unzip |
b4c2331e | 174 | OBJS += unzip/unzip.o |
e743be20 | 175 | |
d4d62665 | 176 | |
e743be20 | 177 | include platform/common/common.mak |
178 | ||
98dbc3ab | 179 | OBJS += $(OBJS_COMMON) |
180 | CFLAGS += $(addprefix -D,$(DEFINES)) | |
181 | ||
9aee8770 | 182 | ifneq ($(findstring gcc,$(CC)),) |
183 | LDFLAGS += -Wl,-Map=$(TARGET).map | |
184 | endif | |
185 | ||
186 | ||
d4d62665 | 187 | target_: $(TARGET) |
e743be20 | 188 | |
189 | clean: | |
d4d62665 | 190 | $(RM) $(TARGET) $(OBJS) |
d4bea61c | 191 | $(RM) -r .opk_data |
e743be20 | 192 | |
d4d62665 | 193 | $(TARGET): $(OBJS) |
7612bf90 | 194 | ifeq ($(STATIC_LINKING), 1) |
195 | $(AR) rcs $@ $^ | |
196 | else | |
9aee8770 | 197 | $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) $(LDLIBS) |
7612bf90 | 198 | endif |
e743be20 | 199 | |
200 | pprof: platform/linux/pprof.c | |
201 | $(CC) -O2 -ggdb -DPPROF -DPPROF_TOOL -I../../ -I. $^ -o $@ | |
d4d62665 | 202 | |
98dbc3ab | 203 | tools/textfilter: tools/textfilter.c |
204 | make -C tools/ textfilter | |
205 | ||
206 | .s.o: | |
207 | $(CC) $(CFLAGS) -c $< -o $@ | |
208 | ||
ae7830aa | 209 | .S.o: |
210 | $(CC) $(CFLAGS) -c $< -o $@ | |
211 | ||
895d1512 | 212 | # special flags - perhaps fix this someday instead? |
213 | pico/draw.o: CFLAGS += -fno-strict-aliasing | |
214 | pico/draw2.o: CFLAGS += -fno-strict-aliasing | |
215 | pico/mode4.o: CFLAGS += -fno-strict-aliasing | |
216 | pico/cd/memory.o: CFLAGS += -fno-strict-aliasing | |
217 | pico/cd/cd_file.o: CFLAGS += -fno-strict-aliasing | |
218 | pico/cd/pcm.o: CFLAGS += -fno-strict-aliasing | |
219 | pico/cd/LC89510.o: CFLAGS += -fno-strict-aliasing | |
220 | pico/cd/gfx_cd.o: CFLAGS += -fno-strict-aliasing | |
221 | ||
0bc48495 | 222 | # fame needs ~2GB of RAM to compile on gcc 4.8 |
223 | # on x86, this is reduced by ~300MB when debug info is off (but not on ARM) | |
0270424f | 224 | # not using O3 and -fno-expensive-optimizations seems to also help, but you may |
225 | # want to remove this stuff for better performance if your compiler can handle it | |
c7397eda | 226 | ifeq "$(DEBUG)" "0" |
0270424f | 227 | cpu/fame/famec.o: CFLAGS += -g0 -O2 -fno-expensive-optimizations |
c6e1e977 | 228 | endif |
0bc48495 | 229 | |
40d22a8e | 230 | pico/carthw_cfg.c: pico/carthw.cfg |
231 | tools/make_carthw_c $< $@ | |
232 | ||
98dbc3ab | 233 | # random deps |
898d51a7 | 234 | pico/carthw/svp/compiler.o : cpu/drc/emit_arm.c |
235 | cpu/sh2/compiler.o : cpu/drc/emit_arm.c | |
236 | cpu/sh2/compiler.o : cpu/drc/emit_x86.c | |
98dbc3ab | 237 | cpu/sh2/mame/sh2pico.o : cpu/sh2/mame/sh2.c |
89dbbf2b | 238 | pico/pico.o pico/cd/mcd.o pico/32x/32x.o : pico/pico_cmn.c pico/pico_int.h |
fa8fb754 | 239 | pico/memory.o pico/cd/memory.o pico/32x/memory.o : pico/pico_int.h pico/memory.h |
6e05b76b | 240 | # pico/cart.o : pico/carthw_cfg.c |
98dbc3ab | 241 | cpu/fame/famec.o: cpu/fame/famec.c cpu/fame/famec_opcodes.h |