Fix Mupen64 RA cores for RK3588
This commit is contained in:
parent
7eacef6314
commit
a726d1bd46
4 changed files with 738 additions and 0 deletions
|
@ -25,6 +25,11 @@ fi
|
|||
|
||||
pre_configure_target() {
|
||||
sed -e "s|^GIT_VERSION ?.*$|GIT_VERSION := \" ${PKG_VERSION:0:7}\"|" -i Makefile
|
||||
case ${DEVICE} in
|
||||
RK3588)
|
||||
PKG_MAKE_OPTS_TARGET=" platform=RK3588"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
|
|
|
@ -0,0 +1,689 @@
|
|||
diff -rupN mupen64plus.orig/Makefile mupen64plus/Makefile
|
||||
--- mupen64plus.orig/Makefile 2022-09-23 07:01:22.758058025 -0400
|
||||
+++ mupen64plus/Makefile 2022-09-23 07:05:08.886138368 -0400
|
||||
@@ -319,7 +319,7 @@ else ifneq (,$(findstring AMLG,$(platfor
|
||||
|
||||
HAVE_NEON = 1
|
||||
WITH_DYNAREC=arm
|
||||
- COREFLAGS += -DUSE_GENERIC_GLESV2 -DOS_LINUX
|
||||
+ #COREFLAGS += -DUSE_GENERIC_GLESV2 -DOS_LINUX
|
||||
ASFLAGS = -f elf -d ELF_TYPE
|
||||
|
||||
# Amlogic S905/S912
|
||||
@@ -362,13 +362,10 @@ else ifneq (,$(findstring RK,$(platform)
|
||||
LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined -ldl
|
||||
|
||||
ifneq (,$(findstring RK33,$(platform)))
|
||||
- CPUFLAGS += -march=armv8-a+crc -mfloat-abi=hard -mfpu=neon-fp-armv8
|
||||
ifneq (,$(findstring RK3399,$(platform)))
|
||||
- CPUFLAGS += -mtune=cortex-a72.cortex-a53
|
||||
- GLES3 = 1
|
||||
- else ifneq (,$(findstring RK3328,$(platform)))
|
||||
- CPUFLAGS += -mtune=cortex-a53
|
||||
- GLES = 1
|
||||
+ CPUFLAGS += -march=armv8-a -mtune=cortex-a72.cortex-a53
|
||||
+ else ifneq (,$(findstring RK3588,$(platform)))
|
||||
+ CPUFLAGS += -march=armv8-a -mtune=cortex-a76.cortex-a55
|
||||
endif
|
||||
else ifneq (,$(findstring RK3288,$(platform)))
|
||||
CPUFLAGS += -march=armv7ve -mtune=cortex-a17 -mfloat-abi=hard -mfpu=neon-vfpv4
|
||||
@@ -380,10 +377,10 @@ else ifneq (,$(findstring RK,$(platform)
|
||||
endif
|
||||
|
||||
GL_LIB := -lGLESv2
|
||||
- HAVE_NEON = 1
|
||||
- WITH_DYNAREC=arm
|
||||
- COREFLAGS += -DUSE_GENERIC_GLESV2 -DOS_LINUX
|
||||
- ASFLAGS = -f elf -d ELF_TYPE
|
||||
+ WITH_DYNAREC := aarch64
|
||||
+ GLES3 = 1
|
||||
+ COREFLAGS += -DOS_LINUX
|
||||
+ ASFLAGS = -f elf64 -d ELF_TYPE
|
||||
|
||||
# OS X
|
||||
else ifneq (,$(findstring osx,$(platform)))
|
||||
diff -rupN mupen64plus.orig/Makefile.orig mupen64plus/Makefile.orig
|
||||
--- mupen64plus.orig/Makefile.orig 1969-12-31 19:00:00.000000000 -0500
|
||||
+++ mupen64plus/Makefile.orig 2022-09-23 07:01:25.158078690 -0400
|
||||
@@ -0,0 +1,641 @@
|
||||
+DEBUG = 0
|
||||
+FORCE_GLES ?= 0
|
||||
+FORCE_GLES3 ?= 0
|
||||
+LLE ?= 0
|
||||
+HAVE_PARALLEL_RSP ?= 0
|
||||
+HAVE_PARALLEL_RDP ?= 0
|
||||
+
|
||||
+SYSTEM_MINIZIP ?= 0
|
||||
+SYSTEM_LIBPNG ?= 0
|
||||
+SYSTEM_XXHASH ?= 0
|
||||
+SYSTEM_ZLIB ?= 0
|
||||
+
|
||||
+HAVE_LTCG ?= 0
|
||||
+DYNAFLAGS :=
|
||||
+INCFLAGS :=
|
||||
+COREFLAGS :=
|
||||
+CPUFLAGS :=
|
||||
+GLFLAGS :=
|
||||
+AWK ?= awk
|
||||
+STRINGS ?= strings
|
||||
+TR ?= tr
|
||||
+
|
||||
+UNAME=$(shell uname -a)
|
||||
+
|
||||
+# Dirs
|
||||
+ROOT_DIR := .
|
||||
+LIBRETRO_DIR := $(ROOT_DIR)/libretro
|
||||
+DEPSDIR := $(CURDIR)/
|
||||
+
|
||||
+ifeq ($(platform),)
|
||||
+ platform = unix
|
||||
+ 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
|
||||
+else ifneq (,$(findstring armv,$(platform)))
|
||||
+ override platform += unix
|
||||
+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
|
||||
+ifeq ($(shell uname -p),powerpc)
|
||||
+ arch = ppc
|
||||
+endif
|
||||
+else ifneq ($(findstring MINGW,$(shell uname -a)),)
|
||||
+ system_platform = win
|
||||
+endif
|
||||
+
|
||||
+# Cross compile ?
|
||||
+
|
||||
+ifeq (,$(ARCH))
|
||||
+ ARCH = $(shell uname -m)
|
||||
+endif
|
||||
+
|
||||
+# Target Dynarec
|
||||
+WITH_DYNAREC ?= $(ARCH)
|
||||
+
|
||||
+PIC = 1
|
||||
+# on 32bit Haiku the output of "uname -m" is "BePC"
|
||||
+ifeq ($(ARCH), $(filter $(ARCH), i386 i686 BePC))
|
||||
+ WITH_DYNAREC = x86
|
||||
+ PIC = 0
|
||||
+else ifeq ($(ARCH), $(filter $(ARCH), arm))
|
||||
+ WITH_DYNAREC = arm
|
||||
+endif
|
||||
+
|
||||
+TARGET_NAME := mupen64plus_next
|
||||
+CC_AS ?= $(CC)
|
||||
+NASM ?= nasm
|
||||
+
|
||||
+GIT_VERSION ?= " $(shell git rev-parse --short HEAD || echo unknown)"
|
||||
+ifneq ($(GIT_VERSION)," unknown")
|
||||
+ COREFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\"
|
||||
+endif
|
||||
+
|
||||
+ifneq ($(CORE_NAME),)
|
||||
+ COREFLAGS += -DCORE_NAME=\""$(CORE_NAME)"\"
|
||||
+endif
|
||||
+
|
||||
+# Linux
|
||||
+ifneq (,$(findstring unix,$(platform)))
|
||||
+ TARGET := $(TARGET_NAME)_libretro.so
|
||||
+ LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined
|
||||
+
|
||||
+ ifeq ($(FORCE_GLES),1)
|
||||
+ GLES = 1
|
||||
+ GL_LIB := -lGLESv2
|
||||
+ else ifeq ($(FORCE_GLES3),1)
|
||||
+ GLES3 = 1
|
||||
+ GL_LIB := -lGLESv2
|
||||
+ else
|
||||
+ GL_LIB := -lGL
|
||||
+ endif
|
||||
+
|
||||
+ COREFLAGS += -DOS_LINUX
|
||||
+ ifeq ($(ARCH), x86_64)
|
||||
+ ASFLAGS = -f elf64 -d ELF_TYPE
|
||||
+ else
|
||||
+ ASFLAGS = -f elf -d ELF_TYPE
|
||||
+ endif
|
||||
+
|
||||
+ ifneq (,$(findstring armv,$(platform)))
|
||||
+ ARCH = arm
|
||||
+ WITH_DYNAREC = arm
|
||||
+ CPUFLAGS += -DARM -marm
|
||||
+ ifneq (,$(findstring cortexa8,$(platform)))
|
||||
+ CPUFLAGS += -mcpu=cortex-a8
|
||||
+ else ifneq (,$(findstring cortexa9,$(platform)))
|
||||
+ CPUFLAGS += -mcpu=cortex-a9
|
||||
+ else
|
||||
+ CPUFLAGS += -mcpu=cortex-a7
|
||||
+ endif
|
||||
+ ifneq (,$(findstring neon,$(platform)))
|
||||
+ CPUFLAGS += -mfpu=neon
|
||||
+ HAVE_NEON = 1
|
||||
+ endif
|
||||
+ ifneq (,$(findstring softfloat,$(platform)))
|
||||
+ CPUFLAGS += -mfloat-abi=softfp
|
||||
+ else ifneq (,$(findstring hardfloat,$(platform)))
|
||||
+ CPUFLAGS += -mfloat-abi=hard
|
||||
+ endif
|
||||
+ endif
|
||||
+
|
||||
+# Raspberry Pi
|
||||
+else ifneq (,$(findstring rpi,$(platform)))
|
||||
+ TARGET := $(TARGET_NAME)_libretro.so
|
||||
+ LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined -ldl
|
||||
+ ifeq ($(FORCE_GLES3),1)
|
||||
+ GLES3 = 1
|
||||
+ else
|
||||
+ GLES = 1
|
||||
+ endif
|
||||
+ ifneq (,$(findstring mesa,$(platform)))
|
||||
+ MESA = 1
|
||||
+ endif
|
||||
+ ifneq (,$(findstring rpi4,$(platform)))
|
||||
+ GLES3 = 1
|
||||
+ MESA = 1
|
||||
+ endif
|
||||
+ ifeq ($(MESA), 1)
|
||||
+ GL_LIB := -lGLESv2
|
||||
+ else
|
||||
+ LLE = 0
|
||||
+ COREFLAGS += -DVC -DGL_USE_DLSYM
|
||||
+ GL_LIB := -L/opt/vc/lib -lbrcmGLESv2
|
||||
+ EGL_LIB := -lbrcmEGL
|
||||
+ INCFLAGS += -I/opt/vc/include -I/opt/vc/include/interface/vcos -I/opt/vc/include/interface/vcos/pthreads
|
||||
+ endif
|
||||
+ HAVE_NEON = 1
|
||||
+ ifneq (,$(findstring rpi2,$(platform)))
|
||||
+ CPUFLAGS += -mcpu=cortex-a7
|
||||
+ ARM_CPUFLAGS = -mfpu=neon-vfpv4
|
||||
+ else ifneq (,$(findstring rpi3,$(platform)))
|
||||
+ ifneq (,$(findstring rpi3_64,$(platform)))
|
||||
+ CPUFLAGS += -mcpu=cortex-a53 -mtune=cortex-a53
|
||||
+ else
|
||||
+ CPUFLAGS += -march=armv8-a+crc -mtune=cortex-a53
|
||||
+ ARM_CPUFLAGS = -mfpu=neon-fp-armv8
|
||||
+ endif
|
||||
+ else ifneq (,$(findstring rpi4,$(platform)))
|
||||
+ ifneq (,$(findstring rpi4_64,$(platform)))
|
||||
+ CPUFLAGS += -mcpu=cortex-a72 -mtune=cortex-a72
|
||||
+ else
|
||||
+ CPUFLAGS += -march=armv8-a+crc -mtune=cortex-a72
|
||||
+ ARM_CPUFLAGS = -mfpu=neon-fp-armv8
|
||||
+ endif
|
||||
+ else ifneq (,$(findstring rpi,$(platform)))
|
||||
+ CPUFLAGS += -mcpu=arm1176jzf-s
|
||||
+ ARM_CPUFLAGS = -mfpu=vfp
|
||||
+ HAVE_NEON = 0
|
||||
+ endif
|
||||
+ ifeq ($(ARCH), aarch64)
|
||||
+ WITH_DYNAREC=aarch64
|
||||
+ HAVE_NEON = 0
|
||||
+ else
|
||||
+ WITH_DYNAREC=arm
|
||||
+ CPUFLAGS += $(ARM_CPUFLAGS) -mfloat-abi=hard
|
||||
+ endif
|
||||
+ COREFLAGS += -DOS_LINUX
|
||||
+ ASFLAGS = -f elf -d ELF_TYPE
|
||||
+
|
||||
+# Nintendo Switch
|
||||
+else ifeq ($(platform), libnx)
|
||||
+ include $(DEVKITPRO)/devkitA64/base_tools
|
||||
+ PORTLIBS := $(PORTLIBS_PATH)/switch
|
||||
+ PATH := $(PORTLIBS)/bin:$(PATH)
|
||||
+ LIBNX ?= $(DEVKITPRO)/libnx
|
||||
+ STRINGS := $(PREFIX)$(STRINGS)
|
||||
+ EGL := 1
|
||||
+ PIC = 1
|
||||
+ TARGET := $(TARGET_NAME)_libretro_$(platform).a
|
||||
+ CPUOPTS := -g -march=armv8-a+crc -mtune=cortex-a57 -mtp=soft -mcpu=cortex-a57+crc+fp+simd
|
||||
+ PLATCFLAGS = -O3 -ffast-math -funsafe-math-optimizations -fPIE -I$(PORTLIBS)/include/ -I$(LIBNX)/include/ -ffunction-sections -fdata-sections -ftls-model=local-exec -specs=$(LIBNX)/switch.specs
|
||||
+ PLATCFLAGS += $(INCLUDE) -D__SWITCH__=1 -DSWITCH -DHAVE_LIBNX -D_GLIBCXX_USE_C99_MATH_TR1 -D_LDBL_EQ_DBL -funroll-loops #-DM64P_NETPLAY
|
||||
+ CXXFLAGS += -fno-rtti -std=gnu++11
|
||||
+ COREFLAGS += -DOS_LINUX -DEGL
|
||||
+ GLES = 0
|
||||
+ WITH_DYNAREC = aarch64
|
||||
+ STATIC_LINKING = 1
|
||||
+
|
||||
+# Jetson Xavier NX
|
||||
+else ifeq ($(platform), jetson-xavier)
|
||||
+ TARGET := $(TARGET_NAME)_libretro.so
|
||||
+ LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined
|
||||
+ GL_LIB := -lGL
|
||||
+ CPUOPTS := -march=armv8.2-a+crc -mtune=cortex-a75 -mcpu=cortex-a75+crc+fp+simd
|
||||
+ PLATCFLAGS = -O3 -ffast-math -funsafe-math-optimizations
|
||||
+ CXXFLAGS += -std=gnu++11
|
||||
+ COREFLAGS += -DOS_LINUX
|
||||
+ WITH_DYNAREC = aarch64
|
||||
+ HAVE_PARALLEL_RSP = 1
|
||||
+ HAVE_PARALLEL_RDP = 1
|
||||
+ HAVE_THR_AL = 1
|
||||
+ LLE = 1
|
||||
+ COREFLAGS += -ftree-vectorize -ftree-vectorizer-verbose=2 -funsafe-math-optimizations -fno-finite-math-only
|
||||
+
|
||||
+# 64 bit ODROIDs
|
||||
+else ifneq (,$(findstring odroid64,$(platform)))
|
||||
+ TARGET := $(TARGET_NAME)_libretro.so
|
||||
+ LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined
|
||||
+ BOARD ?= $(shell cat /proc/cpuinfo | grep -i odroid | awk '{print $$3}')
|
||||
+ GLES = 1
|
||||
+ GL_LIB := -lGLESv2
|
||||
+ WITH_DYNAREC := aarch64
|
||||
+ ifneq (,$(findstring C2,$(BOARD)))
|
||||
+ # ODROID-C2
|
||||
+ CPUFLAGS += -mcpu=cortex-a53
|
||||
+ else ifneq (,$(findstring C4,$(BOARD)))
|
||||
+ # ODROID-C4
|
||||
+ CPUFLAGS += -mcpu=cortex-a55
|
||||
+ GLES3 = 1
|
||||
+ else ifneq (,$(findstring N1,$(BOARD)))
|
||||
+ # ODROID-N1
|
||||
+ CPUFLAGS += -mcpu=cortex-a72.cortex-a53
|
||||
+ else ifneq (,$(findstring N2,$(BOARD)))
|
||||
+ # ODROID-N2
|
||||
+ CPUFLAGS += -mcpu=cortex-a73.cortex-a53
|
||||
+ GLES = 0
|
||||
+ GLES3= 1
|
||||
+ GL_LIB := -lGLESv3
|
||||
+ endif
|
||||
+
|
||||
+ COREFLAGS += -DOS_LINUX
|
||||
+ ASFLAGS = -f elf -d ELF_TYPE
|
||||
+
|
||||
+# ODROIDs
|
||||
+else ifneq (,$(findstring odroid,$(platform)))
|
||||
+ TARGET := $(TARGET_NAME)_libretro.so
|
||||
+ LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined
|
||||
+ BOARD ?= $(shell cat /proc/cpuinfo | grep -i odroid | awk '{print $$3}')
|
||||
+ GLES = 1
|
||||
+ GL_LIB := -lGLESv2
|
||||
+ CPUFLAGS += -marm -mfloat-abi=hard
|
||||
+ HAVE_NEON = 1
|
||||
+ WITH_DYNAREC=arm
|
||||
+ ifneq (,$(findstring ODROIDC,$(BOARD)))
|
||||
+ # ODROID-C1
|
||||
+ CPUFLAGS += -mcpu=cortex-a5 -mfpu=neon
|
||||
+ else ifneq (,$(findstring ODROID-XU,$(BOARD)))
|
||||
+ # ODROID-XU3 & -XU3 Lite and -XU4
|
||||
+ ifeq "$(shell expr `gcc -dumpversion` \>= 4.9)" "1"
|
||||
+ CPUFLAGS += -mcpu=cortex-a15 -mtune=cortex-a15.cortex-a7 -mfpu=neon-vfpv4 -mvectorize-with-neon-quad
|
||||
+ else
|
||||
+ CPUFLAGS += -mcpu=cortex-a9 -mfpu=neon
|
||||
+ endif
|
||||
+ # ODROIDGOA
|
||||
+ else ifneq (,$(findstring ODROIDGOA,$(BOARD)))
|
||||
+ CPUFLAGS += -march=armv8-a+crc -mfpu=neon-fp-armv8 -mcpu=cortex-a35 -mtune=cortex-a35
|
||||
+ else
|
||||
+ # ODROID-U2, -U3, -X & -X2
|
||||
+ CPUFLAGS += -mcpu=cortex-a9 -mfpu=neon
|
||||
+ endif
|
||||
+
|
||||
+ COREFLAGS += -DOS_LINUX
|
||||
+ ASFLAGS = -f elf -d ELF_TYPE
|
||||
+
|
||||
+# Amlogic S905/S905X/S912 (AMLGXBB/AMLGXL/AMLGXM) e.g. Khadas VIM1/2 / S905X2 (AMLG12A) & S922X/A311D (AMLG12B) e.g. Khadas VIM3 - 32-bit userspace
|
||||
+else ifneq (,$(findstring AMLG,$(platform)))
|
||||
+ TARGET := $(TARGET_NAME)_libretro.so
|
||||
+ LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined -ldl
|
||||
+ CPUFLAGS += -march=armv8-a+crc -mfloat-abi=hard -mfpu=neon-fp-armv8
|
||||
+
|
||||
+ ifneq (,$(findstring AMLG12,$(platform)))
|
||||
+ ifneq (,$(findstring AMLG12B,$(platform)))
|
||||
+ CPUFLAGS += -mtune=cortex-a73.cortex-a53
|
||||
+ else
|
||||
+ CPUFLAGS += -mtune=cortex-a53
|
||||
+ endif
|
||||
+ GLES3 = 1
|
||||
+ else ifneq (,$(findstring AMLGX,$(platform)))
|
||||
+ CPUFLAGS += -mtune=cortex-a53
|
||||
+ ifneq (,$(findstring AMLGXM,$(platform)))
|
||||
+ GLES3 = 1
|
||||
+ else
|
||||
+ GLES = 1
|
||||
+ endif
|
||||
+ endif
|
||||
+
|
||||
+ ifneq (,$(findstring mesa,$(platform)))
|
||||
+ COREFLAGS += -DEGL_NO_X11
|
||||
+ endif
|
||||
+
|
||||
+ ifneq (,$(findstring mali,$(platform)))
|
||||
+ GL_LIB := -lGLESv3
|
||||
+ else
|
||||
+ GL_LIB := -lGLESv2
|
||||
+ endif
|
||||
+
|
||||
+ HAVE_NEON = 1
|
||||
+ WITH_DYNAREC=arm
|
||||
+ COREFLAGS += -DUSE_GENERIC_GLESV2 -DOS_LINUX
|
||||
+ ASFLAGS = -f elf -d ELF_TYPE
|
||||
+
|
||||
+# Amlogic S905/S912
|
||||
+else ifneq (,$(findstring amlogic,$(platform)))
|
||||
+ TARGET := $(TARGET_NAME)_libretro.so
|
||||
+ LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined -ldl
|
||||
+ GLES = 1
|
||||
+ GL_LIB := -lGLESv2
|
||||
+ CPUFLAGS += -marm -mfloat-abi=hard -mfpu=neon
|
||||
+ HAVE_NEON = 1
|
||||
+ WITH_DYNAREC=arm
|
||||
+ COREFLAGS += -DUSE_GENERIC_GLESV2 -DOS_LINUX
|
||||
+ CPUFLAGS += -march=armv8-a -mcpu=cortex-a53 -mtune=cortex-a53
|
||||
+
|
||||
+# Generic AArch64 Cortex-A53 GLES 2.0 target
|
||||
+else ifneq (,$(findstring arm64_cortex_a53_gles2,$(platform)))
|
||||
+ TARGET := $(TARGET_NAME)_libretro.so
|
||||
+ LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined -ldl
|
||||
+ GL_LIB := -lGLESv2
|
||||
+ WITH_DYNAREC := aarch64
|
||||
+ CPUFLAGS += -mcpu=cortex-a53 -mtune=cortex-a53
|
||||
+ GLES = 1
|
||||
+ COREFLAGS += -DOS_LINUX
|
||||
+ ASFLAGS = -f elf64 -d ELF_TYPE
|
||||
+
|
||||
+# Generic AArch64 Cortex-A53 GLES 3.0 target
|
||||
+else ifneq (,$(findstring arm64_cortex_a53_gles3,$(platform)))
|
||||
+ TARGET := $(TARGET_NAME)_libretro.so
|
||||
+ LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined -ldl
|
||||
+ GL_LIB := -lGLESv2
|
||||
+ WITH_DYNAREC := aarch64
|
||||
+ CPUFLAGS += -mcpu=cortex-a53 -mtune=cortex-a53
|
||||
+ GLES3 = 1
|
||||
+ COREFLAGS += -DOS_LINUX
|
||||
+ ASFLAGS = -f elf64 -d ELF_TYPE
|
||||
+
|
||||
+# Rockchip RK3288 e.g. Asus Tinker Board / RK3328 e.g. PINE64 Rock64 / RK3399 e.g. PINE64 RockPro64 - 32-bit userspace
|
||||
+else ifneq (,$(findstring RK,$(platform)))
|
||||
+ TARGET := $(TARGET_NAME)_libretro.so
|
||||
+ LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined -ldl
|
||||
+
|
||||
+ ifneq (,$(findstring RK33,$(platform)))
|
||||
+ CPUFLAGS += -march=armv8-a+crc -mfloat-abi=hard -mfpu=neon-fp-armv8
|
||||
+ ifneq (,$(findstring RK3399,$(platform)))
|
||||
+ CPUFLAGS += -mtune=cortex-a72.cortex-a53
|
||||
+ GLES3 = 1
|
||||
+ else ifneq (,$(findstring RK3328,$(platform)))
|
||||
+ CPUFLAGS += -mtune=cortex-a53
|
||||
+ GLES = 1
|
||||
+ endif
|
||||
+ else ifneq (,$(findstring RK3288,$(platform)))
|
||||
+ CPUFLAGS += -march=armv7ve -mtune=cortex-a17 -mfloat-abi=hard -mfpu=neon-vfpv4
|
||||
+ GLES3 = 1
|
||||
+ endif
|
||||
+
|
||||
+ ifneq (,$(findstring mesa,$(platform)))
|
||||
+ COREFLAGS += -DEGL_NO_X11
|
||||
+ endif
|
||||
+
|
||||
+ GL_LIB := -lGLESv2
|
||||
+ HAVE_NEON = 1
|
||||
+ WITH_DYNAREC=arm
|
||||
+ COREFLAGS += -DUSE_GENERIC_GLESV2 -DOS_LINUX
|
||||
+ ASFLAGS = -f elf -d ELF_TYPE
|
||||
+
|
||||
+# OS X
|
||||
+else ifneq (,$(findstring osx,$(platform)))
|
||||
+ TARGET := $(TARGET_NAME)_libretro.dylib
|
||||
+ LDFLAGS += -dynamiclib
|
||||
+ OSXVER = `sw_vers -productVersion | cut -d. -f 2`
|
||||
+ OSX_LT_MAVERICKS = `(( $(OSXVER) <= 9)) && echo "YES"`
|
||||
+ LDFLAGS += -mmacosx-version-min=10.7
|
||||
+ LDFLAGS += -stdlib=libc++
|
||||
+
|
||||
+ PLATCFLAGS += -D__MACOSX__ -DOSX -DOS_MAC_OS_X
|
||||
+ GL_LIB := -framework OpenGL
|
||||
+
|
||||
+ # Target Dynarec
|
||||
+ ifeq ($(ARCH), $(filter $(ARCH), ppc))
|
||||
+ WITH_DYNAREC =
|
||||
+ endif
|
||||
+
|
||||
+ COREFLAGS += -DOS_LINUX
|
||||
+ ASFLAGS = -f elf -d ELF_TYPE
|
||||
+# iOS
|
||||
+else ifneq (,$(findstring ios,$(platform)))
|
||||
+ ifeq ($(IOSSDK),)
|
||||
+ IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path)
|
||||
+ endif
|
||||
+
|
||||
+ TARGET := $(TARGET_NAME)_libretro_ios.dylib
|
||||
+ DEFINES += -DIOS
|
||||
+ GLES = 1
|
||||
+ ifeq ($(platform),ios-arm64)
|
||||
+ WITH_DYNAREC=
|
||||
+ GLES=1
|
||||
+ GLES3=1
|
||||
+ FORCE_GLES3=1
|
||||
+ EGL := 0
|
||||
+ PLATCFLAGS += -DHAVE_POSIX_MEMALIGN -DNO_ASM
|
||||
+ PLATCFLAGS += -DIOS -marm -DOS_IOS -DDONT_WANT_ARM_OPTIMIZATIONS
|
||||
+ CPUFLAGS += -marm -mfpu=neon -mfloat-abi=softfp
|
||||
+ HAVE_NEON=0
|
||||
+ 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 -Wno-error=implicit-function-declaration
|
||||
+ CC = clang -arch arm64 -isysroot $(IOSSDK)
|
||||
+ CXX = clang++ -arch arm64 -isysroot $(IOSSDK)
|
||||
+ else
|
||||
+ PLATCFLAGS += -DOS_MAC_OS_X
|
||||
+ 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
|
||||
+ WITH_DYNAREC=arm
|
||||
+ HAVE_NEON=1
|
||||
+ 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
|
||||
+ CC = clang -arch armv7 -isysroot $(IOSSDK)
|
||||
+ CC_AS = perl ./custom/tools/gas-preprocessor.pl $(CC)
|
||||
+ CXX = clang++ -arch armv7 -isysroot $(IOSSDK)
|
||||
+ endif
|
||||
+ LDFLAGS += -dynamiclib
|
||||
+ GL_LIB := -framework OpenGLES
|
||||
+# Android
|
||||
+else ifneq (,$(findstring android,$(platform)))
|
||||
+ ANDROID = 1
|
||||
+ LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined -Wl,--warn-common -llog
|
||||
+ INCFLAGS += -I$(ROOT_DIR)/GLideN64/src/GLideNHQ/inc
|
||||
+ ifneq (,$(findstring x86,$(platform)))
|
||||
+ CC = i686-linux-android-gcc
|
||||
+ CXX = i686-linux-android-g++
|
||||
+ WITH_DYNAREC = x86
|
||||
+ LDFLAGS += -L$(ROOT_DIR)/custom/android/x86
|
||||
+ else
|
||||
+ CC = arm-linux-androideabi-gcc
|
||||
+ CXX = arm-linux-androideabi-g++
|
||||
+ WITH_DYNAREC = arm
|
||||
+ HAVE_NEON = 1
|
||||
+ CPUFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=neon
|
||||
+ LDFLAGS += -march=armv7-a -L$(ROOT_DIR)/custom/android/arm
|
||||
+ endif
|
||||
+ ifneq (,$(findstring gles3,$(platform)))
|
||||
+ GL_LIB := -lGLESv3
|
||||
+ GLES3 = 1
|
||||
+ TARGET := $(TARGET_NAME)_gles3_libretro_android.so
|
||||
+ else
|
||||
+ GL_LIB := -lGLESv2
|
||||
+ GLES = 1
|
||||
+ TARGET := $(TARGET_NAME)_gles2_libretro_android.so
|
||||
+ endif
|
||||
+ CPUFLAGS += -DANDROID -DEGL_EGLEXT_PROTOTYPES
|
||||
+ COREFLAGS += -DOS_LINUX
|
||||
+ ASFLAGS = -f elf -d ELF_TYPE
|
||||
+# emscripten
|
||||
+else ifeq ($(platform), emscripten)
|
||||
+ TARGET := $(TARGET_NAME)_libretro_emscripten.bc
|
||||
+ GLES := 1
|
||||
+ WITH_DYNAREC :=
|
||||
+ CPUFLAGS += -DEMSCRIPTEN -DNO_ASM -s USE_ZLIB=1
|
||||
+ PLATCFLAGS += \
|
||||
+ -Dsinc_resampler=glupen_sinc_resampler \
|
||||
+ -DCC_resampler=glupen_CC_resampler \
|
||||
+ -Drglgen_symbol_map=glupen_rglgen_symbol_map \
|
||||
+ -Drglgen_resolve_symbols_custom=glupen_rglgen_resolve_symbols_custom \
|
||||
+ -Drglgen_resolve_symbols=glupen_rglgen_resolve_symbols \
|
||||
+ -Dmemalign_alloc=glupen_memalign_alloc \
|
||||
+ -Dmemalign_free=glupen_memalign_free \
|
||||
+ -Dmemalign_alloc_aligned=glupen_memalign_alloc_aligned \
|
||||
+ -Daudio_resampler_driver_find_handle=glupen_audio_resampler_driver_find_handle \
|
||||
+ -Daudio_resampler_driver_find_ident=glupen_audio_resampler_driver_find_ident \
|
||||
+ -Drarch_resampler_realloc=glupen_rarch_resampler_realloc \
|
||||
+ -Dconvert_float_to_s16_C=glupen_convert_float_to_s16_C \
|
||||
+ -Dconvert_float_to_s16_init_simd=glupen_convert_float_to_s16_init_simd \
|
||||
+ -Dconvert_s16_to_float_C=glupen_convert_s16_to_float_C \
|
||||
+ -Dconvert_s16_to_float_init_simd=glupen_convert_s16_to_float_init_simd \
|
||||
+ -Dcpu_features_get_perf_counter=glupen_cpu_features_get_perf_counter \
|
||||
+ -Dcpu_features_get_time_usec=glupen_cpu_features_get_time_usec \
|
||||
+ -Dcpu_features_get_core_amount=glupen_cpu_features_get_core_amount \
|
||||
+ -Dcpu_features_get=glupen_cpu_features_get \
|
||||
+ -Dffs=glupen_ffs \
|
||||
+ -Dstrlcpy_retro__=glupen_strlcpy_retro__ \
|
||||
+ -Dstrlcat_retro__=glupen_strlcat_retro__
|
||||
+ CC = emcc
|
||||
+ CXX = em++
|
||||
+ HAVE_NEON = 0
|
||||
+
|
||||
+ COREFLAGS += -DOS_LINUX
|
||||
+ ASFLAGS = -f elf -d ELF_TYPE
|
||||
+# Windows
|
||||
+else
|
||||
+ TARGET := $(TARGET_NAME)_libretro.dll
|
||||
+ LDFLAGS += -shared -static-libgcc -static-libstdc++ -Wl,--version-script=$(LIBRETRO_DIR)/link.T #-static -lmingw32 -lSDL2main -lSDL2 -mwindows -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -lsdl2_net -lsdl2 -lws2_32 -lSetupapi -lIPHLPAPI
|
||||
+ GL_LIB := -lopengl32
|
||||
+
|
||||
+ ifeq ($(MSYSTEM),MINGW64)
|
||||
+ CC ?= x86_64-w64-mingw32-gcc
|
||||
+ CXX ?= x86_64-w64-mingw32-g++
|
||||
+ WITH_DYNAREC = x86_64
|
||||
+ COREFLAGS += -DWIN64 #-DM64P_NETPLAY
|
||||
+ ASFLAGS = -f win64 -d WIN64
|
||||
+ PIC = 1
|
||||
+ else ifeq ($(MSYSTEM),MINGW32)
|
||||
+ CC ?= i686-w64-mingw32-gcc
|
||||
+ CXX ?= i686-w64-mingw32-g++
|
||||
+ WITH_DYNAREC = x86
|
||||
+ COREFLAGS += -DWIN32
|
||||
+ PIC = 1
|
||||
+ ASFLAGS = -f win32 -d WIN32 -d LEADING_UNDERSCORE
|
||||
+ endif
|
||||
+
|
||||
+ HAVE_PARALLEL_RSP = 1
|
||||
+ HAVE_PARALLEL_RDP = 1
|
||||
+ HAVE_THR_AL = 1
|
||||
+ LLE = 1
|
||||
+ COREFLAGS += -DOS_WINDOWS -DMINGW -DUNICODE
|
||||
+ CXXFLAGS += -fpermissive
|
||||
+endif
|
||||
+
|
||||
+ifeq ($(STATIC_LINKING), 1)
|
||||
+ ifneq (,$(findstring win,$(platform)))
|
||||
+ TARGET := $(TARGET:.dll=.lib)
|
||||
+ else ifneq ($(platform), $(filter $(platform), osx ios))
|
||||
+ TARGET := $(TARGET:.dylib=.a)
|
||||
+ else
|
||||
+ TARGET := $(TARGET:.so=.a)
|
||||
+ endif
|
||||
+endif
|
||||
+
|
||||
+include Makefile.common
|
||||
+
|
||||
+ifeq ($(HAVE_NEON), 1)
|
||||
+ COREFLAGS += -DHAVE_NEON -D__ARM_NEON__ -D__NEON_OPT -ftree-vectorize -mvectorize-with-neon-quad -ftree-vectorizer-verbose=2 -funsafe-math-optimizations -fno-finite-math-only
|
||||
+endif
|
||||
+
|
||||
+ifeq ($(LLE), 1)
|
||||
+ COREFLAGS += -DHAVE_LLE
|
||||
+endif
|
||||
+
|
||||
+COREFLAGS += -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -D__LIBRETRO__ -DUSE_FILE32API -DM64P_PLUGIN_API -DM64P_CORE_PROTOTYPES -D_ENDUSER_RELEASE -DSINC_LOWER_QUALITY -DTXFILTER_LIB -D__VEC4_OPT -DMUPENPLUSAPI
|
||||
+
|
||||
+ifeq ($(DEBUG), 1)
|
||||
+ CPUOPTS += -O0 -g
|
||||
+ CPUOPTS += -DOPENGL_DEBUG
|
||||
+else
|
||||
+ CPUOPTS += -DNDEBUG -fsigned-char -ffast-math -fno-strict-aliasing -fomit-frame-pointer -fvisibility=hidden
|
||||
+ifneq ($(platform), libnx)
|
||||
+ CPUOPTS := -O3 $(CPUOPTS)
|
||||
+endif
|
||||
+ CXXFLAGS += -fvisibility-inlines-hidden
|
||||
+endif
|
||||
+
|
||||
+# Use -fcommon
|
||||
+CPUOPTS += -fcommon
|
||||
+
|
||||
+# set C/C++ standard to use
|
||||
+CFLAGS += -std=gnu11 -D_CRT_SECURE_NO_WARNINGS -Wno-discarded-qualifiers
|
||||
+CXXFLAGS += -std=gnu++11 -D_CRT_SECURE_NO_WARNINGS
|
||||
+
|
||||
+ifeq ($(HAVE_LTCG),1)
|
||||
+ CPUFLAGS += -flto
|
||||
+endif
|
||||
+
|
||||
+ifeq ($(PIC), 1)
|
||||
+ fpic = -fPIC
|
||||
+else
|
||||
+ fpic = -fno-PIC
|
||||
+endif
|
||||
+
|
||||
+OBJECTS += $(SOURCES_CXX:.cpp=.o) $(SOURCES_C:.c=.o) $(SOURCES_ASM:.S=.o) $(SOURCES_NASM:.asm=.o)
|
||||
+CXXFLAGS += $(CPUOPTS) $(COREFLAGS) $(INCFLAGS) $(PLATCFLAGS) $(fpic) $(CPUFLAGS) $(GLFLAGS) $(DYNAFLAGS)
|
||||
+CFLAGS += $(CPUOPTS) $(COREFLAGS) $(INCFLAGS) $(PLATCFLAGS) $(fpic) $(CPUFLAGS) $(GLFLAGS) $(DYNAFLAGS)
|
||||
+
|
||||
+ifeq (,$(findstring android,$(platform)))
|
||||
+ LDFLAGS += -lpthread
|
||||
+endif
|
||||
+
|
||||
+ifeq ($(platform), ios-arm64)
|
||||
+ LDFLAGS += $(fpic) -O3 $(CPUOPTS) $(PLATCFLAGS) $(CPUFLAGS)
|
||||
+else
|
||||
+ LDFLAGS += $(fpic) -O3 $(CPUOPTS) $(PLATCFLAGS) $(CPUFLAGS)
|
||||
+endif
|
||||
+
|
||||
+-include $(OBJECTS:.o=.d)
|
||||
+all: $(TARGET)
|
||||
+$(TARGET): $(OBJECTS)
|
||||
+
|
||||
+ifeq ($(STATIC_LINKING), 1)
|
||||
+ $(AR) rcs $@ $(OBJECTS)
|
||||
+else
|
||||
+ $(CXX) -o $@ $(OBJECTS) $(LDFLAGS) $(GL_LIB)
|
||||
+endif
|
||||
+
|
||||
+# Script hackery fll or generating ASM include files for the new dynarec assembly code
|
||||
+$(AWK_DEST_DIR)/asm_defines_gas.h: $(AWK_DEST_DIR)/asm_defines_nasm.h
|
||||
+$(AWK_DEST_DIR)/asm_defines_nasm.h: $(ASM_DEFINES_OBJ)
|
||||
+ $(STRINGS) "$<" | $(TR) -d '\r' | $(AWK) -v dest_dir="$(AWK_DEST_DIR)" -f $(CORE_DIR)/tools/gen_asm_defines.awk
|
||||
+
|
||||
+%.o: %.asm $(AWK_DEST_DIR)/asm_defines_gas.h
|
||||
+ $(NASM) -i$(AWK_DEST_DIR)/ $(ASFLAGS) $< -o $@
|
||||
+
|
||||
+%.o: %.S $(AWK_DEST_DIR)/asm_defines_gas.h
|
||||
+ $(CC_AS) $(CFLAGS) -c $< -o $@
|
||||
+
|
||||
+%.o: %.c
|
||||
+ $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
|
||||
+
|
||||
+%.o: %.cpp
|
||||
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
|
||||
+
|
||||
+clean:
|
||||
+ find -name "*.o" -type f -delete
|
||||
+ find -name "*.d" -type f -delete
|
||||
+ rm -f $(TARGET)
|
||||
+
|
||||
+.PHONY: clean
|
|
@ -48,6 +48,11 @@ pre_make_target() {
|
|||
|
||||
pre_configure_target() {
|
||||
case ${DEVICE} in
|
||||
RK3588)
|
||||
PKG_MAKE_OPTS_TARGET=" platform=RK3588"
|
||||
CFLAGS="${CFLAGS} -DLINUX -DEGL_API_FB"
|
||||
CPPFLAGS="${CPPFLAGS} -DLINUX -DEGL_API_FB"
|
||||
;;
|
||||
*)
|
||||
PKG_MAKE_OPTS_TARGET="GLES=0 GLES3=0"
|
||||
;;
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
diff -rupN mupen64plus.orig/Makefile mupen64plus/Makefile
|
||||
--- mupen64plus.orig/Makefile 2022-02-27 09:19:06.080700288 -0500
|
||||
+++ mupen64plus/Makefile 2022-02-27 13:27:51.390268523 -0500
|
||||
@@ -238,6 +238,35 @@ else ifneq (,$(findstring osx,$(platform
|
||||
|
||||
COREFLAGS += -DOS_LINUX
|
||||
ASFLAGS = -f elf -d ELF_TYPE
|
||||
+
|
||||
+# Rockchip RK3566 / RK3588
|
||||
+else ifneq (,$(findstring RK,$(platform)))
|
||||
+ TARGET := $(TARGET_NAME)_libretro.so
|
||||
+ LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined -ldl
|
||||
+
|
||||
+ ifneq (,$(findstring RK3588,$(platform)))
|
||||
+ ifneq (,$(findstring RK3588,$(platform)))
|
||||
+ CPUFLAGS += -march=armv8-a -mtune=cortex-a76.cortex-a55
|
||||
+ else ifneq (,$(findstring RK3566,$(platform)))
|
||||
+ CPUFLAGS += -march=armv8-a -mtune=cortex-a55
|
||||
+ GLES = 1
|
||||
+ endif
|
||||
+ else ifneq (,$(findstring RK3288,$(platform)))
|
||||
+ CPUFLAGS += -march=armv7ve -mtune=cortex-a17 -mfloat-abi=hard -mfpu=neon-vfpv4
|
||||
+ GLES3 = 1
|
||||
+ endif
|
||||
+
|
||||
+ ifneq (,$(findstring mesa,$(platform)))
|
||||
+ COREFLAGS += -DEGL_NO_X11
|
||||
+ endif
|
||||
+
|
||||
+ GLES = 1
|
||||
+ GL_LIB := -lGLESv2
|
||||
+ HAVE_NEON = 0
|
||||
+ WITH_DYNAREC := aarch64
|
||||
+ COREFLAGS += -DUSE_GENERIC_GLESV2 -DOS_LINUX
|
||||
+ ASFLAGS = -f elf -d ELF_TYPE
|
||||
+
|
||||
# iOS
|
||||
else ifneq (,$(findstring ios,$(platform)))
|
||||
ifeq ($(IOSSDK),)
|
Loading…
Reference in a new issue