summaryrefslogtreecommitdiff
path: root/xmake/modules/detect/sdks/find_wdk.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2018-04-28 22:56:45 +0800
committerruki <[email protected]>2018-04-28 22:56:45 +0800
commite2146da9cfcad7d53ab330252ebc74e4093b41fa (patch)
treea1a2e1525bb485f112421894b1c476d758179904 /xmake/modules/detect/sdks/find_wdk.lua
parentcc90fd75c503493fdced6c7acce517e6874f44b8 (diff)
find umdf and kmdf version
Diffstat (limited to 'xmake/modules/detect/sdks/find_wdk.lua')
-rw-r--r--xmake/modules/detect/sdks/find_wdk.lua48
1 files changed, 47 insertions, 1 deletions
diff --git a/xmake/modules/detect/sdks/find_wdk.lua b/xmake/modules/detect/sdks/find_wdk.lua
index 401346367..dae209737 100644
--- a/xmake/modules/detect/sdks/find_wdk.lua
+++ b/xmake/modules/detect/sdks/find_wdk.lua
@@ -43,6 +43,46 @@ function _find_sdkdir(sdkdir)
return sdkdir
end
+-- find umdf version
+function _find_umdfver(libdir, includedir)
+
+ -- find versions
+ local versions = {}
+ for _, p in ipairs(os.files(path.join(includedir, "wdf", "umdf", "**", "wdf.h"))) do
+ table.insert(versions, path.filename(path.directory(p)))
+ end
+
+ -- find version
+ local arch = config.arch()
+ if arch then
+ for _, ver in ipairs(versions) do
+ if os.isfile(path.join(libdir, "wdf", "umdf", arch, ver, "WdfDriverStubUm.lib")) then
+ return ver
+ end
+ end
+ end
+end
+
+-- find kmdf version
+function _find_kmdfver(libdir, includedir)
+
+ -- find versions
+ local versions = {}
+ for _, p in ipairs(os.files(path.join(includedir, "wdf", "kmdf", "**", "wdf.h"))) do
+ table.insert(versions, path.filename(path.directory(p)))
+ end
+
+ -- find version
+ local arch = config.arch()
+ if arch then
+ for _, ver in ipairs(versions) do
+ if os.isfile(path.join(libdir, "wdf", "kmdf", arch, ver, "wdfdriverentry.lib")) then
+ return ver
+ end
+ end
+ end
+end
+
-- find WDK toolchains
function _find_wdk(sdkdir, sdkver)
@@ -78,8 +118,14 @@ function _find_wdk(sdkdir, sdkver)
-- get the include directory
local includedir = path.join(sdkdir, "Include")
+ -- get umdf version
+ local umdfver = _find_umdfver(libdir, includedir)
+
+ -- get kmdf version
+ local kmdfver = _find_kmdfver(libdir, includedir)
+
-- get toolchains
- return {sdkdir = sdkdir, bindir = bindir, libdir = libdir, includedir = includedir, sdkver = sdkver}
+ return {sdkdir = sdkdir, bindir = bindir, libdir = libdir, includedir = includedir, sdkver = sdkver, umdfver = umdfver, kmdfver = kmdfver}
end
-- find WDK toolchains