From dcbee9d54a968759bf9ef4676b074c7a26e2b804 Mon Sep 17 00:00:00 2001 From: MAJigsaw77 <77043862+MAJigsaw77@users.noreply.github.com> Date: Mon, 10 Feb 2025 23:36:19 +0200 Subject: [PATCH 1/2] Initial support for windows resource file. --- templates/windows/resource/ApplicationMain.rc | 33 ++++++++++++++++++ tools/platforms/WindowsPlatform.hx | 34 ++++++++++++++++--- 2 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 templates/windows/resource/ApplicationMain.rc diff --git a/templates/windows/resource/ApplicationMain.rc b/templates/windows/resource/ApplicationMain.rc new file mode 100644 index 0000000000..109b2d95c6 --- /dev/null +++ b/templates/windows/resource/ApplicationMain.rc @@ -0,0 +1,33 @@ +#include "winres.h" + +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK + +VS_VERSION_INFO VERSIONINFO + FILEVERSION ::VERSION_NUMBER:: + PRODUCTVERSION ::VERSION_NUMBER:: + FILEFLAGSMASK 0x3fL + FILEFLAGS 0x0L + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L + +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "::APP_COMPANY::" + VALUE "FileDescription", "::APP_DESCRIPTION::" + VALUE "FileVersion", "::FILE_VERSION::" + VALUE "InternalName", "::APP_FILE::" + VALUE "LegalCopyright", "Copyright (C) ::COPYRIGHT_YEARS:: ::APP_COMPANY::" + VALUE "OriginalFilename", "::APP_FILE::" + VALUE "ProductName", "::APP_PACKAGE::" + VALUE "ProductVersion", "::FILE_VERSION::" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END diff --git a/tools/platforms/WindowsPlatform.hx b/tools/platforms/WindowsPlatform.hx index 8355c7077e..c9227243e2 100644 --- a/tools/platforms/WindowsPlatform.hx +++ b/tools/platforms/WindowsPlatform.hx @@ -549,8 +549,8 @@ class WindowsPlatform extends PlatformTarget } else { - var haxeArgs = [hxml]; - var flags = []; + var haxeArgs = [hxml, "-D", "resourceFile=ApplicationMain.rc"]; + var flags = ["-DresourceFile=ApplicationMain.rc"]; if (is64) { @@ -679,6 +679,27 @@ class WindowsPlatform extends PlatformTarget } else { + if (targetType == "cpp") + { + if (context.APP_DESCRIPTION == null || context.APP_DESCRIPTION == "") + { + context.APP_DESCRIPTION = project.meta.title; + } + + var versionParts = project.meta.version.split("."); + + if (versionParts.length == 3) + { + versionParts.push("0"); + } + + context.FILE_VERSION = versionParts.join("."); + context.VERSION_NUMBER = versionParts.join(","); + + // TODO: Implement this properly. + context.COPYRIGHT_YEARS = Std.string(Date.now().getFullYear()); + } + context.NEKO_FILE = targetDirectory + "/obj/ApplicationMain.n"; context.NODE_FILE = targetDirectory + "/bin/ApplicationMain.js"; context.HL_FILE = targetDirectory + "/obj/ApplicationMain" + (project.defines.exists("hlc") ? ".c" : ".hl"); @@ -987,9 +1008,14 @@ class WindowsPlatform extends PlatformTarget ProjectHelper.recursiveSmartCopyTemplate(project, "winrt/temp", targetDirectory + "/haxe/temp", context, false, true); ProjectHelper.recursiveSmartCopyTemplate(project, "winrt/scripts", targetDirectory + "/scripts", context, true, true); } - else if (targetType == "cpp" && project.targetFlags.exists("static")) + else if (targetType == "cpp") { - ProjectHelper.recursiveSmartCopyTemplate(project, "cpp/static", targetDirectory + "/obj", context); + ProjectHelper.recursiveSmartCopyTemplate(project, "windows/resource", targetDirectory + "/obj", context); + + if (project.targetFlags.exists("static")) + { + ProjectHelper.recursiveSmartCopyTemplate(project, "cpp/static", targetDirectory + "/obj", context); + } } /*if (IconHelper.createIcon (project.icons, 32, 32, Path.combine (applicationDirectory, "icon.png"))) { From df3f816f9bacd98c5bd80c007c5f851a5237669a Mon Sep 17 00:00:00 2001 From: MAJigsaw77 <77043862+MAJigsaw77@users.noreply.github.com> Date: Tue, 11 Feb 2025 13:59:39 +0200 Subject: [PATCH 2/2] Add `copyrightYears` to `MetaData`. --- src/lime/tools/MetaData.hx | 4 +++- src/lime/tools/ProjectXMLParser.hx | 4 ++-- templates/windows/resource/ApplicationMain.rc | 2 +- tools/platforms/WindowsPlatform.hx | 8 +++++--- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/lime/tools/MetaData.hx b/src/lime/tools/MetaData.hx index 2e859905ae..f06a76b20d 100644 --- a/src/lime/tools/MetaData.hx +++ b/src/lime/tools/MetaData.hx @@ -10,6 +10,7 @@ abstract MetaData({ @:optional var packageName:String; @:optional var title:String; @:optional var version:String; + @:optional var copyrightYears:String; }) from Dynamic { @:noCompletion @@ -21,6 +22,7 @@ abstract MetaData({ description: "", packageName: "", title: "", - version: "" + version: "", + copyrightYears: "" }; } diff --git a/src/lime/tools/ProjectXMLParser.hx b/src/lime/tools/ProjectXMLParser.hx index 687015c776..eea8c59966 100644 --- a/src/lime/tools/ProjectXMLParser.hx +++ b/src/lime/tools/ProjectXMLParser.hx @@ -683,7 +683,7 @@ class ProjectXMLParser extends HXProject { switch (attribute) { - case "title", "description", "package", "version", "company", "company-id", "build-number", "company-url": + case "title", "description", "package", "version", "company", "company-id", "build-number", "company-url", "copyright-years": var value = substitute(element.att.resolve(attribute)); defines.set("APP_" + StringTools.replace(attribute, "-", "_").toUpperCase(), value); @@ -1738,7 +1738,7 @@ class ProjectXMLParser extends HXProject case "gradle-version": config.set("android.gradle-version", value); - + case "gradle-plugin": config.set("android.gradle-plugin", value); diff --git a/templates/windows/resource/ApplicationMain.rc b/templates/windows/resource/ApplicationMain.rc index 109b2d95c6..2d12ca8ef6 100644 --- a/templates/windows/resource/ApplicationMain.rc +++ b/templates/windows/resource/ApplicationMain.rc @@ -20,7 +20,7 @@ BEGIN VALUE "FileDescription", "::APP_DESCRIPTION::" VALUE "FileVersion", "::FILE_VERSION::" VALUE "InternalName", "::APP_FILE::" - VALUE "LegalCopyright", "Copyright (C) ::COPYRIGHT_YEARS:: ::APP_COMPANY::" + VALUE "LegalCopyright", "Copyright (C) ::APP_COPYRIGHT_YEARS:: ::APP_COMPANY::" VALUE "OriginalFilename", "::APP_FILE::" VALUE "ProductName", "::APP_PACKAGE::" VALUE "ProductVersion", "::FILE_VERSION::" diff --git a/tools/platforms/WindowsPlatform.hx b/tools/platforms/WindowsPlatform.hx index c9227243e2..46c8f6ec1c 100644 --- a/tools/platforms/WindowsPlatform.hx +++ b/tools/platforms/WindowsPlatform.hx @@ -686,6 +686,11 @@ class WindowsPlatform extends PlatformTarget context.APP_DESCRIPTION = project.meta.title; } + if (context.APP_COPYRIGHT_YEARS == null || context.APP_COPYRIGHT_YEARS == "") + { + context.APP_COPYRIGHT_YEARS = Std.string(Date.now().getFullYear()); + } + var versionParts = project.meta.version.split("."); if (versionParts.length == 3) @@ -695,9 +700,6 @@ class WindowsPlatform extends PlatformTarget context.FILE_VERSION = versionParts.join("."); context.VERSION_NUMBER = versionParts.join(","); - - // TODO: Implement this properly. - context.COPYRIGHT_YEARS = Std.string(Date.now().getFullYear()); } context.NEKO_FILE = targetDirectory + "/obj/ApplicationMain.n";