mirror of
https://github.com/kunkundi/crossdesk.git
synced 2026-10-16 00:33:22 +08:00
79 lines
3.5 KiB
Lua
79 lines
3.5 KiB
Lua
-- Run from the repository root: xmake lua apps/desktop/tests/build_define_scope_test.lua windows true
|
|
-- Inspect the real Xmake target graph without configuring/downloading packages.
|
|
function main(plat, portable)
|
|
import("core.project.config")
|
|
import("core.project.project")
|
|
config.load()
|
|
config.set("plat", plat or "windows", {force = true})
|
|
config.set("arch", plat == "macosx" and "arm64" or "x64", {force = true})
|
|
config.set("CROSSDESK_PORTABLE", portable == "true", {force = true})
|
|
config.set("CROSSDESK_VERSION", "v1.5.3-2-20260913", {force = true})
|
|
local targets = project.targets()
|
|
local function flatten(values)
|
|
local result = {}
|
|
local function append(value)
|
|
if type(value) == "table" then
|
|
for _, entry in ipairs(value) do append(entry) end
|
|
elseif value ~= nil then
|
|
table.insert(result, value)
|
|
end
|
|
end
|
|
append(values)
|
|
return result
|
|
end
|
|
local function contains(values, expected)
|
|
return table.contains(flatten(values), expected)
|
|
end
|
|
local function effective_defines(target)
|
|
return table.join(table.wrap(target:get("defines")),
|
|
flatten(target:get_from("defines", "dep::*")))
|
|
end
|
|
|
|
for _, name in ipairs({"minirtc", "media", "common", "crossdesk_wire", "rd_log"}) do
|
|
for _, define in ipairs(effective_defines(targets[name])) do
|
|
assert(not define:startswith("CROSSDESK_VERSION"), name .. " inherits version macros")
|
|
assert(not define:startswith("CROSSDESK_PORTABLE"), name .. " inherits portable macros")
|
|
end
|
|
end
|
|
for _, name in ipairs({"gui", "crossdesk", "path_manager"}) do
|
|
assert(contains(effective_defines(targets[name]), "CROSSDESK_PORTABLE=1") ==
|
|
(portable == "true"), name .. " has inconsistent portable layout/configuration")
|
|
end
|
|
|
|
local gui = targets.gui
|
|
local version_files = {
|
|
["apps/desktop/src/gui/application/gui_application.cpp"] = true,
|
|
["apps/desktop/src/gui/runtime/peer_event_handler.cpp"] = true
|
|
}
|
|
local seen = {}
|
|
for _, file in ipairs(gui:sourcefiles()) do
|
|
assert(not seen[file], "duplicate GUI source: " .. file)
|
|
seen[file] = true
|
|
local defines = (gui:fileconfig(file) or {}).defines
|
|
assert(contains(defines, 'CROSSDESK_VERSION="v1.5.3-2-20260913"') ==
|
|
(version_files[file] == true), "unexpected version scope: " .. file)
|
|
end
|
|
for file in pairs(version_files) do
|
|
assert(seen[file], "missing version consumer: " .. file)
|
|
end
|
|
|
|
if plat == "windows" then
|
|
local resources = {
|
|
crossdesk = portable == "true" and "crossdesk_portable" or "crossdesk",
|
|
crossdesk_service = "crossdesk_service",
|
|
crossdesk_session_helper = "crossdesk_session_helper",
|
|
crossdesk_privacy_window = "crossdesk_privacy_window",
|
|
wgc_plugin = "wgc_plugin"
|
|
}
|
|
for name, resource in pairs(resources) do
|
|
local defines = targets[name]:fileconfig(
|
|
"apps/desktop/resources/windows/" .. resource .. ".rc").defines
|
|
assert(contains(defines, 'CROSSDESK_VERSION_STRING="v1.5.3-2-20260913"'))
|
|
assert(contains(defines, "CROSSDESK_VERSION_NUMERIC=1,5,3,0"))
|
|
assert(contains(defines, "CROSSDESK_PORTABLE=1") ==
|
|
(name == "crossdesk_session_helper" and portable == "true"))
|
|
end
|
|
end
|
|
print("Build define scopes passed: %s portable=%s", plat, portable)
|
|
end
|