diff options
Diffstat (limited to 'xmake')
| -rw-r--r-- | xmake/modules/detect/tools/find_emar.lua | 21 | ||||
| -rw-r--r-- | xmake/modules/detect/tools/find_emcc.lua | 19 | ||||
| -rw-r--r-- | xmake/modules/detect/tools/find_emrun.lua | 21 | ||||
| -rw-r--r-- | xmake/modules/detect/tools/find_emxx.lua | 19 | ||||
| -rw-r--r-- | xmake/toolchains/emcc/xmake.lua | 28 |
5 files changed, 94 insertions, 14 deletions
diff --git a/xmake/modules/detect/tools/find_emar.lua b/xmake/modules/detect/tools/find_emar.lua index 8a6ec2691..138646243 100644 --- a/xmake/modules/detect/tools/find_emar.lua +++ b/xmake/modules/detect/tools/find_emar.lua @@ -83,5 +83,24 @@ function main(opt) end -- find program - return find_program(opt.program or (is_host("windows") and "emar.bat" or "emar"), opt) + -- emsdk 6.0.0+ ships .exe on windows, older releases ship .bat + local program + if opt.program then + program = find_program(opt.program, opt) + else + local candidate_names + if is_host("windows") then + candidate_names = {"emar.exe", "emar.bat"} + else + candidate_names = {"emar"} + end + for _, name in ipairs(candidate_names) do + program = find_program(name, opt) + if program then + break + end + end + end + + return program end diff --git a/xmake/modules/detect/tools/find_emcc.lua b/xmake/modules/detect/tools/find_emcc.lua index e44223d63..dc77b716e 100644 --- a/xmake/modules/detect/tools/find_emcc.lua +++ b/xmake/modules/detect/tools/find_emcc.lua @@ -50,7 +50,24 @@ function main(opt) end -- find program - local program = find_program(opt.program or (is_host("windows") and "emcc.bat" or "emcc"), opt) + -- emsdk 6.0.0+ ships .exe on windows, older releases ship .bat + local program + if opt.program then + program = find_program(opt.program, opt) + else + local candidate_names + if is_host("windows") then + candidate_names = {"emcc.exe", "emcc.bat"} + else + candidate_names = {"emcc"} + end + for _, name in ipairs(candidate_names) do + program = find_program(name, opt) + if program then + break + end + end + end -- find program version local version = nil diff --git a/xmake/modules/detect/tools/find_emrun.lua b/xmake/modules/detect/tools/find_emrun.lua index ac210c4ca..6a96c9d82 100644 --- a/xmake/modules/detect/tools/find_emrun.lua +++ b/xmake/modules/detect/tools/find_emrun.lua @@ -51,9 +51,26 @@ function main(opt) table.insert(paths, emsdk.emscripten) opt.paths = paths end - + -- find program - local program = find_program(opt.program or (is_host("windows") and "emrun.bat" or "emrun"), opt) + -- emsdk 6.0.0+ ships .exe on windows, older releases ship .bat + local program + if opt.program then + program = find_program(opt.program, opt) + else + local candidate_names + if is_host("windows") then + candidate_names = {"emrun.exe", "emrun.bat"} + else + candidate_names = {"emrun"} + end + for _, name in ipairs(candidate_names) do + program = find_program(name, opt) + if program then + break + end + end + end -- find program version local version = nil diff --git a/xmake/modules/detect/tools/find_emxx.lua b/xmake/modules/detect/tools/find_emxx.lua index 4f8cc90ed..6ba454d1d 100644 --- a/xmake/modules/detect/tools/find_emxx.lua +++ b/xmake/modules/detect/tools/find_emxx.lua @@ -50,7 +50,24 @@ function main(opt) end -- find program - local program = find_program(opt.program or (is_host("windows") and "em++.bat" or "em++"), opt) + -- emsdk 6.0.0+ ships .exe on windows, older releases ship .bat + local program + if opt.program then + program = find_program(opt.program, opt) + else + local candidate_names + if is_host("windows") then + candidate_names = {"em++.exe", "em++.bat"} + else + candidate_names = {"em++"} + end + for _, name in ipairs(candidate_names) do + program = find_program(name, opt) + if program then + break + end + end + end -- find program version local version = nil diff --git a/xmake/toolchains/emcc/xmake.lua b/xmake/toolchains/emcc/xmake.lua index 3d64019e6..8313cd226 100644 --- a/xmake/toolchains/emcc/xmake.lua +++ b/xmake/toolchains/emcc/xmake.lua @@ -25,14 +25,25 @@ toolchain("emcc") set_kind("standalone") - local suffix = is_host("windows") and ".bat" or "" - set_toolset("cc", "emcc" .. suffix) - set_toolset("cxx", "emcc" .. suffix, "em++" .. suffix) - set_toolset("ld", "em++" .. suffix, "emcc" .. suffix) - set_toolset("sh", "em++" .. suffix, "emcc" .. suffix) - set_toolset("ar", "emar" .. suffix) - set_toolset("as", "emcc" .. suffix) - set_toolset("ranlib", "emranlib" .. suffix) + local function toolnames(...) + local result = {} + for _, basename in ipairs({...}) do + if is_host("windows") then + table.insert(result, basename .. ".exe") + table.insert(result, basename .. ".bat") + else + table.insert(result, basename) + end + end + return table.unpack(result) + end + set_toolset("cc", toolnames("emcc")) + set_toolset("cxx", toolnames("emcc", "em++")) + set_toolset("ld", toolnames("em++", "emcc")) + set_toolset("sh", toolnames("em++", "emcc")) + set_toolset("ar", toolnames("emar")) + set_toolset("as", toolnames("emcc")) + set_toolset("ranlib", toolnames("emranlib")) on_check(function (toolchain) import("lib.detect.find_tool") @@ -82,4 +93,3 @@ toolchain("emcc") end end end) - |
