summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xmake/modules/detect/tools/find_emar.lua21
-rw-r--r--xmake/modules/detect/tools/find_emcc.lua19
-rw-r--r--xmake/modules/detect/tools/find_emrun.lua21
-rw-r--r--xmake/modules/detect/tools/find_emxx.lua19
-rw-r--r--xmake/toolchains/emcc/xmake.lua28
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)
-