summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcofecofe <[email protected]>2024-06-23 23:16:43 +0800
committercofecofe <[email protected]>2024-06-23 23:16:43 +0800
commitfa31b585a779625eb70954b37aac7bb7df4a5518 (patch)
tree6d35b0ea1b95bae2a8e4b9ca2bc7f76dacaae3a3
parent872ddbd0ce9e645a079e1bef02dc2d3424ad4879 (diff)
Add armclang version judgement, and according to the results of the selection of different assembler
-rw-r--r--xmake/modules/detect/sdks/find_mdk.lua2
-rw-r--r--xmake/toolchains/armclang/xmake.lua25
2 files changed, 21 insertions, 6 deletions
diff --git a/xmake/modules/detect/sdks/find_mdk.lua b/xmake/modules/detect/sdks/find_mdk.lua
index a2af360f1..231b3cf4d 100644
--- a/xmake/modules/detect/sdks/find_mdk.lua
+++ b/xmake/modules/detect/sdks/find_mdk.lua
@@ -73,6 +73,8 @@ function _find_mdk(sdkdir)
-- armclang sdk directory
local sdkdir_armclang = path.join(sdkdir, "armclang")
if os.isdir(sdkdir_armclang) and os.isfile(path.join(sdkdir_armclang, "bin", "armclang.exe")) then
+ local sdk_armclang_ver = os.iorun(path.join(sdkdir_armclang, "bin", "armclang.exe").." --version_number")
+ result.sdk_armclang_vernum = tonumber(sdk_armclang_ver)
result.sdkdir_armclang = sdkdir_armclang
end
return result
diff --git a/xmake/toolchains/armclang/xmake.lua b/xmake/toolchains/armclang/xmake.lua
index ee63cc660..76fac3b53 100644
--- a/xmake/toolchains/armclang/xmake.lua
+++ b/xmake/toolchains/armclang/xmake.lua
@@ -29,7 +29,7 @@ toolchain("armclang")
set_toolset("cxx", "armclang")
set_toolset("ld", "armlink")
set_toolset("ar", "armar")
- set_toolset("as", "armasm")
+ -- different assembler choices for different versions of armclang
on_check(function (toolchain)
import("lib.detect.find_tool")
@@ -56,11 +56,24 @@ toolchain("armclang")
arch_cpu_ld = arch_cpu:replace("cortex-a", "Cortex-A", {plain = true})
arch_target = "aarch64-arm-none-eabi"
end
- toolchain:add("cxflags", "-target=" .. arch_target)
- toolchain:add("cxflags", "-mcpu=" .. arch_cpu)
- toolchain:add("asflags", "-target=" .. arch_target)
- toolchain:add("asflags", "--cpu=" .. arch_cpu)
- toolchain:add("ldflags", "--cpu " .. arch_cpu_ld)
+
+ import("detect.sdks.find_mdk")
+ local mdk = find_mdk()
+ if mdk.sdk_armclang_vernum > 6140000 then
+ toolchain:set("toolset", "as", "armclang")
+ toolchain:add("cxflags", "--target=" .. arch_target)
+ toolchain:add("cxflags", "-mcpu=" .. arch_cpu)
+ toolchain:add("asflags", "--target=" .. arch_target)
+ toolchain:add("asflags", "-mcpu=" .. arch_cpu)
+ toolchain:add("ldflags", "--cpu " .. arch_cpu_ld)
+ else
+ toolchain:set("toolset", "as", "armasm")
+ toolchain:add("cxflags", "--target=" .. arch_target)
+ toolchain:add("cxflags", "-mcpu=" .. arch_cpu)
+ toolchain:add("asflags", "-target=" .. arch_target)
+ toolchain:add("asflags", "--cpu=" .. arch_cpu)
+ toolchain:add("ldflags", "--cpu " .. arch_cpu_ld)
+ end
end
end)