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 |
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 --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
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(-)