summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur LAURENT <[email protected]>2025-05-11 16:14:15 +0200
committerArthur LAURENT <[email protected]>2025-05-11 16:14:15 +0200
commit362e731a904975eefbc337ef0a8cc3562d1ae6e8 (patch)
tree7dea4c947302141ac109ffadfc7aecca3922bb95
parent221ca3c95b37338b16446349e326c3adc935ea25 (diff)
(rules) move platform.windows.subsystem rule to its right directory and add it to platform.windows
-rw-r--r--xmake/rules/platform/windows/subsystem/xmake.lua51
-rw-r--r--xmake/rules/platform/xmake.lua9
-rw-r--r--xmake/rules/qt/xmake.lua4
-rw-r--r--xmake/rules/wdk/xmake.lua2
-rw-r--r--xmake/rules/windows/xmake.lua27
-rw-r--r--xmake/rules/winsdk/mfc/xmake.lua8
-rw-r--r--xmake/rules/winsdk/xmake.lua3
7 files changed, 63 insertions, 41 deletions
diff --git a/xmake/rules/platform/windows/subsystem/xmake.lua b/xmake/rules/platform/windows/subsystem/xmake.lua
new file mode 100644
index 000000000..a1cc9138c
--- /dev/null
+++ b/xmake/rules/platform/windows/subsystem/xmake.lua
@@ -0,0 +1,51 @@
+--!A cross-platform build utility based on Lua
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+-- Copyright (C) 2015-present, TBOOX Open Source Group.
+--
+-- @author ruki, Arthapz
+-- @file xmake.lua
+--
+
+-- define rule: subsystem
+-- set any of "boot_application" "console" "efi_application" "efi_boot_service_driver" "efi_rom" "efi_runtime_driver" "native" "posix" "windows"
+-- with target:set_values("windows.subsystem", <your value>) and the rule will pass the proper flag to the linker
+rule("platform.windows.subsystem")
+ on_config("mingw", "windows", function(target)
+ local subsystems = {
+ "BOOT_APPLICATION", "CONSOLE", "EFI_APPLICATION", "EFI_BOOT_SERVICE_DRIVER", "EFI_ROM", "EFI_RUNTIME_DRIVER", "NATIVE", "POSIX", "WINDOWS"
+ }
+
+ local subsystem = target:values("windows.subsystem")
+ if subsystem then
+ local valid = false
+ for _, s in ipairs(subsystems) do
+ if subsystem:upper():startwiths(s) then
+ valid = true
+ break
+ end
+ end
+ assert(valid, "Invalid subsystem " .. subsystem)
+
+ if target:has_tool("ld", "clang") then
+ target:add("ldflags", "-Wl,-subsystem:" .. subsystem, { force = true })
+ elseif target:has_tool("ld", "link", "lld-link") then
+ target:add("ldflags", "/SUBSYSTEM:" .. upper(subsystem), { force = true })
+ elseif target:has_tool("ld", "gcc", "g++") then
+ target:add("ldflags", "-Wl,-m" .. subsystem, { force = true })
+ elseif target:has_tool("ld", "ld") then
+ target:add("ldflags", "-m" .. subsystem, { force = true })
+ end
+ end
+ end)
diff --git a/xmake/rules/platform/xmake.lua b/xmake/rules/platform/xmake.lua
index 0cf18af90..ee2afaaa2 100644
--- a/xmake/rules/platform/xmake.lua
+++ b/xmake/rules/platform/xmake.lua
@@ -19,12 +19,13 @@
--
rule("platform.wasm")
- add_deps("platform.wasm.preloadfiles")
- add_deps("platform.wasm.installfiles")
+ add_deps("platform.wasm.preloadfiles",
+ "platform.wasm.installfiles")
rule("platform.windows")
- add_deps("platform.windows.def")
- add_deps("platform.windows.idl")
+ add_deps("platform.windows.def",
+ "platform.windows.idl",
+ "platform.windows.subsystem")
if is_host("windows") then
add_deps("platform.windows.manifest")
end
diff --git a/xmake/rules/qt/xmake.lua b/xmake/rules/qt/xmake.lua
index 1ef516793..1efa129b6 100644
--- a/xmake/rules/qt/xmake.lua
+++ b/xmake/rules/qt/xmake.lua
@@ -67,7 +67,7 @@ rule("qt.shared")
-- define rule: qt console
rule("qt.console")
- add_deps("qt.qrc", "qt.ui", "qt.moc", "qt.ts", "platform.windows.subsystem")
+ add_deps("qt.qrc", "qt.ui", "qt.moc", "qt.ts")
-- we must set kind before target.on_load(), may we will use target in on_load()
on_load(function (target)
@@ -83,7 +83,7 @@ rule("qt.console")
-- define rule: qt widgetapp
rule("qt.widgetapp")
- add_deps("qt.ui", "qt.moc", "qt._wasm_app", "qt.qrc", "qt.ts", "platform.windows.subsystem")
+ add_deps("qt.ui", "qt.moc", "qt._wasm_app", "qt.qrc", "qt.ts")
-- we must set kind before target.on_load(), may we will use target in on_load()
on_load(function (target)
diff --git a/xmake/rules/wdk/xmake.lua b/xmake/rules/wdk/xmake.lua
index e2861ad5b..c71ae13bf 100644
--- a/xmake/rules/wdk/xmake.lua
+++ b/xmake/rules/wdk/xmake.lua
@@ -22,7 +22,7 @@
rule("wdk.driver")
-- add rules
- add_deps("wdk.inf", "wdk.man", "wdk.mc", "wdk.mof", "wdk.tracewpp", "wdk.sign", "wdk.package.cab", "platform.windows.subsystem")
+ add_deps("wdk.inf", "wdk.man", "wdk.mc", "wdk.mof", "wdk.tracewpp", "wdk.sign", "wdk.package.cab")
-- after load
after_load(function (target)
diff --git a/xmake/rules/windows/xmake.lua b/xmake/rules/windows/xmake.lua
deleted file mode 100644
index 6b39ff69b..000000000
--- a/xmake/rules/windows/xmake.lua
+++ /dev/null
@@ -1,27 +0,0 @@
-rule("platform.windows.subsystem")
- on_config("mingw", "windows", function(target)
- local subsystems = {
- "BOOT_APPLICATION", "CONSOLE", "EFI_APPLICATION", "EFI_BOOT_SERVICE_DRIVER", "EFI_ROM", "EFI_RUNTIME_DRIVER", "NATIVE", "POSIX", "WINDOWS"
- }
-
- local subsystem = target:values("windows.subsystem")
- local valid = false
- local upper = string.upper
- for _, s in ipairs(subsystems) do
- if (subsystem:upper():startwiths(s)) then
- valid = true
- break
- end
- end
- assert(valid, "Invalid subsystem " .. subsystem)
-
- if target:has_tool("ld", "clang") then
- target:add("ldflags", "-Wl,-subsystem:" .. subsystem, { force = true })
- elseif target:has_tool("ld", "link", "lld-link") then
- target:add("ldflags", "/SUBSYSTEM:" .. upper(subsystem), { force = true })
- elseif target:has_tool("ld", "gcc", "g++") then
- target:add("ldflags", "-Wl,-m" .. subsystem, { force = true })
- elseif target:has_tool("ld", "ld") then
- target:add("ldflags", "-m" .. subsystem, { force = true })
- end
- end)
diff --git a/xmake/rules/winsdk/mfc/xmake.lua b/xmake/rules/winsdk/mfc/xmake.lua
index d0a7c4c24..bb93252d5 100644
--- a/xmake/rules/winsdk/mfc/xmake.lua
+++ b/xmake/rules/winsdk/mfc/xmake.lua
@@ -43,8 +43,8 @@ rule("win.sdk.mfc.static")
-- define rule: the application with shared mfc libraries
rule("win.sdk.mfc.shared_app")
- -- add mfc base and subsystem rule
- add_deps("win.sdk.mfc.env", "platform.windows.subsystem")
+ -- add mfc base rule
+ add_deps("win.sdk.mfc.env")
-- after load
after_load(function (target)
@@ -54,8 +54,8 @@ rule("win.sdk.mfc.shared_app")
-- define rule: the application with static mfc libraries
rule("win.sdk.mfc.static_app")
- -- add mfc base and subsystem rule
- add_deps("win.sdk.mfc.env", "platform.windows.subsystem")
+ -- add mfc base rule
+ add_deps("win.sdk.mfc.env")
-- after load
after_load(function (target)
diff --git a/xmake/rules/winsdk/xmake.lua b/xmake/rules/winsdk/xmake.lua
index 3e21df3a4..04814653c 100644
--- a/xmake/rules/winsdk/xmake.lua
+++ b/xmake/rules/winsdk/xmake.lua
@@ -29,9 +29,6 @@ rule("win.sdk.application")
target:set("kind", "binary")
end)
- -- set subsystem: windows
- add_deps("platform.windows.subsystem")
-
after_load(function (target)
-- set windows subsystem
if not target:values("windows.subsystem") then