summaryrefslogtreecommitdiff
path: root/xmake/modules/private/utils/toolchain.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2025-12-20 00:43:54 +0800
committerruki <[email protected]>2025-12-20 00:43:54 +0800
commitd6d9ad8cbdeb62e26db3e2a96d25319f4802e36b (patch)
tree07c344e703a4b40990de830bfdf250ad2d58d743 /xmake/modules/private/utils/toolchain.lua
parent50e52b0aa88b409f65181b8a6607427c8e17a28d (diff)
improve clang target flags
Diffstat (limited to 'xmake/modules/private/utils/toolchain.lua')
-rw-r--r--xmake/modules/private/utils/toolchain.lua57
1 files changed, 57 insertions, 0 deletions
diff --git a/xmake/modules/private/utils/toolchain.lua b/xmake/modules/private/utils/toolchain.lua
index 29036a2c2..c0cec7f74 100644
--- a/xmake/modules/private/utils/toolchain.lua
+++ b/xmake/modules/private/utils/toolchain.lua
@@ -120,6 +120,63 @@ function _add_vsenv(toolchain, name, curenvs)
end
end
+-- get clang target
+function get_clang_target(toolchain)
+ local target
+ if toolchain:is_plat("windows") then
+ if toolchain:is_arch("x86_64", "x64") then
+ target = "x86_64-pc-windows-msvc"
+ elseif toolchain:is_arch("i386", "x86", "i686") then
+ target = "i686-pc-windows-msvc"
+ elseif toolchain:is_arch("arm64", "aarch64") then
+ target = "aarch64-pc-windows-msvc"
+ elseif toolchain:is_arch("arm64ec") then
+ target = "arm64ec-pc-windows-msvc"
+ elseif toolchain:is_arch("arm.*") then
+ target = "armv7-pc-windows-msvc"
+ end
+ elseif toolchain:is_plat("mingw") then
+ if toolchain:is_arch("x86_64", "x64") then
+ target = "x86_64-w64-windows-gnu"
+ elseif toolchain:is_arch("i386", "x86", "i686") then
+ target = "i686-w64-windows-gnu"
+ elseif toolchain:is_arch("arm64", "aarch64") then
+ target = "aarch64-w64-windows-gnu"
+ elseif toolchain:is_arch("arm.*") then
+ target = "armv7-w64-windows-gnu"
+ end
+ elseif toolchain:is_plat("linux") then
+ if toolchain:is_arch("x86_64", "x64") then
+ target = "x86_64-linux-gnu"
+ elseif toolchain:is_arch("i386", "x86", "i686") then
+ target = "i686-linux-gnu"
+ elseif toolchain:is_arch("arm64", "aarch64", "arm64-v8a") then
+ target = "aarch64-linux-gnu"
+ elseif toolchain:is_arch("arm.*") then
+ target = "armv7-linux-gnu"
+ end
+ elseif toolchain:is_plat("cross") then
+ target = toolchain:cross()
+ if target and target:endswith("-") then
+ target = target:sub(1, -2)
+ end
+ end
+ return target
+end
+
+-- get clang target flags
+function get_clang_target_flags(toolchain)
+ local target = get_clang_target(toolchain)
+ if target then
+ return "--target=" .. target
+ end
+ if toolchain:is_arch("x86_64", "x64") then
+ return "-m64"
+ elseif toolchain:is_arch("i386", "x86") then
+ return "-m32"
+ end
+end
+
-- add vs environments
function add_vsenvs(toolchain, expect_vars)
local curenvs = os.getenvs()