2446536b |
1 | # Makefile for PicoDrive (libretro) |
2 | |
3 | ifeq ($(platform),) |
7612bf90 |
4 | platform = unix |
5 | ifeq ($(shell uname -a),) |
6 | platform = win |
7 | else ifneq ($(findstring MINGW,$(shell uname -a)),) |
8 | platform = win |
9 | else ifneq ($(findstring Darwin,$(shell uname -a)),) |
10 | platform = osx |
11 | arch = intel |
12 | ifeq ($(shell uname -p),powerpc) |
13 | arch = ppc |
14 | endif |
15 | else ifneq ($(findstring win,$(shell uname -a)),) |
16 | platform = win |
17 | endif |
2446536b |
18 | endif |
19 | |
20 | CC ?= gcc |
21 | CXX ?= g++ |
22 | AS ?= as |
23 | CC_AS ?= $(CC) |
24 | CFLAGS ?= |
25 | |
7612bf90 |
26 | STATIC_LINKING:= 0 |
2446536b |
27 | TARGET_NAME := picodrive |
7612bf90 |
28 | LIBM := -lm |
29 | GIT_VERSION := " $(shell git rev-parse --short HEAD || echo unknown)" |
30 | ifneq ($(GIT_VERSION)," unknown") |
31 | CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\" |
32 | endif |
2446536b |
33 | |
087a176d |
34 | asm_memory = 0 |
35 | asm_render = 0 |
36 | asm_ym2612 = 0 |
37 | asm_misc = 0 |
087a176d |
38 | asm_cdmemory = 0 |
39 | asm_mix = 0 |
40 | |
7612bf90 |
41 | fpic := |
42 | |
43 | ifeq ($(STATIC_LINKING),1) |
44 | EXT=a |
45 | endif |
46 | |
47 | # Unix |
2446536b |
48 | ifeq ($(platform), unix) |
7612bf90 |
49 | EXT ?= so |
50 | TARGET := $(TARGET_NAME)_libretro.$(EXT) |
51 | fpic := -fPIC |
52 | SHARED := -shared |
53 | DONT_COMPILE_IN_ZLIB = 1 |
54 | CFLAGS += -DFAMEC_NO_GOTOS |
898d51a7 |
55 | use_sh2drc = 1 |
7612bf90 |
56 | |
57 | # Portable Linux |
58 | else ifeq ($(platform), linux-portable) |
59 | EXT ?= so |
60 | TARGET := $(TARGET_NAME)_libretro.$(EXT) |
61 | SHARED := -shared -nostdlib |
62 | fpic := -fPIC |
63 | LIBM := |
64 | DONT_COMPILE_IN_ZLIB = 1 |
65 | CFLAGS += -DFAMEC_NO_GOTOS |
898d51a7 |
66 | use_sh2drc = 1 |
7612bf90 |
67 | |
68 | # OS X |
2446536b |
69 | else ifeq ($(platform), osx) |
7612bf90 |
70 | EXT ?= dylib |
71 | TARGET := $(TARGET_NAME)_libretro.$(EXT) |
72 | SHARED := -dynamiclib |
73 | fpic := -fPIC |
74 | APPLE := 1 |
75 | arch = intel |
76 | ifeq ($(shell uname -p),powerpc) |
77 | arch = ppc |
78 | endif |
79 | ifeq ($(arch),ppc) |
80 | CFLAGS += -DBLARGG_BIG_ENDIAN=1 -D__ppc__ -DFAMEC_NO_GOTOS |
81 | endif |
82 | OSXVER = `sw_vers -productVersion | cut -d. -f 2` |
83 | OSX_LT_MAVERICKS = `(( $(OSXVER) <= 9)) && echo "YES"` |
84 | SHARED += -mmacosx-version-min=10.1 |
85 | |
86 | else ifeq ($(platform), staticios) |
87 | TARGET := $(TARGET_NAME)_libretro_ios.a |
88 | APPLE := 1 |
89 | ifeq ($(IOSSDK),) |
90 | IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path) |
91 | endif |
92 | CC = clang -arch armv7 -arch arm64 -isysroot $(IOSSDK) |
93 | CXX = clang++ -arch armv7 -arch arm64 -isysroot $(IOSSDK) |
94 | CC_AS = perl ./tools/gas-preprocessor.pl $(CC) |
95 | CFLAGS += -marm |
96 | CFLAGS += -DIOS |
97 | |
98 | CC += -miphoneos-version-min=8.0 |
99 | CXX += -miphoneos-version-min=8.0 |
100 | CC_AS += -miphoneos-version-min=8.0 |
101 | CFLAGS += -miphoneos-version-min=8.0 |
102 | ARCH := arm |
103 | |
104 | STATIC_LINKING = 1 |
105 | use_cyclone = 0 |
106 | use_fame = 1 |
107 | use_drz80 = 0 |
108 | use_cz80 = 1 |
109 | use_sh2drc = 0 |
110 | use_svpdrc = 0 |
111 | |
112 | # iOS |
113 | else ifneq (,$(findstring ios,$(platform))) |
114 | TARGET := $(TARGET_NAME)_libretro_ios.dylib |
115 | SHARED := -dynamiclib |
116 | fpic := -fPIC |
117 | APPLE := 1 |
118 | ifeq ($(IOSSDK),) |
119 | IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path) |
120 | endif |
121 | CC = clang -arch armv7 -isysroot $(IOSSDK) |
122 | CXX = clang++ -arch armv7 -isysroot $(IOSSDK) |
123 | CC_AS = perl ./tools/gas-preprocessor.pl $(CC) |
124 | CFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon -marm |
125 | ASFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon |
126 | CFLAGS += -DIOS |
127 | |
128 | ifeq ($(platform),ios9) |
129 | CC += -miphoneos-version-min=8.0 |
130 | CXX += -miphoneos-version-min=8.0 |
131 | CC_AS += -miphoneos-version-min=8.0 |
132 | CFLAGS += -miphoneos-version-min=8.0 |
133 | else |
134 | CC += -miphoneos-version-min=5.0 |
135 | CXX += -miphoneos-version-min=5.0 |
136 | CC_AS += -miphoneos-version-min=5.0 |
137 | CFLAGS += -miphoneos-version-min=5.0 |
138 | endif |
139 | ARCH := arm |
0a91c6e9 |
140 | |
7612bf90 |
141 | use_cyclone = 0 |
142 | use_fame = 1 |
143 | use_drz80 = 0 |
144 | use_cz80 = 1 |
145 | use_sh2drc = 1 |
146 | use_svpdrc = 1 |
147 | |
148 | # PS3 |
2446536b |
149 | else ifeq ($(platform), ps3) |
7612bf90 |
150 | TARGET := $(TARGET_NAME)_libretro_$(platform).a |
151 | CC = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-gcc.exe |
152 | AR = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ar.exe |
153 | CFLAGS += -DBLARGG_BIG_ENDIAN=1 -D__ppc__ -DFAMEC_NO_GOTOS |
154 | STATIC_LINKING = 1 |
155 | NO_MMAP = 1 |
156 | DONT_COMPILE_IN_ZLIB = 1 |
157 | |
158 | asm_memory = 0 |
159 | asm_render = 0 |
160 | asm_ym2612 = 0 |
161 | asm_misc = 0 |
162 | asm_cdpico = 0 |
163 | asm_cdmemory = 0 |
164 | asm_mix = 0 |
165 | use_cyclone = 0 |
166 | use_fame = 1 |
167 | use_drz80 = 0 |
168 | use_cz80 = 1 |
169 | |
170 | # sncps3 |
2446536b |
171 | else ifeq ($(platform), sncps3) |
7612bf90 |
172 | TARGET := $(TARGET_NAME)_libretro_ps3.a |
173 | CC = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe |
174 | AR = $(CELL_SDK)/host-win32/sn/bin/ps3snarl.exe |
175 | CFLAGS += -DBLARGG_BIG_ENDIAN=1 -D__ppc__ -DFAMEC_NO_GOTOS |
176 | STATIC_LINKING = 1 |
177 | NO_MMAP = 1 |
178 | DONT_COMPILE_IN_ZLIB = 1 |
179 | |
180 | asm_memory = 0 |
181 | asm_render = 0 |
182 | asm_ym2612 = 0 |
183 | asm_misc = 0 |
184 | asm_cdpico = 0 |
185 | asm_cdmemory = 0 |
186 | asm_mix = 0 |
187 | use_cyclone = 0 |
188 | use_fame = 1 |
189 | use_drz80 = 0 |
190 | use_cz80 = 1 |
191 | |
192 | # Lightweight PS3 Homebrew SDK |
2446536b |
193 | else ifeq ($(platform), psl1ght) |
7612bf90 |
194 | TARGET := $(TARGET_NAME)_libretro_$(platform).a |
195 | CC = $(PS3DEV)/ppu/bin/ppu-gcc$(EXE_EXT) |
196 | AR = $(PS3DEV)/ppu/bin/ppu-ar$(EXE_EXT) |
197 | CFLAGS += -DBLARGG_BIG_ENDIAN=1 -D__ppc__ -DFAMEC_NO_GOTOS |
198 | STATIC_LINKING = 1 |
199 | NO_MMAP = 1 |
200 | DONT_COMPILE_IN_ZLIB = 1 |
201 | |
202 | asm_memory = 0 |
203 | asm_render = 0 |
204 | asm_ym2612 = 0 |
205 | asm_misc = 0 |
206 | asm_cdpico = 0 |
207 | asm_cdmemory = 0 |
208 | asm_mix = 0 |
209 | use_cyclone = 0 |
210 | use_fame = 1 |
211 | use_drz80 = 0 |
212 | use_cz80 = 1 |
213 | |
214 | # PSP |
2446536b |
215 | else ifeq ($(platform), psp1) |
7612bf90 |
216 | TARGET := $(TARGET_NAME)_libretro_$(platform).a |
217 | CC = psp-gcc$(EXE_EXT) |
218 | AR = psp-ar$(EXE_EXT) |
219 | CFLAGS += -G0 -ftracer |
adb98333 |
220 | CFLAGS += -DPSP |
7612bf90 |
221 | STATIC_LINKING = 1 |
222 | NO_MMAP = 1 |
223 | DONT_COMPILE_IN_ZLIB = 1 |
224 | |
225 | asm_memory = 0 |
226 | asm_render = 1 |
227 | asm_ym2612 = 0 |
228 | asm_misc = 0 |
229 | asm_cdpico = 0 |
230 | asm_cdmemory = 0 |
231 | asm_mix = 0 |
232 | use_cyclone = 0 |
233 | use_fame = 1 |
234 | use_drz80 = 0 |
235 | use_cz80 = 1 |
236 | |
7612bf90 |
237 | # CTR (3DS) |
238 | else ifeq ($(platform), ctr) |
239 | TARGET := $(TARGET_NAME)_libretro_$(platform).a |
240 | CC = $(DEVKITARM)/bin/arm-none-eabi-gcc$(EXE_EXT) |
241 | CXX = $(DEVKITARM)/bin/arm-none-eabi-g++$(EXE_EXT) |
242 | AR = $(DEVKITARM)/bin/arm-none-eabi-ar$(EXE_EXT) |
243 | CFLAGS += -DARM11 -D_3DS |
244 | CFLAGS += -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp |
245 | CFLAGS += -Wall -mword-relocations |
246 | CFLAGS += -fomit-frame-pointer -ffast-math |
247 | STATIC_LINKING = 1 |
248 | NO_MMAP = 1 |
249 | DONT_COMPILE_IN_ZLIB = 1 |
250 | ARCH = arm |
251 | ARM_ASM = 1 |
252 | |
253 | asm_memory = 1 |
254 | asm_render = 1 |
255 | asm_ym2612 = 1 |
256 | asm_misc = 1 |
257 | asm_cdpico = 1 |
258 | asm_cdmemory = 1 |
259 | asm_mix = 1 |
260 | |
261 | use_cyclone = 1 |
262 | use_fame = 0 |
263 | use_drz80 = 1 |
264 | use_cz80 = 0 |
265 | use_sh2drc = 1 |
266 | use_svpdrc = 1 |
267 | |
268 | OBJS +=platform/libretro/3ds/3ds_utils.o |
269 | |
270 | # Raspberry Pi (original model) Raspbian |
271 | else ifeq ($(platform), raspberrypi) |
272 | CFLAGS += -marm -mfpu=vfp -mfloat-abi=hard -march=armv6j |
273 | CFLAGS += -Wall -mword-relocations |
274 | CFLAGS += -fomit-frame-pointer -ffast-math |
275 | ARCH = arm |
276 | ARM_ASM = 1 |
277 | |
278 | TARGET := $(TARGET_NAME)_libretro.so |
279 | SHARED := -shared |
280 | fpic := -fPIC |
281 | DONT_COMPILE_IN_ZLIB = 1 |
282 | |
283 | asm_memory = 1 |
284 | asm_render = 1 |
285 | asm_ym2612 = 1 |
286 | asm_misc = 1 |
287 | asm_cdpico = 1 |
288 | asm_cdmemory = 1 |
289 | asm_mix = 1 |
290 | |
291 | use_cyclone = 1 |
292 | use_fame = 0 |
293 | use_drz80 = 1 |
294 | use_cz80 = 0 |
295 | use_sh2drc = 1 |
296 | use_svpdrc = 1 |
297 | |
298 | # Vita |
299 | else ifeq ($(platform), vita) |
300 | TARGET := $(TARGET_NAME)_libretro_$(platform).a |
301 | CC = arm-vita-eabi-gcc$(EXE_EXT) |
302 | AR = arm-vita-eabi-ar$(EXE_EXT) |
303 | CFLAGS += -DVITA |
304 | CFLAGS += -marm -mfpu=neon -mcpu=cortex-a9 -march=armv7-a -mfloat-abi=hard -ffast-math |
305 | CFLAGS += -fno-asynchronous-unwind-tables -ftree-vectorize -funroll-loops |
306 | CFLAGS += -mword-relocations -fno-unwind-tables |
307 | CFLAGS += -fno-optimize-sibling-calls |
308 | STATIC_LINKING = 1 |
309 | NO_MMAP = 1 |
310 | DONT_COMPILE_IN_ZLIB = 1 |
311 | ARCH = arm |
312 | |
313 | asm_memory = 1 |
314 | asm_render = 1 |
315 | asm_ym2612 = 1 |
316 | asm_misc = 1 |
317 | asm_cdpico = 1 |
318 | asm_cdmemory = 1 |
319 | asm_mix = 1 |
320 | use_cyclone = 1 |
321 | use_fame = 0 |
322 | use_drz80 = 1 |
323 | use_cz80 = 0 |
324 | use_sh2drc = 1 |
325 | use_svpdrc = 1 |
326 | |
327 | # Xbox 360 |
2446536b |
328 | else ifeq ($(platform), xenon) |
7612bf90 |
329 | TARGET := $(TARGET_NAME)_libretro_xenon360.a |
330 | CC = xenon-gcc$(EXE_EXT) |
331 | AR = xenon-ar$(EXE_EXT) |
332 | CFLAGS += -D__LIBXENON__ -m32 -D__ppc__ |
333 | |
334 | # Nintendo Game Cube |
2446536b |
335 | else ifeq ($(platform), ngc) |
7612bf90 |
336 | TARGET := $(TARGET_NAME)_libretro_$(platform).a |
337 | CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) |
338 | AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) |
339 | CFLAGS += -DGEKKO -DHW_DOL -mrvl -mcpu=750 -meabi -mhard-float -DBLARGG_BIG_ENDIAN=1 -D__ppc__ |
340 | |
341 | # Nintendo Wii |
2446536b |
342 | else ifeq ($(platform), wii) |
7612bf90 |
343 | TARGET := $(TARGET_NAME)_libretro_$(platform).a |
344 | CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) |
345 | AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) |
346 | CFLAGS += -DGEKKO -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float -DBLARGG_BIG_ENDIAN=1 -D__ppc__ |
347 | |
348 | # QNX |
2446536b |
349 | else ifeq ($(platform), qnx) |
7612bf90 |
350 | TARGET := $(TARGET_NAME)_libretro_$(platform).so |
351 | fpic := -fPIC |
352 | CC = qcc -Vgcc_ntoarmv7le |
353 | CC_AS = $(CC) |
354 | CFLAGS += -DBASE_ADDR_FIXED=0 -D__BLACKBERRY_QNX__ -marm -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mfloat-abi=softfp |
355 | ASFLAGS += -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp |
356 | ARCH = arm |
357 | ARM_ASM = 1 |
2446536b |
358 | |
7612bf90 |
359 | use_cyclone = 0 |
360 | use_fame = 1 |
361 | use_drz80 = 0 |
362 | use_cz80 = 1 |
363 | use_sh2drc = 1 |
364 | use_svpdrc = 1 |
365 | |
366 | # ARM |
087a176d |
367 | else ifneq (,$(findstring armv,$(platform))) |
7612bf90 |
368 | TARGET := $(TARGET_NAME)_libretro.so |
369 | SHARED := -shared -Wl,--no-undefined,-Bsymbolic |
370 | fpic := -fPIC |
371 | ifneq (,$(findstring cortexa5,$(platform))) |
372 | CFLAGS += -marm -mcpu=cortex-a5 |
373 | ASFLAGS += -mcpu=cortex-a5 |
374 | else ifneq (,$(findstring cortexa8,$(platform))) |
375 | CFLAGS += -marm -mcpu=cortex-a8 |
376 | ASFLAGS += -mcpu=cortex-a8 |
377 | else ifneq (,$(findstring cortexa9,$(platform))) |
378 | CFLAGS += -marm -mcpu=cortex-a9 |
379 | ASFLAGS += -mcpu=cortex-a9 |
380 | else ifneq (,$(findstring cortexa15a7,$(platform))) |
381 | CFLAGS += -marm -mcpu=cortex-a15.cortex-a7 |
382 | ASFLAGS += -mcpu=cortex-a15.cortex-a7 |
383 | else |
384 | CFLAGS += -marm |
385 | endif |
386 | ifneq (,$(findstring neon,$(platform))) |
387 | CFLAGS += -mfpu=neon |
388 | ASFLAGS += -mfpu=neon |
389 | endif |
390 | ifneq (,$(findstring softfloat,$(platform))) |
391 | CFLAGS += -mfloat-abi=softfp |
392 | ASFLAGS += -mfloat-abi=softfp |
393 | else ifneq (,$(findstring hardfloat,$(platform))) |
394 | CFLAGS += -mfloat-abi=hard |
395 | ASFLAGS += -mfloat-abi=hard |
396 | endif |
397 | ifneq (,$(findstring armasm,$(platform))) |
398 | ARM_ASM = 1 |
399 | endif |
400 | ARCH = arm |
401 | |
402 | # Emscripten |
403 | else ifeq ($(platform), emscripten) |
404 | TARGET := $(TARGET_NAME)_libretro_$(platform).bc |
405 | STATIC_LINKING = 1 |
406 | DONT_COMPILE_IN_ZLIB = 1 |
407 | |
408 | # GCW0 |
409 | else ifeq ($(platform), gcw0) |
410 | TARGET := $(TARGET_NAME)_libretro.so |
411 | CC = /opt/gcw0-toolchain/usr/bin/mipsel-linux-gcc |
412 | AR = /opt/gcw0-toolchain/usr/bin/mipsel-linux-ar |
413 | SHARED := -shared -nostdlib |
414 | fpic := -fPIC |
415 | LIBM := |
416 | DONT_COMPILE_IN_ZLIB = 1 |
417 | CFLAGS += -ffast-math -march=mips32 -mtune=mips32r2 -mhard-float |
418 | |
419 | asm_memory = 0 |
420 | asm_render = 0 |
421 | asm_ym2612 = 0 |
422 | asm_misc = 0 |
423 | asm_cdpico = 0 |
424 | asm_cdmemory = 0 |
425 | asm_mix = 0 |
426 | use_cyclone = 0 |
427 | use_fame = 1 |
428 | use_drz80 = 0 |
429 | use_cz80 = 1 |
430 | |
431 | # Windows |
2446536b |
432 | else |
7612bf90 |
433 | TARGET := $(TARGET_NAME)_libretro.dll |
434 | CC = gcc |
435 | fpic := -fPIC |
436 | SHARED := -shared -static-libgcc -static-libstdc++ |
437 | CFLAGS += -D__WIN32__ -D__WIN32_LIBRETRO__ |
438 | |
439 | endif |
440 | |
441 | CFLAGS += -DNO_ZLIB |
442 | |
443 | ifeq ($(NO_MMAP),1) |
444 | CFLAGS += -DNO_MMAP |
2446536b |
445 | endif |
446 | |
087a176d |
447 | ifeq ($(ARM_ASM),1) |
448 | asm_memory = 1 |
449 | asm_render = 1 |
450 | asm_ym2612 = 1 |
451 | asm_misc = 1 |
087a176d |
452 | asm_cdmemory = 1 |
453 | asm_mix = 1 |
34e7fb0b |
454 | endif |
087a176d |
455 | |
7612bf90 |
456 | CFLAGS += $(fpic) |
457 | |
458 | ifeq ($(findstring Haiku,$(shell uname -a)),) |
459 | LDLIBS += $(LIBM) |
460 | endif |
461 | |
2446536b |
462 | SHARED ?= -shared |
7612bf90 |
463 | LDFLAGS += $(SHARED) $(fpic) |
2446536b |
464 | |
465 | PLATFORM = libretro |
466 | NO_CONFIG_MAK = yes |
467 | |
468 | include Makefile |