diff mbox series

[v2] tunes: set valid clang tune for big.LITTLE Arm SoCs

Message ID 20250716184002.2334552-1-skandigraun@gmail.com
State New
Headers show
Series [v2] tunes: set valid clang tune for big.LITTLE Arm SoCs | expand

Commit Message

Gyorgy Sarvari July 16, 2025, 6:40 p.m. UTC
clang doesn't have Arm big.LITTLE specific tune options - when such an option is used,
the compilation fails with an error like this:

aarch64-poky-linux-clang: error: unsupported argument 'cortex-a72.cortex-a53+crc+crypto' to option '-mcpu='

To avoid this, in case a big.LITTLE SoC is the target and the toolchain is clang, select
the tune corresponding to the LITTLE core.

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
---

v1: https://lists.openembedded.org/g/openembedded-core/message/220467
v2: Instead of manipulating these arguments in one place, in clang.bbclass,
    make these changes in the affected machine configs.

 .../include/arm/armv8-2a/tune-cortexa75-cortexa55.inc       | 6 +++++-
 .../include/arm/armv8-2a/tune-cortexa76-cortexa55.inc       | 6 +++++-
 .../machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc | 6 +++++-
 .../machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc | 6 +++++-
 .../machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc | 6 +++++-
 .../machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc | 6 +++++-
 6 files changed, 30 insertions(+), 6 deletions(-)

Comments

Khem Raj July 17, 2025, 1:41 a.m. UTC | #1
On Wed, Jul 16, 2025 at 11:40 AM Gyorgy Sarvari via
lists.openembedded.org <skandigraun=gmail.com@lists.openembedded.org>
wrote:
>
> clang doesn't have Arm big.LITTLE specific tune options - when such an option is used,
> the compilation fails with an error like this:
>
> aarch64-poky-linux-clang: error: unsupported argument 'cortex-a72.cortex-a53+crc+crypto' to option '-mcpu='
>
> To avoid this, in case a big.LITTLE SoC is the target and the toolchain is clang, select
> the tune corresponding to the LITTLE core.
>

Looks good to me.

> Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
> ---
>
> v1: https://lists.openembedded.org/g/openembedded-core/message/220467
> v2: Instead of manipulating these arguments in one place, in clang.bbclass,
>     make these changes in the affected machine configs.
>
>  .../include/arm/armv8-2a/tune-cortexa75-cortexa55.inc       | 6 +++++-
>  .../include/arm/armv8-2a/tune-cortexa76-cortexa55.inc       | 6 +++++-
>  .../machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc | 6 +++++-
>  .../machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc | 6 +++++-
>  .../machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc | 6 +++++-
>  .../machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc | 6 +++++-
>  6 files changed, 30 insertions(+), 6 deletions(-)
>
> diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc
> index e18b2cb6e0..6b9b541f9a 100644
> --- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc
> +++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc
> @@ -5,7 +5,11 @@ DEFAULTTUNE                                        ?= "cortexa75-cortexa55"
>
>  TUNEVALID[cortexa75-cortexa55] = "Enable big.LITTLE Cortex-A75.Cortex-A55 specific processor optimizations"
>  MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa75-cortexa55", "cortexa75-cortexa55:", "", d)}"
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa75-cortexa55", " -mcpu=cortex-a75.cortex-a55", "", d)}"
> +
> +CPU_TUNE_ARG = "cortex-a75.cortex-a55"
> +# clang doesn't support big.LITTLE tunes, select the LITTLE tune
> +CPU_TUNE_ARG:toolchain-clang = "cortex-a55"
> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa75-cortexa55", " -mcpu=${CPU_TUNE_ARG}", "", d)}"
>
>  require conf/machine/include/arm/arch-armv8-2a.inc
>
> diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
> index 7daf9d91a8..8195782cd9 100644
> --- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
> +++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
> @@ -5,7 +5,11 @@ DEFAULTTUNE                                        ?= "cortexa76-cortexa55"
>
>  TUNEVALID[cortexa76-cortexa55] = "Enable big.LITTLE Cortex-A76.Cortex-A55 specific processor optimizations"
>  MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa76-cortexa55", "cortexa76-cortexa55:", "", d)}"
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa76-cortexa55", " -mcpu=cortex-a76.cortex-a55", "", d)}"
> +
> +CPU_TUNE_ARG = "cortex-a76.cortex-a55"
> +# clang doesn't support big.LITTLE tunes, select the LITTLE tune
> +CPU_TUNE_ARG:toolchain-clang = "cortex-a55"
> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa76-cortexa55", " -mcpu=${CPU_TUNE_ARG}", "", d)}"
>
>  require conf/machine/include/arm/arch-armv8-2a.inc
>
> diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc
> index 052d1173c9..ee86c1c84b 100644
> --- a/meta/conf/machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc
> +++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc
> @@ -1,7 +1,11 @@
>  DEFAULTTUNE ?= "cortexa57-cortexa53"
>
>  TUNEVALID[cortexa57-cortexa53] = "Enable big.LITTLE Cortex-A57.Cortex-A53 specific processor optimizations"
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa57-cortexa53", " -mcpu=cortex-a57.cortex-a53", "", d)}"
> +
> +CPU_TUNE_ARG = "cortex-a57.cortex-a53"
> +# clang doesn't support big.LITTLE tunes, select the LITTLE tune
> +CPU_TUNE_ARG:toolchain-clang = "cortex-a53"
> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa57-cortexa53", " -mcpu=${CPU_TUNE_ARG}", "", d)}"
>  MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa57-cortexa53", "cortexa57-cortexa53:", "", d)}"
>
>  require conf/machine/include/arm/arch-armv8a.inc
> diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc
> index ff188aec5f..ba92161b9f 100644
> --- a/meta/conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc
> +++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc
> @@ -1,7 +1,11 @@
>  DEFAULTTUNE ?= "cortexa72-cortexa53"
>
>  TUNEVALID[cortexa72-cortexa53] = "Enable big.LITTLE Cortex-A72.Cortex-A53 specific processor optimizations"
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa72-cortexa53", " -mcpu=cortex-a72.cortex-a53", "", d)}"
> +
> +CPU_TUNE_ARG = "cortex-a72.cortex-a53"
> +# clang doesn't support big.LITTLE tunes, select the LITTLE tune
> +CPU_TUNE_ARG:toolchain-clang = "cortex-a53"
> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa72-cortexa53", " -mcpu=${CPU_TUNE_ARG}", "", d)}"
>  MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa72-cortexa53", "cortexa72-cortexa53:", "", d)}"
>
>  require conf/machine/include/arm/arch-armv8a.inc
> diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc
> index 4f4f25f511..370882f299 100644
> --- a/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc
> +++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc
> @@ -5,7 +5,11 @@ DEFAULTTUNE ?= "cortexa73-cortexa35"
>
>  TUNEVALID[cortexa73-cortexa35] = "Enable big.LITTLE Cortex-A73.Cortex-A35 specific processor optimizations"
>  MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa35", "cortexa73-cortexa35:", "", d)}"
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa35", " -mcpu=cortex-a73.cortex-a35", "", d)}"
> +
> +CPU_TUNE_ARG = "cortex-a73.cortex-a35"
> +# clang doesn't support big.LITTLE tunes, select the LITTLE tune
> +CPU_TUNE_ARG:toolchain-clang = "cortex-a35"
> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa35", " -mcpu=${CPU_TUNE_ARG}", "", d)}"
>
>  require conf/machine/include/arm/arch-armv8a.inc
>
> diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc
> index 1d152ed83b..388df5fb66 100644
> --- a/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc
> +++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc
> @@ -2,7 +2,11 @@ DEFAULTTUNE ?= "cortexa73-cortexa53"
>
>  TUNEVALID[cortexa73-cortexa53] = "Enable big.LITTLE Cortex-A73.Cortex-A53 specific processor optimizations"
>  MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa53", "cortexa73-cortexa53:", "", d)}"
> -TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa53", " -mcpu=cortex-a73.cortex-a53", "", d)}"
> +
> +CPU_TUNE_ARG = "cortex-a73.cortex-a53"
> +# clang doesn't support big.LITTLE tunes, select the LITTLE tune
> +CPU_TUNE_ARG:toolchain-clang = "cortex-a53"
> +TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa53", " -mcpu=${CPU_TUNE_ARG}", "", d)}"
>
>  require conf/machine/include/arm/arch-armv8a.inc
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#220473): https://lists.openembedded.org/g/openembedded-core/message/220473
> Mute This Topic: https://lists.openembedded.org/mt/114190363/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
diff mbox series

Patch

diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc
index e18b2cb6e0..6b9b541f9a 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc
@@ -5,7 +5,11 @@  DEFAULTTUNE                                        ?= "cortexa75-cortexa55"
 
 TUNEVALID[cortexa75-cortexa55] = "Enable big.LITTLE Cortex-A75.Cortex-A55 specific processor optimizations"
 MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa75-cortexa55", "cortexa75-cortexa55:", "", d)}"
-TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa75-cortexa55", " -mcpu=cortex-a75.cortex-a55", "", d)}"
+
+CPU_TUNE_ARG = "cortex-a75.cortex-a55"
+# clang doesn't support big.LITTLE tunes, select the LITTLE tune
+CPU_TUNE_ARG:toolchain-clang = "cortex-a55"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa75-cortexa55", " -mcpu=${CPU_TUNE_ARG}", "", d)}"
 
 require conf/machine/include/arm/arch-armv8-2a.inc
 
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
index 7daf9d91a8..8195782cd9 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
@@ -5,7 +5,11 @@  DEFAULTTUNE                                        ?= "cortexa76-cortexa55"
 
 TUNEVALID[cortexa76-cortexa55] = "Enable big.LITTLE Cortex-A76.Cortex-A55 specific processor optimizations"
 MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa76-cortexa55", "cortexa76-cortexa55:", "", d)}"
-TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa76-cortexa55", " -mcpu=cortex-a76.cortex-a55", "", d)}"
+
+CPU_TUNE_ARG = "cortex-a76.cortex-a55"
+# clang doesn't support big.LITTLE tunes, select the LITTLE tune
+CPU_TUNE_ARG:toolchain-clang = "cortex-a55"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa76-cortexa55", " -mcpu=${CPU_TUNE_ARG}", "", d)}"
 
 require conf/machine/include/arm/arch-armv8-2a.inc
 
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc
index 052d1173c9..ee86c1c84b 100644
--- a/meta/conf/machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc
@@ -1,7 +1,11 @@ 
 DEFAULTTUNE ?= "cortexa57-cortexa53"
 
 TUNEVALID[cortexa57-cortexa53] = "Enable big.LITTLE Cortex-A57.Cortex-A53 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa57-cortexa53", " -mcpu=cortex-a57.cortex-a53", "", d)}"
+
+CPU_TUNE_ARG = "cortex-a57.cortex-a53"
+# clang doesn't support big.LITTLE tunes, select the LITTLE tune
+CPU_TUNE_ARG:toolchain-clang = "cortex-a53"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa57-cortexa53", " -mcpu=${CPU_TUNE_ARG}", "", d)}"
 MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa57-cortexa53", "cortexa57-cortexa53:", "", d)}"
 
 require conf/machine/include/arm/arch-armv8a.inc
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc
index ff188aec5f..ba92161b9f 100644
--- a/meta/conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc
@@ -1,7 +1,11 @@ 
 DEFAULTTUNE ?= "cortexa72-cortexa53"
 
 TUNEVALID[cortexa72-cortexa53] = "Enable big.LITTLE Cortex-A72.Cortex-A53 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa72-cortexa53", " -mcpu=cortex-a72.cortex-a53", "", d)}"
+
+CPU_TUNE_ARG = "cortex-a72.cortex-a53"
+# clang doesn't support big.LITTLE tunes, select the LITTLE tune
+CPU_TUNE_ARG:toolchain-clang = "cortex-a53"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa72-cortexa53", " -mcpu=${CPU_TUNE_ARG}", "", d)}"
 MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa72-cortexa53", "cortexa72-cortexa53:", "", d)}"
 
 require conf/machine/include/arm/arch-armv8a.inc
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc
index 4f4f25f511..370882f299 100644
--- a/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc
@@ -5,7 +5,11 @@  DEFAULTTUNE ?= "cortexa73-cortexa35"
 
 TUNEVALID[cortexa73-cortexa35] = "Enable big.LITTLE Cortex-A73.Cortex-A35 specific processor optimizations"
 MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa35", "cortexa73-cortexa35:", "", d)}"
-TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa35", " -mcpu=cortex-a73.cortex-a35", "", d)}"
+
+CPU_TUNE_ARG = "cortex-a73.cortex-a35"
+# clang doesn't support big.LITTLE tunes, select the LITTLE tune
+CPU_TUNE_ARG:toolchain-clang = "cortex-a35"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa35", " -mcpu=${CPU_TUNE_ARG}", "", d)}"
 
 require conf/machine/include/arm/arch-armv8a.inc
 
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc
index 1d152ed83b..388df5fb66 100644
--- a/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc
@@ -2,7 +2,11 @@  DEFAULTTUNE ?= "cortexa73-cortexa53"
 
 TUNEVALID[cortexa73-cortexa53] = "Enable big.LITTLE Cortex-A73.Cortex-A53 specific processor optimizations"
 MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa53", "cortexa73-cortexa53:", "", d)}"
-TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa53", " -mcpu=cortex-a73.cortex-a53", "", d)}"
+
+CPU_TUNE_ARG = "cortex-a73.cortex-a53"
+# clang doesn't support big.LITTLE tunes, select the LITTLE tune
+CPU_TUNE_ARG:toolchain-clang = "cortex-a53"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa53", " -mcpu=${CPU_TUNE_ARG}", "", d)}"
 
 require conf/machine/include/arm/arch-armv8a.inc