summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xmake/core/tool/toolchain.lua1
-rw-r--r--xmake/toolchains/mingw/xmake.lua28
2 files changed, 19 insertions, 10 deletions
diff --git a/xmake/core/tool/toolchain.lua b/xmake/core/tool/toolchain.lua
index 200d00b3a..7b0463b25 100644
--- a/xmake/core/tool/toolchain.lua
+++ b/xmake/core/tool/toolchain.lua
@@ -303,6 +303,7 @@ function toolchain.apis()
-- toolchain.set_xxx
"toolchain.set_formats"
, "toolchain.set_toolsets"
+ , "toolchain.add_toolsets"
-- toolchain.add_xxx
, "toolchain.add_runenvs"
}
diff --git a/xmake/toolchains/mingw/xmake.lua b/xmake/toolchains/mingw/xmake.lua
index c2d6c502c..a723bb7d5 100644
--- a/xmake/toolchains/mingw/xmake.lua
+++ b/xmake/toolchains/mingw/xmake.lua
@@ -54,16 +54,24 @@ toolchain("mingw")
end
-- set toolsets
- toolchain:set("toolsets", "cc", cross .. "gcc")
- toolchain:set("toolsets", "cxx", cross .. "gcc", cross .. "g++")
- toolchain:set("toolsets", "cpp", cross .. "gcc -E")
- toolchain:set("toolsets", "as", cross .. "gcc")
- toolchain:set("toolsets", "ld", cross .. "g++", cross .. "gcc")
- toolchain:set("toolsets", "sh", cross .. "g++", cross .. "gcc")
- toolchain:set("toolsets", "ar", cross .. "ar", cross .. "gcc-ar")
- toolchain:set("toolsets", "ex", cross .. "ar", cross .. "gcc-ar")
- toolchain:set("toolsets", "ranlib", cross .. "ranlib", cross .. "gcc-ranlib")
- toolchain:set("toolsets", "mrc", cross .. "windres")
+ if is_host("windows") and bindir then
+ -- @note we uses bin/ar.exe instead of bin/cross-gcc-ar.exe, @see https://github.com/xmake-io/xmake/issues/807#issuecomment-635779210
+ toolchain:add("toolsets", "ar", path.join(bindir, "ar"))
+ toolchain:add("toolsets", "ex", path.join(bindir, "ar"))
+ toolchain:add("toolsets", "strip", path.join(bindir, "strip"))
+ toolchain:add("toolsets", "ranlib", path.join(bindir, "ranlib"))
+ end
+ toolchain:add("toolsets", "cc", cross .. "gcc")
+ toolchain:add("toolsets", "cxx", cross .. "gcc", cross .. "g++")
+ toolchain:add("toolsets", "cpp", cross .. "gcc -E")
+ toolchain:add("toolsets", "as", cross .. "gcc")
+ toolchain:add("toolsets", "ld", cross .. "g++", cross .. "gcc")
+ toolchain:add("toolsets", "sh", cross .. "g++", cross .. "gcc")
+ toolchain:add("toolsets", "ar", cross .. "ar")
+ toolchain:add("toolsets", "ex", cross .. "ar")
+ toolchain:add("toolsets", "strip", cross .. "strip")
+ toolchain:add("toolsets", "ranlib", cross .. "ranlib")
+ toolchain:add("toolsets", "mrc", cross .. "windres")
-- init flags for architecture
local archflags = nil