# Makefile for PCSX ReARMed (libretro)
DEBUG=0
+WANT_ZLIB=1
ifeq ($(platform),)
platform = unix
CFLAGS ?=
TARGET_NAME := pcsx_rearmed
+GIT_VERSION := " $(shell git rev-parse --short HEAD || echo unknown)"
+ifneq ($(GIT_VERSION)," unknown")
+ CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\"
+endif
+ifneq ($(WANT_ZLIB),1)
LIBZ := -lz
+endif
LIBPTHREAD := -lpthread
+ifneq ($(findstring Haiku,$(shell uname -s)),)
+LIBDL := -lroot -lnetwork
+else
LIBDL := -ldl
+endif
+LIBM := -lm
MMAP_WIN32=0
EXTRA_LDFLAGS =
ifeq ($(platform), unix)
TARGET := $(TARGET_NAME)_libretro.so
fpic := -fPIC
+ifneq ($(findstring SunOS,$(shell uname -s)),)
+ CC = gcc
+endif
else ifeq ($(platform), linux-portable)
TARGET := $(TARGET_NAME)_libretro.so
LIBZ :=
LIBPTHREAD :=
LIBDL :=
+ LIBM :=
NO_UNDEF_CHECK = 1
# 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)
+ # Override
+ TARGET := $(TARGET_NAME)_interpreter_libretro.dylib
+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
+
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)
# Override
CC_AS = perl ./tools/gas-preprocessor.pl $(CC)
CFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon -marm
ASFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon
- HAVE_NEON = 1
- BUILTIN_GPU = neon
CFLAGS += -DIOS
ifeq ($(platform),ios9)
CC += -miphoneos-version-min=8.0
AR = arm-vita-eabi-ar$(EXE_EXT)
CFLAGS += -DVITA
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 += -I$(VITASDK)/include -Ifrontend/vita
CFLAGS += -DNO_SOCKET -DNO_OS -DNO_DYLIB
ASFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon
CFLAGS += -DARM11 -D_3DS -DNO_OS -DNO_DYLIB -DNO_SOCKET
CFLAGS += -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp -mtp=soft
CFLAGS += -Wall -mword-relocations
- CFLAGS += -fomit-frame-pointer -ffast-math
+ CFLAGS += -fomit-frame-pointer -ffast-math
CFLAGS += -Ifrontend/3ds
CFLAGS += -Werror=implicit-function-declaration
# CFLAGS += -DPCSX
# BUILTIN_GPU = unai
USE_DYNAREC = 1
- DRC_CACHE_BASE = 1
+ DRC_CACHE_BASE = 0
ARCH = arm
+ HAVE_NEON = 0
STATIC_LINKING = 1
DRC_CACHE_BASE = 0
BUILTIN_GPU = neon
ARCH = arm
- CFLAGS += -DBASE_ADDR_FIXED=0 -D__BLACKBERRY_QNX__ -marm -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mfloat-abi=softfp
+ 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
MAIN_LDLIBS += -lsocket
LIBPTHREAD :=
LIBDL :=
+ LIBM :=
#Raspberry Pi 2
else ifeq ($(platform), rpi2)
ARCH = arm
BUILTIN_GPU = neon
USE_DYNAREC = 1
-
+
#Raspberry Pi 3
else ifeq ($(platform), rpi3)
TARGET := $(TARGET_NAME)_libretro.so
BUILTIN_GPU = neon
USE_DYNAREC = 1
+# Classic Platforms ####################
+# Platform affix = classic_<ISA>_<µARCH>
+# Help at https://modmyclassic.com/comp
+
+# (armv7 a7, hard point, neon based) ###
+# NESC, SNESC, C64 mini
+else ifeq ($(platform), classic_armv7_a7)
+ TARGET := $(TARGET_NAME)_libretro.so
+ fpic := -fPIC
+ CFLAGS += -Ofast \
+ -flto=4 -fwhole-program -fuse-linker-plugin \
+ -fdata-sections -ffunction-sections -Wl,--gc-sections \
+ -fno-stack-protector -fno-ident -fomit-frame-pointer \
+ -falign-functions=1 -falign-jumps=1 -falign-loops=1 \
+ -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-unroll-loops \
+ -fmerge-all-constants -fno-math-errno \
+ -marm -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard
+ CXXFLAGS += $(CFLAGS)
+ CPPFLAGS += $(CFLAGS)
+ ASFLAGS += $(CFLAGS)
+ 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
+ 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
+#######################################
+
# ARM
else ifneq (,$(findstring armv,$(platform)))
TARGET := $(TARGET_NAME)_libretro.so
ifneq (,$(findstring cortexa8,$(platform)))
CFLAGS += -marm -mcpu=cortex-a8
ASFLAGS += -mcpu=cortex-a8
+ else ifneq (,$(findstring cortexa7,$(platform)))
+ CFLAGS += -marm -mcpu=cortex-a7
+ ASFLAGS += -mcpu=cortex-a7
+ LIBZ :=
else ifneq (,$(findstring cortexa9,$(platform)))
CFLAGS += -marm -mcpu=cortex-a9
ASFLAGS += -mcpu=cortex-a9
# Windows
else
TARGET := $(TARGET_NAME)_libretro.dll
+ BUILTIN_GPU = peops
+ PLATFORM = libretro
MAIN_LDFLAGS += -static-libgcc -static-libstdc++ -s
- CFLAGS += -D__WIN32__
+ CFLAGS += -D__WIN32__ -DNO_DYLIB
MMAP_WIN32=1
MAIN_LDLIBS += -lws2_32
LIBPTHREAD :=
LIBDL :=
+ LIBM :=
endif
CFLAGS += $(fpic)
MAIN_LDFLAGS += -shared
-MAIN_LDLIBS += $(LIBPTHREAD) $(LIBDL) $(LIBZ)
+MAIN_LDLIBS += $(LIBPTHREAD) $(LIBM) $(LIBDL) $(LIBZ)
# try to autodetect stuff for the lazy
ifndef ARCH
MAIN_LDFLAGS += -Wl,--no-undefined
endif
+# 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 ($(shell ld -v 2> /dev/null | awk '{print $$1}'),GNU)
+MAIN_LDFLAGS += -Wl,--no-undefined
+endif
+
TARGET ?= libretro.so
PLATFORM = libretro
BUILTIN_GPU ?= peops
PLUGINS =
NO_CONFIG_MAK = yes
-libretro_all: all
-ifeq ($(platform),ios)
-ifeq ($(USE_DYNAREC),1)
- make -f Makefile.libretro USE_DYNAREC=0 platform=$(platform) clean
- make -f Makefile.libretro USE_DYNAREC=0 platform=$(platform)
-endif
-endif
+# what does this do
+#libretro_all: all
+#ifeq ($(platform),ios)
+#ifeq ($(USE_DYNAREC),1)
+# make -f Makefile.libretro USE_DYNAREC=0 platform=$(platform) clean
+# make -f Makefile.libretro USE_DYNAREC=0 platform=$(platform)
+#endif
+#endif
include Makefile