summaryrefslogtreecommitdiff
path: root/xmake/rules/winsdk
diff options
context:
space:
mode:
authorruki <[email protected]>2018-05-19 21:59:23 +0800
committerruki <[email protected]>2018-05-19 21:59:23 +0800
commite657f348e658d91255fd01d347faf74ccafdfa4e (patch)
tree6c346192ba7fd18b0671664b47c36d90d47b7f5b /xmake/rules/winsdk
parentccbd73d46319fb9f71eae878aa7ca3845747e1e5 (diff)
add win sdk rules
Diffstat (limited to 'xmake/rules/winsdk')
-rw-r--r--xmake/rules/winsdk/dotnet/xmake.lua40
-rw-r--r--xmake/rules/winsdk/xmake.lua14
2 files changed, 48 insertions, 6 deletions
diff --git a/xmake/rules/winsdk/dotnet/xmake.lua b/xmake/rules/winsdk/dotnet/xmake.lua
index a54347d40..31e5ff756 100644
--- a/xmake/rules/winsdk/dotnet/xmake.lua
+++ b/xmake/rules/winsdk/dotnet/xmake.lua
@@ -28,5 +28,45 @@ rule("win.sdk.dotnet")
-- on load
on_load(function (target)
+ -- imports
+ import("core.project.config")
+ import("detect.sdks.find_dotnet")
+
+ -- load dotnet environment
+ if not target:data("win.sdk.dotnet") then
+
+ -- find dotnet
+ local dotnet = assert(find_dotnet(nil, {verbose = true}), "dotnet not found!")
+
+ -- add link directory
+ target:add("linkdirs", path.join(dotnet.libdir, "um", config.arch()))
+
+ -- save dotnet
+ target:data_set("win.sdk.dotnet", dotnet)
+ end
end)
+ -- before build file
+ before_build_file(function (target, sourcefile, opt)
+
+ -- get dotnet
+ local dotnet = target:data("win.sdk.dotnet")
+
+ -- get file config
+ local fileconfig = target:fileconfig(sourcefile) or {}
+
+ -- add cxflags to the given source file
+ --
+ -- add_files(sourcefile, {force = {cxflags = "/clr"}})
+ --
+ fileconfig.force = fileconfig.force or {}
+ fileconfig.force.cxflags = fileconfig.force.cxflags or {}
+ table.insert(fileconfig.force.cxflags, "/clr")
+
+ -- add include directory to given source file
+ fileconfig.includedirs = fileconfig.includedirs or {}
+ table.insert(fileconfig.includedirs, path.join(dotnet.includedir, "um"))
+
+ -- update file config
+ target:fileconfig_set(sourcefile, fileconfig)
+ end)
diff --git a/xmake/rules/winsdk/xmake.lua b/xmake/rules/winsdk/xmake.lua
index 6ba05debe..bcd17ca83 100644
--- a/xmake/rules/winsdk/xmake.lua
+++ b/xmake/rules/winsdk/xmake.lua
@@ -28,13 +28,15 @@ rule("win.sdk.application")
-- on load
on_load(function (target)
- -- TODO
- -- values: win.sdk.mt/md
+ -- set kind: binary
+ target:set("kind", "binary")
- -- link libcmt[d].lib
- -- target:add("cflags", "-MT" .. (is_mode("debug") and "d" or ""))
+ -- set subsystem: windows
+ target:add("ldflags", "-subsystem:windows", {force = true})
- -- no msvcrt.lib
--- target:add("ldflags", "-nodefaultlib:\"msvcrt.lib\"")
+ -- add links
+ target:add("links", "kernel32", "user32", "gdi32", "winspool", "comdlg32", "advapi32")
+ target:add("links", "shell32", "ole32", "oleaut32", "uuid", "odbc32", "odbccp32", "comctl32")
+ target:add("links", "cfgmgr32", "comdlg32", "setupapi", "strsafe", "shlwapi")
end)