From 030d7105837e998ded7e8969beb6d9d13d18b015 Mon Sep 17 00:00:00 2001 From: ruki Date: Mon, 1 Jul 2024 23:02:23 +0800 Subject: improve to find cosmocc --- xmake/modules/detect/tools/find_cosmocc.lua | 1 + xmake/toolchains/cosmocc/check.lua | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/xmake/modules/detect/tools/find_cosmocc.lua b/xmake/modules/detect/tools/find_cosmocc.lua index 964b564c8..910643626 100644 --- a/xmake/modules/detect/tools/find_cosmocc.lua +++ b/xmake/modules/detect/tools/find_cosmocc.lua @@ -37,6 +37,7 @@ import("lib.detect.find_programver") function main(opt) opt = opt or {} opt.shell = true + opt.envs = {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/toolchains/cosmocc/check.lua b/xmake/toolchains/cosmocc/check.lua index 01fa54f8b..d193cceb2 100644 --- a/xmake/toolchains/cosmocc/check.lua +++ b/xmake/toolchains/cosmocc/check.lua @@ -21,6 +21,7 @@ -- imports import("core.project.config") import("lib.detect.find_path") +import("lib.detect.find_tool") import("detect.sdks.find_cross_toolchain") -- check the cross toolchain @@ -44,6 +45,14 @@ function main(toolchain) end end end + if not cross_toolchain then + local cosmocc = find_tool("cosmocc", {force = true}) + if cosmocc and cosmocc.program then + local bindir = path.directory(cosmocc.program) + local sdkdir = path.directory(bindir) + cross_toolchain = {bindir = bindir, sdkdir = sdkdir} + end + end if cross_toolchain then toolchain:config_set("cross", cross_toolchain.cross) toolchain:config_set("bindir", cross_toolchain.bindir) -- cgit v1.3.1