summaryrefslogtreecommitdiff
path: root/xmake/toolchains
diff options
context:
space:
mode:
authorruki <[email protected]>2026-03-14 23:02:18 +0800
committerruki <[email protected]>2026-03-14 23:02:18 +0800
commit22976f06349a3af4b520ae5796ab20edc95bfe0c (patch)
treeeb40e0b3395d1083802159031e79691f17676385 /xmake/toolchains
parenta86bde866d5f65d5fbd31f1474190dcc40aa2876 (diff)
improve find_dotnet
Diffstat (limited to 'xmake/toolchains')
-rw-r--r--xmake/toolchains/dotnet/xmake.lua33
1 files changed, 18 insertions, 15 deletions
diff --git a/xmake/toolchains/dotnet/xmake.lua b/xmake/toolchains/dotnet/xmake.lua
index 9c1fe40c3..6a02b0a0a 100644
--- a/xmake/toolchains/dotnet/xmake.lua
+++ b/xmake/toolchains/dotnet/xmake.lua
@@ -28,30 +28,33 @@ toolchain("dotnet")
set_toolset("cssh", "dotnet")
on_check(function (toolchain)
- import("lib.detect.find_tool")
import("detect.sdks.find_dotnet")
- -- find dotnet program
- local dotnet = find_tool("dotnet", {version = true})
- if not dotnet then
- return false
+ -- find dotnet sdk from packages first
+ local sdkinfo
+ for _, package in ipairs(toolchain:packages()) do
+ local installdir = package:installdir()
+ if installdir and os.isdir(installdir) then
+ sdkinfo = find_dotnet(installdir, {force = true})
+ if sdkinfo then
+ break
+ end
+ end
end
- toolchain:config_set("dotnet", dotnet.program)
- toolchain:config_set("dotnet_version", dotnet.version)
- -- find dotnet sdk info
- local sdkinfo = find_dotnet()
- if sdkinfo then
- toolchain:config_set("sdkinfo", sdkinfo)
+ -- find dotnet sdk from system
+ if not sdkinfo then
+ sdkinfo = find_dotnet()
+ end
+ if not sdkinfo or not sdkinfo.bindir then
+ return false
end
+ toolchain:config_set("bindir", sdkinfo.bindir)
+ toolchain:config_set("sdkdir", sdkinfo.sdkdir)
return true
end)
on_load(function (toolchain)
- local dotnet = toolchain:config("dotnet") or "dotnet"
- toolchain:set("toolset", "cs", dotnet)
- toolchain:set("toolset", "csld", dotnet)
- toolchain:set("toolset", "cssh", dotnet)
-- set default environment variables
toolchain:add("runenvs", "DOTNET_NOLOGO", "1")