Merge pull request #377 from pcercuei/libretro
[pcsx_rearmed.git] / Makefile.libretro
index 5af8d75..64cff49 100644 (file)
@@ -4,6 +4,9 @@ DEBUG ?= 0
 WANT_ZLIB ?= 1
 HAVE_CHD ?= 1
 
+# Dynarec options: lightrec, ari64
+DYNAREC ?= lightrec
+
 ifeq ($(platform),)
        platform = unix
        ifeq ($(shell uname -a),)
@@ -67,11 +70,10 @@ else ifeq ($(platform), linux-portable)
 
 # OS X
 else ifeq ($(platform), osx)
-       USE_DYNAREC ?= 1
        TARGET := $(TARGET_NAME)_libretro.dylib
        fpic := -fPIC
        fpic += -mmacosx-version-min=10.1
-ifeq ($(USE_DYNAREC),0)
+ifeq ($(DYNAREC),)
        # Override
        TARGET := $(TARGET_NAME)_interpreter_libretro.dylib
 endif
@@ -79,18 +81,20 @@ 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
+       TARGET := $(TARGET_NAME)_interpreter_libretro_ios.dylib
+
+       CC = clang -arch arm64 -isysroot $(IOSSDK) -miphoneos-version-min=8.0
+       CXX = clang++ -arch arm64 -isysroot $(IOSSDK) -miphoneos-version-min=8.0
+       CFLAGS += -marm -DIOS
 
 else ifneq (,$(findstring ios,$(platform)))
        ARCH := arm
-       USE_DYNAREC ?= 1
        HAVE_NEON = 1
        BUILTIN_GPU = neon
        TARGET := $(TARGET_NAME)_libretro_ios.dylib
-ifeq ($(USE_DYNAREC),0)
+ifeq ($(DYNAREC),)
        # Override
        TARGET := $(TARGET_NAME)_interpreter_libretro_ios.dylib
 endif
@@ -118,6 +122,32 @@ else
        CFLAGS += -miphoneos-version-min=5.0
 endif
 
+# Nintendo Switch (libnx)
+else ifeq ($(platform), libnx)
+   export DEPSDIR := $(CURDIR)/
+   include $(DEVKITPRO)/libnx/switch_rules
+   TARGET := $(TARGET_NAME)_libretro_$(platform).a
+   ARCH := arm64
+   BUILTIN_GPU = unai
+   HAVE_VFS_FD = 0
+   CFLAGS += -O3 -fomit-frame-pointer -ffast-math -I$(DEVKITPRO)/libnx/include/ -fPIE -Wl,--allow-multiple-definition -include $(LIBNX)/include/switch.h
+   CFLAGS += -specs=$(DEVKITPRO)/libnx/switch.specs -DNO_OS -DNO_DYLIB -DNO_SOCKET -D__arm64__ -D__ARM_NEON__
+   CFLAGS += -D__SWITCH__
+   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
+   CFLAGS += -ftree-vectorize
+   CFLAGS += -Ifrontend/switch -ftree-vectorize
+   LIBPTHREAD :=
+   STATIC_LINKING=1
+
+# Lakka Switch (arm64)
+else ifeq ($(platform), arm64)
+   TARGET := $(TARGET_NAME)_libretro.so
+   ARCH := arm64
+   BUILTIN_GPU = unai
+   fpic := -fPIC
+   CFLAGS := $(filter-out -O2, $(CFLAGS))
+   CFLAGS += -O3 -ftree-vectorize
+
 # PS3
 else ifeq ($(platform), ps3)
        TARGET := $(TARGET_NAME)_libretro_ps3.a
@@ -164,7 +194,6 @@ else ifeq ($(platform), vita)
        HAVE_NEON = 1
        BUILTIN_GPU = neon
 
-       USE_DYNAREC = 1
        DRC_CACHE_BASE = 0
 
        ARCH = arm
@@ -184,12 +213,10 @@ else ifeq ($(platform), ctr)
        CFLAGS += -Werror=implicit-function-declaration
 
 #      CFLAGS += -DPCSX
-#      BUILTIN_GPU = unai
-       USE_DYNAREC = 1
+       BUILTIN_GPU = unai
        DRC_CACHE_BASE = 0
        ARCH = arm
        HAVE_NEON = 0
-       HAVE_CHD = 0
        STATIC_LINKING = 1
 
 # Xbox 360
@@ -220,7 +247,6 @@ else ifeq ($(platform), qnx)
        CC = qcc -Vgcc_ntoarmv7le
        CC_AS = $(CC)
        HAVE_NEON = 1
-       USE_DYNAREC = 1
        DRC_CACHE_BASE = 0
        BUILTIN_GPU = neon
        ARCH = arm
@@ -240,7 +266,6 @@ else ifeq ($(platform), rpi2)
        HAVE_NEON = 1
        ARCH = arm
        BUILTIN_GPU = neon
-       USE_DYNAREC = 1
 
 #Raspberry Pi 3
 else ifeq ($(platform), rpi3)
@@ -251,7 +276,6 @@ else ifeq ($(platform), rpi3)
        HAVE_NEON = 1
        ARCH = arm
        BUILTIN_GPU = neon
-       USE_DYNAREC = 1
 
 #Raspberry Pi 4
 else ifeq ($(platform), rpi4)
@@ -262,7 +286,6 @@ else ifeq ($(platform), rpi4)
        HAVE_NEON = 1
        ARCH = arm
        BUILTIN_GPU = neon
-       USE_DYNAREC = 1
 
 # Classic Platforms ####################
 # Platform affix = classic_<ISA>_<µARCH>
@@ -287,7 +310,6 @@ else ifeq ($(platform), classic_armv7_a7)
        HAVE_NEON = 1
        ARCH = arm
        BUILTIN_GPU = neon
-       USE_DYNAREC = 1
        ifeq ($(shell echo `$(CC) -dumpversion` "< 4.9" | bc -l), 1)
                CFLAGS += -march=armv7-a
        else
@@ -309,7 +331,6 @@ else ifeq ($(platform), classic_armv8_a35)
        HAVE_NEON = 1
        ARCH = arm
        BUILTIN_GPU = neon
-       USE_DYNAREC = 1
        LDFLAGS += -static-libgcc -static-libstdc++ -fPIC
 
 #######################################
@@ -347,7 +368,6 @@ else ifneq (,$(findstring armv,$(platform)))
                ASFLAGS += -mfloat-abi=hard
        endif
        ARCH = arm
-       USE_DYNAREC = 1
 
 # Windows
 else