Try to fix Windows mess a bit.
Default to 64 bit on windows too.
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -11,10 +11,7 @@ ndll/*/*.dylib
|
|||||||
ndll/*/*.lib
|
ndll/*/*.lib
|
||||||
ndll/*/hl*
|
ndll/*/hl*
|
||||||
ndll/*/*.dll
|
ndll/*/*.dll
|
||||||
templates/bin/hl/windows
|
templates/bin/hl/*
|
||||||
!templates/bin/hl/windows/msvcr120.dll
|
|
||||||
templates/bin/hl/mac
|
|
||||||
templates/bin/hl/linux
|
|
||||||
project/all_objs
|
project/all_objs
|
||||||
project/obj
|
project/obj
|
||||||
project/vc*.pdb
|
project/vc*.pdb
|
||||||
|
|||||||
@@ -347,9 +347,9 @@
|
|||||||
<set name="LIBSUFFIX" value="dll" if="windows" />
|
<set name="LIBSUFFIX" value="dll" if="windows" />
|
||||||
<set name="LIBSUFFIX" value="dylib" if="mac || ios || tvos" />
|
<set name="LIBSUFFIX" value="dylib" if="mac || ios || tvos" />
|
||||||
<set name="LIBSUFFIX" value="so" unless="LIBSUFFIX" />
|
<set name="LIBSUFFIX" value="so" unless="LIBSUFFIX" />
|
||||||
<set name="BINDIR" value="linux" if="linux" />
|
<!-- <set name="BINDIR" value="linux" if="linux" />
|
||||||
<set name="BINDIR" value="mac" if="mac" />
|
<set name="BINDIR" value="mac" if="mac" />
|
||||||
<set name="BINDIR" value="windows" if="windows" />
|
<set name="BINDIR" value="windows" if="windows" /> -->
|
||||||
|
|
||||||
<set name="OUTPUT_DIR" value="../templates/bin/hl" unless="OUTPUT_DIR" />
|
<set name="OUTPUT_DIR" value="../templates/bin/hl" unless="OUTPUT_DIR" />
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package lime.tools;
|
package lime.tools;
|
||||||
|
|
||||||
|
import hxp.Log;
|
||||||
|
import sys.FileSystem;
|
||||||
import lime.tools.ConfigHelper;
|
import lime.tools.ConfigHelper;
|
||||||
import lime.tools.HXProject;
|
import lime.tools.HXProject;
|
||||||
import lime.tools.Platform;
|
import lime.tools.Platform;
|
||||||
@@ -8,15 +10,25 @@ import hxp.System;
|
|||||||
|
|
||||||
class HashlinkHelper
|
class HashlinkHelper
|
||||||
{
|
{
|
||||||
public static function copyHashlink(project:HXProject, targetDirectory:String, applicationDirectory:String, executablePath:String)
|
public static function copyHashlink(project:HXProject, targetDirectory:String, applicationDirectory:String, executablePath:String, ?is64 = true)
|
||||||
{
|
{
|
||||||
var platform = project.target;
|
var platform = project.target;
|
||||||
|
var bindir = (switch project.target
|
||||||
|
{
|
||||||
|
case LINUX: "Linux";
|
||||||
|
case MAC: "Mac";
|
||||||
|
case WINDOWS: "Windows";
|
||||||
|
case var target:
|
||||||
|
Log.error('Hashlink is not supported on $target (Supported: Windows, Mac and Linux)');
|
||||||
|
Sys.exit(1);
|
||||||
|
"";
|
||||||
|
}) + (is64 ? "64" : "");
|
||||||
|
|
||||||
var hlPath = ConfigHelper.getConfigValue("HL_PATH");
|
var hlPath = ConfigHelper.getConfigValue("HL_PATH");
|
||||||
if (hlPath == null)
|
if (hlPath == null)
|
||||||
{
|
{
|
||||||
System.recursiveCopyTemplate(project.templatePaths, 'bin/hl/$platform', applicationDirectory);
|
System.recursiveCopyTemplate(project.templatePaths, 'bin/hl/$bindir', applicationDirectory);
|
||||||
System.renameFile(Path.combine(applicationDirectory, "hl" + (platform == WINDOWS ? ".exe" : "")), executablePath);
|
System.renameFile(Path.combine(applicationDirectory, "hl" + (project.target == WINDOWS ? ".exe" : "")), executablePath);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -24,7 +36,16 @@ class HashlinkHelper
|
|||||||
if (platform == WINDOWS)
|
if (platform == WINDOWS)
|
||||||
{
|
{
|
||||||
System.copyFile(Path.combine(hlPath, "libhl.dll"), Path.combine(applicationDirectory, "libhl.dll"));
|
System.copyFile(Path.combine(hlPath, "libhl.dll"), Path.combine(applicationDirectory, "libhl.dll"));
|
||||||
System.copyFile(Path.combine(hlPath, "msvcr120.dll"), Path.combine(applicationDirectory, "msvcr120.dll"));
|
var msvcrPath = Path.combine(hlPath, "msvcr120.dll");
|
||||||
|
if (FileSystem.exists(msvcrPath))
|
||||||
|
{
|
||||||
|
System.copyFile(msvcrPath, Path.combine(applicationDirectory, "msvcr120.dll"));
|
||||||
|
}
|
||||||
|
var vcruntimePath = Path.combine(hlPath, "vcruntime.dll.dll");
|
||||||
|
if (FileSystem.exists(vcruntimePath))
|
||||||
|
{
|
||||||
|
System.copyFile(vcruntimePath, Path.combine(applicationDirectory, "vcruntime.dll"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (platform == MAC || platform == IOS)
|
else if (platform == MAC || platform == IOS)
|
||||||
{
|
{
|
||||||
|
|||||||
Binary file not shown.
@@ -221,7 +221,7 @@ class LinuxPlatform extends PlatformTarget
|
|||||||
|
|
||||||
if (noOutput) return;
|
if (noOutput) return;
|
||||||
|
|
||||||
HashlinkHelper.copyHashlink(project, targetDirectory, applicationDirectory, executablePath);
|
HashlinkHelper.copyHashlink(project, targetDirectory, applicationDirectory, executablePath, is64);
|
||||||
}
|
}
|
||||||
else if (targetType == "nodejs")
|
else if (targetType == "nodejs")
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ class MacPlatform extends PlatformTarget
|
|||||||
|
|
||||||
if (noOutput) return;
|
if (noOutput) return;
|
||||||
|
|
||||||
HashlinkHelper.copyHashlink(project, targetDirectory, applicationDirectory, executablePath);
|
HashlinkHelper.copyHashlink(project, targetDirectory, applicationDirectory, executablePath, is64);
|
||||||
}
|
}
|
||||||
else if (targetType == "java")
|
else if (targetType == "java")
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ class WindowsPlatform extends PlatformTarget
|
|||||||
else if (project.targetFlags.exists("hl"))
|
else if (project.targetFlags.exists("hl"))
|
||||||
{
|
{
|
||||||
targetType = "hl";
|
targetType = "hl";
|
||||||
is64 = false;
|
is64 = !project.flags.exists("32");
|
||||||
}
|
}
|
||||||
else if (project.targetFlags.exists("cppia"))
|
else if (project.targetFlags.exists("cppia"))
|
||||||
{
|
{
|
||||||
@@ -331,7 +331,7 @@ class WindowsPlatform extends PlatformTarget
|
|||||||
|
|
||||||
if (noOutput) return;
|
if (noOutput) return;
|
||||||
|
|
||||||
HashlinkHelper.copyHashlink(project, targetDirectory, applicationDirectory, executablePath);
|
HashlinkHelper.copyHashlink(project, targetDirectory, applicationDirectory, executablePath, is64);
|
||||||
|
|
||||||
var iconPath = Path.combine(applicationDirectory, "icon.ico");
|
var iconPath = Path.combine(applicationDirectory, "icon.ico");
|
||||||
|
|
||||||
@@ -634,7 +634,20 @@ class WindowsPlatform extends PlatformTarget
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
var commands = [];
|
var commands = [];
|
||||||
|
if (targetType == "hl")
|
||||||
|
{
|
||||||
|
// default to 64 bit, just like upstream Hashlink releases
|
||||||
|
if (!targetFlags.exists("32") && (System.hostArchitecture == X64 || targetFlags.exists("64")))
|
||||||
|
{
|
||||||
|
commands.push(["-Dwindows", "-DHXCPP_M64", "-Dhashlink"]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
commands.push(["-Dwindows", "-DHXCPP_M32", "-Dhashlink"]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if (!targetFlags.exists("64")
|
if (!targetFlags.exists("64")
|
||||||
&& (command == "rebuild" || System.hostArchitecture == X86 || (targetType != "cpp" && targetType != "winrt")))
|
&& (command == "rebuild" || System.hostArchitecture == X86 || (targetType != "cpp" && targetType != "winrt")))
|
||||||
{
|
{
|
||||||
@@ -642,11 +655,6 @@ class WindowsPlatform extends PlatformTarget
|
|||||||
{
|
{
|
||||||
commands.push(["-Dwinrt", "-DHXCPP_M32"]);
|
commands.push(["-Dwinrt", "-DHXCPP_M32"]);
|
||||||
}
|
}
|
||||||
else if (targetType == "hl")
|
|
||||||
{
|
|
||||||
// TODO: Support single binary
|
|
||||||
commands.push(["-Dwindows", "-DHXCPP_M32", "-Dhashlink"]);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
commands.push(["-Dwindows", "-DHXCPP_M32"]);
|
commands.push(["-Dwindows", "-DHXCPP_M32"]);
|
||||||
@@ -659,22 +667,18 @@ class WindowsPlatform extends PlatformTarget
|
|||||||
|
|
||||||
if (!targetFlags.exists("32")
|
if (!targetFlags.exists("32")
|
||||||
&& System.hostArchitecture == X64
|
&& System.hostArchitecture == X64
|
||||||
&& (command != "rebuild" || targetType == "cpp" || targetType == "hl" || targetType == "winrt"))
|
&& (command != "rebuild" || targetType == "cpp" || targetType == "winrt"))
|
||||||
{
|
{
|
||||||
if (targetType == "winrt")
|
if (targetType == "winrt")
|
||||||
{
|
{
|
||||||
commands.push(["-Dwinrt", "-DHXCPP_M64"]);
|
commands.push(["-Dwinrt", "-DHXCPP_M64"]);
|
||||||
}
|
}
|
||||||
else if (targetType == "hl")
|
|
||||||
{
|
|
||||||
// TODO: Support single binary
|
|
||||||
commands.push(["-Dwindows", "-DHXCPP_M64", "-Dhashlink"]);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
commands.push(["-Dwindows", "-DHXCPP_M64"]);
|
commands.push(["-Dwindows", "-DHXCPP_M64"]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (targetFlags.exists("hl"))
|
if (targetFlags.exists("hl"))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user