summaryrefslogtreecommitdiff
path: root/xmake/modules
diff options
context:
space:
mode:
authorruki <[email protected]>2018-05-29 22:38:23 +0800
committerruki <[email protected]>2018-05-29 09:50:18 +0800
commit4f52f8bb0ac11246d7952ed8a895f0dd25390b78 (patch)
tree5c2a372b4e474a0c03979ee09b02784a997c56ed /xmake/modules
parente336ac264e40142861ce9033b5db4faee328af54 (diff)
improve winver for wdk rule
Diffstat (limited to 'xmake/modules')
-rw-r--r--xmake/modules/utils/os/winver.lua62
1 files changed, 62 insertions, 0 deletions
diff --git a/xmake/modules/utils/os/winver.lua b/xmake/modules/utils/os/winver.lua
index 8e8b93253..1579b4563 100644
--- a/xmake/modules/utils/os/winver.lua
+++ b/xmake/modules/utils/os/winver.lua
@@ -22,6 +22,68 @@
-- @file winver.lua
--
+-- get windows version value from name
+--
+-- reference: https://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx
+--
+function value(name)
+
+ -- init values
+ _g.values = _g.values or
+ {
+ nt4 = "0x0400"
+ , win2k = "0x0500"
+ , winxp = "0x0501"
+ , ws03 = "0x0502"
+ , win6 = "0x0600"
+ , vista = "0x0600"
+ , ws08 = "0x0600"
+ , longhorn = "0x0600"
+ , win7 = "0x0601"
+ , win8 = "0x0602"
+ , winblue = "0x0603"
+ , win81 = "0x0603"
+ , win10 = "0x0A00"
+ }
+
+ -- ignore the subname with '_xxx'
+ name = name:split('_')[1]
+
+ -- get value
+ return _g.values[name]
+end
+
+-- get ntddi value from name
+function value_ntddi(name)
+
+ -- init subvalues
+ _g.subvalues = _g.subvalues or
+ {
+ sp1 = "0100"
+ , sp2 = "0200"
+ , sp3 = "0300"
+ , sp4 = "0400"
+ , th2 = "0001"
+ , rs1 = "0002"
+ , rs2 = "0003"
+ , rs3 = "0004"
+ }
+
+ -- get subvalue
+ local subvalue = nil
+ local subname = name:split('_')[2]
+ if subname then
+ subvalue = _g.subvalues[subname]
+ end
+
+ -- get value
+ local val = value(name)
+ if val then
+ val = val .. (subvalue or "0000")
+ end
+ return val
+end
+
-- get windows system version
--
-- $ xmake l utils.os.winver