summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2020-05-30 00:39:28 +0800
committerruki <[email protected]>2020-05-29 21:56:48 +0800
commit8ee95c16390e8dbac222d1c0e665eb7dc43cccc7 (patch)
treee026f81a3b7799b9e17b330b5df34dfbb6685903
parent1b197180ae3bb6b7d04e95e532dcb7666345d724 (diff)
improve mingw toolchain
-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