diff options
| author | cofecofe <[email protected]> | 2024-06-23 23:16:43 +0800 |
|---|---|---|
| committer | cofecofe <[email protected]> | 2024-06-23 23:16:43 +0800 |
| commit | fa31b585a779625eb70954b37aac7bb7df4a5518 (patch) | |
| tree | 6d35b0ea1b95bae2a8e4b9ca2bc7f76dacaae3a3 | |
| parent | 872ddbd0ce9e645a079e1bef02dc2d3424ad4879 (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.lua | 2 | ||||
| -rw-r--r-- | xmake/toolchains/armclang/xmake.lua | 25 |
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) |
