Makefile 13.6 KB
Newer Older
Libretro-Admin's avatar
Libretro-Admin committed
1
2
3
DEBUG         := 0
NO_REND       := 0
HAVE_GL       := 1
Libretro-Admin's avatar
Libretro-Admin committed
4
HAVE_OIT      := 0
Libretro-Admin's avatar
Libretro-Admin committed
5
HAVE_CORE     := 0
Libretro-Admin's avatar
Libretro-Admin committed
6
NO_THREADS    := 1
Libretro-Admin's avatar
Libretro-Admin committed
7
NO_EXCEPTIONS := 0
Libretro-Admin's avatar
Typo    
Libretro-Admin committed
8
NO_NVMEM      := 0
9
NO_VERIFY     := 1
Libretro-Admin's avatar
Libretro-Admin committed
10
HAVE_GENERIC_JIT   := 1
Libretro-Admin's avatar
Libretro-Admin committed
11
FORCE_GLES    := 0
12
STATIC_LINKING:= 0
Libretro-Admin's avatar
Libretro-Admin committed
13

Libretro-Admin's avatar
Libretro-Admin committed
14
15
16
ifeq ($(HAVE_OIT), 1)
TARGET_NAME   := reicast_oit
else
Libretro-Admin's avatar
Libretro-Admin committed
17
TARGET_NAME   := reicast
Libretro-Admin's avatar
Libretro-Admin committed
18
endif
Libretro-Admin's avatar
Update    
Libretro-Admin committed
19

20
21
22
23
CXX      = ${CC_PREFIX}g++
CC       = ${CC_PREFIX}gcc
CC_AS    = ${CC_PREFIX}as

Libretro-Admin's avatar
Updates    
Libretro-Admin committed
24
25
26
27
MFLAGS   := 
ASFLAGS  := 
LDFLAGS  :=
INCFLAGS :=
Libretro-Admin's avatar
Libretro-Admin committed
28
29
LIBS     :=
CFLAGS   := 
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
30
31
CXXFLAGS :=

David Walters's avatar
David Walters committed
32
33
34
35
36
GIT_VERSION := " $(shell git rev-parse --short HEAD || echo unknown)"
ifneq ($(GIT_VERSION)," unknown")
   CXXFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\"
endif

Libretro-Admin's avatar
Libretro-Admin committed
37
38
39
40
41
42
43
44
UNAME=$(shell uname -a)

LIBRETRO_DIR := .

# Cross compile ?

ifeq (,$(ARCH))
	ARCH = $(shell uname -m)
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
45
46
endif

Libretro-Admin's avatar
Libretro-Admin committed
47
48
# Target Dynarec
WITH_DYNAREC = $(ARCH)
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
49

Libretro-Admin's avatar
Libretro-Admin committed
50
51
ifeq ($(ARCH), $(filter $(ARCH), i386 i686))
	WITH_DYNAREC = x86
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
52
53
endif

Libretro-Admin's avatar
Libretro-Admin committed
54
55
ifeq ($(platform),)
	platform = unix
gizmo98's avatar
gizmo98 committed
56
57
58
59
60
61
62
63
64
	ifeq ($(UNAME),)
		platform = win
	else ifneq ($(findstring MINGW,$(UNAME)),)
		platform = win
	else ifneq ($(findstring Darwin,$(UNAME)),)
		platform = osx
	else ifneq ($(findstring win,$(UNAME)),)
		platform = win
	endif
Libretro-Admin's avatar
Libretro-Admin committed
65
66
67
68
69
70
71
72
73
74
endif

# system platform
system_platform = unix
ifeq ($(shell uname -a),)
	EXE_EXT = .exe
	system_platform = win
else ifneq ($(findstring Darwin,$(shell uname -a)),)
	system_platform = osx
	arch = intel
gizmo98's avatar
gizmo98 committed
75
76
77
	ifeq ($(shell uname -p),powerpc)
		arch = ppc
	endif
Libretro-Admin's avatar
Libretro-Admin committed
78
79
80
81
else ifneq ($(findstring MINGW,$(shell uname -a)),)
	system_platform = win
endif

82
CORE_DIR := core
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
83
84

DYNAREC_USED = 0
Libretro-Admin's avatar
Libretro-Admin committed
85
CORE_DEFINES   := -D__LIBRETRO__
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
86

87
ifeq ($(NO_VERIFY),1)
Libretro-Admin's avatar
Libretro-Admin committed
88
	CORE_DEFINES += -DNO_VERIFY
89
90
endif

Libretro-Admin's avatar
Libretro-Admin committed
91
DC_PLATFORM=dreamcast
Libretro-Admin's avatar
Libretro-Admin committed
92

Libretro-Admin's avatar
Libretro-Admin committed
93
94
95
96
97
HOST_CPU_X86=0x20000001
HOST_CPU_ARM=0x20000002
HOST_CPU_MIPS=0x20000003
HOST_CPU_X64=0x20000004

98
99
ifeq ($(STATIC_LINKING),1)
EXT=a
Libretro-Admin's avatar
Libretro-Admin committed
100

101
endif
Libretro-Admin's avatar
Libretro-Admin committed
102
103
104

# Unix
ifneq (,$(findstring unix,$(platform)))
105
	EXT    ?= so
Libretro-Admin's avatar
Libretro-Admin committed
106
   TARGET := $(TARGET_NAME)_libretro.$(EXT)
107
108
	SHARED := -shared -Wl,--version-script=link.T
	LDFLAGS +=  -Wl,--no-undefined
kwyxz's avatar
kwyxz committed
109
110
111
ifneq (,$(findstring Haiku,$(shell uname -s)))
	LIBS += -lroot
else
112
	LIBS += -lrt
kwyxz's avatar
kwyxz committed
113
endif
Libretro-Admin's avatar
Libretro-Admin committed
114
115
116

	fpic = -fPIC

gizmo98's avatar
gizmo98 committed
117
	ifeq ($(WITH_DYNAREC), $(filter $(WITH_DYNAREC), x86_64 x64))
Libretro-Admin's avatar
Libretro-Admin committed
118
119
120
		CFLAGS += -DTARGET_LINUX_x64 -D TARGET_NO_AREC
		SINGLE_PREC_FLAGS=1
		CXXFLAGS += -fexceptions
gizmo98's avatar
gizmo98 committed
121
	else ifeq ($(WITH_DYNAREC), x86)
Libretro-Admin's avatar
Libretro-Admin committed
122
123
124
125
126
127
		CFLAGS += -m32 -D TARGET_LINUX_x86 -D TARGET_NO_AREC
		SINGLE_PREC_FLAGS=1
    		CXXFLAGS += -fno-exceptions
		MFLAGS += -m32
    		ASFLAGS += --32
    		LDFLAGS += -m32
gizmo98's avatar
gizmo98 committed
128
	endif
Libretro-Admin's avatar
Libretro-Admin committed
129
130
131
132
133

	PLATFORM_EXT := unix

# Raspberry Pi
else ifneq (,$(findstring rpi,$(platform)))
134
135
136
	EXT    ?= so
	TARGET := $(TARGET_NAME)_libretro.$(EXT)
	SHARED := -shared -Wl,--version-script=link.T
Libretro-Admin's avatar
Libretro-Admin committed
137
	fpic = -fPIC
138
	LIBS += -lrt
139
140
141
	ARM_FLOAT_ABI_HARD = 1
	SINGLE_PREC_FLAGS = 1
	
gizmo98's avatar
gizmo98 committed
142
	ifeq (,$(findstring mesa,$(platform)))
gizmo98's avatar
gizmo98 committed
143
144
		GLES = 1
		GL_LIB := -L/opt/vc/lib -lbrcmGLESv2
gizmo98's avatar
gizmo98 committed
145
		INCFLAGS += -I/opt/vc/include
gizmo98's avatar
gizmo98 committed
146
147
	else
		FORCE_GLES = 1
gizmo98's avatar
gizmo98 committed
148
	endif
149

Libretro-Admin's avatar
Libretro-Admin committed
150
	ifneq (,$(findstring rpi2,$(platform)))
gizmo98's avatar
gizmo98 committed
151
152
153
154
155
		CFLAGS += -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard
		CXXFLAGS += -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard
	else ifneq (,$(findstring rpi3,$(platform)))
		CFLAGS += -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard
		CXXFLAGS += -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard
Libretro-Admin's avatar
Libretro-Admin committed
156
	endif
157

Libretro-Admin's avatar
Libretro-Admin committed
158
159
160
161
162
	PLATFORM_EXT := unix
	WITH_DYNAREC=arm

# ODROIDs
else ifneq (,$(findstring odroid,$(platform)))
163
164
	EXT    ?= so
	TARGET := $(TARGET_NAME)_libretro.$(EXT)
gizmo98's avatar
gizmo98 committed
165
166
167
	ifeq ($(BOARD),1)
		BOARD := $(shell cat /proc/cpuinfo | grep -i odroid | awk '{print $$3}')
	endif
168
	SHARED := -shared -Wl,--version-script=link.T
Libretro-Admin's avatar
Libretro-Admin committed
169
	fpic = -fPIC
170
	LIBS += -lrt
gizmo98's avatar
gizmo98 committed
171
172
173
174
	ARM_FLOAT_ABI_HARD = 1
	FORCE_GLES = 1
	SINGLE_PREC_FLAGS = 1

Libretro-Admin's avatar
Libretro-Admin committed
175
176
	CFLAGS += -marm -mfloat-abi=hard -mfpu=neon
	CXXFLAGS += -marm -mfloat-abi=hard -mfpu=neon
177

Libretro-Admin's avatar
Libretro-Admin committed
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
	ifneq (,$(findstring ODROIDC,$(BOARD)))
		# ODROID-C1
		CFLAGS += -mcpu=cortex-a5
		CXXFLAGS += -mcpu=cortex-a5
	else ifneq (,$(findstring ODROID-XU3,$(BOARD)))
		# ODROID-XU3 & -XU3 Lite
		ifeq "$(shell expr `gcc -dumpversion` \>= 4.9)" "1"
			CFLAGS += -march=armv7ve -mcpu=cortex-a15.cortex-a7
			CXXFLAGS += -march=armv7ve -mcpu=cortex-a15.cortex-a7
		else
			CFLAGS += -mcpu=cortex-a9
			CXXFLAGS += -mcpu=cortex-a9
		endif
	else
		# ODROID-U2, -U3, -X & -X2
		CFLAGS += -mcpu=cortex-a9
		CXXFLAGS += -mcpu=cortex-a9
	endif
196
197
198
199

	#Since we are using GCC, we use the CFLAGS and we add some extra parameters to be able to compile (taken from reicast/reicast-emulator)
	ASFLAGS += $(CFLAGS) -c  -frename-registers -fno-strict-aliasing -ffast-math -ftree-vectorize

Libretro-Admin's avatar
Libretro-Admin committed
200
201
202
203
204
	PLATFORM_EXT := unix
	WITH_DYNAREC=arm

# i.MX6
else ifneq (,$(findstring imx6,$(platform)))
205
206
207
	EXT    ?= so
	TARGET := $(TARGET_NAME)_libretro.$(EXT)
	SHARED := -shared -Wl,--version-script=link.T
Libretro-Admin's avatar
Libretro-Admin committed
208
	fpic = -fPIC
gizmo98's avatar
gizmo98 committed
209
	FORCE_GLES = 1
210
	LIBS += -lrt
Libretro-Admin's avatar
Libretro-Admin committed
211
212
213
214
215
216
	CPUFLAGS += -DNO_ASM
	PLATFORM_EXT := unix
	WITH_DYNAREC=arm

# OS X
else ifneq (,$(findstring osx,$(platform)))
217
218
219
	EXT    ?= dylib
	TARGET := $(TARGET_NAME)_libretro.$(EXT)
	SHARED += -dynamiclib
Libretro-Admin's avatar
Libretro-Admin committed
220
221
	OSXVER = `sw_vers -productVersion | cut -d. -f 2`
	OSX_LT_MAVERICKS = `(( $(OSXVER) <= 9)) && echo "YES"`
222
        fpic += -mmacosx-version-min=10.7
Libretro-Admin's avatar
Libretro-Admin committed
223
224
	LDFLAGS += -stdlib=libc++
	fpic = -fPIC
225
	CFLAGS += -D TARGET_NO_AREC
Libretro-Admin's avatar
Libretro-Admin committed
226
227
228
229
230
231

	PLATCFLAGS += -D__MACOSX__ -DOSX
	GL_LIB := -framework OpenGL
	PLATFORM_EXT := unix

	# Target Dynarec
232
233
234
	ifeq ($(ARCH), $(filter $(ARCH), ppc))
		WITH_DYNAREC =
	endif
Libretro-Admin's avatar
Libretro-Admin committed
235
236
237

# iOS
else ifneq (,$(findstring ios,$(platform)))
238
	EXT    ?= dylib
Libretro-Admin's avatar
Libretro-Admin committed
239
240
241
242
	ifeq ($(IOSSDK),)
		IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path)
	endif

243
	TARGET := $(TARGET_NAME)_libretro_ios.$(EXT)
Libretro-Admin's avatar
Libretro-Admin committed
244
245
	DEFINES += -DIOS
	GLES = 1
246
	WITH_DYNAREC=
Libretro-Admin's avatar
Libretro-Admin committed
247
	PLATFORM_EXT := unix
248
	#HOST_CPU_FLAGS = -DHOST_CPU=$(HOST_CPU_ARM)
Libretro-Admin's avatar
Libretro-Admin committed
249
250
251
252
253

	PLATCFLAGS += -DHAVE_POSIX_MEMALIGN -DNO_ASM
	PLATCFLAGS += -DIOS -marm
	CPUFLAGS += -DNO_ASM  -DARM -D__arm__ -DARM_ASM -D__NEON_OPT
	CPUFLAGS += -marm -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp
254
	SHARED += -dynamiclib
Libretro-Admin's avatar
Libretro-Admin committed
255
256
257
258
259
260
261

	fpic = -fPIC
	GL_LIB := -framework OpenGLES

	CC = clang -arch armv7 -isysroot $(IOSSDK)
	CC_AS = perl ./tools/gas-preprocessor.pl $(CC)
	CXX = clang++ -arch armv7 -isysroot $(IOSSDK)
gizmo98's avatar
gizmo98 committed
262
263
264
265
266
267
268
269
270
271
272
	ifeq ($(platform),ios9)
		CC         += -miphoneos-version-min=8.0
		CC_AS      += -miphoneos-version-min=8.0
		CXX        += -miphoneos-version-min=8.0
		PLATCFLAGS += -miphoneos-version-min=8.0
	else
		CC += -miphoneos-version-min=5.0
		CC_AS += -miphoneos-version-min=5.0
		CXX += -miphoneos-version-min=5.0
		PLATCFLAGS += -miphoneos-version-min=5.0
	endif
Libretro-Admin's avatar
Libretro-Admin committed
273
274
275
276
277
278
279
280
281
282
283
284

# Theos iOS
else ifneq (,$(findstring theos_ios,$(platform)))
	DEPLOYMENT_IOSVERSION = 5.0
	TARGET = iphone:latest:$(DEPLOYMENT_IOSVERSION)
	ARCHS = armv7
	TARGET_IPHONEOS_DEPLOYMENT_VERSION=$(DEPLOYMENT_IOSVERSION)
	THEOS_BUILD_DIR := objs
	include $(THEOS)/makefiles/common.mk

	LIBRARY_NAME = $(TARGET_NAME)_libretro_ios
	DEFINES += -DIOS
gizmo98's avatar
gizmo98 committed
285
	FORCE_GLES = 1
Libretro-Admin's avatar
Libretro-Admin committed
286
287
288
289
290
291
292
293
294
295
	WITH_DYNAREC=arm

	PLATCFLAGS += -DHAVE_POSIX_MEMALIGN -DNO_ASM
	PLATCFLAGS += -DIOS -marm
	CPUFLAGS += -DNO_ASM  -DARM -D__arm__ -DARM_ASM -D__NEON_OPT -DNOSSE


# Android
else ifneq (,$(findstring android,$(platform)))
	fpic = -fPIC
296
297
298
	EXT       ?= so
	TARGET := $(TARGET_NAME)_libretro_android.$(EXT)
	SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined -Wl,--warn-common
Libretro-Admin's avatar
Libretro-Admin committed
299
300
301
302

	CC = arm-linux-androideabi-gcc
	CXX = arm-linux-androideabi-g++
	WITH_DYNAREC=arm
gizmo98's avatar
gizmo98 committed
303
	FORCE_GLES = 1
Libretro-Admin's avatar
Libretro-Admin committed
304
305
306
307
308
309
310
311
312
313
	PLATCFLAGS += -DANDROID
	CPUCFLAGS  += -DNO_ASM
	CPUFLAGS += -marm -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -D__arm__ -DARM_ASM -D__NEON_OPT
	CFLAGS += -DANDROID

	PLATFORM_EXT := unix

# QNX
else ifeq ($(platform), qnx)
	fpic = -fPIC
314
	EXT       ?= so
Libretro-Admin's avatar
Libretro-Admin committed
315
	TARGET := $(TARGET_NAME)_libretro_$(platform).$(EXT)
316
	SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined -Wl,--warn-common
Libretro-Admin's avatar
Libretro-Admin committed
317
318
319
320
321
322

	CC = qcc -Vgcc_ntoarmv7le
	CC_AS = qcc -Vgcc_ntoarmv7le
	CXX = QCC -Vgcc_ntoarmv7le
	AR = QCC -Vgcc_ntoarmv7le
	WITH_DYNAREC=arm
gizmo98's avatar
gizmo98 committed
323
	FORCE_GLES = 1
Libretro-Admin's avatar
Libretro-Admin committed
324
325
326
327
328
329
330
331
	PLATCFLAGS += -DNO_ASM -D__BLACKBERRY_QNX__
	CPUFLAGS += -marm -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp -D__arm__ -DARM_ASM -D__NEON_OPT
	CFLAGS += -D__QNX__

	PLATFORM_EXT := unix

# ARM
else ifneq (,$(findstring armv,$(platform)))
332
333
334
	EXT       ?= so
	TARGET := $(TARGET_NAME)_libretro.$(EXT)
	SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined
Libretro-Admin's avatar
Libretro-Admin committed
335
336
337
338
339
	fpic := -fPIC
	CPUFLAGS += -DNO_ASM -DARM -D__arm__ -DARM_ASM -DNOSSE
	WITH_DYNAREC=arm
	PLATCFLAGS += -DARM
	ifneq (,$(findstring gles,$(platform)))
gizmo98's avatar
gizmo98 committed
340
		FORCE_GLES = 1
Libretro-Admin's avatar
Libretro-Admin committed
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
	endif
	ifneq (,$(findstring cortexa5,$(platform)))
		CPUFLAGS += -marm -mcpu=cortex-a5
	else ifneq (,$(findstring cortexa8,$(platform)))
		CPUFLAGS += -marm -mcpu=cortex-a8
	else ifneq (,$(findstring cortexa9,$(platform)))
		CPUFLAGS += -marm -mcpu=cortex-a9
	else ifneq (,$(findstring cortexa15a7,$(platform)))
		CPUFLAGS += -marm -mcpu=cortex-a15.cortex-a7
	else
		CPUFLAGS += -marm
	endif
	ifneq (,$(findstring neon,$(platform)))
		CPUFLAGS += -D__NEON_OPT -mfpu=neon
	endif
	ifneq (,$(findstring softfloat,$(platform)))
		CPUFLAGS += -mfloat-abi=softfp
	else ifneq (,$(findstring hardfloat,$(platform)))
		CPUFLAGS += -mfloat-abi=hard
	endif

# emscripten
else ifeq ($(platform), emscripten)
364
	EXT       ?= bc
Libretro-Admin's avatar
Libretro-Admin committed
365
	TARGET := $(TARGET_NAME)_libretro_$(platform).$(EXT)
gizmo98's avatar
gizmo98 committed
366
	FORCE_GLES := 1
367
	WITH_DYNAREC=
Libretro-Admin's avatar
Libretro-Admin committed
368
369
	CPUFLAGS += -Dasm=asmerror -D__asm__=asmerror -DNO_ASM -DNOSSE
	SINGLE_THREAD := 1
370
371
	PLATCFLAGS += -Drglgen_resolve_symbols_custom=reicast_rglgen_resolve_symbols_custom \
					  -Drglgen_resolve_symbols=reicast_rglgen_resolve_symbols
Libretro-Admin's avatar
Libretro-Admin committed
372

gizmo98's avatar
gizmo98 committed
373
	NO_REC=0
Libretro-Admin's avatar
Libretro-Admin committed
374
375
376
377
	PLATFORM_EXT := unix
	#HAVE_SHARED_CONTEXT := 1

# Windows
Libretro-Admin's avatar
Libretro-Admin committed
378
else
379
380
	EXT       ?= dll
	TARGET := $(TARGET_NAME)_libretro.$(EXT)
Libretro-Admin's avatar
Libretro-Admin committed
381
	LDFLAGS += -shared -static-libgcc -static-libstdc++ -Wl,--version-script=link.T -lwinmm -lgdi32
Libretro-Admin's avatar
Libretro-Admin committed
382
383
384
385
	GL_LIB := -lopengl32
	PLATFORM_EXT := win32
	CC = gcc
	CXX = g++
386
ifeq ($(WITH_DYNAREC), x86)
387
	LDFLAGS += -m32
mudlord's avatar
mudlord committed
388
	CFLAGS += -D TARGET_NO_AREC -m32
389
endif
Libretro-Admin's avatar
Libretro-Admin committed
390
391
	CFLAGS += -D TARGET_NO_AREC

Libretro-Admin's avatar
Libretro-Admin committed
392
393
endif

394
ifeq ($(STATIC_LINKING),1)
gizmo98's avatar
gizmo98 committed
395
396
	fpic=
	SHARED=
397
398
endif

399
ifeq ($(SINGLE_PREC_FLAGS),1)
Libretro-Admin's avatar
Libretro-Admin committed
400
	CORE_DEFINES += -fsingle-precision-constant
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
endif

ifeq ($(ARMV7A_FLAGS),1)
	MFLAGS += -marm -march=armv7-a
	ASFLAGS += -march=armv7-a
endif

ifeq ($(ARMV7_CORTEX_A9_FLAGS),1)
	MFLAGS += -mcpu=cortex-a9
endif

ifeq ($(ARM_FLOAT_ABI_HARD),1)
	MFLAGS += -mfloat-abi=hard
	ASFLAGS += -mfloat-abi=hard
	CFLAGS += -DARM_HARDFP
endif

Libretro-Admin's avatar
Libretro-Admin committed
418
ifeq ($(DEBUG),1)
Libretro-Admin's avatar
Libretro-Admin committed
419
	HAVE_GENERIC_JIT = 0
Libretro-Admin's avatar
Libretro-Admin committed
420
421
endif

422
ifeq ($(HAVE_GENERIC_JIT),1)
Libretro-Admin's avatar
Libretro-Admin committed
423
	CORE_DEFINES += -DTARGET_NO_JIT
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
	CXXFLAGS     += -std=c++11
endif

ifeq ($(WITH_DYNAREC), $(filter $(WITH_DYNAREC), x86_64 x64))
	HOST_CPU_FLAGS = -DHOST_CPU=$(HOST_CPU_X64)
endif

ifeq ($(WITH_DYNAREC), x86)
	HOST_CPU_FLAGS = -DHOST_CPU=$(HOST_CPU_X86)
endif

ifeq ($(WITH_DYNAREC), arm)
	HOST_CPU_FLAGS = -DHOST_CPU=$(HOST_CPU_ARM)
endif

ifeq ($(WITH_DYNAREC), mips)
	HOST_CPU_FLAGS = -DHOST_CPU=$(HOST_CPU_MIPS)
endif

ifeq ($(FORCE_GLES),1)
	GLES = 1
	GL_LIB := -lGLESv2
else ifneq (,$(findstring gles,$(platform)))
	GLES = 1
	GL_LIB := -lGLESv2
Libretro-Admin's avatar
Libretro-Admin committed
449
450
else ifeq ($(platform), win)
	GL_LIB := -lopengl32
Libretro-Admin's avatar
Libretro-Admin committed
451
452
453
454
else ifneq (,$(findstring osx,$(platform)))
	GL_LIB := -framework OpenGL
else ifneq (,$(findstring ios,$(platform)))
	GL_LIB := -framework OpenGLES
455
456
457
458
else
	GL_LIB := -lGL
endif

gizmo98's avatar
gizmo98 committed
459
460
CFLAGS       += $(HOST_CPU_FLAGS)
CXXFLAGS     += $(HOST_CPU_FLAGS)
Libretro-Admin's avatar
Libretro-Admin committed
461
462
RZDCY_CFLAGS += $(HOST_CPU_FLAGS)

Libretro-Admin's avatar
Updates    
Libretro-Admin committed
463
464
include Makefile.common

Libretro-Admin's avatar
Libretro-Admin committed
465
ifeq ($(DEBUG),1)
gizmo98's avatar
gizmo98 committed
466
467
468
	OPTFLAGS       := -O0
	LDFLAGS        += -g
	CFLAGS         += -g
Libretro-Admin's avatar
Libretro-Admin committed
469
else
Libretro-Admin's avatar
Libretro-Admin committed
470
ifneq (,$(findstring msvc,$(platform)))
gizmo98's avatar
gizmo98 committed
471
	OPTFLAGS       := -O2
Libretro-Admin's avatar
Libretro-Admin committed
472
473
474
else
	OPTFLAGS       := -O3
endif
Libretro-Admin's avatar
Libretro-Admin committed
475
	CORE_DEFINES   += -DNDEBUG -flto
gizmo98's avatar
gizmo98 committed
476
	LDFLAGS        += -DNDEBUG
Libretro-Admin's avatar
Libretro-Admin committed
477
endif
gizmo98's avatar
gizmo98 committed
478

Libretro-Admin's avatar
Libretro-Admin committed
479
480
CORE_DEFINES      += -DRELEASE -D__LIBRETRO__
RZDCY_CFLAGS	+= $(CFLAGS) -c $(OPTFLAGS) -frename-registers -ffast-math -ftree-vectorize -fomit-frame-pointer 
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
481
482

ifeq ($(WITH_DYNAREC), arm)
gizmo98's avatar
gizmo98 committed
483
484
	RZDCY_CFLAGS += -march=armv7-a -mcpu=cortex-a9 -mfpu=vfpv3-d16
	RZDCY_CFLAGS += -DTARGET_LINUX_ARMELv7
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
485
else
gizmo98's avatar
gizmo98 committed
486
	RZDCY_CFLAGS += -DTARGET_LINUX_x86
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
487
488
endif

489
ifeq ($(NO_THREADS),1)
Libretro-Admin's avatar
Libretro-Admin committed
490
	CORE_DEFINES += -DTARGET_NO_THREADS
Libretro-Admin's avatar
Libretro-Admin committed
491
else
gizmo98's avatar
gizmo98 committed
492
	LIBS         += -lpthread
Libretro-Admin's avatar
Libretro-Admin committed
493
494
endif

495
ifeq ($(NO_REC),1)
Libretro-Admin's avatar
Libretro-Admin committed
496
	CORE_DEFINES += -DTARGET_NO_REC
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
497
498
endif

Libretro-Admin's avatar
Libretro-Admin committed
499
ifeq ($(NO_REND),1)
Libretro-Admin's avatar
Libretro-Admin committed
500
	CORE_DEFINES += -DNO_REND=1
Libretro-Admin's avatar
Libretro-Admin committed
501
502
endif

Libretro-Admin's avatar
Libretro-Admin committed
503
ifeq ($(NO_EXCEPTIONS),1)
Libretro-Admin's avatar
Libretro-Admin committed
504
	CORE_DEFINES += -DTARGET_NO_EXCEPTIONS=1
Libretro-Admin's avatar
Libretro-Admin committed
505
506
endif

Libretro-Admin's avatar
Libretro-Admin committed
507
ifeq ($(NO_NVMEM),1)
Libretro-Admin's avatar
Libretro-Admin committed
508
	CORE_DEFINES += -DTARGET_NO_NVMEM=1
Libretro-Admin's avatar
Libretro-Admin committed
509
510
endif

Libretro-Admin's avatar
Libretro-Admin committed
511
RZDCY_CXXFLAGS := $(RZDCY_CFLAGS) -fexceptions -fno-rtti -std=gnu++11
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
512

Libretro-Admin's avatar
Libretro-Admin committed
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
ifeq (,$(findstring msvc,$(platform)))
CORE_DEFINES   += -funroll-loops
endif

ifeq ($(HAVE_OIT), 1)
CORE_DEFINES += -DHAVE_OIT
endif

ifeq ($(HAVE_GL), 1)
	ifeq ($(GLES),1)
		CORE_DEFINES += -DHAVE_OPENGLES -DHAVE_OPENGLES2
	else
		CORE_DEFINES += -DHAVE_OPENGL
	endif
endif

ifeq ($(HAVE_CORE), 1)
	CORE_DEFINES += -DCORE
endif

RZDCY_CFLAGS   += $(CORE_DEFINES)
RZDCY_CXXFLAGS += $(CORE_DEFINES)
CFLAGS         += $(CORE_DEFINES)
CXXFLAGS       += $(CORE_DEFINES)

CFLAGS   += $(OPTFLAGS) -c
Libretro-Admin's avatar
Libretro-Admin committed
539
CFLAGS   += -fno-strict-aliasing -ffast-math
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
540
CXXFLAGS += -fno-rtti -fpermissive -fno-operator-names
Libretro-Admin's avatar
Libretro-Admin committed
541
LIBS     += -lm 
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
542
543
544

PREFIX        ?= /usr/local

gizmo98's avatar
gizmo98 committed
545
ifneq (,$(findstring arm, $(ARCH)))
546
547
	CC_AS    = ${CC_PREFIX}gcc #The ngen_arm.S must be compiled with gcc, not as
	ASFLAGS  += $(CFLAGS)
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
548
549
endif

550
ifeq ($(PGO_MAKE),1)
gizmo98's avatar
gizmo98 committed
551
552
	CFLAGS += -fprofile-generate -pg
	LDFLAGS += -fprofile-generate
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
553
else
gizmo98's avatar
gizmo98 committed
554
	CFLAGS += -fomit-frame-pointer
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
555
556
endif

557
ifeq ($(PGO_USE),1)
gizmo98's avatar
gizmo98 committed
558
	CFLAGS += -fprofile-use
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
559
560
endif

561
ifeq ($(LTO_TEST),1)
gizmo98's avatar
gizmo98 committed
562
563
	CFLAGS += -flto -fwhole-program 
	LDFLAGS +=-flto -fwhole-program 
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
564
565
endif

Libretro-Admin's avatar
Libretro-Admin committed
566
567
568
CFLAGS     += $(fpic)
CXXFLAGS   += $(fpic)
LDFLAGS    += $(fpic)
Libretro-Admin's avatar
Update    
Libretro-Admin committed
569

Libretro-Admin's avatar
Updates    
Libretro-Admin committed
570
571
OBJECTS := $(SOURCES_CXX:.cpp=.o) $(SOURCES_C:.c=.o) $(SOURCES_ASM:.S=.o)

Libretro-Admin's avatar
Libretro-Admin committed
572
573
574
575
576
577
578
579
ifneq (,$(findstring msvc,$(platform)))
	OBJOUT = -Fo
	LINKOUT = -out:
	LD = link.exe
else
	LD = $(CXX)
endif

Libretro-Admin's avatar
Updates    
Libretro-Admin committed
580
581
all: $(TARGET)	
$(TARGET): $(OBJECTS)
582
583
584
ifeq ($(STATIC_LINKING), 1)
	$(AR) rcs $@ $(OBJECTS)
else
Libretro-Admin's avatar
Libretro-Admin committed
585
	$(LD) $(MFLAGS) $(fpic) $(SHARED) $(LDFLAGS) $(OBJECTS) $(GL_LIB) $(LIBS) -o $@
586
endif
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
587
588

%.o: %.cpp
589
	$(CXX) $(INCFLAGS) $(CFLAGS) $(MFLAGS) $(CXXFLAGS) $< -o $@
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
590
591
	
%.o: %.c
592
	$(CC) $(INCFLAGS) $(CFLAGS) $(MFLAGS) $< -o $@
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
593
594
595
596
597

%.o: %.S
	$(CC_AS) $(ASFLAGS) $(INCFLAGS) $< -o $@

clean:
Libretro-Admin's avatar
Libretro-Admin committed
598
	rm -f $(OBJECTS) $(TARGET)
Libretro-Admin's avatar
Libretro-Admin committed
599