Compile fixes for WinRT UWP

This commit is contained in:
Joshua Granick
2018-07-20 20:46:15 -07:00
parent 66a1450aca
commit 884f1d5a8e
12 changed files with 58 additions and 37 deletions

View File

@@ -10,7 +10,7 @@
<set name="LIME_CAIRO" value="1" /> <set name="LIME_CAIRO" value="1" />
<set name="LIME_CURL" value="1" unless="emscripten" /> <set name="LIME_CURL" value="1" unless="emscripten" />
<set name="LIME_EFSW" value="1" if="windows || mac || linux" /> <set name="LIME_EFSW" value="1" if="windows || mac || linux" unless="winrt" />
<set name="LIME_JPEG" value="1" /> <set name="LIME_JPEG" value="1" />
<!-- <set name="LIME_FAUDIO" value="1" /> --> <!-- <set name="LIME_FAUDIO" value="1" /> -->
<set name="LIME_FREETYPE" value="1" /> <set name="LIME_FREETYPE" value="1" />
@@ -18,11 +18,11 @@
<!-- <set name="LIME_HASHLINK" value="1" if="windows || mac || linux" /> --> <!-- <set name="LIME_HASHLINK" value="1" if="windows || mac || linux" /> -->
<set name="LIME_HASHLINK" value="1" if="hashlink" /> <set name="LIME_HASHLINK" value="1" if="hashlink" />
<set name="LIME_LZMA" value="1" /> <set name="LIME_LZMA" value="1" />
<set name="LIME_MBEDTLS" value="1" unless="emscripten" /> <set name="LIME_MBEDTLS" value="1" unless="emscripten || winrt" />
<!-- <set name="LIME_NEKO" value="1" if="linux" /> --> <!-- <set name="LIME_NEKO" value="1" if="linux" /> -->
<set name="LIME_OGG" value="1" /> <set name="LIME_OGG" value="1" />
<set name="LIME_OPENALSOFT" value="1" if="windows || linux || android" unless="static_link" /> <set name="LIME_OPENALSOFT" value="1" if="windows || linux || android" unless="static_link" />
<set name="LIME_MOJOAL" value="1" if="switch || static_link || mojoal" /> <set name="LIME_MOJOAL" value="1" if="switch || static_link || winrt || mojoal" />
<unset name="LIME_OPENALSOFT" if="LIME_MOJOAL" /> <unset name="LIME_OPENALSOFT" if="LIME_MOJOAL" />
<set name="LIME_OPENAL" value="1" if="mac || iphone || emscripten || tvos" /> <set name="LIME_OPENAL" value="1" if="mac || iphone || emscripten || tvos" />
<set name="LIME_OPENAL" value="1" if="LIME_OPENALSOFT" /> <set name="LIME_OPENAL" value="1" if="LIME_OPENALSOFT" />
@@ -34,7 +34,8 @@
<!-- <set name="LIME_SDL_ANGLE" value="1" if="windows" unless="static_link" /> --> <!-- <set name="LIME_SDL_ANGLE" value="1" if="windows" unless="static_link" /> -->
<set name="LIME_SDL_ANGLE" value="1" if="windows LIME_SDL_ANGLE" unless="static_link" /> <set name="LIME_SDL_ANGLE" value="1" if="windows LIME_SDL_ANGLE" unless="static_link" />
<set name="LIME_SDL_ANGLE" value="1" if="windows angle" unless="static_link" /> <set name="LIME_SDL_ANGLE" value="1" if="windows angle" unless="static_link" />
<set name="LIME_TINYFILEDIALOGS" value="1" if="windows || mac || linux" /> <set name="LIME_SDL_ANGLE" value="1" if="winrt" unless="static_link" />
<set name="LIME_TINYFILEDIALOGS" value="1" if="windows || mac || linux" unless="winrt" />
<set name="LIME_VORBIS" value="1" /> <set name="LIME_VORBIS" value="1" />
<!-- <set name="LIME_VPX" value="1" /> <!-- <set name="LIME_VPX" value="1" />
<set name="LIME_WEBM" value="1" /> --> <set name="LIME_WEBM" value="1" /> -->
@@ -227,12 +228,14 @@
</section> </section>
<section if="rpi"> <section if="rpi">
<compilerflag value="-I/opt/vc/include"/> <compilerflag value="-I/opt/vc/include"/>
<compilerflag value="-I/opt/vc/include/interface/vcos/pthreads"/> <compilerflag value="-I/opt/vc/include/interface/vcos/pthreads"/>
<compilerflag value="-I/opt/vc/include/interface/vmcs_host/linux"/> <compilerflag value="-I/opt/vc/include/interface/vmcs_host/linux"/>
<compilerflag value="-lbrcmGLESv2" /> <compilerflag value="-lbrcmGLESv2" />
<compilerflag value="-lbrcmEGL" /> <compilerflag value="-lbrcmEGL" />
<compilerflag value="-Wl,--no-undefined -lm -L/opt/vc/lib -lbcm_host -ldl -lpthread -lrt" /> <compilerflag value="-Wl,--no-undefined -lm -L/opt/vc/lib -lbcm_host -ldl -lpthread -lrt" />
</section> </section>
<compilerflag value="-DLIME_SDL" /> <compilerflag value="-DLIME_SDL" />
@@ -394,7 +397,12 @@
<lib name="wldap32.lib" /> <lib name="wldap32.lib" />
<lib name="shell32.lib" /> <lib name="shell32.lib" />
<lib name="comdlg32.lib" /> <lib name="comdlg32.lib" />
<lib name="comsuppw.lib" /> <lib name="comsuppw.lib" unless="winrt" />
<lib name="D3D11.lib" if="winrt" />
<lib name="RuntimeObject.lib" if="winrt" />
<lib name="Xinput.lib" if="winrt" />
<lib name="DXGI.lib" if="winrt" />
<lib name="-libpath:${HLPATH}" if="LIME_HASHLINK" /> <lib name="-libpath:${HLPATH}" if="LIME_HASHLINK" />
<lib name="libhl.lib" if="LIME_HASHLINK" /> <lib name="libhl.lib" if="LIME_HASHLINK" />

View File

@@ -42,13 +42,13 @@ namespace lime {
static std::wstring* GetPlatformName (); static std::wstring* GetPlatformName ();
static std::wstring* GetPlatformVersion (); static std::wstring* GetPlatformVersion ();
static double GetTimer (); static double GetTimer ();
#ifdef HX_WINDOWS #if defined(HX_WINDOWS) && !defined (HX_WINRT)
static int GetWindowsConsoleMode (int handleType); static int GetWindowsConsoleMode (int handleType);
#endif #endif
static void OpenFile (const char* path); static void OpenFile (const char* path);
static void OpenURL (const char* url, const char* target); static void OpenURL (const char* url, const char* target);
static bool SetAllowScreenTimeout (bool allow); static bool SetAllowScreenTimeout (bool allow);
#ifdef HX_WINDOWS #if defined(HX_WINDOWS) && !defined (HX_WINRT)
static bool SetWindowsConsoleMode (int handleType, int mode); static bool SetWindowsConsoleMode (int handleType, int mode);
#endif #endif

View File

@@ -2927,7 +2927,7 @@ namespace lime {
int lime_system_get_windows_console_mode (int handleType) { int lime_system_get_windows_console_mode (int handleType) {
#ifdef HX_WINDOWS #if defined (HX_WINDOWS) && !defined (HX_WINRT)
return System::GetWindowsConsoleMode (handleType); return System::GetWindowsConsoleMode (handleType);
#else #else
return 0; return 0;
@@ -2938,7 +2938,7 @@ namespace lime {
HL_PRIM int hl_lime_system_get_windows_console_mode (int handleType) { HL_PRIM int hl_lime_system_get_windows_console_mode (int handleType) {
#ifdef HX_WINDOWS #if defined (HX_WINDOWS) && !defined (HX_WINRT)
return System::GetWindowsConsoleMode (handleType); return System::GetWindowsConsoleMode (handleType);
#else #else
return 0; return 0;
@@ -2999,7 +2999,7 @@ namespace lime {
bool lime_system_set_windows_console_mode (int handleType, int mode) { bool lime_system_set_windows_console_mode (int handleType, int mode) {
#ifdef HX_WINDOWS #if defined (HX_WINDOWS) && !defined (HX_WINRT)
return System::SetWindowsConsoleMode (handleType, mode); return System::SetWindowsConsoleMode (handleType, mode);
#else #else
return false; return false;
@@ -3010,7 +3010,7 @@ namespace lime {
HL_PRIM bool hl_lime_system_set_windows_console_mode (int handleType, int mode) { HL_PRIM bool hl_lime_system_set_windows_console_mode (int handleType, int mode) {
#ifdef HX_WINDOWS #if defined (HX_WINDOWS) && !defined (HX_WINRT)
return System::SetWindowsConsoleMode (handleType, mode); return System::SetWindowsConsoleMode (handleType, mode);
#else #else
return false; return false;

View File

@@ -133,8 +133,8 @@ namespace lime {
#if defined (HX_WINRT) #if defined (HX_WINRT)
Windows::Storage::StorageFolder folder = Windows::Storage::KnownFolders::HomeGroup; Windows::Storage::StorageFolder^ folder = Windows::Storage::KnownFolders::HomeGroup;
result = new std::wstring (folder->Begin ()); result = new std::wstring (folder->Path->Data ());
#elif defined (HX_WINDOWS) #elif defined (HX_WINDOWS)
@@ -170,8 +170,8 @@ namespace lime {
#if defined (HX_WINRT) #if defined (HX_WINRT)
Windows::Storage::StorageFolder folder = Windows::Storage::KnownFolders::DocumentsLibrary; Windows::Storage::StorageFolder^ folder = Windows::Storage::KnownFolders::DocumentsLibrary;
result = std::wstring (folder->Begin ()); result = new std::wstring (folder->Path->Data ());
#elif defined (HX_WINDOWS) #elif defined (HX_WINDOWS)
@@ -248,8 +248,8 @@ namespace lime {
#if defined (HX_WINRT) #if defined (HX_WINRT)
Windows::Storage::StorageFolder folder = Windows::Storage::ApplicationData::Current->RoamingFolder; Windows::Storage::StorageFolder^ folder = Windows::Storage::ApplicationData::Current->RoamingFolder;
result = new std::wstring (folder->Begin ()); result = new std::wstring (folder->Path->Data ());
#elif defined (HX_WINDOWS) #elif defined (HX_WINDOWS)

View File

@@ -56,7 +56,7 @@ namespace lime {
if (flags & WINDOW_FLAG_ALWAYS_ON_TOP) sdlWindowFlags |= SDL_WINDOW_ALWAYS_ON_TOP; if (flags & WINDOW_FLAG_ALWAYS_ON_TOP) sdlWindowFlags |= SDL_WINDOW_ALWAYS_ON_TOP;
#endif #endif
#if defined (HX_WINDOWS) && defined (NATIVE_TOOLKIT_SDL_ANGLE) #if defined (HX_WINDOWS) && defined (NATIVE_TOOLKIT_SDL_ANGLE) && !defined (HX_WINRT)
OSVERSIONINFOEXW osvi = { sizeof (osvi), 0, 0, 0, 0, {0}, 0, 0 }; OSVERSIONINFOEXW osvi = { sizeof (osvi), 0, 0, 0, 0, {0}, 0, 0 };
DWORDLONG const dwlConditionMask = VerSetConditionMask (VerSetConditionMask (VerSetConditionMask (0, VER_MAJORVERSION, VER_GREATER_EQUAL), VER_MINORVERSION, VER_GREATER_EQUAL), VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL); DWORDLONG const dwlConditionMask = VerSetConditionMask (VerSetConditionMask (VerSetConditionMask (0, VER_MAJORVERSION, VER_GREATER_EQUAL), VER_MINORVERSION, VER_GREATER_EQUAL), VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
osvi.dwMajorVersion = HIBYTE (_WIN32_WINNT_VISTA); osvi.dwMajorVersion = HIBYTE (_WIN32_WINNT_VISTA);
@@ -164,7 +164,7 @@ namespace lime {
} }
#ifdef HX_WINDOWS #if defined (HX_WINDOWS) && !defined (HX_WINRT)
HINSTANCE handle = ::GetModuleHandle (nullptr); HINSTANCE handle = ::GetModuleHandle (nullptr);
HICON icon = ::LoadIcon (handle, MAKEINTRESOURCE (1)); HICON icon = ::LoadIcon (handle, MAKEINTRESOURCE (1));
@@ -309,7 +309,7 @@ namespace lime {
void SDLWindow::Alert (const char* message, const char* title) { void SDLWindow::Alert (const char* message, const char* title) {
#ifdef HX_WINDOWS #if defined (HX_WINDOWS) && !defined (HX_WINRT)
int count = 0; int count = 0;
int speed = 0; int speed = 0;

View File

@@ -5311,6 +5311,9 @@ namespace lime {
#ifdef NATIVE_TOOLKIT_SDL_ANGLE #ifdef NATIVE_TOOLKIT_SDL_ANGLE
#ifdef HX_WINRT
return true;
#else
OpenGLBindings::eglHandle = LoadLibraryW (L"libegl.dll"); OpenGLBindings::eglHandle = LoadLibraryW (L"libegl.dll");
if (!OpenGLBindings::eglHandle) { if (!OpenGLBindings::eglHandle) {
@@ -5319,6 +5322,7 @@ namespace lime {
return result; return result;
} }
#endif
#endif #endif

View File

@@ -42,7 +42,7 @@ namespace lime {
} }
#ifdef HX_WINDOWS #if defined (HX_WINDOWS) && !defined (HX_WINRT)
std::wstring* GetWMIValue (BSTR query, BSTR field) { std::wstring* GetWMIValue (BSTR query, BSTR field) {
HRESULT hres = 0; HRESULT hres = 0;
@@ -139,7 +139,7 @@ namespace lime {
std::wstring* System::GetDeviceModel () { std::wstring* System::GetDeviceModel () {
#ifdef HX_WINDOWS #if defined (HX_WINDOWS) && !defined (HX_WINRT)
return GetWMIValue (bstr_t ("SELECT * FROM Win32_ComputerSystemProduct"), L"Version"); return GetWMIValue (bstr_t ("SELECT * FROM Win32_ComputerSystemProduct"), L"Version");
#endif #endif
@@ -150,7 +150,7 @@ namespace lime {
std::wstring* System::GetDeviceVendor () { std::wstring* System::GetDeviceVendor () {
#ifdef HX_WINDOWS #if defined (HX_WINDOWS) && !defined (HX_WINRT)
return GetWMIValue (bstr_t ("SELECT * FROM Win32_ComputerSystemProduct"), L"Vendor"); return GetWMIValue (bstr_t ("SELECT * FROM Win32_ComputerSystemProduct"), L"Vendor");
#endif #endif
@@ -161,7 +161,7 @@ namespace lime {
std::wstring* System::GetPlatformLabel () { std::wstring* System::GetPlatformLabel () {
#ifdef HX_WINDOWS #if defined (HX_WINDOWS) && !defined (HX_WINRT)
return GetWMIValue (bstr_t ("SELECT * FROM Win32_OperatingSystem"), L"Caption"); return GetWMIValue (bstr_t ("SELECT * FROM Win32_OperatingSystem"), L"Caption");
#endif #endif
@@ -179,7 +179,7 @@ namespace lime {
std::wstring* System::GetPlatformVersion () { std::wstring* System::GetPlatformVersion () {
#ifdef HX_WINDOWS #if defined (HX_WINDOWS) && !defined (HX_WINRT)
return GetWMIValue (bstr_t ("SELECT * FROM Win32_OperatingSystem"), L"Version"); return GetWMIValue (bstr_t ("SELECT * FROM Win32_OperatingSystem"), L"Version");
#endif #endif
@@ -188,7 +188,7 @@ namespace lime {
} }
#ifdef HX_WINDOWS #if defined (HX_WINDOWS) && !defined (HX_WINRT)
int System::GetWindowsConsoleMode (int handleType) { int System::GetWindowsConsoleMode (int handleType) {
HANDLE handle = GetStdHandle ((DWORD)handleType); HANDLE handle = GetStdHandle ((DWORD)handleType);
@@ -206,7 +206,7 @@ namespace lime {
#endif #endif
#ifdef HX_WINDOWS #if defined (HX_WINDOWS) && !defined (HX_WINRT)
bool System::SetWindowsConsoleMode (int handleType, int mode) { bool System::SetWindowsConsoleMode (int handleType, int mode) {
HANDLE handle = GetStdHandle ((DWORD)handleType); HANDLE handle = GetStdHandle ((DWORD)handleType);

View File

@@ -16,6 +16,10 @@
#include FT_OUTLINE_H #include FT_OUTLINE_H
#endif #endif
#ifdef GetGlyphIndices
#undef GetGlyphIndices
#endif
// from http://stackoverflow.com/questions/2948308/how-do-i-read-utf-8-characters-via-a-pointer // from http://stackoverflow.com/questions/2948308/how-do-i-read-utf-8-characters-via-a-pointer
#define IS_IN_RANGE(c, f, l) (((c) >= (f)) && ((c) <= (l))) #define IS_IN_RANGE(c, f, l) (((c) >= (f)) && ((c) <= (l)))
@@ -240,17 +244,17 @@ namespace {
} }
int outline_cubic_to (FVecPtr ctl1, FVecPtr ctl2, FVecPtr to, void *user) { int outline_cubic_to (FVecPtr control1, FVecPtr control2, FVecPtr to, void *user) {
glyph *g = static_cast<glyph*> (user); glyph *g = static_cast<glyph*> (user);
g->pts.push_back (PT_CUBIC); g->pts.push_back (PT_CUBIC);
g->pts.push_back (ctl1->x - g->x); g->pts.push_back (control1->x - g->x);
g->pts.push_back (ctl1->y - g->y); g->pts.push_back (control1->y - g->y);
g->pts.push_back (ctl2->x - ctl1->x); g->pts.push_back (control2->x - control1->x);
g->pts.push_back (ctl2->y - ctl1->y); g->pts.push_back (control2->y - control1->y);
g->pts.push_back (to->x - ctl2->x); g->pts.push_back (to->x - control2->x);
g->pts.push_back (to->y - ctl2->y); g->pts.push_back (to->y - control2->y);
g->x = to->x; g->x = to->x;
g->y = to->y; g->y = to->y;

View File

@@ -1719,6 +1719,11 @@ class CommandLineTools {
targetFlags.set ("uwp", ""); targetFlags.set ("uwp", "");
targetFlags.set ("winjs", ""); targetFlags.set ("winjs", "");
case "winrt":
target = Platform.WINDOWS;
targetFlags.set ("winrt", "");
default: default:
target = cast targetName.toLowerCase (); target = cast targetName.toLowerCase ();

View File

@@ -519,7 +519,7 @@ class PlatformSetup {
setupElectron (); setupElectron ();
case "windows": case "windows", "winrt":
if (PlatformHelper.hostPlatform == Platform.WINDOWS) { if (PlatformHelper.hostPlatform == Platform.WINDOWS) {