diff options
| author | ruki <[email protected]> | 2024-03-21 22:31:29 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2024-03-21 22:31:29 +0800 |
| commit | aa129947e364c770c0239d0915ec3a400a112dbd (patch) | |
| tree | 6475469740b31132dc9f54a21f1e0ffaaf65ace9 | |
| parent | be186a5aaa7e23bbd6305fa05cedb11b06ac8feb (diff) | |
improve nim to support package
| -rw-r--r-- | xmake/toolchains/nim/xmake.lua | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/xmake/toolchains/nim/xmake.lua b/xmake/toolchains/nim/xmake.lua index e85a80204..9afd491da 100644 --- a/xmake/toolchains/nim/xmake.lua +++ b/xmake/toolchains/nim/xmake.lua @@ -19,16 +19,39 @@ -- toolchain("nim") - set_homepage("https://nim-lang.org/") set_description("Nim Programming Language Compiler") - set_toolset("nc", "$(env NC)", "nim") - set_toolset("ncld", "$(env NC)", "nim") - set_toolset("ncsh", "$(env NC)", "nim") - set_toolset("ncar", "$(env NC)", "nim") + on_check(function (toolchain) + import("lib.detect.find_tool") + local paths = {} + for _, package in ipairs(toolchain:packages()) do + local envs = package:get("envs") + if envs then + table.join2(paths, envs.PATH) + end + end + local nim = get_config("nc") + if not nim then + nim = find_tool("nim", {force = true, paths = paths}) + if nim and nim.program then + nim = nim.program + end + end + if nim then + toolchain:config_set("nim", nim) + toolchain:configs_save() + return true + end + end) on_load(function (toolchain) + local nim = toolchain:config("nim") or "nim" + toolchain:set("toolset", "nc", "$(env NC)", nim) + toolchain:set("toolset", "ncld", "$(env NC)", nim) + toolchain:set("toolset", "ncsh", "$(env NC)", nim) + toolchain:set("toolset", "ncar", "$(env NC)", nim) + if toolchain:is_plat("windows") then toolchain:set("ncflags", "--cc:vcc") local msvc = import("core.tool.toolchain", {anonymous = true}).load("msvc", {plat = toolchain:plat(), arch = toolchain:arch()}) @@ -39,3 +62,4 @@ toolchain("nim") toolchain:set("ncshflags", "") toolchain:set("ncldflags", "") end) + |
