diff options
| author | ruki <[email protected]> | 2026-01-09 22:47:30 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2026-01-09 22:47:30 +0800 |
| commit | 3dea1417ba6abecc32afa3dd944d72d2e96b013b (patch) | |
| tree | dde96e8a59dc3308b3a8989fe4ceb0c599e59989 /xmake/toolchains/mingw | |
| parent | 85c60adb7938e0dc4793788dda2de8c9498e21f3 (diff) | |
improve mingw toolchain
Diffstat (limited to 'xmake/toolchains/mingw')
| -rw-r--r-- | xmake/toolchains/mingw/check.lua | 3 | ||||
| -rw-r--r-- | xmake/toolchains/mingw/xmake.lua | 35 |
2 files changed, 27 insertions, 11 deletions
diff --git a/xmake/toolchains/mingw/check.lua b/xmake/toolchains/mingw/check.lua index 030dc6dd4..15cfe510a 100644 --- a/xmake/toolchains/mingw/check.lua +++ b/xmake/toolchains/mingw/check.lua @@ -28,7 +28,7 @@ function main(toolchain) for _, package in ipairs(toolchain:packages()) do local installdir = package:installdir() if installdir and os.isdir(installdir) then - mingw = find_mingw(installdir, {verbose = true, cross = toolchain:cross()}) + mingw = find_mingw(installdir, {verbose = true, cross = toolchain:cross(), arch = toolchain:arch()}) if mingw then break end @@ -40,6 +40,7 @@ function main(toolchain) bindir = toolchain:bindir(), cross = toolchain:cross(), msystem = toolchain:config("msystem"), + arch = toolchain:arch() }) end if mingw then diff --git a/xmake/toolchains/mingw/xmake.lua b/xmake/toolchains/mingw/xmake.lua index 5c63cb734..d0695dcfe 100644 --- a/xmake/toolchains/mingw/xmake.lua +++ b/xmake/toolchains/mingw/xmake.lua @@ -31,17 +31,32 @@ toolchain("mingw") local use_clang = toolchain:config("clang") -- get cross - local cross - if toolchain:is_arch("x86_64", "x64") then - cross = "x86_64-w64-mingw32-" - elseif toolchain:is_arch("i386", "x86", "i686") then - cross = "i686-w64-mingw32-" - elseif toolchain:is_arch("arm64", "aarch64") then - cross = "aarch64-w64-mingw32-" - elseif toolchain:is_arch("armv7", "arm.*") then - cross = "armv7-w64-mingw32-" + -- https://github.com/xmake-io/xmake/issues/7196 + local cross = toolchain:cross() or "" + if cross ~= "" then + local arch + if cross:startswith("x86_64") then + arch = "x86_64" + elseif cross:startswith("i686") then + arch = "i386" + elseif cross:startswith("aarch64") then + arch = "arm64" + elseif cross:startswith("arm") then + arch = "armv7" + end + if arch then + toolchain:arch_set(arch) + end else - cross = toolchain:cross() or "" + if toolchain:is_arch("x86_64", "x64") then + cross = "x86_64-w64-mingw32-" + elseif toolchain:is_arch("i386", "x86", "i686") then + cross = "i686-w64-mingw32-" + elseif toolchain:is_arch("arm64", "aarch64") then + cross = "aarch64-w64-mingw32-" + elseif toolchain:is_arch("armv7", "arm.*") then + cross = "armv7-w64-mingw32-" + end end -- add bin search library for loading some dependent .dll files windows |
