From ca5e5d615435cf0d57f87288f4d6199a31b50b3f Mon Sep 17 00:00:00 2001 From: Ivan Epifanov Date: Fri, 18 Dec 2020 16:34:24 +0300 Subject: [PATCH] VITASDK compatibility --- Makefile.vita.dolce | 2 +- Makefile.vita.vita | 59 +++++++++++++++++++++++++ include/SDL_config_vita.h | 9 +--- include/SDL_stdinc.h | 2 +- src/filesystem/vita/SDL_sysfilesystem.c | 4 ++ src/sensor/vita/SDL_vitasensor.c | 6 +++ src/video/vita/SDL_vitagl.c | 2 +- src/video/vita/SDL_vitavideo.c | 14 +++++- 8 files changed, 86 insertions(+), 12 deletions(-) create mode 100644 Makefile.vita.vita diff --git a/Makefile.vita.dolce b/Makefile.vita.dolce index 4e2a6430b..cea584372 100644 --- a/Makefile.vita.dolce +++ b/Makefile.vita.dolce @@ -42,7 +42,7 @@ PREFIX = arm-dolce-eabi CC = $(PREFIX)-gcc AR = $(PREFIX)-ar 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 ASFLAGS = $(CFLAGS) diff --git a/Makefile.vita.vita b/Makefile.vita.vita new file mode 100644 index 000000000..0d294d076 --- /dev/null +++ b/Makefile.vita.vita @@ -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!" diff --git a/include/SDL_config_vita.h b/include/SDL_config_vita.h index dee71f5dc..2b9d62484 100644 --- a/include/SDL_config_vita.h +++ b/include/SDL_config_vita.h @@ -142,16 +142,11 @@ #define SDL_FILESYSTEM_VITA 1 #define SDL_SENSOR_VITA 1 -//#if defined(_VITA_GLES2_) +#if defined(DOLCEVITA) #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 #endif - +#define SDL_VIDEO_RENDER_VITA_GXM 1 /* VITA doesn't have haptic device (src/haptic/dummy/\*.c) */ #define SDL_HAPTIC_DISABLED 1 diff --git a/include/SDL_stdinc.h b/include/SDL_stdinc.h index c3a03b2d3..d286e68a9 100644 --- a/include/SDL_stdinc.h +++ b/include/SDL_stdinc.h @@ -366,7 +366,7 @@ SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); /** \cond */ #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 */ typedef enum { diff --git a/src/filesystem/vita/SDL_sysfilesystem.c b/src/filesystem/vita/SDL_sysfilesystem.c index 3d21604cf..b382bc902 100644 --- a/src/filesystem/vita/SDL_sysfilesystem.c +++ b/src/filesystem/vita/SDL_sysfilesystem.c @@ -29,7 +29,11 @@ #include #include #include +#if DOLCEVITA #include +#else +#include +#endif #include #include #include diff --git a/src/sensor/vita/SDL_vitasensor.c b/src/sensor/vita/SDL_vitasensor.c index 85f941d60..da6555235 100644 --- a/src/sensor/vita/SDL_vitasensor.c +++ b/src/sensor/vita/SDL_vitasensor.c @@ -28,7 +28,13 @@ #include "SDL_vitasensor.h" #include "../SDL_syssensor.h" #include +#if DOLCEVITA #include +#endif + +#if !defined(SCE_MOTION_MAX_NUM_STATES) +#define SCE_MOTION_MAX_NUM_STATES 64 +#endif typedef struct { diff --git a/src/video/vita/SDL_vitagl.c b/src/video/vita/SDL_vitagl.c index d8ee86f49..777d18b65 100644 --- a/src/video/vita/SDL_vitagl.c +++ b/src/video/vita/SDL_vitagl.c @@ -20,7 +20,7 @@ */ #include "../../SDL_internal.h" -#if SDL_VIDEO_DRIVER_VITA +#if SDL_VIDEO_DRIVER_VITA && SDL_VIDEO_OPENGL_ES2 #include #include diff --git a/src/video/vita/SDL_vitavideo.c b/src/video/vita/SDL_vitavideo.c index 8bc1ee752..ca693685e 100644 --- a/src/video/vita/SDL_vitavideo.c +++ b/src/video/vita/SDL_vitavideo.c @@ -37,8 +37,9 @@ #include "SDL_vitatouch.h" #include "SDL_vitakeyboard.h" #include "SDL_vitamouse_c.h" +#if SDLVIDEO_OPENGL_ES2 #include "SDL_vitagl_c.h" - +#endif #include SDL_Window *Vita_Window; @@ -66,8 +67,9 @@ VITA_Create() { SDL_VideoDevice *device; SDL_VideoData *phdata; +#if SDLVIDEO_OPENGL_ES2 SDL_GLDriverData *gldata; - +#endif /* Initialize SDL_VideoDevice structure */ device = (SDL_VideoDevice *) SDL_calloc(1, sizeof(SDL_VideoDevice)); if (device == NULL) { @@ -82,6 +84,7 @@ VITA_Create() SDL_free(device); return NULL; } +#if SDLVIDEO_OPENGL_ES2 gldata = (SDL_GLDriverData *) SDL_calloc(1, sizeof(SDL_GLDriverData)); if (gldata == NULL) { @@ -92,6 +95,7 @@ VITA_Create() } device->gl_data = gldata; phdata->egl_initialized = SDL_TRUE; +#endif phdata->ime_active = SDL_FALSE; device->driverdata = phdata; @@ -123,6 +127,7 @@ VITA_Create() device->DestroyWindow = VITA_DestroyWindow; device->GetWindowWMInfo = VITA_GetWindowWMInfo; +#if SDL_VIDEO_OPENGL_ES2 device->GL_LoadLibrary = VITA_GL_LoadLibrary; device->GL_GetProcAddress = VITA_GL_GetProcAddress; device->GL_UnloadLibrary = VITA_GL_UnloadLibrary; @@ -132,6 +137,7 @@ VITA_Create() device->GL_GetSwapInterval = VITA_GL_GetSwapInterval; device->GL_SwapWindow = VITA_GL_SwapWindow; device->GL_DeleteContext = VITA_GL_DeleteContext; +#endif device->HasScreenKeyboardSupport = VITA_HasScreenKeyboardSupport; device->ShowScreenKeyboard = VITA_ShowScreenKeyboard; @@ -321,6 +327,10 @@ SDL_bool VITA_HasScreenKeyboardSupport(_THIS) 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) { SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata;