diff options
| author | ruki <[email protected]> | 2024-09-02 22:52:18 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2024-09-02 22:52:18 +0800 |
| commit | 4e9459eca8abe50b31f498541173948f2153f7b4 (patch) | |
| tree | 8f304a6b6e4c428f7abee87de69192c089ddbee1 | |
| parent | 87252889ffb913043721dd332456c186588a5ee7 (diff) | |
load cosmocc envs
| -rw-r--r-- | xmake/modules/detect/tools/find_cosmoar.lua | 1 | ||||
| -rw-r--r-- | xmake/modules/detect/tools/find_cosmocc.lua | 2 | ||||
| -rw-r--r-- | xmake/modules/detect/tools/find_cosmocxx.lua | 1 | ||||
| -rw-r--r-- | xmake/toolchains/cosmocc/check.lua | 10 | ||||
| -rw-r--r-- | xmake/toolchains/cosmocc/xmake.lua | 8 |
5 files changed, 21 insertions, 1 deletions
diff --git a/xmake/modules/detect/tools/find_cosmoar.lua b/xmake/modules/detect/tools/find_cosmoar.lua index 01c9232ce..b293c9b57 100644 --- a/xmake/modules/detect/tools/find_cosmoar.lua +++ b/xmake/modules/detect/tools/find_cosmoar.lua @@ -36,6 +36,7 @@ import("lib.detect.find_program") function main(opt) opt = opt or {} opt.shell = true + opt.envs = opt.envs or {PATH = os.getenv("PATH")} local program = find_program(opt.program or "cosmoar", opt) if program and is_host("windows") then program = program:gsub("\\", "/") diff --git a/xmake/modules/detect/tools/find_cosmocc.lua b/xmake/modules/detect/tools/find_cosmocc.lua index 910643626..14d14d1be 100644 --- a/xmake/modules/detect/tools/find_cosmocc.lua +++ b/xmake/modules/detect/tools/find_cosmocc.lua @@ -37,7 +37,7 @@ import("lib.detect.find_programver") function main(opt) opt = opt or {} opt.shell = true - opt.envs = {PATH = os.getenv("PATH")} + opt.envs = opt.envs or {PATH = os.getenv("PATH")} local program = find_program(opt.program or "cosmocc", opt) if program and is_host("windows") then program = program:gsub("\\", "/") diff --git a/xmake/modules/detect/tools/find_cosmocxx.lua b/xmake/modules/detect/tools/find_cosmocxx.lua index 06ce69aac..d09bac510 100644 --- a/xmake/modules/detect/tools/find_cosmocxx.lua +++ b/xmake/modules/detect/tools/find_cosmocxx.lua @@ -37,6 +37,7 @@ import("lib.detect.find_programver") function main(opt) opt = opt or {} opt.shell = true + opt.envs = opt.envs or {PATH = os.getenv("PATH")} local program = find_program(opt.program or "cosmoc++", opt) if program and is_host("windows") then program = program:gsub("\\", "/") diff --git a/xmake/toolchains/cosmocc/check.lua b/xmake/toolchains/cosmocc/check.lua index d193cceb2..5876db68f 100644 --- a/xmake/toolchains/cosmocc/check.lua +++ b/xmake/toolchains/cosmocc/check.lua @@ -32,6 +32,7 @@ function main(toolchain) local bindir = toolchain:bindir() -- find cross toolchain from external envirnoment + local envs local cross_toolchain = find_cross_toolchain(sdkdir, {bindir = bindir}) if not cross_toolchain then -- find it from packages @@ -40,6 +41,11 @@ function main(toolchain) if installdir and os.isdir(installdir) then cross_toolchain = find_cross_toolchain(installdir) if cross_toolchain then + -- we need to bind msys2 shell envirnoments for calling cosmocc, + -- @see https://github.com/xmake-io/xmake/issues/5552 + if is_subhost("windows") then + envs = package:envs() + end break end end @@ -57,9 +63,13 @@ function main(toolchain) toolchain:config_set("cross", cross_toolchain.cross) toolchain:config_set("bindir", cross_toolchain.bindir) toolchain:config_set("sdkdir", cross_toolchain.sdkdir) + if envs then + toolchain:config_set("envs", envs) + end toolchain:configs_save() else raise("cosmocc toolchain not found!") end return cross_toolchain end + diff --git a/xmake/toolchains/cosmocc/xmake.lua b/xmake/toolchains/cosmocc/xmake.lua index 0b19ad16c..17d217a6c 100644 --- a/xmake/toolchains/cosmocc/xmake.lua +++ b/xmake/toolchains/cosmocc/xmake.lua @@ -45,4 +45,12 @@ toolchain("cosmocc") toolchain:set("toolset", "ranlib", "aarch64-linux-cosmo-ranlib") toolchain:set("toolset", "strip", "aarch64-linux-cosmo-strip") end + -- @see https://github.com/xmake-io/xmake/issues/5552 + local envs = toolchain:config("envs") + if envs then + for k, v in pairs(envs) do + toolchain:add("runenvs", k, v) + end + end end) + |
