Allow building without CHD, disable CHD for 3DS
[pcsx_rearmed.git] / Makefile.libretro
index 3034cdf..f58f284 100644 (file)
@@ -1,7 +1,8 @@
 # Makefile for PCSX ReARMed (libretro)
 
-DEBUG=0
-WANT_ZLIB=1
+DEBUG ?= 0
+WANT_ZLIB ?= 1
+HAVE_CHD ?= 1
 
 ifeq ($(platform),)
        platform = unix
@@ -37,7 +38,7 @@ else
 LIBDL := -ldl
 endif
 LIBM := -lm
-MMAP_WIN32=0
+MMAP_WIN32 = 0
 EXTRA_LDFLAGS =
 
 # Unix
@@ -47,6 +48,12 @@ ifeq ($(platform), unix)
 ifneq ($(findstring SunOS,$(shell uname -s)),)
        CC = gcc
 endif
+ifeq ($(ARCH), arm)
+ifneq ($(findstring __thumb__,$(shell $(CC) -E -dD $(CFLAGS) include/arm_features.h)),)
+       # must disable thumb as recompiler can't handle it
+       CFLAGS += -marm
+endif
+endif
 
 else ifeq ($(platform), linux-portable)
        TARGET := $(TARGET_NAME)_libretro.so
@@ -71,11 +78,11 @@ endif
 
 # iOS
 else ifeq ($(platform),$(filter $(platform),ios-arm64))
-    ARCH := arm64
-    USE_DYNAREC = 0
-    HAVE_NEON = 0
-    BUILTIN_GPU = peops
-    TARGET := $(TARGET_NAME)_libretro_ios.dylib
+       ARCH := arm64
+       USE_DYNAREC = 0
+       HAVE_NEON = 0
+       BUILTIN_GPU = peops
+       TARGET := $(TARGET_NAME)_libretro_ios.dylib
 
 else ifneq (,$(findstring ios,$(platform)))
        ARCH := arm
@@ -148,7 +155,7 @@ else ifeq ($(platform), vita)
        CFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon -marm
        CFLAGS += -fsingle-precision-constant -mword-relocations -fno-unwind-tables
        CFLAGS += -fno-asynchronous-unwind-tables -ftree-vectorize -funroll-loops
-       CFLAGS +=  -fno-optimize-sibling-calls
+       CFLAGS += -fno-optimize-sibling-calls
        CFLAGS += -I$(VITASDK)/include -Ifrontend/vita
        CFLAGS += -DNO_SOCKET -DNO_OS -DNO_DYLIB
        ASFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon
@@ -182,7 +189,7 @@ else ifeq ($(platform), ctr)
        DRC_CACHE_BASE = 0
        ARCH = arm
        HAVE_NEON = 0
-
+       HAVE_CHD = 0
        STATIC_LINKING = 1
 
 # Xbox 360
@@ -218,7 +225,7 @@ else ifeq ($(platform), qnx)
        BUILTIN_GPU = neon
        ARCH = arm
        CFLAGS += -D__BLACKBERRY_QNX__ -marm -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mfloat-abi=softfp
-       ASFLAGS +=  -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp
+       ASFLAGS += -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp
        MAIN_LDLIBS += -lsocket
        LIBPTHREAD :=
        LIBDL :=
@@ -271,14 +278,29 @@ else ifeq ($(platform), classic_armv7_a7)
        BUILTIN_GPU = neon
        USE_DYNAREC = 1
        ifeq ($(shell echo `$(CC) -dumpversion` "< 4.9" | bc -l), 1)
-         CFLAGS += -march=armv7-a
+               CFLAGS += -march=armv7-a
        else
-         CFLAGS += -march=armv7ve
-         # If gcc is 5.0 or later
-         ifeq ($(shell echo `$(CC) -dumpversion` ">= 5" | bc -l), 1)
-           LDFLAGS += -static-libgcc -static-libstdc++
-         endif
+               CFLAGS += -march=armv7ve
+               # If gcc is 5.0 or later
+               ifeq ($(shell echo `$(CC) -dumpversion` ">= 5" | bc -l), 1)
+                       LDFLAGS += -static-libgcc -static-libstdc++
+               endif
        endif
+
+# (armv8 a35, hard point, neon based) ###
+# PlayStation Classic
+else ifeq ($(platform), classic_armv8_a35)
+       TARGET := $(TARGET_NAME)_libretro.so
+       fpic := -fPIC
+       CFLAGS += -Ofast \
+       -fmerge-all-constants -fno-math-errno -march=armv8-a \
+       -marm -mcpu=cortex-a35 -mtune=cortex-a35 -mfpu=neon-fp-armv8 -mfloat-abi=hard
+       HAVE_NEON = 1
+       ARCH = arm
+       BUILTIN_GPU = neon
+       USE_DYNAREC = 1
+       LDFLAGS += -static-libgcc -static-libstdc++ -fPIC
+
 #######################################
 
 # ARM
@@ -319,8 +341,8 @@ else ifneq (,$(findstring armv,$(platform)))
 # Windows
 else
        TARGET := $(TARGET_NAME)_libretro.dll
-   BUILTIN_GPU = peops
-   PLATFORM = libretro
+       BUILTIN_GPU = peops
+       PLATFORM = libretro
        MAIN_LDFLAGS += -static-libgcc -static-libstdc++ -s
        CFLAGS += -D__WIN32__ -DNO_DYLIB
        MMAP_WIN32=1
@@ -334,15 +356,9 @@ CFLAGS += $(fpic)
 MAIN_LDFLAGS += -shared
 MAIN_LDLIBS += $(LIBPTHREAD) $(LIBM) $(LIBDL) $(LIBZ)
 
-# try to autodetect stuff for the lazy
-ifndef ARCH
-ARCH = $(shell $(CC) -dumpmachine | awk -F- '{print $$1}')
-endif
-ifndef HAVE_NEON
-HAVE_NEON = $(shell $(CC) -E -dD - < /dev/null 2> /dev/null | grep -q __ARM_NEON__ && echo 1 || echo 0)
-endif
-ifeq ($(NO_UNDEF_CHECK)$(shell ld -v 2> /dev/null | awk '{print $$1}'),GNU)
-MAIN_LDFLAGS += -Wl,--no-undefined
+# enable large file support if available
+ifeq ($(shell $(CC) -E -dD $(CFLAGS) include/arm_features.h | grep __SIZEOF_LONG__ | awk '{print $$3}'),4)
+CFLAGS += -D_FILE_OFFSET_BITS=64
 endif
 
 # try to autodetect stuff for the lazy
@@ -352,7 +368,7 @@ endif
 ifndef HAVE_NEON
 HAVE_NEON = $(shell $(CC) -E -dD - < /dev/null 2> /dev/null | grep -q __ARM_NEON__ && echo 1 || echo 0)
 endif
-ifeq ($(shell ld -v 2> /dev/null | awk '{print $$1}'),GNU)
+ifeq ($(NO_UNDEF_CHECK)$(shell ld -v 2> /dev/null | awk '{print $$1}'),GNU)
 MAIN_LDFLAGS += -Wl,--no-undefined
 endif