diff options
| author | ruki <[email protected]> | 2018-05-19 21:59:23 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2018-05-19 21:59:23 +0800 |
| commit | e657f348e658d91255fd01d347faf74ccafdfa4e (patch) | |
| tree | 6c346192ba7fd18b0671664b47c36d90d47b7f5b /xmake/rules/winsdk | |
| parent | ccbd73d46319fb9f71eae878aa7ca3845747e1e5 (diff) | |
add win sdk rules
Diffstat (limited to 'xmake/rules/winsdk')
| -rw-r--r-- | xmake/rules/winsdk/dotnet/xmake.lua | 40 | ||||
| -rw-r--r-- | xmake/rules/winsdk/xmake.lua | 14 |
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) |
