summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2018-08-21 00:42:47 +0800
committerruki <[email protected]>2018-08-20 22:16:43 +0800
commit0ba43c443b64019b87721f3af47675ab9d8226ec (patch)
tree291f6b3d2cfbfa778e1d3399ca441db9e298ea97
parent7df03dd8e81837f77a7bfb0b4b33ded1770e55b5 (diff)
fix some winver bug for wdk rule
-rw-r--r--xmake/modules/os/winver.lua9
-rw-r--r--xmake/rules/wdk/env/load.lua1
-rw-r--r--xmake/rules/wdk/env/xmake.lua8
-rw-r--r--xmake/rules/wdk/load.lua21
4 files changed, 29 insertions, 10 deletions
diff --git a/xmake/modules/os/winver.lua b/xmake/modules/os/winver.lua
index 50763417a..288f3a89f 100644
--- a/xmake/modules/os/winver.lua
+++ b/xmake/modules/os/winver.lua
@@ -84,9 +84,14 @@ function ntddi_version(name)
return val
end
--- get WIN32_WINNT from name
+-- get _WIN32_WINNT from name
function winnt_version(name)
- return ntddi_version(name)
+ return version(name)
+end
+
+-- get _NT_TARGET_VERSION from name
+function target_version(name)
+ return version(name)
end
-- get windows system version
diff --git a/xmake/rules/wdk/env/load.lua b/xmake/rules/wdk/env/load.lua
index b10b4a1ca..2123cca7d 100644
--- a/xmake/rules/wdk/env/load.lua
+++ b/xmake/rules/wdk/env/load.lua
@@ -52,7 +52,6 @@ function umdf(target)
local arch = config.arch()
-- add defines
- local winver = target:values("wdk.env.winver") or config.get("wdk_winver")
local umdfver = wdk.umdfver:split('%.')
if arch == "x64" then
target:add("defines", "_WIN64", "_AMD64_", "AMD64")
diff --git a/xmake/rules/wdk/env/xmake.lua b/xmake/rules/wdk/env/xmake.lua
index 0db7c86e8..64475ab04 100644
--- a/xmake/rules/wdk/env/xmake.lua
+++ b/xmake/rules/wdk/env/xmake.lua
@@ -62,19 +62,23 @@ rule("wdk.env")
-- get winver version
local winver_version = os_winver.version(winver or "") or "0x0A00"
+ -- get target version
+ local target_version = os_winver.target_version(winver or "") or "0x0A00"
+
-- get winnt version
- local winnt_version = os_winver.winnt_version(winver or "") or "0x0A000000"
+ local winnt_version = os_winver.winnt_version(winver or "") or "0x0A00"
-- get ntddi version
local ntddi_version = os_winver.ntddi_version(winver or "") or "0x0A000000"
-- add defines for winver
- target:add("defines", "_WIN32_WINNT=" .. winnt_version, "WINVER=" .. winver_version, "NTDDI_VERSION=" .. ntddi_version)
+ target:add("defines", "_WIN32_WINNT=" .. winnt_version, "WINVER=" .. winver_version, "NTDDI_VERSION=" .. ntddi_version, "_NT_TARGET_VERSION=" .. target_version)
-- set builtin version values
target:values_set("wdk.env.winnt_version", winnt_version)
target:values_set("wdk.env.ntddi_version", ntddi_version)
target:values_set("wdk.env.winver_version", winver_version)
+ target:values_set("wdk.env.target_version", target_version)
-- save wdk
target:data_set("wdk", wdk)
diff --git a/xmake/rules/wdk/load.lua b/xmake/rules/wdk/load.lua
index 312fa3454..23a4c0740 100644
--- a/xmake/rules/wdk/load.lua
+++ b/xmake/rules/wdk/load.lua
@@ -34,11 +34,19 @@ function _winver_subsystem(winver)
-- make defined values
local defvals =
{
- win10 = "10.00"
- , win81 = "6.03"
- , winblue = "6.03"
- , win8 = "6.02"
- , win7 = "6.01"
+ nt4 = "4.00"
+ , win2k = "5.00"
+ , winxp = "5.01"
+ , ws03 = "5.02"
+ , win6 = "6.00"
+ , vista = "6.00"
+ , ws08 = "6.00"
+ , longhorn = "6.00"
+ , win7 = "6.01"
+ , win8 = "6.02"
+ , winblue = "6.03"
+ , win81 = "6.03"
+ , win10 = "10.00"
}
return defvals[winver] or "10.00"
end
@@ -54,6 +62,7 @@ function driver_umdf(target)
target:add("shflags", "-NODEFAULTLIB:kernel32.lib", "-NODEFAULTLIB:user32.lib", "-NODEFAULTLIB:libucrt.lib", {force = true})
-- add subsystem
+ local winver = target:values("wdk.env.winver") or config.get("wdk_winver")
target:add("shflags", "-subsystem:windows," .. _winver_subsystem(winver), {force = true})
-- set default driver entry if does not exist
@@ -87,6 +96,7 @@ function driver_kmdf(target)
target:add("ldflags", "-kernel", "-driver", {force = true})
-- add subsystem
+ local winver = target:values("wdk.env.winver") or config.get("wdk_winver")
target:add("ldflags", "-subsystem:native," .. _winver_subsystem(winver), {force = true})
-- set default driver entry if does not exist
@@ -121,6 +131,7 @@ function driver_wdm(target)
target:add("ldflags", "-kernel", "-driver", {force = true})
-- add subsystem
+ local winver = target:values("wdk.env.winver") or config.get("wdk_winver")
target:add("ldflags", "-subsystem:native," .. _winver_subsystem(winver), {force = true})
-- set default driver entry if does not exist