(CTR/3DS) improve performance by using a DMA friendly vout_buf.
[picodrive.git] / Makefile.libretro
index 6e3248e..a7b9c81 100644 (file)
@@ -34,9 +34,11 @@ asm_cdpico = 0
 asm_cdmemory = 0
 asm_mix = 0
 
+fpic :=
 # Unix
 ifeq ($(platform), unix)
        TARGET := $(TARGET_NAME)_libretro.so
+   fpic := -fPIC
        SHARED := -shared
        DONT_COMPILE_IN_ZLIB = 1
        CFLAGS += -DFAMEC_NO_GOTOS
@@ -45,6 +47,7 @@ ifeq ($(platform), unix)
 else ifeq ($(platform), linux-portable)
        TARGET := $(TARGET_NAME)_libretro.so
        SHARED := -shared -nostdlib
+   fpic := -fPIC
        LIBM :=
        DONT_COMPILE_IN_ZLIB = 1
        CFLAGS += -DFAMEC_NO_GOTOS
@@ -53,6 +56,7 @@ else ifeq ($(platform), linux-portable)
 else ifeq ($(platform), osx)
        TARGET := $(TARGET_NAME)_libretro.dylib
        SHARED := -dynamiclib
+   fpic := -fPIC
        APPLE := 1
        arch = intel
        ifeq ($(shell uname -p),powerpc)
@@ -69,6 +73,7 @@ else ifeq ($(platform), osx)
 else ifeq ($(platform), ios)
        TARGET := $(TARGET_NAME)_libretro_ios.dylib
        SHARED := -dynamiclib
+   fpic := -fPIC
        APPLE := 1
        ifeq ($(IOSSDK),)
                IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path)
@@ -184,6 +189,41 @@ else ifeq ($(platform), psp1)
        use_drz80 = 0
        use_cz80 = 1
 
+
+
+# CTR (3DS)
+else ifeq ($(platform), ctr)
+   TARGET := $(TARGET_NAME)_libretro_ctr.a
+   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
+   CFLAGS += -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp
+   CFLAGS += -Wall -mword-relocations
+   CFLAGS += -fomit-frame-pointer -ffast-math
+   STATIC_LINKING = 1
+   NO_MMAP = 1
+   DONT_COMPILE_IN_ZLIB = 1
+   ARCH = arm
+   ARM_ASM = 1
+
+   asm_memory = 1
+   asm_render = 1
+   asm_ym2612 = 1
+   asm_misc = 1
+   asm_cdpico = 1
+   asm_cdmemory = 1
+   asm_mix = 1
+
+   use_cyclone = 1
+   use_fame = 0
+   use_drz80 = 1
+   use_cz80 = 0
+   use_sh2drc = 1
+   use_svpdrc = 1
+
+   OBJS +=platform/libretro/3ds/3ds_utils.o
+
 # Vita
 else ifeq ($(platform), vita)
        TARGET := $(TARGET_NAME)_libretro_vita.a
@@ -232,6 +272,7 @@ else ifeq ($(platform), wii)
 # QNX
 else ifeq ($(platform), qnx)
        TARGET := $(TARGET_NAME)_libretro_qnx.so
+   fpic := -fPIC
        CC = qcc -Vgcc_ntoarmv7le
        CC_AS = $(CC)
        CFLAGS += -DBASE_ADDR_FIXED=0 -D__BLACKBERRY_QNX__ -marm -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mfloat-abi=softfp
@@ -239,10 +280,18 @@ else ifeq ($(platform), qnx)
        ARCH = arm
        ARM_ASM = 1
 
+       use_cyclone = 0
+       use_fame = 1
+       use_drz80 = 0
+       use_cz80 = 1
+       use_sh2drc = 1
+       use_svpdrc = 1
+
 # ARM
 else ifneq (,$(findstring armv,$(platform)))
        TARGET := $(TARGET_NAME)_libretro.so
        SHARED := -shared -Wl,--no-undefined
+   fpic := -fPIC
        ifneq (,$(findstring cortexa5,$(platform)))
                CFLAGS += -marm -mcpu=cortex-a5
                ASFLAGS += -mcpu=cortex-a5
@@ -278,7 +327,7 @@ else ifneq (,$(findstring armv,$(platform)))
 else
        TARGET := $(TARGET_NAME)_libretro.dll
        CC = gcc
-       LD_FLAGS := -fPIC
+       fpic := -fPIC
        SHARED := -shared -static-libgcc -static-libstdc++
        CFLAGS += -D__WIN32__ -D__WIN32_LIBRETRO__
 
@@ -300,13 +349,13 @@ ifeq ($(ARM_ASM),1)
        asm_mix = 1
 endif
 
-CFLAGS += -fPIC
+CFLAGS += $(fpic)
 ifeq ($(findstring Haiku,$(shell uname -a)),)
        LDLIBS += $(LIBM)
 endif
 
 SHARED ?= -shared
-LDFLAGS += $(SHARED)
+LDFLAGS += $(SHARED) $(fpic)
 
 PLATFORM = libretro
 NO_CONFIG_MAK = yes