diff --git a/res/commonlib-plugin.rc.in b/res/commonlib-plugin.rc.in index 273e3c3..b50cb57 100644 --- a/res/commonlib-plugin.rc.in +++ b/res/commonlib-plugin.rc.in @@ -1,8 +1,8 @@ #include 1 VERSIONINFO -FILEVERSION ${COMMONLIB_PLUGIN_VERSION_MAJOR}, ${COMMONLIB_PLUGIN_VERSION_MINOR}, ${COMMONLIB_PLUGIN_VERSION_PATCH}, 0 -PRODUCTVERSION ${COMMONLIB_PROJECT_VERSION_MAJOR}, ${COMMONLIB_PROJECT_VERSION_MINOR}, ${COMMONLIB_PROJECT_VERSION_PATCH}, 0 +FILEVERSION ${COMMONLIB_PLUGIN_VERSION_MAJOR}, ${COMMONLIB_PLUGIN_VERSION_MINOR}, ${COMMONLIB_PLUGIN_VERSION_PATCH}, ${COMMONLIB_PLUGIN_VERSION_BUILD} +PRODUCTVERSION ${COMMONLIB_PROJECT_VERSION_MAJOR}, ${COMMONLIB_PROJECT_VERSION_MINOR}, ${COMMONLIB_PROJECT_VERSION_PATCH}, ${COMMONLIB_PROJECT_VERSION_BUILD} FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "Comments", "${COMMONLIB_PLUGIN_CONTACT}" VALUE "FileDescription", "${COMMONLIB_PLUGIN_DESCRIPTION}" - VALUE "FileVersion", "${COMMONLIB_PLUGIN_VERSION}.0" + VALUE "FileVersion", "${COMMONLIB_PLUGIN_VERSION}.${COMMONLIB_PLUGIN_VERSION_BUILD}" VALUE "InternalName", "${COMMONLIB_PLUGIN_NAME}" VALUE "LegalCopyright", "${COMMONLIB_PLUGIN_AUTHOR}" VALUE "LegalTrademarks", "${COMMONLIB_PLUGIN_LICENSE}" VALUE "ProductName", "${COMMONLIB_PROJECT_NAME}" - VALUE "ProductVersion", "${COMMONLIB_PROJECT_VERSION}.0" + VALUE "ProductVersion", "${COMMONLIB_PROJECT_VERSION}.${COMMONLIB_PROJECT_VERSION_BUILD}" END END BLOCK "VarFileInfo" diff --git a/xmake.lua b/xmake.lua index b15dcaf..96fbd63 100644 --- a/xmake.lua +++ b/xmake.lua @@ -178,6 +178,21 @@ rule("commonlib.plugin", function() target:add("configfiles", path.join(os.scriptdir(), "res/commonlib-plugin.rc.in")) target:add("files", path.join(target:configdir(), "commonlib-plugin.rc")) + -- Windows version components are unsigned 16-bit integers. + local function build_number(value) + if value == nil then return 0 end + if type(value) == "string" then value = os.date(value, os.time()) end + local number = tonumber(value) + assert(number and number >= 0 and number <= 65535 and number == math.floor(number), + "version build number must be an integer between 0 and 65535") + return number + end + + local _, plugin_build = target:version() + local project_build = project.extraconf("target.version", project.version(), "build") + target:set("configvar", "COMMONLIB_PLUGIN_VERSION_BUILD", build_number(plugin_build)) + target:set("configvar", "COMMONLIB_PROJECT_VERSION_BUILD", build_number(project_build)) + local data = target:data("commonlib.plugin.config") or {} target:set("configvar", "COMMONLIB_PLUGIN_AUTHOR", data.author or "") target:set("configvar", "COMMONLIB_PLUGIN_CONTACT", data.contact or "")