Support compiling without posix_memalign() function
[pcsx_rearmed.git] / Makefile.libretro
index a3bb43a..42843bc 100644 (file)
@@ -49,12 +49,15 @@ EXTRA_LDFLAGS =
 # select some defaults
 ifneq (,$(findstring $(ARCH_DETECTED),arm aarch64))
        DYNAREC = ari64
-ifneq ($(findstring __thumb__,$(shell $(CC) -E -dD $(CFLAGS) include/arm_features.h)),)
+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),x86_64 aarch64))
+ifneq (,$(findstring $(ARCH_DETECTED),i686 x86_64 aarch64))
        BUILTIN_GPU = neon
 endif
 
@@ -207,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
@@ -260,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)
@@ -267,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
@@ -284,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)
@@ -502,9 +510,13 @@ else ifeq ($(platform), emscripten)
 else
        TARGET := $(TARGET_NAME)_libretro.dll
        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 :=
@@ -525,8 +537,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
@@ -534,6 +547,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
@@ -551,6 +573,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