VITASDK compatibility

This commit is contained in:
Ivan Epifanov 2020-12-18 16:34:24 +03:00 committed by Sam Lantinga
parent 7d89f09f74
commit ca5e5d6154
8 changed files with 86 additions and 12 deletions

View file

@ -42,7 +42,7 @@ PREFIX = arm-dolce-eabi
CC = $(PREFIX)-gcc CC = $(PREFIX)-gcc
AR = $(PREFIX)-ar AR = $(PREFIX)-ar
CFLAGS = -g -Wl,-q -Wall -O3 -Iinclude \ CFLAGS = -g -Wl,-q -Wall -O3 -Iinclude \
-D__VITA__ -D__ARM_ARCH=7 -D__ARM_ARCH_7A__ \ -D__VITA__ -DDOLCEVITA -D__ARM_ARCH=7 -D__ARM_ARCH_7A__ \
-mfpu=neon -mcpu=cortex-a9 -mfloat-abi=hard -mfpu=neon -mcpu=cortex-a9 -mfloat-abi=hard
ASFLAGS = $(CFLAGS) ASFLAGS = $(CFLAGS)

59
Makefile.vita.vita Normal file
View file

@ -0,0 +1,59 @@
# Based on port by xerpi
# Makefile to build the SDL library
TARGET_LIB = libSDL2.a
SOURCES = \
src/*.c \
src/atomic/*.c \
src/audio/*.c \
src/audio/vita/*.c \
src/cpuinfo/*.c \
src/events/*.c \
src/file/*.c \
src/haptic/*.c \
src/haptic/dummy/*.c \
src/joystick/*.c \
src/joystick/vita/*.c \
src/loadso/dummy/*.c \
src/power/*.c \
src/power/vita/*.c \
src/filesystem/vita/*.c \
src/render/*.c \
src/render/software/*.c \
src/render/vitagxm/*.c \
src/sensor/*.c \
src/sensor/vita/*.c \
src/stdlib/*.c \
src/thread/*.c \
src/thread/generic/SDL_systls.c \
src/thread/vita/*.c \
src/timer/*.c \
src/timer/vita/*.c \
src/video/*.c \
src/video/vita/*.c \
src/video/yuv2rgb/*.c \
src/video/arm/*.S \
OBJS = $(shell echo $(SOURCES) | sed -e 's,\.c,\.o,g' | sed -e 's,\.S,\.o,g')
PREFIX = arm-vita-eabi
CC = $(PREFIX)-gcc
AR = $(PREFIX)-ar
CFLAGS = -g -Wl,-q -Wall -O3 -Iinclude \
-D__VITA__ -DSCE_OK=0 -D__ARM_ARCH=7 -D__ARM_ARCH_7A__ \
-mfpu=neon -mcpu=cortex-a9 -mfloat-abi=hard
ASFLAGS = $(CFLAGS)
$(TARGET_LIB): $(OBJS)
$(AR) rcs $@ $^
clean:
@rm -f $(TARGET_LIB) $(OBJS)
install: $(TARGET_LIB)
@mkdir -p "$(DESTDIR)$(VITASDK)/arm-vita-eabi/lib"
@cp $(TARGET_LIB) $(DESTDIR)$(VITASDK)/arm-vita-eabi/lib
@mkdir -p "$(DESTDIR)$(VITASDK)/arm-vita-eabi/include/SDL2"
@cp include/*.h "$(DESTDIR)$(VITASDK)/arm-vita-eabi/include/SDL2"
@echo "Installed!"

View file

@ -142,16 +142,11 @@
#define SDL_FILESYSTEM_VITA 1 #define SDL_FILESYSTEM_VITA 1
#define SDL_SENSOR_VITA 1 #define SDL_SENSOR_VITA 1
//#if defined(_VITA_GLES2_) #if defined(DOLCEVITA)
#define SDL_VIDEO_RENDER_VITA_GLES2 1 #define SDL_VIDEO_RENDER_VITA_GLES2 1
//#else
#define SDL_VIDEO_RENDER_VITA_GXM 1
//#endif
#if defined(SDL_VIDEO_RENDER_VITA_GLES2) || defined(SDL_VIDEO_RENDER_VITA_GXM)
#define SDL_VIDEO_OPENGL_ES2 1 #define SDL_VIDEO_OPENGL_ES2 1
#endif #endif
#define SDL_VIDEO_RENDER_VITA_GXM 1
/* VITA doesn't have haptic device (src/haptic/dummy/\*.c) */ /* VITA doesn't have haptic device (src/haptic/dummy/\*.c) */
#define SDL_HAPTIC_DISABLED 1 #define SDL_HAPTIC_DISABLED 1

View file

@ -366,7 +366,7 @@ SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
/** \cond */ /** \cond */
#ifndef DOXYGEN_SHOULD_IGNORE_THIS #ifndef DOXYGEN_SHOULD_IGNORE_THIS
#if !defined(__ANDROID__) #if !defined(__ANDROID__) && !defined(__VITA__)
/* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */ /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */
typedef enum typedef enum
{ {

View file

@ -29,7 +29,11 @@
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
#include <stdlib.h> #include <stdlib.h>
#if DOLCEVITA
#include <psp2/kernel/iofilemgr.h> #include <psp2/kernel/iofilemgr.h>
#else
#include <psp2/io/stat.h>
#endif
#include <sys/types.h> #include <sys/types.h>
#include <limits.h> #include <limits.h>
#include <fcntl.h> #include <fcntl.h>

View file

@ -28,7 +28,13 @@
#include "SDL_vitasensor.h" #include "SDL_vitasensor.h"
#include "../SDL_syssensor.h" #include "../SDL_syssensor.h"
#include <psp2/motion.h> #include <psp2/motion.h>
#if DOLCEVITA
#include <psp2/error.h> #include <psp2/error.h>
#endif
#if !defined(SCE_MOTION_MAX_NUM_STATES)
#define SCE_MOTION_MAX_NUM_STATES 64
#endif
typedef struct typedef struct
{ {

View file

@ -20,7 +20,7 @@
*/ */
#include "../../SDL_internal.h" #include "../../SDL_internal.h"
#if SDL_VIDEO_DRIVER_VITA #if SDL_VIDEO_DRIVER_VITA && SDL_VIDEO_OPENGL_ES2
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>

View file

@ -37,8 +37,9 @@
#include "SDL_vitatouch.h" #include "SDL_vitatouch.h"
#include "SDL_vitakeyboard.h" #include "SDL_vitakeyboard.h"
#include "SDL_vitamouse_c.h" #include "SDL_vitamouse_c.h"
#if SDLVIDEO_OPENGL_ES2
#include "SDL_vitagl_c.h" #include "SDL_vitagl_c.h"
#endif
#include <psp2/ime_dialog.h> #include <psp2/ime_dialog.h>
SDL_Window *Vita_Window; SDL_Window *Vita_Window;
@ -66,8 +67,9 @@ VITA_Create()
{ {
SDL_VideoDevice *device; SDL_VideoDevice *device;
SDL_VideoData *phdata; SDL_VideoData *phdata;
#if SDLVIDEO_OPENGL_ES2
SDL_GLDriverData *gldata; SDL_GLDriverData *gldata;
#endif
/* Initialize SDL_VideoDevice structure */ /* Initialize SDL_VideoDevice structure */
device = (SDL_VideoDevice *) SDL_calloc(1, sizeof(SDL_VideoDevice)); device = (SDL_VideoDevice *) SDL_calloc(1, sizeof(SDL_VideoDevice));
if (device == NULL) { if (device == NULL) {
@ -82,6 +84,7 @@ VITA_Create()
SDL_free(device); SDL_free(device);
return NULL; return NULL;
} }
#if SDLVIDEO_OPENGL_ES2
gldata = (SDL_GLDriverData *) SDL_calloc(1, sizeof(SDL_GLDriverData)); gldata = (SDL_GLDriverData *) SDL_calloc(1, sizeof(SDL_GLDriverData));
if (gldata == NULL) { if (gldata == NULL) {
@ -92,6 +95,7 @@ VITA_Create()
} }
device->gl_data = gldata; device->gl_data = gldata;
phdata->egl_initialized = SDL_TRUE; phdata->egl_initialized = SDL_TRUE;
#endif
phdata->ime_active = SDL_FALSE; phdata->ime_active = SDL_FALSE;
device->driverdata = phdata; device->driverdata = phdata;
@ -123,6 +127,7 @@ VITA_Create()
device->DestroyWindow = VITA_DestroyWindow; device->DestroyWindow = VITA_DestroyWindow;
device->GetWindowWMInfo = VITA_GetWindowWMInfo; device->GetWindowWMInfo = VITA_GetWindowWMInfo;
#if SDL_VIDEO_OPENGL_ES2
device->GL_LoadLibrary = VITA_GL_LoadLibrary; device->GL_LoadLibrary = VITA_GL_LoadLibrary;
device->GL_GetProcAddress = VITA_GL_GetProcAddress; device->GL_GetProcAddress = VITA_GL_GetProcAddress;
device->GL_UnloadLibrary = VITA_GL_UnloadLibrary; device->GL_UnloadLibrary = VITA_GL_UnloadLibrary;
@ -132,6 +137,7 @@ VITA_Create()
device->GL_GetSwapInterval = VITA_GL_GetSwapInterval; device->GL_GetSwapInterval = VITA_GL_GetSwapInterval;
device->GL_SwapWindow = VITA_GL_SwapWindow; device->GL_SwapWindow = VITA_GL_SwapWindow;
device->GL_DeleteContext = VITA_GL_DeleteContext; device->GL_DeleteContext = VITA_GL_DeleteContext;
#endif
device->HasScreenKeyboardSupport = VITA_HasScreenKeyboardSupport; device->HasScreenKeyboardSupport = VITA_HasScreenKeyboardSupport;
device->ShowScreenKeyboard = VITA_ShowScreenKeyboard; device->ShowScreenKeyboard = VITA_ShowScreenKeyboard;
@ -321,6 +327,10 @@ SDL_bool VITA_HasScreenKeyboardSupport(_THIS)
return SDL_TRUE; return SDL_TRUE;
} }
#if !defined(SCE_IME_LANGUAGE_ENGLISH_US)
#define SCE_IME_LANGUAGE_ENGLISH_US SCE_IME_LANGUAGE_ENGLISH
#endif
void VITA_ShowScreenKeyboard(_THIS, SDL_Window *window) void VITA_ShowScreenKeyboard(_THIS, SDL_Window *window)
{ {
SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata; SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata;