From 9701554988118f5ec2cbc0e6677634ef343d8c40 Mon Sep 17 00:00:00 2001 From: Carlos Madrazo Date: Thu, 1 Jun 2017 15:42:22 -0500 Subject: [PATCH 1/4] initial winrt config fix winrt compile --- files.xml | 6 +- include/configs/winrt/SDL_config.h | 219 +++++++++++++++++++++++++++++ 2 files changed, 223 insertions(+), 2 deletions(-) create mode 100644 include/configs/winrt/SDL_config.h diff --git a/files.xml b/files.xml index 6797b37..2a3742c 100644 --- a/files.xml +++ b/files.xml @@ -3,7 +3,8 @@
- + +
@@ -75,7 +76,7 @@ - + @@ -106,6 +107,7 @@ + diff --git a/include/configs/winrt/SDL_config.h b/include/configs/winrt/SDL_config.h new file mode 100644 index 0000000..fa2b0f8 --- /dev/null +++ b/include/configs/winrt/SDL_config.h @@ -0,0 +1,219 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_winrt_h_ +#define SDL_config_winrt_h_ + + +#ifdef HX_WINRT + +#include "SDL_platform.h" + +/* Make sure the Windows SDK's NTDDI_VERSION macro gets defined. This is used + by SDL to determine which version of the Windows SDK is being used. +*/ +#include + +/* Define possibly-undefined NTDDI values (used when compiling SDL against + older versions of the Windows SDK. +*/ +#ifndef NTDDI_WINBLUE +#define NTDDI_WINBLUE 0x06030000 +#endif +#ifndef NTDDI_WIN10 +#define NTDDI_WIN10 0x0A000000 +#endif + +/* This is a set of defines to configure the SDL features */ + +#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H) +#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__) +#define HAVE_STDINT_H 1 +#elif defined(_MSC_VER) +typedef signed __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef signed __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef signed __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; +#ifndef _UINTPTR_T_DEFINED +#ifdef _WIN64 +typedef unsigned __int64 uintptr_t; +#else +typedef unsigned int uintptr_t; +#endif +#define _UINTPTR_T_DEFINED +#endif +/* Older Visual C++ headers don't have the Win64-compatible typedefs... */ +#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR))) +#define DWORD_PTR DWORD +#endif +#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR))) +#define LONG_PTR LONG +#endif +#else /* !__GNUC__ && !_MSC_VER */ +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +typedef signed long long int64_t; +typedef unsigned long long uint64_t; +#ifndef _SIZE_T_DEFINED_ +#define _SIZE_T_DEFINED_ +typedef unsigned int size_t; +#endif +typedef unsigned int uintptr_t; +#endif /* __GNUC__ || _MSC_VER */ +#endif /* !_STDINT_H_ && !HAVE_STDINT_H */ + +#ifdef _WIN64 +# define SIZEOF_VOIDP 8 +#else +# define SIZEOF_VOIDP 4 +#endif + +/* Useful headers */ +#define HAVE_DXGI_H 1 +#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP +#define HAVE_XINPUT_H 1 +#endif +#define HAVE_LIBC 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_FLOAT_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE__STRREV 1 +#define HAVE__STRUPR 1 +//#define HAVE__STRLWR 1 // TODO, WinRT: consider using _strlwr_s instead +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +//#define HAVE_ITOA 1 // TODO, WinRT: consider using _itoa_s instead +//#define HAVE__LTOA 1 // TODO, WinRT: consider using _ltoa_s instead +//#define HAVE__ULTOA 1 // TODO, WinRT: consider using _ultoa_s instead +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +//#define HAVE_STRTOLL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE__STRICMP 1 +#define HAVE__STRNICMP 1 +#define HAVE_VSNPRINTF 1 +//#define HAVE_SSCANF 1 // TODO, WinRT: consider using sscanf_s instead +#define HAVE_M_PI 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_CEIL 1 +#define HAVE__COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +//#define HAVE_SCALBN 1 +#define HAVE__SCALB 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SQRTF 1 +#define HAVE_TAN 1 +#define HAVE_TANF 1 +#define HAVE__FSEEKI64 1 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_XAUDIO2 1 /*0 SWT*/ +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various input drivers */ +#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP +#define SDL_JOYSTICK_DISABLED 1 +#define SDL_HAPTIC_DISABLED 1 +#else +#define SDL_JOYSTICK_XINPUT 1 +#define SDL_HAPTIC_XINPUT 1 +#endif + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_WINDOWS 1 + +/* Enable various threading systems */ +#if (NTDDI_VERSION >= NTDDI_WINBLUE) +#define SDL_THREAD_WINDOWS 1 +#else +/* WinRT on Windows 8.0 and Windows Phone 8.0 don't support CreateThread() */ +#define SDL_THREAD_STDCPP 1 +#endif + +/* Enable various timer systems */ +#define SDL_TIMER_WINDOWS 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_WINRT 1 +#define SDL_VIDEO_DRIVER_DUMMY 1 + +/* Enable OpenGL ES 2.0 (via a modified ANGLE library) */ +#define SDL_VIDEO_OPENGL_ES2 1 +#define SDL_VIDEO_OPENGL_EGL 1 + +/* Enable appropriate renderer(s) */ +#define SDL_VIDEO_RENDER_D3D11 1 /*0?*/ + +#if SDL_VIDEO_OPENGL_ES2 +#define SDL_VIDEO_RENDER_OGL_ES2 1 +#endif + +/* Enable system power support */ +#define SDL_POWER_WINRT 1 + +/* Enable assembly routines (Win64 doesn't have inline asm) */ +#ifndef _WIN64 +#define SDL_ASSEMBLY_ROUTINES 1 +#endif + +#endif //HX_WINRT + +#endif /* SDL_config_winrt_h_ */ From df5d0185f50c729c8f74bf33150f571dea7ed3f2 Mon Sep 17 00:00:00 2001 From: Carlos Madrazo Date: Sat, 3 Jun 2017 15:51:59 -0500 Subject: [PATCH 2/4] winrt fix compile and linking Succesfully built DisplayingABitmap on NME using -Dwinrt -DNME_ANGLE ! needs https://github.com/haxenme/nme/pull/477 --- files.xml | 86 ++++++++++++++++++---- include/configs/winrt/SDL_config.h | 4 +- src/core/winrt/SDL_winrtapp_direct3d.cpp | 4 +- src/filesystem/winrt/SDL_sysfilesystem.cpp | 7 +- 4 files changed, 80 insertions(+), 21 deletions(-) diff --git a/files.xml b/files.xml index 2a3742c..5499375 100644 --- a/files.xml +++ b/files.xml @@ -84,8 +84,34 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -108,6 +134,10 @@ + + + + @@ -392,9 +422,11 @@ + - + + @@ -407,30 +439,54 @@ - + + - - - - - - - - - - - - + +
+ + + + + + + + + + + + +
+ - + +
+ + + + + + + + + + + + + + + + +
+
diff --git a/include/configs/winrt/SDL_config.h b/include/configs/winrt/SDL_config.h index fa2b0f8..1cea61b 100644 --- a/include/configs/winrt/SDL_config.h +++ b/include/configs/winrt/SDL_config.h @@ -164,7 +164,7 @@ typedef unsigned int uintptr_t; #define HAVE__FSEEKI64 1 /* Enable various audio drivers */ -#define SDL_AUDIO_DRIVER_XAUDIO2 1 /*0 SWT*/ +#define SDL_AUDIO_DRIVER_XAUDIO2 1 #define SDL_AUDIO_DRIVER_DISK 1 #define SDL_AUDIO_DRIVER_DUMMY 1 @@ -200,7 +200,7 @@ typedef unsigned int uintptr_t; #define SDL_VIDEO_OPENGL_EGL 1 /* Enable appropriate renderer(s) */ -#define SDL_VIDEO_RENDER_D3D11 1 /*0?*/ +#define SDL_VIDEO_RENDER_D3D11 1 #if SDL_VIDEO_OPENGL_ES2 #define SDL_VIDEO_RENDER_OGL_ES2 1 diff --git a/src/core/winrt/SDL_winrtapp_direct3d.cpp b/src/core/winrt/SDL_winrtapp_direct3d.cpp index 48703d6..6fe068c 100644 --- a/src/core/winrt/SDL_winrtapp_direct3d.cpp +++ b/src/core/winrt/SDL_winrtapp_direct3d.cpp @@ -384,8 +384,8 @@ void SDL_WinRTApp::SetWindow(CoreWindow^ window) ref new TypedEventHandler(this, &SDL_WinRTApp::OnCharacterReceived); #if NTDDI_VERSION >= NTDDI_WIN10 - Windows::UI::Core::SystemNavigationManager::GetForCurrentView()->BackRequested += - ref new EventHandler(this, &SDL_WinRTApp::OnBackButtonPressed); +// Windows::UI::Core::SystemNavigationManager::GetForCurrentView()->BackRequested += +// ref new EventHandler(this, &SDL_WinRTApp::OnBackButtonPressed); #elif WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP HardwareButtons::BackPressed += ref new EventHandler(this, &SDL_WinRTApp::OnBackButtonPressed); diff --git a/src/filesystem/winrt/SDL_sysfilesystem.cpp b/src/filesystem/winrt/SDL_sysfilesystem.cpp index 880fcbc..36d15a6 100644 --- a/src/filesystem/winrt/SDL_sysfilesystem.cpp +++ b/src/filesystem/winrt/SDL_sysfilesystem.cpp @@ -93,6 +93,7 @@ SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType) extern "C" const char * SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType) { +/* typedef unordered_map UTF8PathMap; static UTF8PathMap utf8Paths; @@ -110,6 +111,8 @@ SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType) utf8Paths[pathType] = utf8Path; SDL_free(utf8Path); return utf8Paths[pathType].c_str(); +*/ +return ""; } extern "C" char * @@ -151,7 +154,7 @@ SDL_GetPrefPath(const char *org, const char *app) WCHAR* wapp = NULL; size_t new_wpath_len = 0; BOOL api_result = FALSE; - +/* srcPath = SDL_WinRTGetFSPathUNICODE(SDL_WINRT_PATH_LOCAL_FOLDER); if ( ! srcPath) { SDL_SetError("Unable to find a source path"); @@ -214,7 +217,7 @@ SDL_GetPrefPath(const char *org, const char *app) SDL_wcslcat(path, L"\\", new_wpath_len + 1); retval = WIN_StringToUTF8(path); - +*/ return retval; } From 0bb166e3c03c5609e23cd9dc0cd043962c229eb9 Mon Sep 17 00:00:00 2001 From: Carlos Madrazo Date: Sat, 3 Jun 2017 16:07:28 -0500 Subject: [PATCH 3/4] winrt revert commented code this code works ok with the -DUNICODE flag. No need to comment it. --- src/filesystem/winrt/SDL_sysfilesystem.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/filesystem/winrt/SDL_sysfilesystem.cpp b/src/filesystem/winrt/SDL_sysfilesystem.cpp index 36d15a6..12e77fb 100644 --- a/src/filesystem/winrt/SDL_sysfilesystem.cpp +++ b/src/filesystem/winrt/SDL_sysfilesystem.cpp @@ -93,7 +93,7 @@ SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType) extern "C" const char * SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType) { -/* + typedef unordered_map UTF8PathMap; static UTF8PathMap utf8Paths; @@ -111,7 +111,7 @@ SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType) utf8Paths[pathType] = utf8Path; SDL_free(utf8Path); return utf8Paths[pathType].c_str(); -*/ + return ""; } @@ -154,7 +154,7 @@ SDL_GetPrefPath(const char *org, const char *app) WCHAR* wapp = NULL; size_t new_wpath_len = 0; BOOL api_result = FALSE; -/* + srcPath = SDL_WinRTGetFSPathUNICODE(SDL_WINRT_PATH_LOCAL_FOLDER); if ( ! srcPath) { SDL_SetError("Unable to find a source path"); @@ -217,7 +217,7 @@ SDL_GetPrefPath(const char *org, const char *app) SDL_wcslcat(path, L"\\", new_wpath_len + 1); retval = WIN_StringToUTF8(path); -*/ + return retval; } From a3052b110cff48f36a3d3f85fbd3570e4fefde8c Mon Sep 17 00:00:00 2001 From: Carlos Madrazo Date: Sat, 3 Jun 2017 17:06:02 -0500 Subject: [PATCH 4/4] winrt files.xml cleanup fix some sections and spaces --- files.xml | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/files.xml b/files.xml index 5499375..195a20e 100644 --- a/files.xml +++ b/files.xml @@ -133,11 +133,14 @@ - - - +
+ +
+ + +
@@ -422,11 +425,10 @@ - - - + + @@ -439,15 +441,18 @@ - - + +
+ + + @@ -460,22 +465,20 @@ -
+ - - - +
+ + + - - - @@ -485,6 +488,7 @@ +