try to enable gpu_neon on 32bit x86
[pcsx_rearmed.git] / Makefile.libretro
1 # Makefile for PCSX ReARMed (libretro)
2
3 DEBUG ?= 0
4 WANT_ZLIB ?= 1
5 HAVE_CHD ?= 1
6 USE_LIBRETRO_VFS ?= 0
7
8 # Dynarec options: lightrec, ari64
9 DYNAREC ?= lightrec
10
11 ifeq ($(platform),)
12         platform = unix
13         ifeq ($(shell uname -a),)
14                 platform = win
15         else ifneq ($(findstring MINGW,$(shell uname -a)),)
16                 platform = win
17         else ifneq ($(findstring Darwin,$(shell uname -a)),)
18                 platform = osx
19         else ifneq ($(findstring win,$(shell uname -a)),)
20                 platform = win
21         endif
22 endif
23
24 CC ?= gcc
25 CXX ?= g++
26 AS ?= as
27 CC_AS ?= $(CC)
28 CFLAGS ?=
29
30 TARGET_NAME := pcsx_rearmed
31 ARCH_DETECTED := $(shell $(CC) -dumpmachine | awk -F- '{print $$1}')
32 GIT_VERSION := " $(shell git rev-parse --short HEAD || echo unknown)"
33 ifneq ($(GIT_VERSION)," unknown")
34         CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\"
35 endif
36 ifneq ($(WANT_ZLIB),1)
37 LIBZ := -lz
38 endif
39 LIBPTHREAD := -lpthread
40 ifneq ($(findstring Haiku,$(shell uname -s)),)
41 LIBDL := -lroot -lnetwork
42 else
43 LIBDL := -ldl
44 endif
45 LIBM := -lm
46 MMAP_WIN32 = 0
47 EXTRA_LDFLAGS =
48
49 # select some defaults
50 ifneq (,$(findstring $(ARCH_DETECTED),arm aarch64))
51         DYNAREC = ari64
52 ifneq ($(findstring __thumb__,$(shell $(CC) -E -dD $(CFLAGS) include/arm_features.h)),)
53         # must disable thumb as ari64 can't handle it
54         CFLAGS += -marm
55 endif
56 endif
57 ifneq (,$(findstring $(ARCH_DETECTED),i686 x86_64 aarch64))
58         BUILTIN_GPU = neon
59 endif
60
61 # platform specific options
62
63 # Unix
64 ifeq ($(platform), unix)
65         TARGET := $(TARGET_NAME)_libretro.so
66         fpic := -fPIC
67         THREAD_RENDERING = 1
68 ifeq ($(shell uname),Linux)
69         LIGHTREC_CUSTOM_MAP := 1
70 endif
71 ifneq ($(findstring SunOS,$(shell uname -s)),)
72         CC = gcc
73 endif
74
75 # ODROIDN2
76 else ifneq (,$(findstring CortexA73_G12B,$(platform)))
77         TARGET := $(TARGET_NAME)_libretro.so
78         fpic := -fPIC
79         SHARED := -shared -Wl,-version-script=link.T
80         ARCH = arm64
81         BUILTIN_GPU = neon
82         HAVE_NEON = 1
83         DYNAREC = ari64
84         CFLAGS += -fomit-frame-pointer -ffast-math -DARM
85         CPUFLAGS += -march=armv8-a+crc -mfpu=neon-fp-armv8 -mcpu=cortex-a73 -mtune=cortex-a73.cortex-a53
86
87 # ALLWINNER H5
88 else ifneq (,$(findstring h5,$(platform)))
89         TARGET := $(TARGET_NAME)_libretro.so
90         fpic := -fPIC
91         SHARED := -shared -Wl,-version-script=link.T
92         ARCH = arm64
93         BUILTIN_GPU = neon
94         HAVE_NEON = 1
95         DYNAREC = ari64
96         CFLAGS += -fomit-frame-pointer -ffast-math -DARM
97         CPUFLAGS += -march=armv8-a+crc -mfpu=neon-fp-armv8 -mcpu=cortex-a53 -mtune=cortex-a53
98
99 else ifeq ($(platform), linux-portable)
100         TARGET := $(TARGET_NAME)_libretro.so
101         fpic := -fPIC -nostdlib
102         EXTRA_LDFLAGS += -fPIC -nostdlib
103         LIBZ :=
104         LIBPTHREAD :=
105         LIBDL :=
106         LIBM :=
107         NO_UNDEF_CHECK = 1
108         LIGHTREC_CUSTOM_MAP := 1
109
110 # OS X
111 else ifeq ($(platform), osx)
112         DYNAREC := 0
113         TARGET := $(TARGET_NAME)_libretro.dylib
114         fpic := -fPIC
115         HAVE_NEON = 0
116    MACSOSVER = `sw_vers -productVersion | cut -d. -f 1`
117    OSXVER = `sw_vers -productVersion | cut -d. -f 2`
118    OSX_LT_MAVERICKS = `(( $(OSXVER) <= 9)) && echo "YES"`
119    ifeq ($(OSX_LT_MAVERICKS),YES)
120            fpic += -mmacosx-version-min=10.1
121    endif
122
123    ifeq ($(CROSS_COMPILE),1)
124                 TARGET_RULE   = -target $(LIBRETRO_APPLE_PLATFORM) -isysroot $(LIBRETRO_APPLE_ISYSROOT)
125                 CFLAGS   += $(TARGET_RULE)
126                 CPPFLAGS += $(TARGET_RULE)
127                 CXXFLAGS += $(TARGET_RULE)
128                 LDFLAGS  += $(TARGET_RULE)
129    endif
130
131         CFLAGS  += $(ARCHFLAGS)
132         CXXFLAGS  += $(ARCHFLAGS)
133         LDFLAGS += $(ARCHFLAGS)
134
135 # iOS
136 else ifneq (,$(findstring ios,$(platform)))
137         TARGET := $(TARGET_NAME)_libretro_ios.dylib
138         MINVERSION :=
139 ifeq ($(DYNAREC),lightrec)
140         # Override
141         DYNAREC := 0
142 endif
143         fpic := -fPIC
144
145         ifeq ($(IOSSDK),)
146                 IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path)
147         endif
148
149         CFLAGS += -DIOS -marm
150 ifeq ($(platform),ios-arm64)
151         CC = cc -arch arm64 -isysroot $(IOSSDK)
152         CXX = c++ -arch arm64 -isysroot $(IOSSDK)
153         ARCH := arm64
154         BUILTIN_GPU = neon
155         HAVE_NEON = 1
156         DYNAREC = 0
157 else
158         CC = cc -arch armv7 -isysroot $(IOSSDK)
159         CXX = c++ -arch armv7 -isysroot $(IOSSDK)
160         ARCH := arm
161         HAVE_NEON = 1
162         HAVE_NEON_ASM = 1
163         BUILTIN_GPU = neon
164         CFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon
165         ASFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon
166 endif
167         CC_AS = perl ./tools/gas-preprocessor.pl $(CC)
168 ifeq ($(platform),$(filter $(platform),ios9 ios-arm64))
169         MINVERSION = -miphoneos-version-min=8.0
170 else
171         MINVERSION = -miphoneos-version-min=5.0
172 endif
173         CFLAGS += $(MINVERSION)
174
175 else ifeq ($(platform), tvos-arm64)
176         TARGET := $(TARGET_NAME)_libretro_tvos.dylib
177         MINVERSION :=
178 ifeq ($(DYNAREC),lightrec)
179         # Override
180         DYNAREC := 0
181 endif
182         fpic := -fPIC
183
184         ifeq ($(IOSSDK),)
185                 IOSSDK := $(shell xcodebuild -version -sdk appletvos Path)
186         endif
187
188         CFLAGS += -DIOS -DTVOS
189         CC = cc -arch arm64 -isysroot $(IOSSDK)
190         CXX = c++ -arch arm64 -isysroot $(IOSSDK)
191         ARCH := arm64
192         BUILTIN_GPU = neon
193         HAVE_NEON = 1
194         DYNAREC = 0
195         CC_AS = perl ./tools/gas-preprocessor.pl $(CC)
196
197 # Nintendo Switch (libnx)
198 else ifeq ($(platform), libnx)
199    export DEPSDIR := $(CURDIR)/
200    include $(DEVKITPRO)/libnx/switch_rules
201    TARGET := $(TARGET_NAME)_libretro_$(platform).a
202    ARCH := arm64
203    HAVE_VFS_FD = 0
204    CFLAGS += -O3 -fomit-frame-pointer -ffast-math -I$(DEVKITPRO)/libnx/include/ -fPIE -Wl,--allow-multiple-definition # -include $(LIBNX)/include/switch.h
205    CFLAGS += -specs=$(DEVKITPRO)/libnx/switch.specs -DNO_OS -DNO_DYLIB -DNO_SOCKET -D__arm64__ -D__ARM_NEON__
206    CFLAGS += -D__SWITCH__ -DHAVE_LIBNX
207    CFLAGS += -DARM -D__aarch64__=1 -march=armv8-a -mtune=cortex-a57 -mtp=soft -DHAVE_INTTYPES -DLSB_FIRST -ffast-math -mcpu=cortex-a57+crc+fp+simd -ffunction-sections
208    CFLAGS += -ftree-vectorize
209    CFLAGS += -Ifrontend/switch -ftree-vectorize
210    LIBPTHREAD :=
211    STATIC_LINKING=1
212    BUILTIN_GPU = neon
213    HAVE_NEON = 1
214    DYNAREC = ari64
215
216 # Lakka Switch (arm64)
217 else ifeq ($(platform), arm64)
218    TARGET := $(TARGET_NAME)_libretro.so
219    ARCH := arm64
220    BUILTIN_GPU = neon
221    HAVE_NEON = 1
222    DYNAREC = ari64
223    fpic := -fPIC
224    CFLAGS := $(filter-out -O2, $(CFLAGS))
225    CFLAGS += -O3 -ftree-vectorize
226
227 # Lightweight PS3 Homebrew SDK
228 else ifeq ($(platform), psl1ght)
229         TARGET := $(TARGET_NAME)_libretro_psl1ght.a
230         CC = $(PS3DEV)/ppu/bin/ppu-gcc$(EXE_EXT)
231         AR = $(PS3DEV)/ppu/bin/ppu-ar$(EXE_EXT)
232         CFLAGS += -DBLARGG_BIG_ENDIAN=1 -D__ppc__
233
234 # PSP
235 else ifeq ($(platform), psp1)
236         TARGET := $(TARGET_NAME)_libretro_psp1.a
237         CC = psp-gcc$(EXE_EXT)
238         AR = psp-ar$(EXE_EXT)
239         CFLAGS += -DPSP -G0
240
241 # Vita
242 else ifeq ($(platform), vita)
243         TARGET := $(TARGET_NAME)_libretro_vita.a
244         CC = arm-vita-eabi-gcc$(EXE_EXT)
245         AR = arm-vita-eabi-ar$(EXE_EXT)
246         CFLAGS += -DVITA
247         CFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon -marm
248         CFLAGS += -fsingle-precision-constant -mword-relocations -fno-unwind-tables
249         CFLAGS += -fno-asynchronous-unwind-tables -ftree-vectorize -funroll-loops
250         CFLAGS += -fno-optimize-sibling-calls
251         CFLAGS += -I$(VITASDK)/include -Ifrontend/vita
252         CFLAGS += -DNO_SOCKET -DNO_OS -DNO_DYLIB
253         ASFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon
254
255 #       CFLAGS += -U__ARM_NEON__
256         HAVE_NEON = 1
257         HAVE_NEON_ASM = 1
258         BUILTIN_GPU = neon
259
260         DYNAREC = ari64
261         ARCH = arm
262         STATIC_LINKING = 1
263
264 # CTR(3DS)
265 else ifeq ($(platform), ctr)
266         TARGET := $(TARGET_NAME)_libretro_ctr.a
267         CC = $(DEVKITARM)/bin/arm-none-eabi-gcc$(EXE_EXT)
268         CXX = $(DEVKITARM)/bin/arm-none-eabi-g++$(EXE_EXT)
269         AR = $(DEVKITARM)/bin/arm-none-eabi-ar$(EXE_EXT)
270         CFLAGS += -DARM11 -D_3DS -DNO_OS -DNO_DYLIB -DNO_SOCKET -DTHREAD_ENABLED -DGPU_UNAI_USE_FLOATMATH -DGPU_UNAI_USE_FLOAT_DIV_MULTINV
271         CFLAGS += -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp -mtp=soft
272         CFLAGS += -Wall -mword-relocations
273         CFLAGS += -fomit-frame-pointer -ffast-math -funroll-loops
274         CFLAGS += -Ifrontend/3ds -I$(CTRULIB)/include
275         CFLAGS += -Werror=implicit-function-declaration
276         CFLAGS += -DHAVE_UNISTD_H
277
278         OBJS += frontend/3ds/utils.o
279
280 #       CFLAGS += -DPCSX
281         BUILTIN_GPU = unai
282         THREAD_RENDERING = 1
283         DYNAREC = ari64
284         ARCH = arm
285         HAVE_NEON = 0
286         STATIC_LINKING = 1
287
288 # Xbox 360
289 else ifeq ($(platform), xenon)
290         TARGET := $(TARGET_NAME)_libretro_xenon360.a
291         CC = xenon-gcc$(EXE_EXT)
292         AR = xenon-ar$(EXE_EXT)
293         CFLAGS += -D__LIBXENON__ -m32 -D__ppc__
294
295 # Nintendo Game Cube
296 else ifeq ($(platform), ngc)
297         TARGET := $(TARGET_NAME)_libretro_ngc.a
298         CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT)
299         AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT)
300         CFLAGS += -DGEKKO -DHW_DOL -mrvl -mcpu=750 -meabi -mhard-float -DBLARGG_BIG_ENDIAN=1 -D__ppc__
301
302 # Nintendo Wii
303 else ifeq ($(platform), wii)
304         TARGET := libretro_$(TARGET_NAME)_wii.a
305         CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT)
306         AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT)
307         CFLAGS += -DGEKKO -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float -DBLARGG_BIG_ENDIAN=1 -D__ppc__
308
309 # QNX
310 else ifeq ($(platform), qnx)
311         TARGET := $(TARGET_NAME)_libretro_qnx.so
312         fpic := -fPIC
313         CC = qcc -Vgcc_ntoarmv7le
314         CC_AS = $(CC)
315         HAVE_NEON = 1
316         HAVE_NEON_ASM = 1
317         DYNAREC = ari64
318         BUILTIN_GPU = neon
319         ARCH = arm
320         CFLAGS += -D__BLACKBERRY_QNX__ -marm -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mfloat-abi=softfp
321         ASFLAGS += -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp
322         MAIN_LDLIBS += -lsocket
323         LIBPTHREAD :=
324         LIBDL :=
325         LIBM :=
326
327 #Raspberry Pi 1
328 else ifeq ($(platform), rpi1)
329         TARGET := $(TARGET_NAME)_libretro.so
330         fpic := -fPIC
331         CFLAGS += -marm -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard
332         ASFLAGS += -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard
333         HAVE_NEON = 0
334         ARCH = arm
335         BUILTIN_GPU = unai
336         DYNAREC = ari64
337
338 #Raspberry Pi 2
339 else ifeq ($(platform), rpi2)
340         TARGET := $(TARGET_NAME)_libretro.so
341         fpic := -fPIC
342         CFLAGS += -marm -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard
343         ASFLAGS += -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard
344         HAVE_NEON = 1
345         HAVE_NEON_ASM = 1
346         ARCH = arm
347         BUILTIN_GPU = neon
348         DYNAREC = ari64
349
350 #Raspberry Pi 3
351 else ifeq ($(platform), rpi3)
352         TARGET := $(TARGET_NAME)_libretro.so
353         fpic := -fPIC
354         CFLAGS += -marm -mcpu=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard
355         ASFLAGS += -mcpu=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard
356         HAVE_NEON = 1
357         HAVE_NEON_ASM = 1
358         ARCH = arm
359         BUILTIN_GPU = neon
360         DYNAREC = ari64
361
362 #Raspberry Pi 3 with a 64bit GNU/Linux OS
363 else ifeq ($(platform), rpi3_64)
364         TARGET := $(TARGET_NAME)_libretro.so
365         ARCH := arm64
366         BUILTIN_GPU = neon
367         HAVE_NEON = 1
368         DYNAREC = ari64
369         fpic := -fPIC
370         CFLAGS += -march=armv8-a+crc+simd -mtune=cortex-a53 -ftree-vectorize
371
372 #Raspberry Pi 4 with a 32bit GNU/Linux OS
373 else ifeq ($(platform), rpi4)
374         TARGET := $(TARGET_NAME)_libretro.so
375         fpic := -fPIC
376         CFLAGS += -marm -mcpu=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard
377         ASFLAGS += -mcpu=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard
378         HAVE_NEON = 1
379         HAVE_NEON_ASM = 1
380         ARCH = arm
381         BUILTIN_GPU = neon
382         DYNAREC = ari64
383
384 #Raspberry Pi 4 with a 64bit GNU/Linux OS
385 else ifeq ($(platform), rpi4_64)
386         TARGET := $(TARGET_NAME)_libretro.so
387         ARCH := arm64
388         BUILTIN_GPU = neon
389         HAVE_NEON = 1
390         DYNAREC = ari64
391         fpic := -fPIC
392         CFLAGS += -march=armv8-a+crc+simd -mtune=cortex-a72 -ftree-vectorize
393
394 # Classic Platforms ####################
395 # Platform affix = classic_<ISA>_<µARCH>
396 # Help at https://modmyclassic.com/comp
397
398 # (armv7 a7, hard point, neon based) ### 
399 # NESC, SNESC, C64 mini 
400 else ifeq ($(platform), classic_armv7_a7)
401         TARGET := $(TARGET_NAME)_libretro.so
402         fpic := -fPIC
403         CFLAGS += -Ofast \
404         -flto=4 -fwhole-program -fuse-linker-plugin \
405         -fdata-sections -ffunction-sections -Wl,--gc-sections \
406         -fno-stack-protector -fno-ident -fomit-frame-pointer \
407         -falign-functions=1 -falign-jumps=1 -falign-loops=1 \
408         -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-unroll-loops \
409         -fmerge-all-constants -fno-math-errno \
410         -marm -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard
411         CXXFLAGS += $(CFLAGS)
412         CPPFLAGS += $(CFLAGS)
413         ASFLAGS += $(CFLAGS)
414         HAVE_NEON = 1
415         HAVE_NEON_ASM = 1
416         ARCH = arm
417         BUILTIN_GPU = neon
418         DYNAREC = ari64
419         ifeq ($(shell echo `$(CC) -dumpversion` "< 4.9" | bc -l), 1)
420                 CFLAGS += -march=armv7-a
421         else
422                 CFLAGS += -march=armv7ve
423                 # If gcc is 5.0 or later
424                 ifeq ($(shell echo `$(CC) -dumpversion` ">= 5" | bc -l), 1)
425                         LDFLAGS += -static-libgcc -static-libstdc++
426                 endif
427         endif
428
429 # (armv8 a35, hard point, neon based) ###
430 # PlayStation Classic
431 else ifeq ($(platform), classic_armv8_a35)
432         TARGET := $(TARGET_NAME)_libretro.so
433         fpic := -fPIC
434         CFLAGS += -Ofast \
435         -fmerge-all-constants -fno-math-errno -march=armv8-a \
436         -marm -mcpu=cortex-a35 -mtune=cortex-a35 -mfpu=neon-fp-armv8 -mfloat-abi=hard
437         HAVE_NEON = 1
438         HAVE_NEON_ASM = 1
439         ARCH = arm
440         BUILTIN_GPU = neon
441         DYNAREC = ari64
442         LDFLAGS += -static-libgcc -static-libstdc++ -fPIC
443
444 #######################################
445
446 # ARM
447 else ifneq (,$(findstring armv,$(platform)))
448         TARGET := $(TARGET_NAME)_libretro.so
449         fpic := -fPIC
450         HAVE_NEON = 0
451         BUILTIN_GPU = peops
452         ifneq (,$(findstring cortexa8,$(platform)))
453                 CFLAGS += -marm -mcpu=cortex-a8
454                 ASFLAGS += -mcpu=cortex-a8
455         else ifneq (,$(findstring cortexa7,$(platform)))
456                 CFLAGS += -marm -mcpu=cortex-a7
457                 ASFLAGS += -mcpu=cortex-a7
458                 LIBZ :=
459         else ifneq (,$(findstring cortexa9,$(platform)))
460                 CFLAGS += -marm -mcpu=cortex-a9
461                 ASFLAGS += -mcpu=cortex-a9
462         endif
463         CFLAGS += -marm
464         ifneq (,$(findstring neon,$(platform)))
465                 CFLAGS += -mfpu=neon
466                 ASFLAGS += -mfpu=neon
467                 HAVE_NEON = 1
468                 HAVE_NEON_ASM = 1
469                 BUILTIN_GPU = neon
470         endif
471         ifneq (,$(findstring softfloat,$(platform)))
472                 CFLAGS += -mfloat-abi=softfp
473                 ASFLAGS += -mfloat-abi=softfp
474         else ifneq (,$(findstring hardfloat,$(platform)))
475                 CFLAGS += -mfloat-abi=hard
476                 ASFLAGS += -mfloat-abi=hard
477         endif
478         ARCH = arm
479         DYNAREC = ari64
480
481 else ifeq ($(platform), miyoo)
482         TARGET := $(TARGET_NAME)_libretro.so
483         CC = /opt/miyoo/usr/bin/arm-linux-gcc
484         CXX = /opt/miyoo/usr/bin/arm-linux-g++
485         fpic := -fPIC
486         CFLAGS += -mcpu=arm926ej-s -fsingle-precision-constant
487         CFLAGS += -DGPULIB_USE_MMAP -DGPU_UNAI_USE_INT_DIV_MULTINV -D_MIYOO
488         ARCH = arm
489         BUILTIN_GPU = unai
490         DYNAREC = ari64
491         HAVE_NEON = 0
492
493 # Emscripten
494 else ifeq ($(platform), emscripten)
495    TARGET  := $(TARGET_NAME)_libretro_$(platform).bc
496    fpic    := -fPIC
497    SHARED  := -shared -Wl,--no-undefined -Wl,--version-script=link.T
498    CFLAGS += -DNO_DYLIB -DNO_SOCKET
499    STATIC_LINKING = 1
500
501 # Windows
502 else
503         TARGET := $(TARGET_NAME)_libretro.dll
504         PLATFORM = libretro
505         MAIN_LDFLAGS += -static-libgcc -static-libstdc++ -s
506         CFLAGS += -D__WIN32__ -DNO_DYLIB
507         MMAP_WIN32=1
508         MAIN_LDLIBS += -lws2_32
509         LIBPTHREAD :=
510         LIBDL :=
511         LIBM :=
512         USE_LIBRETRO_VFS = 1
513 endif
514
515 CFLAGS += $(fpic)
516 MAIN_LDFLAGS += -shared
517 MAIN_LDLIBS += $(LIBPTHREAD) $(LIBM) $(LIBDL) $(LIBZ)
518
519 # enable large file support if available
520 ifeq ($(shell $(CC) -E -dD $(CFLAGS) include/arm_features.h | grep __SIZEOF_LONG__ | awk '{print $$3}'),4)
521 CFLAGS += -D_FILE_OFFSET_BITS=64
522 endif
523
524 # try to autodetect stuff for the lazy
525 ifndef ARCH
526 ARCH = $(ARCH_DETECTED)
527 endif
528 ifndef HAVE_NEON
529 HAVE_NEON = $(shell $(CC) -E -dD - < /dev/null 2> /dev/null | grep -q __ARM_NEON__ && echo 1 || echo 0)
530 endif
531 ifeq ($(NO_UNDEF_CHECK)$(shell ld -v 2> /dev/null | awk '{print $$1}'),GNU)
532 MAIN_LDFLAGS += -Wl,--no-undefined
533 endif
534 ifdef ALLOW_LIGHTREC_ON_ARM
535 CFLAGS += -DALLOW_LIGHTREC_ON_ARM
536 endif
537 ifeq ($(BUILTIN_GPU),neon)
538 ifeq ($(ARCH_DETECTED),i686)
539         CFLAGS_GPU_NEON ?= -msse2 # required
540 endif
541 ifeq ($(ARCH_DETECTED),x86_64)
542         CFLAGS_GPU_NEON ?= -mssse3 # optional, for more perf
543 endif
544 CFLAGS += $(CFLAGS_GPU_NEON)
545 endif
546
547 TARGET ?= libretro.so
548 PLATFORM = libretro
549 BUILTIN_GPU ?= peops
550 SOUND_DRIVERS = libretro
551 PLUGINS =
552 NO_CONFIG_MAK = yes
553
554 # what does this do
555 #libretro_all: all
556 #ifeq ($(platform),ios)
557 #ifeq ($(DYNAREC),1)
558 #       make -f Makefile.libretro DYNAREC=0 platform=$(platform) clean
559 #       make -f Makefile.libretro DYNAREC=0 platform=$(platform)
560 #endif
561 #endif
562
563 include Makefile
564
565 # no special AS needed for gpu_neon
566 plugins/gpu_neon/psx_gpu/psx_gpu_arm_neon.o: plugins/gpu_neon/psx_gpu/psx_gpu_arm_neon.S
567         $(CC) $(CFLAGS) -c $^ -o $@