Makefile 14.7 KB
Newer Older
Libretro-Admin's avatar
Libretro-Admin committed
1
2
3
DEBUG         := 0
NO_REND       := 0
HAVE_GL       := 1
4
HAVE_GL2      := 0
Libretro-Admin's avatar
Libretro-Admin committed
5
HAVE_OIT      := 0
Libretro-Admin's avatar
Libretro-Admin committed
6
HAVE_CORE     := 0
Libretro-Admin's avatar
Libretro-Admin committed
7
NO_THREADS    := 0
Libretro-Admin's avatar
Libretro-Admin committed
8
NO_EXCEPTIONS := 0
Libretro-Admin's avatar
Typo    
Libretro-Admin committed
9
NO_NVMEM      := 0
10
NO_VERIFY     := 1
Libretro-Admin's avatar
Libretro-Admin committed
11
HAVE_LTCG     := 1
Libretro-Admin's avatar
Libretro-Admin committed
12
HAVE_GENERIC_JIT   := 1
13
HAVE_GL3      := 0
Libretro-Admin's avatar
Libretro-Admin committed
14
FORCE_GLES    := 0
15
STATIC_LINKING:= 0
16
HAVE_TEXUPSCALE := 1
Libretro-Admin's avatar
Libretro-Admin committed
17
HAVE_OPENMP   := 1
Libretro-Admin's avatar
Libretro-Admin committed
18

Libretro-Admin's avatar
Libretro-Admin committed
19
ifeq ($(HAVE_OIT), 1)
orbea's avatar
orbea committed
20
	TARGET_NAME   := reicast_oit
Libretro-Admin's avatar
Libretro-Admin committed
21
else
orbea's avatar
orbea committed
22
	TARGET_NAME   := reicast
Libretro-Admin's avatar
Libretro-Admin committed
23
endif
Libretro-Admin's avatar
Update    
Libretro-Admin committed
24

25
26
27
28
CXX      = ${CC_PREFIX}g++
CC       = ${CC_PREFIX}gcc
CC_AS    = ${CC_PREFIX}as

Libretro-Admin's avatar
Updates    
Libretro-Admin committed
29
30
31
MFLAGS   := 
ASFLAGS  := 
LDFLAGS  :=
32
LDFLAGS_END :=
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
33
INCFLAGS :=
Libretro-Admin's avatar
Libretro-Admin committed
34
35
LIBS     :=
CFLAGS   := 
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
36
37
CXXFLAGS :=

David Walters's avatar
David Walters committed
38
39
GIT_VERSION := " $(shell git rev-parse --short HEAD || echo unknown)"
ifneq ($(GIT_VERSION)," unknown")
orbea's avatar
orbea committed
40
	CXXFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\"
David Walters's avatar
David Walters committed
41
42
endif

Libretro-Admin's avatar
Libretro-Admin committed
43
44
45
46
47
48
49
50
UNAME=$(shell uname -a)

LIBRETRO_DIR := .

# Cross compile ?

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

Libretro-Admin's avatar
Libretro-Admin committed
53
54
# Target Dynarec
WITH_DYNAREC = $(ARCH)
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
55

Libretro-Admin's avatar
Libretro-Admin committed
56
57
ifeq ($(ARCH), $(filter $(ARCH), i386 i686))
	WITH_DYNAREC = x86
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
58
59
endif

Libretro-Admin's avatar
Libretro-Admin committed
60
61
ifeq ($(platform),)
	platform = unix
gizmo98's avatar
gizmo98 committed
62
63
64
65
66
67
68
69
70
	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
71
72
73
74
75
76
77
78
79
80
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
81
82
83
	ifeq ($(shell uname -p),powerpc)
		arch = ppc
	endif
Libretro-Admin's avatar
Libretro-Admin committed
84
85
86
87
else ifneq ($(findstring MINGW,$(shell uname -a)),)
	system_platform = win
endif

Libretro-Admin's avatar
Libretro-Admin committed
88
CORE_DIR := .
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
89
90

DYNAREC_USED = 0
Libretro-Admin's avatar
Libretro-Admin committed
91
CORE_DEFINES   := -D__LIBRETRO__
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
92

93
ifeq ($(NO_VERIFY),1)
orbea's avatar
orbea committed
94
	CORE_DEFINES += -DNO_VERIFY
95
96
endif

Libretro-Admin's avatar
Libretro-Admin committed
97
DC_PLATFORM=dreamcast
Libretro-Admin's avatar
Libretro-Admin committed
98

Libretro-Admin's avatar
Libretro-Admin committed
99
100
101
102
103
HOST_CPU_X86=0x20000001
HOST_CPU_ARM=0x20000002
HOST_CPU_MIPS=0x20000003
HOST_CPU_X64=0x20000004

104
ifeq ($(STATIC_LINKING),1)
orbea's avatar
orbea committed
105
	EXT=a
106
endif
Libretro-Admin's avatar
Libretro-Admin committed
107
108
109

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

120
121
122
123
	ifneq ($(HAVE_GL2), 1)
		ifneq ($(HAVE_OIT), 1)
			HAVE_GL3 = 1
		endif
orbea's avatar
orbea committed
124
125
	endif

Libretro-Admin's avatar
Libretro-Admin committed
126
127
	fpic = -fPIC

gizmo98's avatar
gizmo98 committed
128
	ifeq ($(WITH_DYNAREC), $(filter $(WITH_DYNAREC), x86_64 x64))
Libretro-Admin's avatar
Libretro-Admin committed
129
130
131
		CFLAGS += -DTARGET_LINUX_x64 -D TARGET_NO_AREC
		SINGLE_PREC_FLAGS=1
		CXXFLAGS += -fexceptions
132
		HAVE_GENERIC_JIT   = 0
gizmo98's avatar
gizmo98 committed
133
	else ifeq ($(WITH_DYNAREC), x86)
134
		CFLAGS += -m32 -D TARGET_LINUX_x86
Libretro-Admin's avatar
Libretro-Admin committed
135
		SINGLE_PREC_FLAGS=1
136
		CXXFLAGS += -fno-exceptions
Libretro-Admin's avatar
Libretro-Admin committed
137
		MFLAGS += -m32
138
139
		ASFLAGS += --32
		LDFLAGS += -m32
140
		HAVE_GENERIC_JIT   = 0
gizmo98's avatar
gizmo98 committed
141
	endif
Libretro-Admin's avatar
Libretro-Admin committed
142
143
144
145
146

	PLATFORM_EXT := unix

# Raspberry Pi
else ifneq (,$(findstring rpi,$(platform)))
147
148
149
	EXT    ?= so
	TARGET := $(TARGET_NAME)_libretro.$(EXT)
	SHARED := -shared -Wl,--version-script=link.T
Libretro-Admin's avatar
Libretro-Admin committed
150
	fpic = -fPIC
151
	LIBS += -lrt
152
153
154
	ARM_FLOAT_ABI_HARD = 1
	SINGLE_PREC_FLAGS = 1
	
gizmo98's avatar
gizmo98 committed
155
	ifeq (,$(findstring mesa,$(platform)))
gizmo98's avatar
gizmo98 committed
156
157
		GLES = 1
		GL_LIB := -L/opt/vc/lib -lbrcmGLESv2
gizmo98's avatar
gizmo98 committed
158
		INCFLAGS += -I/opt/vc/include
Flyinghead's avatar
Flyinghead committed
159
		CFLAGS += -DTARGET_NO_STENCIL
gizmo98's avatar
gizmo98 committed
160
161
	else
		FORCE_GLES = 1
gizmo98's avatar
gizmo98 committed
162
	endif
163

Libretro-Admin's avatar
Libretro-Admin committed
164
	ifneq (,$(findstring rpi2,$(platform)))
gizmo98's avatar
gizmo98 committed
165
166
167
168
169
		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
170
	endif
171

Libretro-Admin's avatar
Libretro-Admin committed
172
173
174
175
176
	PLATFORM_EXT := unix
	WITH_DYNAREC=arm

# ODROIDs
else ifneq (,$(findstring odroid,$(platform)))
177
178
	EXT    ?= so
	TARGET := $(TARGET_NAME)_libretro.$(EXT)
gizmo98's avatar
gizmo98 committed
179
180
181
	ifeq ($(BOARD),1)
		BOARD := $(shell cat /proc/cpuinfo | grep -i odroid | awk '{print $$3}')
	endif
182
	SHARED := -shared -Wl,--version-script=link.T
Libretro-Admin's avatar
Libretro-Admin committed
183
	fpic = -fPIC
184
	LIBS += -lrt
gizmo98's avatar
gizmo98 committed
185
186
187
188
	ARM_FLOAT_ABI_HARD = 1
	FORCE_GLES = 1
	SINGLE_PREC_FLAGS = 1

Libretro-Admin's avatar
Libretro-Admin committed
189
190
	CFLAGS += -marm -mfloat-abi=hard -mfpu=neon
	CXXFLAGS += -marm -mfloat-abi=hard -mfpu=neon
191

Libretro-Admin's avatar
Libretro-Admin committed
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
	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
210
211
212
213

	#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
214
215
216
217
218
	PLATFORM_EXT := unix
	WITH_DYNAREC=arm

# i.MX6
else ifneq (,$(findstring imx6,$(platform)))
219
220
221
	EXT    ?= so
	TARGET := $(TARGET_NAME)_libretro.$(EXT)
	SHARED := -shared -Wl,--version-script=link.T
Libretro-Admin's avatar
Libretro-Admin committed
222
	fpic = -fPIC
gizmo98's avatar
gizmo98 committed
223
	FORCE_GLES = 1
224
	LIBS += -lrt
Libretro-Admin's avatar
Libretro-Admin committed
225
226
227
228
229
230
	CPUFLAGS += -DNO_ASM
	PLATFORM_EXT := unix
	WITH_DYNAREC=arm

# OS X
else ifneq (,$(findstring osx,$(platform)))
231
232
233
	EXT    ?= dylib
	TARGET := $(TARGET_NAME)_libretro.$(EXT)
	SHARED += -dynamiclib
Libretro-Admin's avatar
Libretro-Admin committed
234
235
	OSXVER = `sw_vers -productVersion | cut -d. -f 2`
	OSX_LT_MAVERICKS = `(( $(OSXVER) <= 9)) && echo "YES"`
236
        fpic += -mmacosx-version-min=10.7
Libretro-Admin's avatar
Libretro-Admin committed
237
238
	LDFLAGS += -stdlib=libc++
	fpic = -fPIC
239
	CFLAGS += -D TARGET_NO_AREC
Libretro-Admin's avatar
Libretro-Admin committed
240
	SINGLE_PREC_FLAGS=1
Libretro-Admin's avatar
Libretro-Admin committed
241
242
243
244
	PLATCFLAGS += -D__MACOSX__ -DOSX
	GL_LIB := -framework OpenGL
	PLATFORM_EXT := unix
	# Target Dynarec
245
246
	ifeq ($(ARCH), $(filter $(ARCH), ppc))
		WITH_DYNAREC =
247
248
        else
                HAVE_GENERIC_JIT   = 0
249
	endif
Libretro-Admin's avatar
Libretro-Admin committed
250
	HAVE_OPENMP=0
Libretro-Admin's avatar
Libretro-Admin committed
251
252
253

# iOS
else ifneq (,$(findstring ios,$(platform)))
254
	EXT    ?= dylib
Libretro-Admin's avatar
Libretro-Admin committed
255
256
257
258
	ifeq ($(IOSSDK),)
		IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path)
	endif

259
	TARGET := $(TARGET_NAME)_libretro_ios.$(EXT)
Libretro-Admin's avatar
Libretro-Admin committed
260
261
	DEFINES += -DIOS
	GLES = 1
262
	WITH_DYNAREC=
Libretro-Admin's avatar
Libretro-Admin committed
263
	PLATFORM_EXT := unix
264
	#HOST_CPU_FLAGS = -DHOST_CPU=$(HOST_CPU_ARM)
Libretro-Admin's avatar
Libretro-Admin committed
265
266
267
268
269

	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
270
	SHARED += -dynamiclib
Libretro-Admin's avatar
Libretro-Admin committed
271
272
273
274
275
276
277

	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
278
279
280
281
282
283
284
285
286
287
288
	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
289
	HAVE_OPENMP=0
Libretro-Admin's avatar
Libretro-Admin committed
290
291
292
293
294
295
296
297
298
299
300
301

# 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
302
	FORCE_GLES = 1
Libretro-Admin's avatar
Libretro-Admin committed
303
304
305
306
307
308
309
310
311
	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
orbea's avatar
orbea committed
312
	EXT ?= so
313
314
	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
315
316
317
318

	CC = arm-linux-androideabi-gcc
	CXX = arm-linux-androideabi-g++
	WITH_DYNAREC=arm
gizmo98's avatar
gizmo98 committed
319
	FORCE_GLES = 1
Libretro-Admin's avatar
Libretro-Admin committed
320
321
322
323
324
325
326
327
328
329
	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
orbea's avatar
orbea committed
330
	EXT ?= so
Libretro-Admin's avatar
Libretro-Admin committed
331
	TARGET := $(TARGET_NAME)_libretro_$(platform).$(EXT)
332
	SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined -Wl,--warn-common
Libretro-Admin's avatar
Libretro-Admin committed
333
334
335
336
337
338

	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
339
	FORCE_GLES = 1
Libretro-Admin's avatar
Libretro-Admin committed
340
341
342
343
344
345
346
347
	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)))
orbea's avatar
orbea committed
348
	EXT    ?= so
349
350
	TARGET := $(TARGET_NAME)_libretro.$(EXT)
	SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined
Libretro-Admin's avatar
Libretro-Admin committed
351
352
353
354
355
	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
356
		FORCE_GLES = 1
Libretro-Admin's avatar
Libretro-Admin committed
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
	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)
380
	EXT       ?= bc
Libretro-Admin's avatar
Libretro-Admin committed
381
	TARGET := $(TARGET_NAME)_libretro_$(platform).$(EXT)
gizmo98's avatar
gizmo98 committed
382
	FORCE_GLES := 1
383
	WITH_DYNAREC=
Libretro-Admin's avatar
Libretro-Admin committed
384
385
	CPUFLAGS += -Dasm=asmerror -D__asm__=asmerror -DNO_ASM -DNOSSE
	SINGLE_THREAD := 1
386
387
	PLATCFLAGS += -Drglgen_resolve_symbols_custom=reicast_rglgen_resolve_symbols_custom \
					  -Drglgen_resolve_symbols=reicast_rglgen_resolve_symbols
Libretro-Admin's avatar
Libretro-Admin committed
388

gizmo98's avatar
gizmo98 committed
389
	NO_REC=0
Libretro-Admin's avatar
Libretro-Admin committed
390
391
392
393
	PLATFORM_EXT := unix
	#HAVE_SHARED_CONTEXT := 1

# Windows
Libretro-Admin's avatar
Libretro-Admin committed
394
else
395
396
397
398
	ifneq ($(HAVE_GL2), 1)
		ifneq ($(HAVE_OIT), 1)
			HAVE_GL3 = 1
		endif
orbea's avatar
orbea committed
399
	endif
400
	EXT       ?= dll
401
	HAVE_GENERIC_JIT   = 0
402
	TARGET := $(TARGET_NAME)_libretro.$(EXT)
Libretro-Admin's avatar
Libretro-Admin committed
403
	LDFLAGS += -shared -static-libgcc -static-libstdc++ -Wl,--version-script=link.T -lwinmm -lgdi32
Libretro-Admin's avatar
Libretro-Admin committed
404
405
	GL_LIB := -lopengl32
	PLATFORM_EXT := win32
Libretro-Admin's avatar
Libretro-Admin committed
406
	SINGLE_PREC_FLAGS=1
Libretro-Admin's avatar
Libretro-Admin committed
407
408
	CC = gcc
	CXX = g++
409
ifeq ($(WITH_DYNAREC), x86)
410
	LDFLAGS += -m32
411
412
	CFLAGS += -m32
else
Libretro-Admin's avatar
Libretro-Admin committed
413
	CFLAGS += -D TARGET_NO_AREC
414
endif
Libretro-Admin's avatar
Libretro-Admin committed
415

Libretro-Admin's avatar
Libretro-Admin committed
416
417
endif

418
ifeq ($(STATIC_LINKING),1)
gizmo98's avatar
gizmo98 committed
419
420
	fpic=
	SHARED=
421
422
endif

423
ifeq ($(SINGLE_PREC_FLAGS),1)
Libretro-Admin's avatar
Libretro-Admin committed
424
	CORE_DEFINES += -fno-builtin-sqrtf
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
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

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
464
465
else ifeq ($(platform), win)
	GL_LIB := -lopengl32
Libretro-Admin's avatar
Libretro-Admin committed
466
467
468
469
else ifneq (,$(findstring osx,$(platform)))
	GL_LIB := -framework OpenGL
else ifneq (,$(findstring ios,$(platform)))
	GL_LIB := -framework OpenGLES
Flyinghead's avatar
Flyinghead committed
470
else ifeq ($(GL_LIB),)
471
472
473
	GL_LIB := -lGL
endif

gizmo98's avatar
gizmo98 committed
474
475
CFLAGS       += $(HOST_CPU_FLAGS)
CXXFLAGS     += $(HOST_CPU_FLAGS)
Libretro-Admin's avatar
Libretro-Admin committed
476
477
RZDCY_CFLAGS += $(HOST_CPU_FLAGS)

Libretro-Admin's avatar
Updates    
Libretro-Admin committed
478
479
include Makefile.common

Libretro-Admin's avatar
Libretro-Admin committed
480
481
482
483
ifeq ($(WITH_DYNAREC), x86)
	HAVE_LTCG = 0
endif

Libretro-Admin's avatar
Libretro-Admin committed
484
ifeq ($(DEBUG),1)
gizmo98's avatar
gizmo98 committed
485
486
487
	OPTFLAGS       := -O0
	LDFLAGS        += -g
	CFLAGS         += -g
Libretro-Admin's avatar
Libretro-Admin committed
488
else
orbea's avatar
orbea committed
489
490
491
492
493
494
	ifneq (,$(findstring msvc,$(platform)))
		OPTFLAGS       := -O2
	else
		OPTFLAGS       := -O3
	endif

Libretro-Admin's avatar
Libretro-Admin committed
495
	CORE_DEFINES   += -DNDEBUG
gizmo98's avatar
gizmo98 committed
496
	LDFLAGS        += -DNDEBUG
Libretro-Admin's avatar
Libretro-Admin committed
497

orbea's avatar
orbea committed
498
499
500
	ifeq ($(HAVE_LTCG), 1)
		CORE_DEFINES   += -flto
	endif
Libretro-Admin's avatar
Libretro-Admin committed
501

Libretro-Admin's avatar
Libretro-Admin committed
502
	CORE_DEFINES      += -DRELEASE
Libretro-Admin's avatar
Libretro-Admin committed
503
endif
gizmo98's avatar
gizmo98 committed
504

505
506
507
508
509
ifeq ($(HAVE_GL3), 1)
	HAVE_CORE = 1
	CORE_DEFINES += -DHAVE_GL3
endif

Libretro-Admin's avatar
Libretro-Admin committed
510
RZDCY_CFLAGS	+= $(CFLAGS) -c $(OPTFLAGS) -frename-registers -ffast-math -ftree-vectorize -fomit-frame-pointer 
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
511
512

ifeq ($(WITH_DYNAREC), arm)
gizmo98's avatar
gizmo98 committed
513
514
	RZDCY_CFLAGS += -march=armv7-a -mcpu=cortex-a9 -mfpu=vfpv3-d16
	RZDCY_CFLAGS += -DTARGET_LINUX_ARMELv7
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
515
else
gizmo98's avatar
gizmo98 committed
516
	RZDCY_CFLAGS += -DTARGET_LINUX_x86
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
517
518
endif

519
ifeq ($(NO_THREADS),1)
Libretro-Admin's avatar
Libretro-Admin committed
520
	CORE_DEFINES += -DTARGET_NO_THREADS
Libretro-Admin's avatar
Libretro-Admin committed
521
else
Libretro-Admin's avatar
Libretro-Admin committed
522
	NEED_PTHREAD=1
Libretro-Admin's avatar
Libretro-Admin committed
523
524
endif

525
ifeq ($(NO_REC),1)
Libretro-Admin's avatar
Libretro-Admin committed
526
	CORE_DEFINES += -DTARGET_NO_REC
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
527
528
endif

Libretro-Admin's avatar
Libretro-Admin committed
529
ifeq ($(NO_REND),1)
Libretro-Admin's avatar
Libretro-Admin committed
530
	CORE_DEFINES += -DNO_REND=1
Libretro-Admin's avatar
Libretro-Admin committed
531
532
endif

Libretro-Admin's avatar
Libretro-Admin committed
533
ifeq ($(NO_EXCEPTIONS),1)
Libretro-Admin's avatar
Libretro-Admin committed
534
	CORE_DEFINES += -DTARGET_NO_EXCEPTIONS=1
Libretro-Admin's avatar
Libretro-Admin committed
535
536
endif

Libretro-Admin's avatar
Libretro-Admin committed
537
ifeq ($(NO_NVMEM),1)
Libretro-Admin's avatar
Libretro-Admin committed
538
	CORE_DEFINES += -DTARGET_NO_NVMEM=1
Libretro-Admin's avatar
Libretro-Admin committed
539
540
endif

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

Libretro-Admin's avatar
Libretro-Admin committed
543
ifeq (,$(findstring msvc,$(platform)))
orbea's avatar
orbea committed
544
	CORE_DEFINES   += -funroll-loops
Libretro-Admin's avatar
Libretro-Admin committed
545
546
547
endif

ifeq ($(HAVE_OIT), 1)
orbea's avatar
orbea committed
548
549
	HAVE_CORE = 1
	CORE_DEFINES += -DHAVE_OIT -DHAVE_GL4
Libretro-Admin's avatar
Libretro-Admin committed
550
551
endif

Libretro-Admin's avatar
Libretro-Admin committed
552
553
554
555
ifeq ($(HAVE_CORE), 1)
	CORE_DEFINES += -DCORE
endif

556
557
ifeq ($(HAVE_TEXUPSCALE), 1)
	CORE_DEFINES += -DHAVE_TEXUPSCALE
Libretro-Admin's avatar
Libretro-Admin committed
558
559
ifeq ($(HAVE_OPENMP), 1)
	CFLAGS += -fopenmp
560
	CXXFLAGS += -fopenmp
Libretro-Admin's avatar
Typo    
Libretro-Admin committed
561
	LDFLAGS += -fopenmp
Libretro-Admin's avatar
Libretro-Admin committed
562
563
564
else
	CFLAGS += -DTARGET_NO_OPENMP
	CXXFLAGS += -DTARGET_NO_OPENMP
Libretro-Admin's avatar
Libretro-Admin committed
565
endif
Libretro-Admin's avatar
Libretro-Admin committed
566
ifeq ($(platform), win)
567
	LDFLAGS_END += -Wl,-Bstatic -lgmp -Wl,-Bstatic -lgomp 
Libretro-Admin's avatar
Libretro-Admin committed
568
endif
Libretro-Admin's avatar
Libretro-Admin committed
569
	NEED_CXX11=1
Libretro-Admin's avatar
Libretro-Admin committed
570
571
572
573
574
	NEED_PTHREAD=1
endif

ifeq ($(NEED_PTHREAD), 1)
	LIBS         += -lpthread
575
576
endif

Libretro-Admin's avatar
Libretro-Admin committed
577
578
ifeq ($(HAVE_GL), 1)
	ifeq ($(GLES),1)
Flyinghead's avatar
Flyinghead committed
579
		CORE_DEFINES += -DHAVE_OPENGLES -DHAVE_OPENGLES2
Libretro-Admin's avatar
Libretro-Admin committed
580
581
582
583
584
	else
		CORE_DEFINES += -DHAVE_OPENGL
	endif
endif

Libretro-Admin's avatar
Libretro-Admin committed
585
586
587
588
589
590
ifeq ($(DEBUG), 1)
	HAVE_GENERIC_JIT = 0
endif

ifeq ($(HAVE_GENERIC_JIT), 1)
	CORE_DEFINES += -DTARGET_NO_JIT
Libretro-Admin's avatar
Libretro-Admin committed
591
592
593
594
	NEED_CXX11=1
endif

ifeq ($(NEED_CXX11), 1)
Libretro-Admin's avatar
Libretro-Admin committed
595
596
597
	CXXFLAGS     += -std=c++11
endif

Libretro-Admin's avatar
Libretro-Admin committed
598
599
600
601
602
603
RZDCY_CFLAGS   += $(CORE_DEFINES)
RZDCY_CXXFLAGS += $(CORE_DEFINES)
CFLAGS         += $(CORE_DEFINES)
CXXFLAGS       += $(CORE_DEFINES)

CFLAGS   += $(OPTFLAGS) -c
Libretro-Admin's avatar
Libretro-Admin committed
604
CFLAGS   += -fno-strict-aliasing -ffast-math
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
605
CXXFLAGS += -fno-rtti -fpermissive -fno-operator-names
Libretro-Admin's avatar
Libretro-Admin committed
606
LIBS     += -lm 
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
607
608
609

PREFIX        ?= /usr/local

gizmo98's avatar
gizmo98 committed
610
ifneq (,$(findstring arm, $(ARCH)))
611
612
	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
613
614
endif

615
ifeq ($(PGO_MAKE),1)
gizmo98's avatar
gizmo98 committed
616
617
	CFLAGS += -fprofile-generate -pg
	LDFLAGS += -fprofile-generate
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
618
else
gizmo98's avatar
gizmo98 committed
619
	CFLAGS += -fomit-frame-pointer
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
620
621
endif

622
ifeq ($(PGO_USE),1)
gizmo98's avatar
gizmo98 committed
623
	CFLAGS += -fprofile-use
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
624
625
endif

626
ifeq ($(LTO_TEST),1)
gizmo98's avatar
gizmo98 committed
627
628
	CFLAGS += -flto -fwhole-program 
	LDFLAGS +=-flto -fwhole-program 
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
629
630
endif

Libretro-Admin's avatar
Libretro-Admin committed
631
632
CFLAGS     += $(fpic)
CXXFLAGS   += $(fpic)
Libretro-Admin's avatar
Libretro-Admin committed
633
LDFLAGS    += $(fpic)
Libretro-Admin's avatar
Update    
Libretro-Admin committed
634

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

Libretro-Admin's avatar
Libretro-Admin committed
637
638
639
640
641
642
643
644
ifneq (,$(findstring msvc,$(platform)))
	OBJOUT = -Fo
	LINKOUT = -out:
	LD = link.exe
else
	LD = $(CXX)
endif

Libretro-Admin's avatar
Updates    
Libretro-Admin committed
645
646
all: $(TARGET)	
$(TARGET): $(OBJECTS)
647
648
649
ifeq ($(STATIC_LINKING), 1)
	$(AR) rcs $@ $(OBJECTS)
else
650
	$(LD) $(MFLAGS) $(fpic) $(SHARED) $(LDFLAGS) $(OBJECTS) $(LDFLAGS_END) $(GL_LIB) $(LIBS) -o $@
651
endif
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
652
653

%.o: %.cpp
654
	$(CXX) $(INCFLAGS) $(CFLAGS) $(MFLAGS) $(CXXFLAGS) $< -o $@
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
655
656
	
%.o: %.c
657
	$(CC) $(INCFLAGS) $(CFLAGS) $(MFLAGS) $< -o $@
Libretro-Admin's avatar
Updates    
Libretro-Admin committed
658
659
660
661
662

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

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