X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Makefile.libretro;h=82e98f09a71590c627862c5248d8e0aa05b8ff6f;hb=397ea1e535615c1fac77d744193f3478311a5c88;hp=ab62f2248c1451c5b8fabe82d75ca6ac9a10e594;hpb=cef87e9262aa48428071d46570e6d9f04ccb228f;p=pcsx_rearmed.git diff --git a/Makefile.libretro b/Makefile.libretro index ab62f224..82e98f09 100644 --- a/Makefile.libretro +++ b/Makefile.libretro @@ -46,6 +46,23 @@ LIBM := -lm MMAP_WIN32 = 0 EXTRA_LDFLAGS = +# select some defaults +ifneq (,$(findstring $(ARCH_DETECTED),arm aarch64)) + DYNAREC = ari64 +ifneq (,$(shell $(CC) -E -dD $(CFLAGS) include/arm_features.h | grep 'define __thumb__')) + # must disable thumb as ari64 can't handle it + CFLAGS += -marm +endif +ifneq (,$(shell $(CC) -E -dD $(CFLAGS) include/arm_features.h | grep 'HAVE_NEON32')) + BUILTIN_GPU = neon +endif +endif +ifneq (,$(findstring $(ARCH_DETECTED),i686 x86_64 aarch64)) + BUILTIN_GPU = neon +endif + +# platform specific options + # Unix ifeq ($(platform), unix) TARGET := $(TARGET_NAME)_libretro.so @@ -57,17 +74,6 @@ endif ifneq ($(findstring SunOS,$(shell uname -s)),) CC = gcc endif -ifneq (,$(findstring $(ARCH_DETECTED),arm aarch64)) - DYNAREC = ari64 - -ifneq ($(findstring __thumb__,$(shell $(CC) -E -dD $(CFLAGS) include/arm_features.h)),) - # must disable thumb as ari64 can't handle it - CFLAGS += -marm -endif -endif -ifneq (,$(findstring $(ARCH_DETECTED),x86_64 aarch64)) - BUILTIN_GPU = neon -endif # ODROIDN2 else ifneq (,$(findstring CortexA73_G12B,$(platform))) @@ -204,6 +210,8 @@ else ifeq ($(platform), libnx) 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 + NO_POSIX_MEMALIGN := 1 + NO_PTHREAD=1 LIBPTHREAD := STATIC_LINKING=1 BUILTIN_GPU = neon @@ -257,6 +265,8 @@ else ifeq ($(platform), vita) DYNAREC = ari64 ARCH = arm STATIC_LINKING = 1 + NO_PTHREAD=1 + NO_POSIX_MEMALIGN := 1 # CTR(3DS) else ifeq ($(platform), ctr) @@ -264,7 +274,7 @@ else ifeq ($(platform), ctr) CC = $(DEVKITARM)/bin/arm-none-eabi-gcc$(EXE_EXT) CXX = $(DEVKITARM)/bin/arm-none-eabi-g++$(EXE_EXT) AR = $(DEVKITARM)/bin/arm-none-eabi-ar$(EXE_EXT) - CFLAGS += -DARM11 -D_3DS -DNO_OS -DNO_DYLIB -DNO_SOCKET -DTHREAD_ENABLED -DGPU_UNAI_USE_FLOATMATH -DGPU_UNAI_USE_FLOAT_DIV_MULTINV + CFLAGS += -DARM11 -D_3DS -DNO_OS -DNO_DYLIB -DNO_SOCKET -DGPU_UNAI_USE_FLOATMATH -DGPU_UNAI_USE_FLOAT_DIV_MULTINV CFLAGS += -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp -mtp=soft CFLAGS += -Wall -mword-relocations CFLAGS += -fomit-frame-pointer -ffast-math -funroll-loops @@ -281,6 +291,7 @@ else ifeq ($(platform), ctr) ARCH = arm HAVE_NEON = 0 STATIC_LINKING = 1 + NO_POSIX_MEMALIGN := 1 # Xbox 360 else ifeq ($(platform), xenon) @@ -289,19 +300,36 @@ else ifeq ($(platform), xenon) AR = xenon-ar$(EXE_EXT) CFLAGS += -D__LIBXENON__ -m32 -D__ppc__ -# Nintendo Game Cube -else ifeq ($(platform), ngc) - TARGET := $(TARGET_NAME)_libretro_ngc.a - CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) - AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) - CFLAGS += -DGEKKO -DHW_DOL -mrvl -mcpu=750 -meabi -mhard-float -DBLARGG_BIG_ENDIAN=1 -D__ppc__ - -# Nintendo Wii -else ifeq ($(platform), wii) - TARGET := libretro_$(TARGET_NAME)_wii.a - CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) - AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) - CFLAGS += -DGEKKO -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float -DBLARGG_BIG_ENDIAN=1 -D__ppc__ +# Nintendo GC/Wii/WiiU +else ifneq (,$(filter $(platform),ngc wii wiiu)) + TARGET := $(TARGET_NAME)_libretro_$(platform).a + CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) + CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT) + AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) + ifeq ($(platform), ngc) + CFLAGS += -DHW_DOL -mogc + else ifeq ($(platform), wii) + CFLAGS += -DHW_RVL -mrvl + else ifeq ($(platform), wiiu) + # -mwup was removed in newer devkitPPC versions + CFLAGS += -DHW_WUP + CFLAGS += -I frontend/wiiu + LIGHTREC_CUSTOM_MAP := 1 + LIGHTREC_CUSTOM_MAP_OBJ := libpcsxcore/lightrec/mem_wiiu.o + endif + ARCH = powerpc + BUILTIN_GPU = peops + CFLAGS += -D__ppc__ -D__powerpc__ + CFLAGS += -DGEKKO -mcpu=750 -meabi -mhard-float + CFLAGS += -DNO_SOCKET -DNO_DYLIB + STATIC_LINKING := 1 + THREAD_RENDERING := 0 + NO_PTHREAD := 1 + NO_MMAP := 1 + NO_POSIX_MEMALIGN := 1 + LIBDL := + LIBPTHREAD := + LIBRT := # QNX else ifeq ($(platform), qnx) @@ -498,11 +526,14 @@ else ifeq ($(platform), emscripten) # Windows else TARGET := $(TARGET_NAME)_libretro.dll - BUILTIN_GPU = peops PLATFORM = libretro - MAIN_LDFLAGS += -static-libgcc -static-libstdc++ -s + MAIN_LDFLAGS += -static-libgcc -static-libstdc++ +ifneq ($(DEBUG),1) + MAIN_LDFLAGS += -s +endif CFLAGS += -D__WIN32__ -DNO_DYLIB MMAP_WIN32=1 + NO_PTHREAD=1 MAIN_LDLIBS += -lws2_32 LIBPTHREAD := LIBDL := @@ -523,8 +554,9 @@ endif ifndef ARCH ARCH = $(ARCH_DETECTED) endif -ifndef HAVE_NEON -HAVE_NEON = $(shell $(CC) -E -dD - < /dev/null 2> /dev/null | grep -q __ARM_NEON__ && echo 1 || echo 0) +ifndef HAVE_NEON_ASM +# asm for 32bit only +HAVE_NEON_ASM = $(shell $(CC) -E -dD $(CFLAGS) include/arm_features.h | grep -q HAVE_NEON32 && echo 1 || echo 0) endif ifeq ($(NO_UNDEF_CHECK)$(shell ld -v 2> /dev/null | awk '{print $$1}'),GNU) MAIN_LDFLAGS += -Wl,--no-undefined @@ -532,6 +564,15 @@ endif ifdef ALLOW_LIGHTREC_ON_ARM CFLAGS += -DALLOW_LIGHTREC_ON_ARM endif +ifeq ($(BUILTIN_GPU),neon) +ifneq (,$(findstring $(ARCH),x86 i686)) + CFLAGS_GPU_NEON ?= -msse2 # required +endif +ifeq ($(ARCH),x86_64) + CFLAGS_GPU_NEON ?= -mssse3 # optional, for more perf +endif +CFLAGS += $(CFLAGS_GPU_NEON) +endif TARGET ?= libretro.so PLATFORM = libretro @@ -549,6 +590,16 @@ NO_CONFIG_MAK = yes #endif #endif +$(info TARGET: $(TARGET)) +$(info platform: $(platform)) +$(info ARCH: $(ARCH)) +$(info DYNAREC: $(DYNAREC)) +$(info BUILTIN_GPU: $(BUILTIN_GPU)) +$(info CC: $(CC)) +$(info CFLAGS: $(CFLAGS)) +$(info MAIN_LDLIBS: $(MAIN_LDLIBS)) +$(info ) + include Makefile # no special AS needed for gpu_neon