From 082b77cd944335b8ae28bbcd866e26be3e743da4 Mon Sep 17 00:00:00 2001 From: Qudix <17361645+Qudix@users.noreply.github.com> Date: Sat, 8 Apr 2023 06:36:31 -0500 Subject: [PATCH] [commonlibsse-ng] Use `on_changed` for rule (#1976) --- packages/c/commonlibsse-ng/rules/plugin.lua | 137 ++++++++++---------- 1 file changed, 69 insertions(+), 68 deletions(-) diff --git a/packages/c/commonlibsse-ng/rules/plugin.lua b/packages/c/commonlibsse-ng/rules/plugin.lua index b612537c0..f4ef8f86a 100644 --- a/packages/c/commonlibsse-ng/rules/plugin.lua +++ b/packages/c/commonlibsse-ng/rules/plugin.lua @@ -16,6 +16,7 @@ rule("plugin") on_config(function(target) import("core.base.semver") + import("core.project.depend") import("core.project.project") target:set("kind", "shared") @@ -23,82 +24,82 @@ rule("plugin") local version = semver.new(target:version() or "0.0.0") local configs = target:extraconf("rules", "@commonlibsse-ng/plugin") - local config_dir = path.join(target:autogendir(), "rules", "plugin") + local config_dir = path.join(target:autogendir(), "rules", "commonlibsse", "plugin") - local file = io.open(path.join(config_dir, "version.rc"), "w") - if file then - file:print("#include ") - file:print("") - file:print("1 VERSIONINFO") - file:print("FILEVERSION %s, %s, %s, 0", version:major(), version:minor(), version:patch()) - file:print("PRODUCTVERSION %s, %s, %s, 0", version:major(), version:minor(), version:patch()) - file:print("FILEFLAGSMASK 0x17L") - file:print("#ifdef _DEBUG") - file:print(" FILEFLAGS 0x1L") - file:print("#else") - file:print(" FILEFLAGS 0x0L") - file:print("#endif") - file:print("FILEOS 0x4L") - file:print("FILETYPE 0x1L") - file:print("FILESUBTYPE 0x0L") - file:print("BEGIN") - file:print(" BLOCK \"StringFileInfo\"") - file:print(" BEGIN") - file:print(" BLOCK \"040904b0\"") - file:print(" BEGIN") - file:print(" VALUE \"FileDescription\", \"%s\"", configs.description or "") - file:print(" VALUE \"FileVersion\", \"%s.0\"", target:version() or "0.0.0") - file:print(" VALUE \"InternalName\", \"%s\"", configs.name or target:name()) - file:print(" VALUE \"LegalCopyright\", \"%s, %s\"", configs.author or "", target:license() or "Unknown License") - file:print(" VALUE \"ProductName\", \"%s\"", project.name() or "") - file:print(" VALUE \"ProductVersion\", \"%s.0\"", project.version() or "0.0.0") - file:print(" END") - file:print(" END") - file:print(" BLOCK \"VarFileInfo\"") - file:print(" BEGIN") - file:print(" VALUE \"Translation\", 0x409, 1200") - file:print(" END") - file:print("END") - file:close() - end + local version_file = path.join(config_dir, "version.rc") + depend.on_changed(function() + local file = io.open(version_file, "w") + if file then + file:print("#include \n") + file:print("1 VERSIONINFO") + file:print("FILEVERSION %s, %s, %s, 0", version:major(), version:minor(), version:patch()) + file:print("PRODUCTVERSION %s, %s, %s, 0", version:major(), version:minor(), version:patch()) + file:print("FILEFLAGSMASK 0x17L") + file:print("#ifdef _DEBUG") + file:print(" FILEFLAGS 0x1L") + file:print("#else") + file:print(" FILEFLAGS 0x0L") + file:print("#endif") + file:print("FILEOS 0x4L") + file:print("FILETYPE 0x1L") + file:print("FILESUBTYPE 0x0L") + file:print("BEGIN") + file:print(" BLOCK \"StringFileInfo\"") + file:print(" BEGIN") + file:print(" BLOCK \"040904b0\"") + file:print(" BEGIN") + file:print(" VALUE \"FileDescription\", \"%s\"", configs.description or "") + file:print(" VALUE \"FileVersion\", \"%s.0\"", target:version() or "0.0.0") + file:print(" VALUE \"InternalName\", \"%s\"", configs.name or target:name()) + file:print(" VALUE \"LegalCopyright\", \"%s, %s\"", configs.author or "", target:license() or "Unknown License") + file:print(" VALUE \"ProductName\", \"%s\"", project.name() or "") + file:print(" VALUE \"ProductVersion\", \"%s.0\"", project.version() or "0.0.0") + file:print(" END") + file:print(" END") + file:print(" BLOCK \"VarFileInfo\"") + file:print(" BEGIN") + file:print(" VALUE \"Translation\", 0x409, 1200") + file:print(" END") + file:print("END") + file:close() + end + end, { dependfile = target:dependfile(version_file), files = project.allfiles()}) - file = io.open(path.join(config_dir, "plugin.cpp"), "w") - if file then - local struct_compat = "Independent" - local runtime_compat = "AddressLibrary" + local plugin_file = path.join(config_dir, "plugin.cpp") + depend.on_changed(function() + local file = io.open(plugin_file, "w") + if file then + local struct_compat = "Independent" + local runtime_compat = "AddressLibrary" - if configs.options then - local address_library = configs.options.address_library or true - local signature_scanning = configs.options.signature_scanning or false - if not address_library and signature_scanning then - runtime_compat = "SignatureScanning" + if configs.options then + local address_library = configs.options.address_library or true + local signature_scanning = configs.options.signature_scanning or false + if not address_library and signature_scanning then + runtime_compat = "SignatureScanning" + end end - end - file:print("#include ") - file:print("#include ") - file:print("") - file:print("using namespace std::literals;") - file:print("") - file:print("SKSEPluginInfo(") - file:print(" .Version = { %s, %s, %s, 0 },", version:major(), version:minor(), version:patch()) - file:print(" .Name = \"%s\"sv,", configs.name or target:name()) - file:print(" .Author = \"%s\"sv,", configs.author or "") - file:print(" .SupportEmail = \"%s\"sv,", configs.email or "") - file:print(" .StructCompatibility = SKSE::StructCompatibility::%s,", struct_compat) - file:print(" .RuntimeCompatibility = SKSE::VersionIndependence::%s", runtime_compat) - file:print(")") - file:close() - end + file:print("#include ") + file:print("#include \n") + file:print("using namespace std::literals;\n") + file:print("SKSEPluginInfo(") + file:print(" .Version = { %s, %s, %s, 0 },", version:major(), version:minor(), version:patch()) + file:print(" .Name = \"%s\"sv,", configs.name or target:name()) + file:print(" .Author = \"%s\"sv,", configs.author or "") + file:print(" .SupportEmail = \"%s\"sv,", configs.email or "") + file:print(" .StructCompatibility = SKSE::StructCompatibility::%s,", struct_compat) + file:print(" .RuntimeCompatibility = SKSE::VersionIndependence::%s", runtime_compat) + file:print(")") + file:close() + end + end, { dependfile = target:dependfile(plugin_file), files = project.allfiles()}) - target:add("files", path.join(config_dir, "version.rc")) - target:add("files", path.join(config_dir, "plugin.cpp")) + target:add("files", version_file) + target:add("files", plugin_file) target:add("defines", "UNICODE", "_UNICODE") target:add("cxxflags", "/permissive-", "/Zc:alignedNew", "/Zc:__cplusplus", "/Zc:forScope", "/Zc:ternary") - - if target:has_tool("cxx", "cl") then - target:add("cxxflags", "/Zc:externConstexpr", "/Zc:hiddenFriend", "/Zc:preprocessor", "/Zc:referenceBinding") - end + target:add("cxxflags", "cl::/Zc:externConstexpr", "cl::/Zc:hiddenFriend", "cl::/Zc:preprocessor", "cl::/Zc:referenceBinding") end)