From c0576c2fc972a17797ac9fe98e5e6deb00ba822a Mon Sep 17 00:00:00 2001 From: zmmfly Date: Sun, 9 Jan 2022 15:03:31 +0800 Subject: add Arch switcher, and add adaptation for -mcpu and --cpu difference. --- xmake/toolchains/armclang/xmake.lua | 47 +++++++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/xmake/toolchains/armclang/xmake.lua b/xmake/toolchains/armclang/xmake.lua index 46f22a2ba..f72410389 100644 --- a/xmake/toolchains/armclang/xmake.lua +++ b/xmake/toolchains/armclang/xmake.lua @@ -43,12 +43,45 @@ toolchain("armclang") end) on_load(function (toolchain) - local arch = toolchain:arch() - if arch then - toolchain:add("cxflags", "-target=arm-arm-none-eabi") - toolchain:add("cxflags", "-mcpu=" .. arch:lower()) - toolchain:add("asflags", "-target=arm-arm-none-eabi") - toolchain:add("asflags", "-mcpu=" .. arch:lower()) - toolchain:add("ldflags", "--cpu " .. arch) + -- replace function + -- this function from https://blog.csdn.net/gouki04/article/details/88559872 + string.replace = function(s, pattern, repl) + local i,j = string.find(s, pattern, 1, true) + if i and j then + local ret = {} + local start = 1 + while i and j do + table.insert(ret, string.sub(s, start, i-1)) + table.insert(ret, repl) + start = j + 1 + i,j = string.find(s, pattern, start , true ) + end + table.insert(ret, string.sub(s, start)) + return table.concat(ret) + end + return s + end + + local arch = toolchain:arch() + local arch_lower = arch:lower() + local arch_replace = string.replace(arch_lower, "plus", "+") + local arch_target = "" + + -- convert for ldflag + if arch_lower:startswith("cortex-m") then + arch_replace = string.replace(arch_replace, "cortex-m", "Cortex-M") + arch_target = "arm-arm-none-eabi" + end + if arch_lower:startswith("cortex-a") then + arch_replace = string.replace(arch_replace, "cortex-a", "Cortex-A") + arch_target = "aarch64-arm-none-eabi" + end + + if arch_lower then + toolchain:add("cxflags", "-target=" .. arch_target) + toolchain:add("cxflags", "-mcpu=" .. arch_lower) + toolchain:add("asflags", "-target=" .. arch_target) + toolchain:add("asflags", "-mcpu=" .. arch_lower) + toolchain:add("ldflags", "--cpu " .. arch_replace) end end) -- cgit v1.3.1 From 0702f048e67ce16f83c9dd2540185bb9bd34a525 Mon Sep 17 00:00:00 2001 From: zmmfly Date: Sun, 9 Jan 2022 15:14:07 +0800 Subject: armlink not need replace 'plus' to '+' --- xmake/toolchains/armclang/xmake.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xmake/toolchains/armclang/xmake.lua b/xmake/toolchains/armclang/xmake.lua index f72410389..d78423849 100644 --- a/xmake/toolchains/armclang/xmake.lua +++ b/xmake/toolchains/armclang/xmake.lua @@ -64,16 +64,16 @@ toolchain("armclang") local arch = toolchain:arch() local arch_lower = arch:lower() - local arch_replace = string.replace(arch_lower, "plus", "+") + local arch_replace = "" local arch_target = "" -- convert for ldflag if arch_lower:startswith("cortex-m") then - arch_replace = string.replace(arch_replace, "cortex-m", "Cortex-M") + arch_replace = string.replace(arch_lower, "cortex-m", "Cortex-M") arch_target = "arm-arm-none-eabi" end if arch_lower:startswith("cortex-a") then - arch_replace = string.replace(arch_replace, "cortex-a", "Cortex-A") + arch_replace = string.replace(arch_lower, "cortex-a", "Cortex-A") arch_target = "aarch64-arm-none-eabi" end -- cgit v1.3.1 From c432697422a4177b755cf5c1396251ec0cd43d87 Mon Sep 17 00:00:00 2001 From: zmmfly Date: Sun, 9 Jan 2022 15:36:53 +0800 Subject: style sync. --- xmake/toolchains/armclang/xmake.lua | 29 +++++------------------------ 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/xmake/toolchains/armclang/xmake.lua b/xmake/toolchains/armclang/xmake.lua index d78423849..f35f9fbfb 100644 --- a/xmake/toolchains/armclang/xmake.lua +++ b/xmake/toolchains/armclang/xmake.lua @@ -43,25 +43,6 @@ toolchain("armclang") end) on_load(function (toolchain) - -- replace function - -- this function from https://blog.csdn.net/gouki04/article/details/88559872 - string.replace = function(s, pattern, repl) - local i,j = string.find(s, pattern, 1, true) - if i and j then - local ret = {} - local start = 1 - while i and j do - table.insert(ret, string.sub(s, start, i-1)) - table.insert(ret, repl) - start = j + 1 - i,j = string.find(s, pattern, start , true ) - end - table.insert(ret, string.sub(s, start)) - return table.concat(ret) - end - return s - end - local arch = toolchain:arch() local arch_lower = arch:lower() local arch_replace = "" @@ -69,19 +50,19 @@ toolchain("armclang") -- convert for ldflag if arch_lower:startswith("cortex-m") then - arch_replace = string.replace(arch_lower, "cortex-m", "Cortex-M") + arch_replace = arch_lower:replace("cortex-m", "Cortex-M", {plain=true}) arch_target = "arm-arm-none-eabi" end if arch_lower:startswith("cortex-a") then - arch_replace = string.replace(arch_lower, "cortex-a", "Cortex-A") + arch_replace = arch_lower:replace("cortex-a", "Cortex-A", {plain=true}) arch_target = "aarch64-arm-none-eabi" end if arch_lower then toolchain:add("cxflags", "-target=" .. arch_target) - toolchain:add("cxflags", "-mcpu=" .. arch_lower) + toolchain:add("cxflags", "-mcpu=" .. arch_lower) toolchain:add("asflags", "-target=" .. arch_target) - toolchain:add("asflags", "-mcpu=" .. arch_lower) - toolchain:add("ldflags", "--cpu " .. arch_replace) + toolchain:add("asflags", "-mcpu=" .. arch_lower) + toolchain:add("ldflags", "--cpu " .. arch_replace) end end) -- cgit v1.3.1 From 2cc2da4c49c4a6b6649a316b60865dab889e7f76 Mon Sep 17 00:00:00 2001 From: ruki Date: Sun, 9 Jan 2022 21:39:22 +0800 Subject: Update xmake.lua --- xmake/toolchains/armclang/xmake.lua | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/xmake/toolchains/armclang/xmake.lua b/xmake/toolchains/armclang/xmake.lua index f35f9fbfb..dc8c1c696 100644 --- a/xmake/toolchains/armclang/xmake.lua +++ b/xmake/toolchains/armclang/xmake.lua @@ -43,26 +43,24 @@ toolchain("armclang") end) on_load(function (toolchain) - local arch = toolchain:arch() - local arch_lower = arch:lower() - local arch_replace = "" - local arch_target = "" - - -- convert for ldflag - if arch_lower:startswith("cortex-m") then - arch_replace = arch_lower:replace("cortex-m", "Cortex-M", {plain=true}) - arch_target = "arm-arm-none-eabi" - end - if arch_lower:startswith("cortex-a") then - arch_replace = arch_lower:replace("cortex-a", "Cortex-A", {plain=true}) - arch_target = "aarch64-arm-none-eabi" - end - - if arch_lower then + local arch = toolchain:arch() + if arch then + local arch_cpu = arch:lower() + local arch_cpu_ld = "" + local arch_target = "" + if arch_cpu:startswith("cortex-m") then + arch_cpu_ld = arch_cpu:replace("cortex-m", "Cortex-M", {plain = true}) + arch_target = "arm-arm-none-eabi" + end + if arch_cpu:startswith("cortex-a") then + 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_lower) + toolchain:add("cxflags", "-mcpu=" .. arch_cpu) toolchain:add("asflags", "-target=" .. arch_target) - toolchain:add("asflags", "-mcpu=" .. arch_lower) - toolchain:add("ldflags", "--cpu " .. arch_replace) + toolchain:add("asflags", "-mcpu=" .. arch_cpu) + toolchain:add("ldflags", "--cpu " .. arch_cpu_ld) end end) + -- cgit v1.3.1