Add -DFAMEC_NO_GOTOS for OSX PPC GCC build
[picodrive.git] / Makefile.libretro
1 # Makefile for PicoDrive (libretro)
2
3 ifeq ($(platform),)
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
18 endif
19
20 CC ?= gcc
21 CXX ?= g++
22 AS ?= as
23 CC_AS ?= $(CC)
24 CFLAGS ?=
25
26 TARGET_NAME := picodrive
27
28 asm_memory = 0
29 asm_render = 0
30 asm_ym2612 = 0
31 asm_misc = 0
32 asm_cdpico = 0
33 asm_cdmemory = 0
34 asm_mix = 0
35
36 ifeq ($(platform), unix)
37    TARGET := $(TARGET_NAME)_libretro.so
38    SHARED := -shared
39 else ifeq ($(platform), osx)
40    TARGET := $(TARGET_NAME)_libretro.dylib
41    SHARED := -dynamiclib
42    APPLE := 1
43
44    arch = intel
45 ifeq ($(shell uname -p),powerpc)
46    arch = ppc
47 endif
48
49 ifeq ($(arch),ppc)
50    CFLAGS += -DBLARGG_BIG_ENDIAN=1 -D__ppc__ -DFAMEC_NO_GOTOS
51 else
52    SHARED += -mmacosx-version-min=10.6
53 endif
54 else ifeq ($(platform), ios)
55    TARGET := $(TARGET_NAME)_libretro_ios.dylib
56    SHARED := -dynamiclib
57    APPLE := 1
58
59    CC = clang -arch armv7 -isysroot $(IOSSDK) -miphoneos-version-min=5.0
60    CXX = clang++ -arch armv7 -isysroot $(IOSSDK) -miphoneos-version-min=5.0
61    CC_AS = perl ./tools/gas-preprocessor.pl $(CC) -miphoneos-version-min=5.0
62    CFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon -marm 
63    ASFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon
64    CFLAGS += -DIOS -miphoneos-version-min=5.0
65
66    ARCH := arm
67
68    use_cyclone = 0
69    use_fame = 1
70    use_drz80 = 0
71    use_cz80 = 1
72    use_sh2drc = 1
73    use_svpdrc = 1
74
75 else ifeq ($(platform), ps3)
76    TARGET := $(TARGET_NAME)_libretro_ps3.a
77    CC = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-gcc.exe
78    AR = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ar.exe
79    CFLAGS += -DBLARGG_BIG_ENDIAN=1 -D__ppc__ -DFAMEC_NO_GOTOS
80         STATIC_LINKING = 1
81         NO_MMAP = 1
82         DONT_COMPILE_IN_ZLIB = 1
83
84         asm_memory = 0
85         asm_render = 0
86         asm_ym2612 = 0
87         asm_misc = 0
88         asm_cdpico = 0
89         asm_cdmemory = 0
90         asm_mix = 0
91    use_cyclone = 0
92    use_fame = 1
93    use_drz80 = 0
94    use_cz80 = 1
95 else ifeq ($(platform), sncps3)
96    TARGET := $(TARGET_NAME)_libretro_ps3.a
97    CC = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe
98    AR = $(CELL_SDK)/host-win32/sn/bin/ps3snarl.exe
99    CFLAGS += -DBLARGG_BIG_ENDIAN=1 -D__ppc__ -DFAMEC_NO_GOTOS
100         STATIC_LINKING = 1
101         NO_MMAP = 1
102         DONT_COMPILE_IN_ZLIB = 1
103
104         asm_memory = 0
105         asm_render = 0
106         asm_ym2612 = 0
107         asm_misc = 0
108         asm_cdpico = 0
109         asm_cdmemory = 0
110         asm_mix = 0
111    use_cyclone = 0
112    use_fame = 1
113    use_drz80 = 0
114    use_cz80 = 1
115 else ifeq ($(platform), psl1ght)
116    TARGET := $(TARGET_NAME)_libretro_psl1ght.a
117    CC = $(PS3DEV)/ppu/bin/ppu-gcc$(EXE_EXT)
118    AR = $(PS3DEV)/ppu/bin/ppu-ar$(EXE_EXT)
119    CFLAGS += -DBLARGG_BIG_ENDIAN=1 -D__ppc__ -DFAMEC_NO_GOTOS
120         STATIC_LINKING = 1
121         NO_MMAP = 1
122         DONT_COMPILE_IN_ZLIB = 1
123         
124         asm_memory = 0
125         asm_render = 0
126         asm_ym2612 = 0
127         asm_misc = 0
128         asm_cdpico = 0
129         asm_cdmemory = 0
130         asm_mix = 0
131    use_cyclone = 0
132    use_fame = 1
133    use_drz80 = 0
134    use_cz80 = 1
135 else ifeq ($(platform), psp1)
136    TARGET := $(TARGET_NAME)_libretro_psp1.a
137    CC = psp-gcc$(EXE_EXT)
138    AR = psp-ar$(EXE_EXT)
139    CFLAGS += -G0
140         STATIC_LINKING = 1
141         NO_MMAP = 1
142         DONT_COMPILE_IN_ZLIB = 1
143
144         asm_memory = 0
145         asm_render = 0
146         asm_ym2612 = 0
147         asm_misc = 0
148         asm_cdpico = 0
149         asm_cdmemory = 0
150         asm_mix = 0
151    use_cyclone = 0
152    use_fame = 1
153    use_drz80 = 0
154    use_cz80 = 1
155 else ifeq ($(platform), xenon)
156    TARGET := $(TARGET_NAME)_libretro_xenon360.a
157    CC = xenon-gcc$(EXE_EXT)
158    AR = xenon-ar$(EXE_EXT)
159    CFLAGS += -D__LIBXENON__ -m32 -D__ppc__
160 else ifeq ($(platform), ngc)
161    TARGET := $(TARGET_NAME)_libretro_ngc.a
162    CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT)
163    AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT)
164    CFLAGS += -DGEKKO -DHW_DOL -mrvl -mcpu=750 -meabi -mhard-float -DBLARGG_BIG_ENDIAN=1 -D__ppc__
165 else ifeq ($(platform), wii)
166    TARGET := libretro_$(TARGET_NAME)_wii.a
167    CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT)
168    AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT)
169    CFLAGS += -DGEKKO -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float -DBLARGG_BIG_ENDIAN=1 -D__ppc__
170 else ifeq ($(platform), qnx)
171    TARGET := $(TARGET_NAME)_libretro_qnx.so
172    CC = qcc -Vgcc_ntoarmv7le
173    CC_AS = $(CC)
174    CFLAGS += -DBASE_ADDR_FIXED=0 -D__BLACKBERRY_QNX__ -marm -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mfloat-abi=softfp
175    ASFLAGS +=  -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp
176
177    ARCH = arm
178    ARM_ASM = 1
179 else ifneq (,$(findstring armv,$(platform)))
180    TARGET := $(TARGET_NAME)_libretro.so
181    SHARED := -shared -Wl,--no-undefined
182 ifneq (,$(findstring cortexa8,$(platform)))
183    CFLAGS += -marm -mcpu=cortex-a8
184    ASFLAGS += -mcpu=cortex-a8
185 else ifneq (,$(findstring cortexa9,$(platform)))
186    CFLAGS += -marm -mcpu=cortex-a9
187    ASFLAGS += -mcpu=cortex-a9
188 endif
189    CFLAGS += -marm
190 ifneq (,$(findstring neon,$(platform)))
191    CFLAGS += -mfpu=neon
192    ASFLAGS += -mfpu=neon
193 endif
194 ifneq (,$(findstring softfloat,$(platform)))
195    CFLAGS += -mfloat-abi=softfp
196    ASFLAGS += -mfloat-abi=softfp
197 else ifneq (,$(findstring hardfloat,$(platform)))
198    CFLAGS += -mfloat-abi=hard
199    ASFLAGS += -mfloat-abi=hard
200 endif
201 ifneq (,$(findstring armasm,$(platform)))
202    ARM_ASM = 1
203 endif
204    ARCH = arm
205 else
206    TARGET := $(TARGET_NAME)_retro.dll
207    CC = gcc
208    LD_FLAGS := -fPIC
209    SHARED := -shared -static-libgcc -static-libstdc++
210    CFLAGS += -D__WIN32__ -D__WIN32_LIBRETRO__
211 endif
212
213 CFLAGS += -DNO_ZLIB
214
215 ifeq ($(NO_MMAP),1)
216 CFLAGS += -DNO_MMAP
217 endif
218
219 ifeq ($(ARM_ASM),1)
220 asm_memory = 1
221 asm_render = 1
222 asm_ym2612 = 1
223 asm_misc = 1
224 asm_cdpico = 1
225 asm_cdmemory = 1
226 asm_mix = 1
227 endif
228
229 CFLAGS += -fPIC
230 LDLIBS += -lm
231 SHARED ?= -shared
232 LDFLAGS += $(SHARED)
233
234 PLATFORM = libretro
235 NO_CONFIG_MAK = yes
236
237 include Makefile