From fa31b585a779625eb70954b37aac7bb7df4a5518 Mon Sep 17 00:00:00 2001 From: cofecofe Date: Sun, 23 Jun 2024 23:16:43 +0800 Subject: Add armclang version judgement, and according to the results of the selection of different assembler --- xmake/modules/detect/sdks/find_mdk.lua | 2 ++ 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) -- cgit v1.3.1 From 325cc705e90699ae827bdcb0f48c2e596900b86c Mon Sep 17 00:00:00 2001 From: cofecofe Date: Mon, 24 Jun 2024 15:31:54 +0800 Subject: change different module to get compiler version. --- xmake/modules/detect/sdks/find_mdk.lua | 2 -- xmake/modules/detect/tools/find_armclang.lua | 4 +++- xmake/toolchains/armclang/xmake.lua | 7 ++++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/xmake/modules/detect/sdks/find_mdk.lua b/xmake/modules/detect/sdks/find_mdk.lua index 231b3cf4d..a2af360f1 100644 --- a/xmake/modules/detect/sdks/find_mdk.lua +++ b/xmake/modules/detect/sdks/find_mdk.lua @@ -73,8 +73,6 @@ 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/modules/detect/tools/find_armclang.lua b/xmake/modules/detect/tools/find_armclang.lua index ed6b0bbfe..6232138c9 100644 --- a/xmake/modules/detect/tools/find_armclang.lua +++ b/xmake/modules/detect/tools/find_armclang.lua @@ -39,7 +39,9 @@ import("detect.sdks.find_mdk") function main(opt) -- init options - opt = opt or {} + opt = opt or {} + opt.command = opt.command or "--version" + opt.parse = opt.parse or function (output) return output:match("Arm Compiler for Embedded (%d+%.?%d+%.?%d+)%s") end -- find program local program = find_program(opt.program or "armclang.exe", opt) diff --git a/xmake/toolchains/armclang/xmake.lua b/xmake/toolchains/armclang/xmake.lua index 76fac3b53..3fa8885d4 100644 --- a/xmake/toolchains/armclang/xmake.lua +++ b/xmake/toolchains/armclang/xmake.lua @@ -57,9 +57,10 @@ toolchain("armclang") arch_target = "aarch64-arm-none-eabi" end - import("detect.sdks.find_mdk") - local mdk = find_mdk() - if mdk.sdk_armclang_vernum > 6140000 then + import("lib.detect.find_tool") + import("core.base.semver") + local armclang = find_tool("armclang", {version = true}) + if semver.compare(armclang.version, "6.13")>0 then toolchain:set("toolset", "as", "armclang") toolchain:add("cxflags", "--target=" .. arch_target) toolchain:add("cxflags", "-mcpu=" .. arch_cpu) -- cgit v1.3.1 From 86b549d7ec56de8fcc19a3ce6f8fbcbf6661dc8b Mon Sep 17 00:00:00 2001 From: cofecofe Date: Mon, 24 Jun 2024 19:29:05 +0800 Subject: change the way to load toolset and add flags --- xmake/modules/detect/tools/find_armclang.lua | 1 - xmake/toolchains/armclang/xmake.lua | 36 +++++++++++++--------------- 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/xmake/modules/detect/tools/find_armclang.lua b/xmake/modules/detect/tools/find_armclang.lua index 6232138c9..0b33ac6fc 100644 --- a/xmake/modules/detect/tools/find_armclang.lua +++ b/xmake/modules/detect/tools/find_armclang.lua @@ -40,7 +40,6 @@ function main(opt) -- init options opt = opt or {} - opt.command = opt.command or "--version" opt.parse = opt.parse or function (output) return output:match("Arm Compiler for Embedded (%d+%.?%d+%.?%d+)%s") end -- find program diff --git a/xmake/toolchains/armclang/xmake.lua b/xmake/toolchains/armclang/xmake.lua index 3fa8885d4..def28bd91 100644 --- a/xmake/toolchains/armclang/xmake.lua +++ b/xmake/toolchains/armclang/xmake.lua @@ -32,11 +32,20 @@ toolchain("armclang") -- different assembler choices for different versions of armclang on_check(function (toolchain) + import("core.base.semver") import("lib.detect.find_tool") import("detect.sdks.find_mdk") local mdk = find_mdk() - if mdk and mdk.sdkdir_armclang and find_tool("armclang") then + local armclang = find_tool("armclang", {version = true, force = true, paths = toolchain:bindir()}) + if mdk and mdk.sdkdir_armclang then toolchain:config_set("sdkdir", mdk.sdkdir_armclang) + if armclang and semver.compare(armclang.version, "6.13")>0 then + toolchain:config_set("toolset.as", "armclang") + toolchain:config_set("asflags.cpu", "-mcpu=") + else + toolchain:config_set("toolset.as", "armasm") + toolchain:config_set("asflags.cpu", "--cpu=") + end toolchain:configs_save() return true end @@ -56,25 +65,12 @@ toolchain("armclang") arch_cpu_ld = arch_cpu:replace("cortex-a", "Cortex-A", {plain = true}) arch_target = "aarch64-arm-none-eabi" end - - import("lib.detect.find_tool") - import("core.base.semver") - local armclang = find_tool("armclang", {version = true}) - if semver.compare(armclang.version, "6.13")>0 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 + toolchain:set("toolset", "as", toolchain:config("toolset.as")) + toolchain:add("cxflags", "--target=" .. arch_target) + toolchain:add("cxflags", "-mcpu=" .. arch_cpu) + toolchain:add("asflags", "--target=" .. arch_target) + toolchain:add("asflags", toolchain:config("asflags.cpu") .. arch_cpu) + toolchain:add("ldflags", "--cpu " .. arch_cpu_ld) end end) -- cgit v1.3.1 From cf98da127fec9dcf204b72ac38ebbb0bb6b29a30 Mon Sep 17 00:00:00 2001 From: ruki Date: Mon, 24 Jun 2024 22:31:53 +0800 Subject: Update xmake.lua --- xmake/toolchains/armclang/xmake.lua | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/xmake/toolchains/armclang/xmake.lua b/xmake/toolchains/armclang/xmake.lua index def28bd91..bd3bd4b60 100644 --- a/xmake/toolchains/armclang/xmake.lua +++ b/xmake/toolchains/armclang/xmake.lua @@ -29,22 +29,20 @@ toolchain("armclang") set_toolset("cxx", "armclang") set_toolset("ld", "armlink") set_toolset("ar", "armar") - -- different assembler choices for different versions of armclang on_check(function (toolchain) import("core.base.semver") import("lib.detect.find_tool") import("detect.sdks.find_mdk") local mdk = find_mdk() - local armclang = find_tool("armclang", {version = true, force = true, paths = toolchain:bindir()}) if mdk and mdk.sdkdir_armclang then toolchain:config_set("sdkdir", mdk.sdkdir_armclang) - if armclang and semver.compare(armclang.version, "6.13")>0 then - toolchain:config_set("toolset.as", "armclang") - toolchain:config_set("asflags.cpu", "-mcpu=") + -- different assembler choices for different versions of armclang + local armclang = find_tool("armclang", {version = true, force = true, paths = path.join(mdk.sdkdir_armclang, "bin")}) + if armclang and semver.compare(armclang.version, "6.13") > 0 then + toolchain:config_set("toolset_as", "armclang") else - toolchain:config_set("toolset.as", "armasm") - toolchain:config_set("asflags.cpu", "--cpu=") + toolchain:config_set("toolset_as", "armasm") end toolchain:configs_save() return true @@ -65,11 +63,12 @@ toolchain("armclang") arch_cpu_ld = arch_cpu:replace("cortex-a", "Cortex-A", {plain = true}) arch_target = "aarch64-arm-none-eabi" end - toolchain:set("toolset", "as", toolchain:config("toolset.as")) + local as = toolchain:config("toolset_as") + toolchain:set("toolset", "as", as) toolchain:add("cxflags", "--target=" .. arch_target) toolchain:add("cxflags", "-mcpu=" .. arch_cpu) toolchain:add("asflags", "--target=" .. arch_target) - toolchain:add("asflags", toolchain:config("asflags.cpu") .. arch_cpu) + toolchain:add("asflags", (as == "armclang" and "-mcpu=" or "--cpu=") .. arch_cpu) toolchain:add("ldflags", "--cpu " .. arch_cpu_ld) end end) -- cgit v1.3.1