From 60aabeeff3846ffc52860dae1e7bdaab43ae97d0 Mon Sep 17 00:00:00 2001 From: tobil4sk Date: Wed, 12 Apr 2023 16:08:09 +0100 Subject: [PATCH 1/3] Fix mingw check in System.hx HXCPP_MINGW does not get defined by hxcpp, so it may not always be set. --- src/lime/system/System.hx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lime/system/System.hx b/src/lime/system/System.hx index ac6975396..f85647302 100644 --- a/src/lime/system/System.hx +++ b/src/lime/system/System.hx @@ -32,9 +32,9 @@ import sys.io.Process; @:access(lime._internal.backend.native.NativeCFFI) @:access(lime.system.Display) @:access(lime.system.DisplayMode) -#if (cpp && windows && !HXCPP_MINGW && !lime_disable_gpu_hint) +#if (cpp && windows && !lime_disable_gpu_hint) @:cppFileCode(' -#if defined(HX_WINDOWS) +#if defined(HX_WINDOWS) && !defined(__MINGW32__) extern "C" { _declspec(dllexport) unsigned long NvOptimusEnablement = 0x00000001; _declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1; From 7f5dcb4e9f5a728b54c930e779572b53074edc74 Mon Sep 17 00:00:00 2001 From: tobil4sk Date: Wed, 12 Apr 2023 16:22:38 +0100 Subject: [PATCH 2/3] Respect -mingw flag for cross compiling to windows --- src/lime/tools/ProjectXMLParser.hx | 2 +- tools/platforms/WindowsPlatform.hx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lime/tools/ProjectXMLParser.hx b/src/lime/tools/ProjectXMLParser.hx index aa79825e6..1e0115dff 100644 --- a/src/lime/tools/ProjectXMLParser.hx +++ b/src/lime/tools/ProjectXMLParser.hx @@ -128,7 +128,7 @@ class ProjectXMLParser extends HXProject { defines.set("native", "1"); - if (target == Platform.WINDOWS) + if (target == Platform.WINDOWS && targetFlags.exists("mingw")) { defines.set("targetType", "cpp"); defines.set("cpp", "1"); diff --git a/tools/platforms/WindowsPlatform.hx b/tools/platforms/WindowsPlatform.hx index 46433c6e9..1c67110bb 100644 --- a/tools/platforms/WindowsPlatform.hx +++ b/tools/platforms/WindowsPlatform.hx @@ -138,7 +138,7 @@ class WindowsPlatform extends PlatformTarget { targetType = "winjs"; } - else if (project.targetFlags.exists("neko") || project.target != cast System.hostPlatform) + else if (project.targetFlags.exists("neko")) { targetType = "neko"; } From 940eb2083d531a551b6efde9c355f4f66f838f6d Mon Sep 17 00:00:00 2001 From: tobil4sk Date: Wed, 12 Apr 2023 23:07:22 +0100 Subject: [PATCH 3/3] Copy mingw libraries after build --- tools/platforms/WindowsPlatform.hx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tools/platforms/WindowsPlatform.hx b/tools/platforms/WindowsPlatform.hx index 1c67110bb..54f2778e0 100644 --- a/tools/platforms/WindowsPlatform.hx +++ b/tools/platforms/WindowsPlatform.hx @@ -496,6 +496,24 @@ class WindowsPlatform extends PlatformTarget CPPHelper.compile(project, targetDirectory + "/obj", flags); System.copyFile(targetDirectory + "/obj/ApplicationMain" + (project.debug ? "-debug" : "") + ".exe", executablePath); + + if (project.targetFlags.exists("mingw")) + { + var libraries = ["libwinpthread-1.dll", "libstdc++-6.dll"]; + if (is64) + { + libraries.push("libgcc_s_seh-1.dll"); + } + else + { + libraries.push("libgcc_s_dw2-1.dll"); + } + + for (library in libraries) + { + System.copyIfNewer(targetDirectory + "/obj/" + library, Path.combine(applicationDirectory, library)); + } + } } else {