Skip to contentSkip to conversation

Removal of BR2_GCC_TARGET_TUNE and other arch/ updates

PATCH Superseded Thomas Petazzoni 4 participants 46 messages Oct 21, 2014 – Nov 6, 2014

lore
Share & tools
lore
#0 lore raw

v2 cover Removal of BR2_GCC_TARGET_TUNE and other arch/ updates

Hello,

As discussed during the Buildroot Developers meeting, this patch series implement a few changes to the handling of the BR2_GCC_TARGET_{ARCH,CPU,TUNE} options.

In sequence, this patch series:

- PATCH 1 introduces a number of ARM architecture blind options:
BR2_ARM_CPU_ARMV4, BR2_ARM_CPU_ARMV5, BR2_ARM_CPU_ARMV6, BR2_ARM_CPU_ARMV7A. These options will allow to simplify testing against an ARM architecture (instead of using each individual ARM core), and also allow to remove tests against BR2_GCC_TARGET_ARCH on ARM, since we later get rid of all values for this variable on ARM as part of a later patch in this series.

- PATCH 2 to 19 make use of those new blind options to replace a number of dependencies/conditions on individual ARM cores by dependencies/conditions on ARM architecture levels.

- PATCH 20 fixes the dhcpcd package as it uses the BR2_GCC_TARGET_ARCH value, which may not always exists on certain architectures.

- PATCH 21 and 22 remove the BR2_GCC_TARGET_ARCH values from the ARM architecture, since they are causing conflicts with the BR2_GCC_TARGET_CPU values. We now only specify the -mcpu value (through BR2_GCC_TARGET_CPU), and let gcc derive the corresponding ARM architecture. This fixes a long standing bug report where Buildroot would pass conflicting -march and -mcpu values for certain versions of gcc.

- PATCH 23 prepares ffmpeg for the removal of BR2_GCC_TARGET_TUNE by using BR2_GCC_TARGET_ARCH or BR2_GCC_TARGET_CPU instead.

- PATCH 24 to 27 modifies the architecture definitions to no longer use BR2_GCC_TARGET_TUNE, and instead use BR2_GCC_TARGET_CPU or BR2_GCC_TARGET_ARCH as appropriate.

- PATCH 28 to 30 finally get rid of BR2_GCC_TARGET_TUNE entirely since it is no longer used.

Changes since v1:

* Instead of having multiple BR2_ARM_CPU_ARMV{4,4T,5TE,etc.} per architecture level, use only one. All the follow-up patches have been fixed up following this.

* Add a patch to take into account the bug noticed by Arnout about VFP enabling in the ffmpeg package.

* Remove the two patches that have been merged.

* Add Reviewed-by tags from Yann on a certain number of patches, as he gave them on the list.

Note that I haven't done any modification of the Thumb / Thumb-2 handling suggested by Yann. This is orthogonal to this series, and can be done in a follow-up series.

Best regards,

Thomas

Thomas Petazzoni (30):
arch/arm: add blind options to know the ARM architecture
ffmpeg: use the new BR2_ARM_CPU_ARM* options
ffmpeg: fix ARM condition for --{enable,disable}-vfp
gst-ffmpeg: use the new BR2_ARM_CPU_ARM* options
gst-ffmpeg: allow usage of ARMv6 optimizations on ARMv7 platforms
gst1-libav: use the new BR2_ARM_CPU_ARM* options
gst1-libav: allow usage of ARMv6 optimizations on ARMv7 platforms
mplayer: use BR2_ARM_CPU_ARM* options
libplayer: use BR2_ARM_CPU_ARM* option
nettle: use the BR2_ARM_CPU_ARM* options
nodejs: use BR2_ARM_CPU_ARM* options
qt5: use the BR2_ARM_CPU_ARM* options
speex: use BR2_ARM_CPU_ARM* options
vo-aacenc: use the BR2_ARM_CPU_ARM* options
webkit: use BR2_ARM_CPU_ARM* options
valgrind: use the BR2_ARM_CPU_ARM* options
x264: use the BR2_ARM_CPU_ARMV7A option
libnspr: use the BR2_ARM_CPU_ARMV7A option
toolchain-external: use BR2_ARM_CPU_ARM* options
dhcpcd: do not pass --target option
arch/arm: do not distinguish revisions of ARM1136JF-S arch/arm: remove BR2_GCC_TARGET_ARCH definitions on ARM
ffmpeg: use arch and cpu instead of tune
arch/x86: get rid of BR2_GCC_TARGET_TUNE
arch/sparc: get rid of BR2_GCC_TARGET_TUNE arch/powerpc: get rid of BR2_GCC_TARGET_TUNE arch/m68k: get rid of BR2_GCC_TARGET_TUNE
gcc: do not use BR2_GCC_TARGET_TUNE anymore
toolchain-external: do not use BR2_GCC_TARGET_TUNE anymore
arch: remove the BR2_GCC_TARGET_TUNE option

 arch/Config.in                                     |  3 --
 arch/Config.in.arm                                 | 61 +++++++++++-----------
 arch/Config.in.m68k                                |  8 ---
 arch/Config.in.powerpc                             |  2 +-
 arch/Config.in.sparc                               |  4 +-
 arch/Config.in.x86                                 | 32 +-----------
 package/dhcpcd/dhcpcd.mk                           |  1 -
 package/ffmpeg/ffmpeg.mk                           | 13 +++--
 package/gcc/gcc.mk                                 |  3 --
 package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk         |  4 +-
 package/gstreamer1/gst1-libav/gst1-libav.mk        |  4 +-
 package/libnspr/libnspr.mk                         |  2 +-
 package/libplayer/Config.in                        |  3 +-
 package/mplayer/Config.in                          |  3 +-
 package/mplayer/mplayer.mk                         |  4 +-
 package/nettle/nettle.mk                           |  2 +-
 package/nodejs/Config.in                           |  4 +-
 package/qt5/Config.in                              |  2 +-
 package/speex/Config.in                            |  2 +-
 package/valgrind/Config.in                         |  7 ++-
 package/valgrind/valgrind.mk                       |  4 +-
 package/vo-aacenc/vo-aacenc.mk                     |  2 +-
 package/webkit/Config.in                           |  3 +-
 package/x264/x264.mk                               |  2 +-
 toolchain/toolchain-external/Config.in             | 14 +++--
 .../toolchain-external/ext-toolchain-wrapper.c     | 12 ++---
 toolchain/toolchain-external/toolchain-external.mk |  5 --
 27 files changed, 74 insertions(+), 132 deletions(-)
Signature · 1 line
2.0.0
#1 lore raw

PATCH v2 1/30 arch/arm: add blind options to know the ARM architecture

In preparation to the removal of BR2_GCC_TARGET_ARCH for ARM, this commit introduces a number of blind options for each ARM architecture, so that packages/toolchains that had dependencies using BR2_GCC_TARGET_ARCH can continue to express their dependencies. It can also be used to simplify package dependencies that were using the individual ARM core options.

---
 arch/Config.in.arm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
arch/Config.in.arm +30 -0
index 201ff1d..5441c8d 100644
@@ -37,6 +37,18 @@ config BR2_ARM_CPU_HAS_THUMB
 config BR2_ARM_CPU_HAS_THUMB2
 	bool
 
+config BR2_ARM_CPU_ARMV4
+	bool
+
+config BR2_ARM_CPU_ARMV5
+	bool
+
+config BR2_ARM_CPU_ARMV6
+	bool
+
+config BR2_ARM_CPU_ARMV7A
+	bool
+
 choice
 	prompt "Target Architecture Variant"
 	depends on BR2_arm || BR2_armeb
@@ -47,70 +59,88 @@ choice
 config BR2_arm920t
 	bool "arm920t"
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV4
 config BR2_arm922t
 	bool "arm922t"
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV4
 config BR2_arm926t
 	bool "arm926t"
 	select BR2_ARM_CPU_MAYBE_HAS_VFPV2
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV5
 config BR2_arm1136jf_s_r0
 	bool "arm1136jf_s rev0"
 	select BR2_ARM_CPU_HAS_VFPV2
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV6
 config BR2_arm1136jf_s_r1
 	bool "arm1136jf_s rev1"
 	select BR2_ARM_CPU_HAS_VFPV2
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV6
 config BR2_arm1176jz_s
 	bool "arm1176jz-s"
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV6
 config BR2_arm1176jzf_s
 	bool "arm1176jzf-s"
 	select BR2_ARM_CPU_HAS_VFPV2
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV6
 config BR2_cortex_a5
 	bool "cortex-A5"
 	select BR2_ARM_CPU_MAYBE_HAS_NEON
 	select BR2_ARM_CPU_MAYBE_HAS_VFPV4
 	select BR2_ARM_CPU_HAS_THUMB2
+	select BR2_ARM_CPU_ARMV7A
 config BR2_cortex_a7
 	bool "cortex-A7"
 	select BR2_ARM_CPU_HAS_NEON
 	select BR2_ARM_CPU_HAS_VFPV4
 	select BR2_ARM_CPU_HAS_THUMB2
+	select BR2_ARM_CPU_ARMV7A
 config BR2_cortex_a8
 	bool "cortex-A8"
 	select BR2_ARM_CPU_HAS_NEON
 	select BR2_ARM_CPU_HAS_VFPV3
 	select BR2_ARM_CPU_HAS_THUMB2
+	select BR2_ARM_CPU_ARMV7A
 config BR2_cortex_a9
 	bool "cortex-A9"
 	select BR2_ARM_CPU_MAYBE_HAS_NEON
 	select BR2_ARM_CPU_MAYBE_HAS_VFPV3
 	select BR2_ARM_CPU_HAS_THUMB2
+	select BR2_ARM_CPU_ARMV7A
 config BR2_cortex_a12
 	bool "cortex-A12"
 	select BR2_ARM_CPU_HAS_NEON
 	select BR2_ARM_CPU_HAS_VFPV4
 	select BR2_ARM_CPU_HAS_THUMB2
+	select BR2_ARM_CPU_ARMV7A
 config BR2_cortex_a15
 	bool "cortex-A15"
 	select BR2_ARM_CPU_HAS_NEON
 	select BR2_ARM_CPU_HAS_VFPV4
 	select BR2_ARM_CPU_HAS_THUMB2
+	select BR2_ARM_CPU_ARMV7A
 config BR2_fa526
 	bool "fa526/626"
+	select BR2_ARM_CPU_ARMV4
 config BR2_pj4
 	bool "pj4"
 	select BR2_ARM_CPU_HAS_VFPV3
+	select BR2_ARM_CPU_ARMV7A
 config BR2_strongarm
 	bool "strongarm sa110/sa1100"
+	select BR2_ARM_CPU_ARMV4
 config BR2_xscale
 	bool "xscale"
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV5
 config BR2_iwmmxt
 	bool "iwmmxt"
+	select BR2_ARM_CPU_ARMV5
 endchoice
 
 config BR2_arm1136jf_s
Signature · 1 line
2.0.0
#2 lore raw

PATCH v2 1/30 arch/arm: add blind options to know the ARM architecture

Thomas, All,

On 2014-10-21 22:26 +0200, Thomas Petazzoni spake thusly:

Quoted 21 lines

In preparation to the removal of BR2_GCC_TARGET_ARCH for ARM, this commit introduces a number of blind options for each ARM architecture, so that packages/toolchains that had dependencies using BR2_GCC_TARGET_ARCH can continue to express their dependencies. It can also be used to simplify package dependencies that were using the individual ARM core options.

---
 arch/Config.in.arm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
arch/Config.in.arm +1 -0
index 201ff1d..5441c8d 100644
@@ -37,6 +37,18 @@ config BR2_ARM_CPU_HAS_THUMB
 config BR2_ARM_CPU_HAS_THUMB2
 	bool
 
+config BR2_ARM_CPU_ARMV4

arch/Config.in.arm config BR2_ARM_CPU_HAS_THUMB · line 50

Quoted 10 lines
arch/Config.in.arm +10 -0
+	bool
+
+config BR2_ARM_CPU_ARMV5
+	bool
+
+config BR2_ARM_CPU_ARMV6
+	bool
+
+config BR2_ARM_CPU_ARMV7A
+	bool

I still believe we could go with ARMV7 only, since we only have CPUs of the A series for now.

When we add a new CPU of the M series, then we could go this route:

- add a new config option stating the CPU only has Thumb-2:

config BR2_ARM_CPU_HAS_THUMB2_ONLY
bool

or add another option:

config BR2_ARM_CPU_HAS_ARM
bool # 'y' is CPU has the ARM mode

- use it in packages that have an interest in them.

- select it from appropriate CPUs

But we can rename that option later, since it is a blind option, it will have no incidence on defconfig or .config files. So:

Regards,
Yann E. MORIN.

Quoted 99 lines
arch/Config.in.arm +18 -0
 choice
 	prompt "Target Architecture Variant"
 	depends on BR2_arm || BR2_armeb
@@ -47,70 +59,88 @@ choice
 config BR2_arm920t
 	bool "arm920t"
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV4
 config BR2_arm922t
 	bool "arm922t"
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV4
 config BR2_arm926t
 	bool "arm926t"
 	select BR2_ARM_CPU_MAYBE_HAS_VFPV2
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV5
 config BR2_arm1136jf_s_r0
 	bool "arm1136jf_s rev0"
 	select BR2_ARM_CPU_HAS_VFPV2
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV6
 config BR2_arm1136jf_s_r1
 	bool "arm1136jf_s rev1"
 	select BR2_ARM_CPU_HAS_VFPV2
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV6
 config BR2_arm1176jz_s
 	bool "arm1176jz-s"
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV6
 config BR2_arm1176jzf_s
 	bool "arm1176jzf-s"
 	select BR2_ARM_CPU_HAS_VFPV2
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV6
 config BR2_cortex_a5
 	bool "cortex-A5"
 	select BR2_ARM_CPU_MAYBE_HAS_NEON
 	select BR2_ARM_CPU_MAYBE_HAS_VFPV4
 	select BR2_ARM_CPU_HAS_THUMB2
+	select BR2_ARM_CPU_ARMV7A
 config BR2_cortex_a7
 	bool "cortex-A7"
 	select BR2_ARM_CPU_HAS_NEON
 	select BR2_ARM_CPU_HAS_VFPV4
 	select BR2_ARM_CPU_HAS_THUMB2
+	select BR2_ARM_CPU_ARMV7A
 config BR2_cortex_a8
 	bool "cortex-A8"
 	select BR2_ARM_CPU_HAS_NEON
 	select BR2_ARM_CPU_HAS_VFPV3
 	select BR2_ARM_CPU_HAS_THUMB2
+	select BR2_ARM_CPU_ARMV7A
 config BR2_cortex_a9
 	bool "cortex-A9"
 	select BR2_ARM_CPU_MAYBE_HAS_NEON
 	select BR2_ARM_CPU_MAYBE_HAS_VFPV3
 	select BR2_ARM_CPU_HAS_THUMB2
+	select BR2_ARM_CPU_ARMV7A
 config BR2_cortex_a12
 	bool "cortex-A12"
 	select BR2_ARM_CPU_HAS_NEON
 	select BR2_ARM_CPU_HAS_VFPV4
 	select BR2_ARM_CPU_HAS_THUMB2
+	select BR2_ARM_CPU_ARMV7A
 config BR2_cortex_a15
 	bool "cortex-A15"
 	select BR2_ARM_CPU_HAS_NEON
 	select BR2_ARM_CPU_HAS_VFPV4
 	select BR2_ARM_CPU_HAS_THUMB2
+	select BR2_ARM_CPU_ARMV7A
 config BR2_fa526
 	bool "fa526/626"
+	select BR2_ARM_CPU_ARMV4
 config BR2_pj4
 	bool "pj4"
 	select BR2_ARM_CPU_HAS_VFPV3
+	select BR2_ARM_CPU_ARMV7A
 config BR2_strongarm
 	bool "strongarm sa110/sa1100"
+	select BR2_ARM_CPU_ARMV4
 config BR2_xscale
 	bool "xscale"
 	select BR2_ARM_CPU_HAS_THUMB
+	select BR2_ARM_CPU_ARMV5
 config BR2_iwmmxt
 	bool "iwmmxt"
+	select BR2_ARM_CPU_ARMV5
 endchoice
 
 config BR2_arm1136jf_s
Signature · 6 lines
2.0.0

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#3 lore raw

PATCH v2 2/30 ffmpeg: use the new BR2_ARM_CPU_ARM* options

In reply to Thomas Petazzoni

Instead of using the Config.in options for each individual ARM core, use the newly introduced BR2_ARM_CPU_ARM* options, which exist per ARM architecture.

This commit is a blind conversion from the per-core options to the per-architecture. It has the benefit of enabling the ARMv6 optimizations on all ARMv7-A cores, not only A5, A8, A9 and A15. However, it doesn't fix the condition for --enable-vfp/--disable-vfp for ARMv6 cores that don't have a FPU, it is fixed in a follow-up commit.

---
 package/ffmpeg/ffmpeg.mk | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
package/ffmpeg/ffmpeg.mk +3 -3
index 21ec1c9..349bac9 100644
@@ -277,15 +277,15 @@ endif
 # Explicitly disable everything that doesn't match for ARM
 # FFMPEG "autodetects" by compiling an extended instruction via AS
 # This works on compilers that aren't built for generic by default
-ifeq ($(BR2_arm920t)$(BR2_arm922t)$(BR2_strongarm)$(BR2_fa526),y)
+ifeq ($(BR2_ARM_CPU_ARMV4),y)
 FFMPEG_CONF_OPTS += --disable-armv5te
 endif
-ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf_s)$(BR2_cortex_a5)$(BR2_cortex_a8)$(BR2_cortex_a9)$(BR2_cortex_a15),y)
+ifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y)
 FFMPEG_CONF_OPTS += --enable-armv6
 else
 FFMPEG_CONF_OPTS += --disable-armv6 --disable-armv6t2
 endif
-ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf_s)$(BR2_cortex_a5)$(BR2_cortex_a8)$(BR2_cortex_a9)$(BR2_cortex_a15),y)
+ifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y)
 FFMPEG_CONF_OPTS += --enable-vfp
 else
 FFMPEG_CONF_OPTS += --disable-vfp
Signature · 1 line
2.0.0
#4 lore raw

PATCH v2 2/30 ffmpeg: use the new BR2_ARM_CPU_ARM* options

Thomas, All,

On 2014-10-21 22:26 +0200, Thomas Petazzoni spake thusly:

Quoted 4 lines

Instead of using the Config.in options for each individual ARM core, use the newly introduced BR2_ARM_CPU_ARM* options, which exist per ARM architecture.

Quoted 8 lines

This commit is a blind conversion from the per-core options to the per-architecture. It has the benefit of enabling the ARMv6 optimizations on all ARMv7-A cores, not only A5, A8, A9 and A15. However, it doesn't fix the condition for --enable-vfp/--disable-vfp for ARMv6 cores that don't have a FPU, it is fixed in a follow-up commit.

Regards,
Yann E. MORIN.

Quoted 34 lines
---
 package/ffmpeg/ffmpeg.mk | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
package/ffmpeg/ffmpeg.mk +3 -3
index 21ec1c9..349bac9 100644
@@ -277,15 +277,15 @@ endif
 # Explicitly disable everything that doesn't match for ARM
 # FFMPEG "autodetects" by compiling an extended instruction via AS
 # This works on compilers that aren't built for generic by default
-ifeq ($(BR2_arm920t)$(BR2_arm922t)$(BR2_strongarm)$(BR2_fa526),y)
+ifeq ($(BR2_ARM_CPU_ARMV4),y)
 FFMPEG_CONF_OPTS += --disable-armv5te
 endif
-ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf_s)$(BR2_cortex_a5)$(BR2_cortex_a8)$(BR2_cortex_a9)$(BR2_cortex_a15),y)
+ifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y)
 FFMPEG_CONF_OPTS += --enable-armv6
 else
 FFMPEG_CONF_OPTS += --disable-armv6 --disable-armv6t2
 endif
-ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf_s)$(BR2_cortex_a5)$(BR2_cortex_a8)$(BR2_cortex_a9)$(BR2_cortex_a15),y)
+ifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y)
 FFMPEG_CONF_OPTS += --enable-vfp
 else
 FFMPEG_CONF_OPTS += --disable-vfp
Signature · 6 lines
2.0.0

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#5 lore raw

PATCH v2 3/30 ffmpeg: fix ARM condition for --{enable, disable}-vfp

In reply to Thomas Petazzoni

As noted by Arnout, not all ARMv6 have the VFP FPU, therefore instead of using a condition on ARMv6 or ARMv7-A, this commit changes to use a condition on BR2_ARM_CPU_HAS_VFPV2.

---
 package/ffmpeg/ffmpeg.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/ffmpeg/ffmpeg.mk +1 -1
index 349bac9..0990f18 100644
@@ -285,7 +285,7 @@ FFMPEG_CONF_OPTS += --enable-armv6
 else
 FFMPEG_CONF_OPTS += --disable-armv6 --disable-armv6t2
 endif
-ifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y)
+ifeq ($(BR2_ARM_CPU_HAS_VFPV2),y)
 FFMPEG_CONF_OPTS += --enable-vfp
 else
 FFMPEG_CONF_OPTS += --disable-vfp
Signature · 1 line
2.0.0
#6 lore raw

PATCH v2 3/30 ffmpeg: fix ARM condition for --{enable, disable}-vfp

Thomas, All,

On 2014-10-21 22:26 +0200, Thomas Petazzoni spake thusly:

Quoted 3 lines

As noted by Arnout, not all ARMv6 have the VFP FPU, therefore instead of using a condition on ARMv6 or ARMv7-A, this commit changes to use a condition on BR2_ARM_CPU_HAS_VFPV2.

Indeed, that seems sensible. :-]

Quoted 1 line

Regards,
Yann E. MORIN.

Quoted 24 lines
---
 package/ffmpeg/ffmpeg.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/ffmpeg/ffmpeg.mk +1 -1
index 349bac9..0990f18 100644
@@ -285,7 +285,7 @@ FFMPEG_CONF_OPTS += --enable-armv6
 else
 FFMPEG_CONF_OPTS += --disable-armv6 --disable-armv6t2
 endif
-ifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y)
+ifeq ($(BR2_ARM_CPU_HAS_VFPV2),y)
 FFMPEG_CONF_OPTS += --enable-vfp
 else
 FFMPEG_CONF_OPTS += --disable-vfp
Signature · 6 lines
2.0.0

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#7 lore raw

PATCH v2 4/30 gst-ffmpeg: use the new BR2_ARM_CPU_ARM* options

In reply to Thomas Petazzoni

Instead of using the Config.in options for each individual ARM core, use the newly introduced BR2_ARM_CPU_ARM* options, which exist per ARM architecture.

---
 package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk +2 -2
index b94fb0f..5e55363 100644
@@ -51,10 +51,10 @@ endif
 # Explicitly disable everything that doesn't match for ARM
 # FFMPEG "autodetects" by compiling an extended instruction via AS
 # This works on compilers that aren't built for generic by default
-ifeq ($(BR2_arm920t)$(BR2_arm922t)$(BR2_strongarm)$(BR2_fa526),y)
+ifeq ($(BR2_ARM_CPU_ARMV4),y)
 GST_FFMPEG_CONF_EXTRA_OPTS += --disable-armv5te
 endif
-ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf_s),y)
+ifeq ($(BR2_ARM_CPU_ARMV6),y)
 GST_FFMPEG_CONF_EXTRA_OPTS += --enable-armv6
 else
 GST_FFMPEG_CONF_EXTRA_OPTS += --disable-armv6 --disable-armv6t2
Signature · 1 line
2.0.0
#8 lore raw

PATCH v2 4/30 gst-ffmpeg: use the new BR2_ARM_CPU_ARM* options

Thomas, All,

On 2014-10-21 22:26 +0200, Thomas Petazzoni spake thusly:

Quoted 5 lines

Instead of using the Config.in options for each individual ARM core, use the newly introduced BR2_ARM_CPU_ARM* options, which exist per ARM architecture.

However, a side comment, see below...

Quoted 11 lines
---
 package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk +0 -0
index b94fb0f..5e55363 100644
@@ -51,10 +51,10 @@ endif
 # Explicitly disable everything that doesn't match for ARM
 # FFMPEG "autodetects" by compiling an extended instruction via AS

package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk endif · line 60

Quoted 10 lines
package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk +2 -2
 # This works on compilers that aren't built for generic by default
-ifeq ($(BR2_arm920t)$(BR2_arm922t)$(BR2_strongarm)$(BR2_fa526),y)
+ifeq ($(BR2_ARM_CPU_ARMV4),y)
 GST_FFMPEG_CONF_EXTRA_OPTS += --disable-armv5te
 endif
-ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf_s),y)
+ifeq ($(BR2_ARM_CPU_ARMV6),y)
 GST_FFMPEG_CONF_EXTRA_OPTS += --enable-armv6
 else
 GST_FFMPEG_CONF_EXTRA_OPTS += --disable-armv6 --disable-armv6t2

armv6t2: does that hint that we can tune to use Thumb-2 ?

Unrelated to the series, though...

Regards,
Yann E. MORIN.

Quoted 7 lines
Signature · 6 lines
2.0.0

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#9 lore raw

PATCH v2 4/30 gst-ffmpeg: use the new BR2_ARM_CPU_ARM* options

Dear Yann E. MORIN,

Quoted 7 lines · Yann E. MORIN

package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk endif · line 60

Quoted 5 lines
package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk +1 -1
-ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf_s),y)
+ifeq ($(BR2_ARM_CPU_ARMV6),y)
 GST_FFMPEG_CONF_EXTRA_OPTS += --enable-armv6
 else
 GST_FFMPEG_CONF_EXTRA_OPTS += --disable-armv6 --disable-armv6t2

armv6t2: does that hint that we can tune to use Thumb-2 ?

I thought Thumb-2 was only introduced with ARMv7, but it turns out it's not the case. It has in fact been introduced in ARM1156, part of the ARMv6 architecture.

However, this ARM1156 is not supported in Buildroot, and I have never heard of it in any publicly available SoC.

However, this means that --enable-armv6t2 can be used for ARMv7.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#10 lore raw

PATCH v2 4/30 gst-ffmpeg: use the new BR2_ARM_CPU_ARM* options

Quoted 12 lines · Thomas Petazzoni

Dear Yann E. MORIN,

Quoted 7 lines · Yann E. MORIN

package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk endif · line 60

Quoted 5 lines
package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk +1 -1
-ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf_s),y)
+ifeq ($(BR2_ARM_CPU_ARMV6),y)
 GST_FFMPEG_CONF_EXTRA_OPTS += --enable-armv6
 else
 GST_FFMPEG_CONF_EXTRA_OPTS += --disable-armv6 --disable-armv6t2

armv6t2: does that hint that we can tune to use Thumb-2 ?

Quoted 8 lines

I thought Thumb-2 was only introduced with ARMv7, but it turns out it's not the case. It has in fact been introduced in ARM1156, part of the ARMv6 architecture.

However, this ARM1156 is not supported in Buildroot, and I have never heard of it in any publicly available SoC.

However, this means that --enable-armv6t2 can be used for ARMv7.

I wouldn't want to actually use it unless tested on real hardware, however.

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#11 lore raw

PATCH v2 4/30 gst-ffmpeg: use the new BR2_ARM_CPU_ARM* options

Dear Arnout Vandecappelle,

Quoted 1 line · Arnout Vandecappelle

I wouldn't want to actually use it unless tested on real hardware, however.

Well, if you grep through the gst-ffmpeg tree, you will that the ARMV6T2 condition is only used in two places in gst-libs/ext/libav/libavcodec/arm/asm.S :

.macro mov32 rd, val

#if HAVE_ARMV6T2
        movw            \rd, #(\val) & 0xffff
    .if (\val) >> 16
        movt            \rd, #(\val) >> 16
    .endif

#else
ldr \rd, =\val
#endif
.endm

.macro movrel rd, val
#if HAVE_ARMV6T2 && !CONFIG_PIC && !defined(__APPLE__)
movw \rd, #:lower16:\val
movt \rd, #:upper16:\val
#else
ldr \rd, =\val
#endif
.endm

So when you have ARMV6T2, it uses movw/movt instead of ldr. That's the only difference with the non-ARMV6T2 mode. Then you can read
http://community.arm.com/groups/processors/blog/2010/07/27/how-to-load-constants-in-assembly-for-arm-architecture,
which says:

"""
As mentioned earlier, there are other ways to load a constant. In the latest version of the ARM architecture, ARMv7, two new instructions were introduced to improve the situation:

- movw, or move wide, will move a 16-bit constant into a register, implicitly zeroing the top 16 bits of the target register.

- movt, or move top, will move a 16-bit constant into the top half of a given register without altering the bottom 16 bits. Now moving an arbitrary 32-bit constant is as simple as this:
"""

So I think it's safe to say than --enable-armv6t2 can be used on ARMv7 as well.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#12 lore raw

PATCH v2 4/30 gst-ffmpeg: use the new BR2_ARM_CPU_ARM* options

Quoted 43 lines · Thomas Petazzoni

Dear Arnout Vandecappelle,

Quoted 1 line · Arnout Vandecappelle

I wouldn't want to actually use it unless tested on real hardware, however.

Well, if you grep through the gst-ffmpeg tree, you will that the ARMV6T2 condition is only used in two places in gst-libs/ext/libav/libavcodec/arm/asm.S :

.macro mov32 rd, val

#if HAVE_ARMV6T2
        movw            \rd, #(\val) & 0xffff
    .if (\val) >> 16
        movt            \rd, #(\val) >> 16
    .endif

#else
ldr \rd, =\val
#endif
.endm

.macro movrel rd, val
#if HAVE_ARMV6T2 && !CONFIG_PIC && !defined(__APPLE__)
movw \rd, #:lower16:\val
movt \rd, #:upper16:\val
#else
ldr \rd, =\val
#endif
.endm

So when you have ARMV6T2, it uses movw/movt instead of ldr. That's the only difference with the non-ARMV6T2 mode. Then you can read
http://community.arm.com/groups/processors/blog/2010/07/27/how-to-load-constants-in-assembly-for-arm-architecture,
which says:

"""
As mentioned earlier, there are other ways to load a constant. In the latest version of the ARM architecture, ARMv7, two new instructions were introduced to improve the situation:

- movw, or move wide, will move a 16-bit constant into a register, implicitly zeroing the top 16 bits of the target register.

Quoted 7 lines

- movt, or move top, will move a 16-bit constant into the top half of a given register without altering the bottom 16 bits. Now moving an arbitrary 32-bit constant is as simple as this:
"""

So I think it's safe to say than --enable-armv6t2 can be used on ARMv7 as well.

Okay, that's good enough for me.

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#13 lore raw

PATCH v2 5/30 gst-ffmpeg: allow usage of ARMv6 optimizations on ARMv7 platforms

In reply to Thomas Petazzoni

Contrary to the ffmpeg package, the gst-ffmpeg package was only allowing ARMv6 optimizations on ARMv6 platforms. This commit also allows ARMv6 optimizations on ARMv7 platforms, like the ffmpeg package does.

---
 package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk +1 -1
index 5e55363..59b9323 100644
@@ -54,7 +54,7 @@ endif
 ifeq ($(BR2_ARM_CPU_ARMV4),y)
 GST_FFMPEG_CONF_EXTRA_OPTS += --disable-armv5te
 endif
-ifeq ($(BR2_ARM_CPU_ARMV6),y)
+ifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y)
 GST_FFMPEG_CONF_EXTRA_OPTS += --enable-armv6
 else
 GST_FFMPEG_CONF_EXTRA_OPTS += --disable-armv6 --disable-armv6t2
Signature · 1 line
2.0.0
#14 lore raw

PATCH v2 5/30 gst-ffmpeg: allow usage of ARMv6 optimizations on ARMv7 platforms

On 2014-10-21 22:26 +0200, Thomas Petazzoni spake thusly:

Quoted 6 lines

Contrary to the ffmpeg package, the gst-ffmpeg package was only allowing ARMv6 optimizations on ARMv6 platforms. This commit also allows ARMv6 optimizations on ARMv7 platforms, like the ffmpeg package does.

Regards,
Yann E. MORIN.

Quoted 24 lines
---
 package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk +1 -1
index 5e55363..59b9323 100644
@@ -54,7 +54,7 @@ endif
 ifeq ($(BR2_ARM_CPU_ARMV4),y)
 GST_FFMPEG_CONF_EXTRA_OPTS += --disable-armv5te
 endif
-ifeq ($(BR2_ARM_CPU_ARMV6),y)
+ifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y)
 GST_FFMPEG_CONF_EXTRA_OPTS += --enable-armv6
 else
 GST_FFMPEG_CONF_EXTRA_OPTS += --disable-armv6 --disable-armv6t2
Signature · 6 lines
2.0.0

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#15 lore raw

PATCH v2 6/30 gst1-libav: use the new BR2_ARM_CPU_ARM* options

In reply to Thomas Petazzoni

Instead of using the Config.in options for each individual ARM core, use the newly introduced BR2_ARM_CPU_ARM* options, which exist per ARM architecture.

---
 package/gstreamer1/gst1-libav/gst1-libav.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
package/gstreamer1/gst1-libav/gst1-libav.mk +2 -2
index 6fdf091..6018504 100644
@@ -49,10 +49,10 @@ endif
 # Explicitly disable everything that doesn't match for ARM
 # FFMPEG "autodetects" by compiling an extended instruction via AS
 # This works on compilers that aren't built for generic by default
-ifeq ($(BR2_arm920t)$(BR2_arm922t)$(BR2_strongarm)$(BR2_fa526),y)
+ifeq ($(BR2_ARM_CPU_ARMV4),y)
 GST1_LIBAV_CONF_EXTRA_OPTS += --disable-armv5te
 endif
-ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf_s),y)
+ifeq ($(BR2_ARM_CPU_ARMV6),y)
 GST1_LIBAV_CONF_EXTRA_OPTS += --enable-armv6
 else
 GST1_LIBAV_CONF_EXTRA_OPTS += --disable-armv6 --disable-armv6t2
Signature · 1 line
2.0.0
#16 lore raw

PATCH v2 7/30 gst1-libav: allow usage of ARMv6 optimizations on ARMv7 platforms

In reply to Thomas Petazzoni

Contrary to the ffmpeg package, the gst1-libav package was only allowing ARMv6 optimizations on ARMv6 platforms. This commit also allows ARMv6 optimizations on ARMv7 platforms, like the ffmpeg package does.

---
 package/gstreamer1/gst1-libav/gst1-libav.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/gstreamer1/gst1-libav/gst1-libav.mk +1 -1
index 6018504..1772530 100644
@@ -52,7 +52,7 @@ endif
 ifeq ($(BR2_ARM_CPU_ARMV4),y)
 GST1_LIBAV_CONF_EXTRA_OPTS += --disable-armv5te
 endif
-ifeq ($(BR2_ARM_CPU_ARMV6),y)
+ifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y)
 GST1_LIBAV_CONF_EXTRA_OPTS += --enable-armv6
 else
 GST1_LIBAV_CONF_EXTRA_OPTS += --disable-armv6 --disable-armv6t2
Signature · 1 line
2.0.0
#17 lore raw

PATCH v2 8/30 mplayer: use BR2_ARM_CPU_ARM* options

In reply to Thomas Petazzoni
---
 package/mplayer/Config.in  | 3 +--
 package/mplayer/mplayer.mk | 4 ++--
 2 files changed, 3 insertions(+), 4 deletions(-)
package/mplayer/Config.in +1 -2
index 8b5d05e..6b97aeb 100644
@@ -4,8 +4,7 @@ config BR2_PACKAGE_MPLAYER
 	depends on !(BR2_bfin || BR2_sh2a || BR2_sh4a || BR2_sh4aeb \
 			|| BR2_microblaze || BR2_aarch64 || BR2_nios2)
 	# Broken support for <ARMv5
-	depends on !(BR2_arm920t || BR2_arm920t || BR2_arm922t || BR2_fa526 \
-		|| BR2_strongarm)
+	depends on !BR2_ARM_CPU_ARMV4
 	depends on BR2_LARGEFILE
 	help
 	  MPlayer is a movie player which runs on many systems and supports
package/mplayer/mplayer.mk +2 -2
index 0c216d7..ee023b4 100644
@@ -105,11 +105,11 @@ MPLAYER_DEPENDENCIES += $(if $(BR2_PACKAGE_XLIB_LIBX11),xlib_libX11)
 MPLAYER_DEPENDENCIES += $(if $(BR2_PACKAGE_XLIB_LIBXV),xlib_libXv)
 
 # ARM optimizations
-ifeq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),armv5te)
+ifeq ($(BR2_ARM_CPU_ARMV5),y)
 MPLAYER_CONF_OPTS += --enable-armv5te
 endif
 
-ifeq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),armv6j)
+ifeq ($(BR2_ARM_CPU_ARMV6),y)
 MPLAYER_CONF_OPTS += --enable-armv6
 endif
 
Signature · 1 line
2.0.0
#18 lore raw

PATCH v2 8/30 mplayer: use BR2_ARM_CPU_ARM* options

Quoted 29 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

---
 package/mplayer/Config.in  | 3 +--
 package/mplayer/mplayer.mk | 4 ++--
 2 files changed, 3 insertions(+), 4 deletions(-)
package/mplayer/Config.in +1 -2
index 8b5d05e..6b97aeb 100644
@@ -4,8 +4,7 @@ config BR2_PACKAGE_MPLAYER
 	depends on !(BR2_bfin || BR2_sh2a || BR2_sh4a || BR2_sh4aeb \
 			|| BR2_microblaze || BR2_aarch64 || BR2_nios2)
 	# Broken support for <ARMv5
-	depends on !(BR2_arm920t || BR2_arm920t || BR2_arm922t || BR2_fa526 \
-		|| BR2_strongarm)
+	depends on !BR2_ARM_CPU_ARMV4
 	depends on BR2_LARGEFILE
 	help
 	  MPlayer is a movie player which runs on many systems and supports
package/mplayer/mplayer.mk +0 -0
index 0c216d7..ee023b4 100644
@@ -105,11 +105,11 @@ MPLAYER_DEPENDENCIES += $(if $(BR2_PACKAGE_XLIB_LIBX11),xlib_libX11)
 MPLAYER_DEPENDENCIES += $(if $(BR2_PACKAGE_XLIB_LIBXV),xlib_libXv)
 

package/mplayer/mplayer.mk MPLAYER_DEPENDENCIES += $(if $(BR2_PACKAGE_XLIB_LIBX11),xlib_libX11) · line 114

Quoted 10 lines
package/mplayer/mplayer.mk +2 -2
 # ARM optimizations
-ifeq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),armv5te)
+ifeq ($(BR2_ARM_CPU_ARMV5),y)
 MPLAYER_CONF_OPTS += --enable-armv5te
 endif
 
-ifeq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),armv6j)
+ifeq ($(BR2_ARM_CPU_ARMV6),y)
 MPLAYER_CONF_OPTS += --enable-armv6
 endif

Not related to this patch, but we should probably do the same as for ffmpeg/gst-ffmpeg/gst1-libav and enable the armv6 stuff on armv7a.

Signature · 1 line
Bye, Peter Korsgaard
#19 lore raw

PATCH v2 9/30 libplayer: use BR2_ARM_CPU_ARM* option

In reply to Thomas Petazzoni
---
 package/libplayer/Config.in | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
package/libplayer/Config.in +1 -2
index 703b96d..5a9f466 100644
@@ -19,8 +19,7 @@ config BR2_PACKAGE_LIBPLAYER_MPLAYER
 	depends on BR2_LARGEFILE
 	# mplayer
 	# Broken support for <ARMv5
-	depends on !(BR2_arm920t || BR2_arm920t || BR2_arm922t || BR2_fa526 \
-		|| BR2_strongarm)
+	depends on !BR2_ARM_CPU_ARMV4
 	select BR2_PACKAGE_MPLAYER
 
 config BR2_PACKAGE_LIBPLAYER_GSTREAMER
Signature · 1 line
2.0.0
#20 lore raw

PATCH v2 10/30 nettle: use the BR2_ARM_CPU_ARM* options

In reply to Thomas Petazzoni

Adjust the nettle package to use the BR2_ARM_CPU_ARM* option to disable the usage of assembly code on ARMv4 and ARMv5.

---
 package/nettle/nettle.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/nettle/nettle.mk +1 -1
index e73a718..a25bb24 100644
@@ -15,7 +15,7 @@ NETTLE_LICENSE_FILES = COPYING.LIB
 NETTLE_CONF_OPTS = --disable-openssl
 
 # ARM assembly requires v6+ ISA
-ifeq ($(BR2_arm920t)$(BR2_arm922t)$(BR2_arm926t)$(BR2_fa526)$(BR2_strongarm)$(BR2_xscale)$(BR2_iwmmxt),y)
+ifeq ($(BR2_ARM_CPU_ARMV4)$(BR2_ARM_CPU_ARMV5),y)
 NETTLE_CONF_OPTS += --disable-assembler
 endif
 
Signature · 1 line
2.0.0
#21 lore raw

PATCH v2 11/30 nodejs: use BR2_ARM_CPU_ARM* options

In reply to Thomas Petazzoni

Adjust the nodejs Config.in dependencies to use the per ARM architecture BR2_ARM_CPU_ARM* options instead of the per ARM core options.

---
 package/nodejs/Config.in | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
package/nodejs/Config.in +2 -2
index 077a043..47e80ec 100644
@@ -7,7 +7,7 @@ config BR2_PACKAGE_NODEJS
 	depends on BR2_arm || BR2_i386 || BR2_x86_64 || BR2_mipsel
 	depends on !BR2_MIPS_SOFT_FLOAT
 	# ARM needs BLX, so v5t+
-	depends on !(BR2_arm920t || BR2_arm922t || BR2_fa526)
+	depends on !BR2_ARM_CPU_ARMV4
 	# uses fork()
 	depends on BR2_USE_MMU
 	select BR2_PACKAGE_ZLIB
@@ -19,7 +19,7 @@ config BR2_PACKAGE_NODEJS
 comment "nodejs needs a toolchain w/ C++, IPv6, largefile, threads"
 	depends on BR2_USE_MMU
 	depends on BR2_arm || BR2_i386 || BR2_x86_64 || BR2_mipsel
-	depends on !(BR2_arm920t || BR2_arm922t || BR2_fa526)
+	depends on !BR2_ARM_CPU_ARMV4
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_LARGEFILE || \
 		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_INET_IPV6
 
Signature · 1 line
2.0.0
#22 lore raw

PATCH v2 12/30 qt5: use the BR2_ARM_CPU_ARM* options

In reply to Thomas Petazzoni
---
 package/qt5/Config.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/qt5/Config.in +1 -1
index 83f02f1..0a8284f 100644
@@ -8,7 +8,7 @@ config BR2_PACKAGE_QT5_JSCORE_AVAILABLE
 	# Javascript engine is only available on certain architectures
 	depends on BR2_arm || BR2_i386 || BR2_x86_64 || BR2_mipsel
 	# ARM needs BLX, so v5t+
-	depends on !(BR2_arm920t || BR2_arm922t || BR2_fa526)
+	depends on !BR2_ARM_CPU_ARMV4
 	default y
 
 comment "Qt5 needs a toolchain w/ wchar, IPv6, NPTL, C++"
Signature · 1 line
2.0.0
#23 lore raw

PATCH v2 13/30 speex: use BR2_ARM_CPU_ARM* options

In reply to Thomas Petazzoni
---
 package/speex/Config.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/speex/Config.in +1 -1
index ab743fe..f18e866 100644
@@ -13,7 +13,7 @@ if BR2_PACKAGE_SPEEX
 config BR2_PACKAGE_SPEEX_ARM4
 	bool
 	default y
-	depends on BR2_arm920t || BR2_arm922t || BR2_strongarm || BR2_fa526
+	depends on BR2_ARM_CPU_ARMV4
 
 config BR2_PACKAGE_SPEEX_ARM5E
 	default y
Signature · 1 line
2.0.0
#24 lore raw

PATCH v2 14/30 vo-aacenc: use the BR2_ARM_CPU_ARM* options

In reply to Thomas Petazzoni

The vo-aacenc package has an option to enable ARMv5 optimizations. It was enabled based on per ARM core options, but now that we have per ARM architecture options, this commit switches to using them.

---
 package/vo-aacenc/vo-aacenc.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/vo-aacenc/vo-aacenc.mk +1 -1
index e35ac42..23d7e62 100644
@@ -26,7 +26,7 @@ VO_AACENC_CFLAGS += -mfpu=neon
 else
 VO_AACENC_CONF_OPTS += --disable-armv7neon
 
-ifeq ($(BR2_arm920t)$(BR2_arm922t)$(BR2_strongarm)$(BR2_fa526),)
+ifeq ($(BR2_ARM_CPU_ARMV4),)
 VO_AACENC_CONF_OPTS += --enable-armv5e
 else
 VO_AACENC_CONF_OPTS += --disable-armv5e
Signature · 1 line
2.0.0
#25 lore raw

PATCH v2 15/30 webkit: use BR2_ARM_CPU_ARM* options

In reply to Thomas Petazzoni

The webkit package is not available on ARM < v5, so this commit switches to using the newly introduced BR2_ARM_CPU_ARM* options instead of per ARM core options.

---
 package/webkit/Config.in | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
package/webkit/Config.in +1 -2
index d1bc1d5..2f0b90d 100644
@@ -1,8 +1,7 @@
 config BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS
 	bool
 	# ARM needs BLX, so v5t+
-	default y if (BR2_arm || BR2_armeb) && \
-		!(BR2_arm920t || BR2_arm922t || BR2_fa526)
+	default y if (BR2_arm || BR2_armeb) && !BR2_ARM_CPU_ARMV4
 	default y if BR2_i386 || BR2_mips || BR2_mipsel || \
 		BR2_sparc || BR2_x86_64
 	depends on BR2_USE_MMU # libgail -> pango -> libglib2
Signature · 1 line
2.0.0
#26 lore raw

PATCH v2 16/30 valgrind: use the BR2_ARM_CPU_ARM* options

In reply to Thomas Petazzoni

Instead of using the exhaustive list of Cortex-A ARM cores, use BR2_ARM_CPU_ARMV7A instead. We also fix a wrong comment that said the Valgrind package could only be selected for Cortex-A8 and Cortex-A9, which was true a long time ago, but was no longer true since it was also enabled for all the other Cortex-A platforms.

---
 package/valgrind/Config.in   | 7 +++----
 package/valgrind/valgrind.mk | 4 ++--
 2 files changed, 5 insertions(+), 6 deletions(-)
package/valgrind/Config.in +3 -4
index 253555b..b7521b0 100644
@@ -1,9 +1,8 @@
 config BR2_PACKAGE_VALGRIND
 	bool "valgrind"
-	depends on BR2_i386 || BR2_x86_64 || BR2_cortex_a5 || \
-		   BR2_cortex_a7 || BR2_cortex_a8 || BR2_cortex_a9 || \
-		   BR2_cortex_a12 || BR2_cortex_a15 || BR2_powerpc || \
-		   BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
+	depends on BR2_i386 || BR2_x86_64 || BR2_ARM_CPU_ARMV7A || \
+		   BR2_powerpc || BR2_mips || BR2_mipsel || BR2_mips64 || \
+		   BR2_mips64el
 	help
 	  Tool for debugging and profiling Linux programs.
 
package/valgrind/valgrind.mk +2 -2
index 9b79941..b65e048 100644
@@ -16,8 +16,8 @@ VALGRIND_AUTORECONF = YES
 # host tuple to determine whether it's being built for ARMv7 or
 # not. Therefore, we adjust the host tuple to specify we're on
 # ARMv7. The valgrind package is guaranteed, through Config.in, to
-# only be selected on Cortex A8 and Cortex A9 platforms.
-ifeq ($(BR2_cortex_a5)$(BR2_cortex_a7)$(BR2_cortex_a8)$(BR2_cortex_a9)$(BR2_cortex_a12)$(BR2_cortex_a15),y)
+# only be selected on ARMv7-A platforms.
+ifeq ($(BR2_ARM_CPU_ARMV7A),y)
 VALGRIND_CONF_OPTS += \
 	--host=$(patsubst arm-%,armv7-%,$(GNU_TARGET_NAME))
 endif
Signature · 1 line
2.0.0
#27 lore raw

PATCH v2 17/30 x264: use the BR2_ARM_CPU_ARMV7A option

In reply to Thomas Petazzoni
---
 package/x264/x264.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/x264/x264.mk +1 -1
index ac8fe94..1846f04 100644
@@ -14,7 +14,7 @@ X264_INSTALL_STAGING = YES
 
 ifeq ($(BR2_i386)$(BR2_x86_64),y)
 X264_DEPENDENCIES += host-yasm
-else ifeq ($(BR2_cortex_a5)$(BR2_cortex_a7)$(BR2_cortex_a8)$(BR2_cortex_a9)$(BR2_cortex_a12)$(BR2_cortex_a15),y)
+else ifeq ($(BR2_ARM_CPU_ARMV7A),y)
 # We need to pass gcc as AS, because the ARM assembly files have to be
 # preprocessed
 X264_CONF_ENV += AS="$(TARGET_CC)"
Signature · 1 line
2.0.0
#28 lore raw

PATCH v2 18/30 libnspr: use the BR2_ARM_CPU_ARMV7A option

In reply to Thomas Petazzoni

The libnspr --enable-thumb2 option was only enabled on Cortex-A8 and Cortex-A9. This commit switches ot using BR2_ARM_CPU_ARMV7A instead, which will allow using Thumb2 for this package even with the other Cortex-A cores.

---
 package/libnspr/libnspr.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/libnspr/libnspr.mk +1 -1
index eaa6eb7..537caa6 100644
@@ -22,7 +22,7 @@ LIBNSPR_CONF_OPTS += --$(if $(BR2_ARCH_IS_64),en,dis)able-64bit
 LIBNSPR_CONF_OPTS += --$(if $(BR2_INET_IPV6),en,dis)able-ipv6
 
 ifeq ($(BR2_arm),y)
-ifeq ($(BR2_cortex_a8)$(BR2_cortex_a9),y)
+ifeq ($(BR2_ARM_CPU_ARMV7A),y)
 LIBNSPR_CONF_OPTS += --enable-thumb2
 else
 LIBNSPR_CONF_OPTS += --disable-thumb2
Signature · 1 line
2.0.0
#29 lore raw

PATCH v2 18/30 libnspr: use the BR2_ARM_CPU_ARMV7A option

Quoted 17 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

The libnspr --enable-thumb2 option was only enabled on Cortex-A8 and Cortex-A9. This commit switches ot using BR2_ARM_CPU_ARMV7A instead, which will allow using Thumb2 for this package even with the other Cortex-A cores.

---
 package/libnspr/libnspr.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/libnspr/libnspr.mk +0 -0
index eaa6eb7..537caa6 100644

package/libnspr/libnspr.mk LIBNSPR_CONF_OPTS += --$(if $(BR2_ARCH_IS_64),en,dis)able-64bit · line 25

Quoted 5 lines
package/libnspr/libnspr.mk +1 -1
@@ -22,7 +22,7 @@ LIBNSPR_CONF_OPTS += --$(if $(BR2_ARCH_IS_64),en,dis)able-64bit
 LIBNSPR_CONF_OPTS += --$(if $(BR2_INET_IPV6),en,dis)able-ipv6
 
 ifeq ($(BR2_arm),y)
-ifeq ($(BR2_cortex_a8)$(BR2_cortex_a9),y)
+ifeq ($(BR2_ARM_CPU_ARMV7A),y)

There's currently no functional difference, but it makes more sense to use BR2_ARM_CPU_HAS_THUMB2 here.

Committed with that fixed, thanks.

Signature · 1 line
Bye, Peter Korsgaard
#30 lore raw

PATCH v2 19/30 toolchain-external: use BR2_ARM_CPU_ARM* options

In reply to Thomas Petazzoni

Refactor the toolchain-external Config.in file to use the BR2_ARM_CPU_ARM*. All of the changes are purely mechanical, except for the Arago ARMv5 toolchain: it had a 'depends on BR2_GCC_TARGET_ARCH != "armv5t"', but armv5t was not a possible value for BR2_GCC_TARGET_ARCH. Since the toolchain is ARMv5TE, the only ARM architectures we need to exclude are ARMv4 and ARMv4T.

---
 toolchain/toolchain-external/Config.in | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)
toolchain/toolchain-external/Config.in +6 -8
index c74388f..39b56e1 100644
@@ -9,7 +9,7 @@ comment "(e)glibc toolchains only available with shared lib support"
 config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM
 	bool "Linaro ARM 2014.08"
 	depends on BR2_arm
-	depends on BR2_GCC_TARGET_ARCH = "armv7-a"
+	depends on BR2_ARM_CPU_ARMV7A
 	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
 	depends on BR2_ARM_EABIHF
 	depends on !BR2_PREFER_STATIC_LIB
@@ -29,13 +29,13 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM
 
 comment "Linaro toolchains available for Cortex-A + EABIhf"
 	depends on BR2_arm
-	depends on BR2_GCC_TARGET_ARCH != "armv7-a" || !BR2_ARM_EABIHF
+	depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF
 	depends on !BR2_PREFER_STATIC_LIB
 
 config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB
 	bool "Linaro armeb 2014.08"
 	depends on BR2_armeb
-	depends on BR2_GCC_TARGET_ARCH = "armv7-a"
+	depends on BR2_ARM_CPU_ARMV7A
 	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
 	depends on BR2_ARM_EABIHF
 	depends on !BR2_PREFER_STATIC_LIB
@@ -55,7 +55,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB
 
 comment "Linaro toolchains available for Cortex-A + EABIhf"
 	depends on BR2_armeb
-	depends on BR2_GCC_TARGET_ARCH != "armv7-a" || !BR2_ARM_EABIHF
+	depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF
 	depends on !BR2_PREFER_STATIC_LIB
 
 config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201405
@@ -151,7 +151,7 @@ config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A_201109
 	bool "Arago ARMv7 2011.09"
 	depends on BR2_arm
 	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
-	depends on BR2_GCC_TARGET_ARCH = "armv7-a"
+	depends on BR2_ARM_CPU_ARMV7A
 	depends on BR2_ARM_EABI
 	depends on BR2_ARM_CPU_HAS_VFPV3 || BR2_ARM_CPU_MAYBE_HAS_VFPV3
 	depends on !BR2_PREFER_STATIC_LIB
@@ -174,9 +174,7 @@ config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109
 	bool "Arago ARMv5 2011.09"
 	depends on BR2_arm
 	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
-	depends on BR2_GCC_TARGET_ARCH != "armv4t" && \
-		BR2_GCC_TARGET_ARCH != "armv4" && \
-		BR2_GCC_TARGET_ARCH != "armv5t"
+	depends on !BR2_ARM_CPU_ARMV4
 	depends on BR2_ARM_EABI
 	depends on !BR2_PREFER_STATIC_LIB
 	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
Signature · 1 line
2.0.0
#31 lore raw

PATCH v2 20/30 dhcpcd: do not pass --target option

In reply to Thomas Petazzoni

dhcpcd is using $(BR2_GCC_TARGET_ARCH) as the value of its --target option. However, depending on the architecture, this value might be empty.

After inspecting the dhcpcd configure script, it turns out that in fact the --target option has the following semantic:

--target=TARGET configure for building compilers for TARGET [HOST]

So it is very much like the --target option of regular, autoconf-based, configure scripts. Since dhcpcd is not a compiler, passing --target is pointless. Moreover, as long as --os=linux is passed, passing --host or --target is completely ignored by the configure script.

---
 package/dhcpcd/dhcpcd.mk | 1 -
 1 file changed, 1 deletion(-)
package/dhcpcd/dhcpcd.mk +0 -1
index f4b821a..3bb7a13 100644
@@ -25,7 +25,6 @@ endif
 define DHCPCD_CONFIGURE_CMDS
 	(cd $(@D); \
 	$(TARGET_CONFIGURE_OPTS) ./configure \
-		--target=$(BR2_GCC_TARGET_ARCH) \
 		--os=linux \
 		$(DHCPCD_CONFIG_OPTS) )
 endef
Signature · 1 line
2.0.0
#32 lore raw

PATCH v2 21/30 arch/arm: do not distinguish revisions of ARM1136JF-S

In reply to Thomas Petazzoni

In commit 88cf3bb91792c9c04586e14f293d89a6e0c13e1d ("arch/Config.in.arm: Use armv6k for arm1136jf-s rev1"), Beno?t Th?baudeau added separate options for the revision 0 and revision 1 of the ARM1136JF-S processor, so that different -march values could be used (armv6j for revision 0, armv6k for revision 1).

However, this is preventing the removal of the BR2_GCC_TARGET_ARCH option, which we need to do to give only the CPU type to gcc, and let it decide the architecture variant that matches. This is because this story of revision 0 vs. revision 1 is the only case where -mcpu doesn't fully define the CPU.

Moreover, a quick test with gcc shows that -march=armv6j -mcpu=arm1136jf-s is accepted, while -march=armv6k -mcpu=arm1136jf-s makes gcc complain: " warning: switch -mcpu=arm1136jf-s conflicts with -march=armv6k switch".

In addition, gcc 5 will apparently no longer allow to pass all of --with-arch, --with-cpu and --with-tune, so we will anyway have to rely only on one of them.

As a consequence, this commit basically reverts 88cf3bb91792c9c04586e14f293d89a6e0c13e1d and provides only one option for ARM1136JF-S. If the two revisions are really different, then they should be supported in upstream gcc with different -mcpu values.

Note that the removal of the two options should not break existing full .config, since the hidden option BR2_arm1136jf_s becomes again a visible option to select the CPU.

Cc Beno?t Th?baudeau <[email protected]>
---
 arch/Config.in.arm | 16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)
arch/Config.in.arm +3 -13
index 5441c8d..9257c16 100644
@@ -69,13 +69,8 @@ config BR2_arm926t
 	select BR2_ARM_CPU_MAYBE_HAS_VFPV2
 	select BR2_ARM_CPU_HAS_THUMB
 	select BR2_ARM_CPU_ARMV5
-config BR2_arm1136jf_s_r0
-	bool "arm1136jf_s rev0"
-	select BR2_ARM_CPU_HAS_VFPV2
-	select BR2_ARM_CPU_HAS_THUMB
-	select BR2_ARM_CPU_ARMV6
-config BR2_arm1136jf_s_r1
-	bool "arm1136jf_s rev1"
+config BR2_arm1136jf_s
+	bool "arm1136jf-s"
 	select BR2_ARM_CPU_HAS_VFPV2
 	select BR2_ARM_CPU_HAS_THUMB
 	select BR2_ARM_CPU_ARMV6
@@ -143,10 +138,6 @@ config BR2_iwmmxt
 	select BR2_ARM_CPU_ARMV5
 endchoice
 
-config BR2_arm1136jf_s
-	bool
-	default BR2_arm1136jf_s_r0 || BR2_arm1136jf_s_r1
-
 choice
 	prompt "Target ABI"
 	depends on BR2_arm || BR2_armeb
@@ -394,8 +385,7 @@ config BR2_GCC_TARGET_ARCH
 	default "armv4t"	if BR2_arm920t
 	default "armv4t"	if BR2_arm922t
 	default "armv5te"	if BR2_arm926t
-	default "armv6j"	if BR2_arm1136jf_s_r0
-	default "armv6k"	if BR2_arm1136jf_s_r1
+	default "armv6j"	if BR2_arm1136jf_s
 	default "armv6zk"	if BR2_arm1176jz_s
 	default "armv6zk"	if BR2_arm1176jzf_s
 	default "armv7-a"	if BR2_cortex_a5
Signature · 1 line
2.0.0
#33 lore raw

PATCH v2 22/30 arch/arm: remove BR2_GCC_TARGET_ARCH definitions on ARM

In reply to Thomas Petazzoni

On ARM, we were defining both the CPU type and the architecture variant. However, depending on the version of gcc, a given combination of (CPU, architecture) may not be the same. Since the architecture variant is implied by the CPU type, given the former is not necessary, and we can simply specify the latter.

From the gcc documentation:

This specifies the name of the target ARM processor. GCC uses this name to derive the name of the target ARM architecture (as if specified by -march) and the ARM processor type for which to tune for performance (as if specified by -mtune). Where this option is used in conjunction with -march or -mtune, those options take precedence over the appropriate part of this option.

Note that we verified that for all BR2_GCC_TARGET_ARCH value that existed, a proper BR2_GCC_TARGET_CPU value is defined.

---
 arch/Config.in.arm | 19 -------------------
 1 file changed, 19 deletions(-)
arch/Config.in.arm +0 -19
index 9257c16..162191b 100644
@@ -381,25 +381,6 @@ config BR2_GCC_TARGET_CPU
 	default "xscale"	if BR2_xscale
 	default "iwmmxt"	if BR2_iwmmxt
 
-config BR2_GCC_TARGET_ARCH
-	default "armv4t"	if BR2_arm920t
-	default "armv4t"	if BR2_arm922t
-	default "armv5te"	if BR2_arm926t
-	default "armv6j"	if BR2_arm1136jf_s
-	default "armv6zk"	if BR2_arm1176jz_s
-	default "armv6zk"	if BR2_arm1176jzf_s
-	default "armv7-a"	if BR2_cortex_a5
-	default "armv7-a"	if BR2_cortex_a7
-	default "armv7-a"	if BR2_cortex_a8
-	default "armv7-a"	if BR2_cortex_a9
-	default "armv7-a"	if BR2_cortex_a12
-	default "armv7-a"	if BR2_cortex_a15
-	default "armv4"		if BR2_fa526
-	default "armv7-a"	if BR2_pj4
-	default "armv4"		if BR2_strongarm
-	default "armv5te"	if BR2_xscale
-	default "iwmmxt"	if BR2_iwmmxt
-
 config BR2_GCC_TARGET_ABI
 	default "aapcs-linux"
 
Signature · 1 line
2.0.0
#34 lore raw

PATCH v2 23/30 ffmpeg: use arch and cpu instead of tune

In reply to Thomas Petazzoni

ffmpeg currently uses BR2_GCC_TARGET_TUNE as the --cpu option value. However, there are multiple architectures for which BR2_GCC_TARGET_TUNE is not used. After inspecting the ffmpeg configure script, we concluded that using the BR2_GCC_TARGET_CPU value if available, or the BR2_GCC_TARGET_ARCH value as a fallback was the appropriate behavior.

This allows to remove the reference to BR2_GCC_TARGET_TUNE, which is one step towards the removal of this option.

---
 package/ffmpeg/ffmpeg.mk | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
package/ffmpeg/ffmpeg.mk +6 -1
index 0990f18..38eaaaa 100644
@@ -334,6 +334,12 @@ endif
 
 FFMPEG_CONF_OPTS += $(call qstrip,$(BR2_PACKAGE_FFMPEG_EXTRACONF))
 
+ifneq ($(call qstrip,$(BR2_GCC_TARGET_CPU)),)
+FFMPEG_CONF_OPTS += --cpu=$(BR2_GCC_TARGET_CPU)
+else ifneq ($(call qstrip,$(BR2_GCC_TARGET_ARCH),)
+FFMPEG_CONF_OPTS += --cpu=$(BR2_GCC_TARGET_ARCH)
+endif
+
 # Override FFMPEG_CONFIGURE_CMDS: FFmpeg does not support --target and others
 define FFMPEG_CONFIGURE_CMDS
 	(cd $(FFMPEG_SRCDIR) && rm -rf config.cache && \
@@ -349,7 +355,6 @@ define FFMPEG_CONFIGURE_CMDS
 		--target-os="linux" \
 		--disable-stripping \
 		--pkg-config="$(PKG_CONFIG_HOST_BINARY)" \
-		$(if $(BR2_GCC_TARGET_TUNE),--cpu=$(BR2_GCC_TARGET_TUNE)) \
 		$(SHARED_STATIC_LIBS_OPTS) \
 		$(FFMPEG_CONF_OPTS) \
 	)
Signature · 1 line
2.0.0
#35 lore raw

PATCH v2 24/30 arch/x86: get rid of BR2_GCC_TARGET_TUNE

In reply to Thomas Petazzoni

According to the gcc documentation, -march implies -mtune on x86, so defining both BR2_GCC_TARGET_ARCH and BR2_GCC_TARGET_TUNE is redundant. Therefore, this commit removes the definition of BR2_GCC_TARGET_TUNE on x86.

However, while doing so, it adds one new case for BR2_GCC_TARGET_ARCH:
using -march=generic when BR2_x86_generic is selected.

---
 arch/Config.in.x86 | 32 +-------------------------------
 1 file changed, 1 insertion(+), 31 deletions(-)
arch/Config.in.x86 +1 -31
index 9aa4ea2..0b7919b 100644
@@ -205,37 +205,6 @@ config BR2_ENDIAN
 config BR2_ARCH_HAS_ATOMICS
 	default y if !BR2_x86_i386
 
-config BR2_GCC_TARGET_TUNE
-	default "i386"		if BR2_x86_i386
-	default "i486"		if BR2_x86_i486
-	default "i586"		if BR2_x86_i586
-	default "pentium-mmx"	if BR2_x86_pentium_mmx
-	default "i686"		if BR2_x86_i686
-	default "pentiumpro"	if BR2_x86_pentiumpro
-	default "pentium-m"	if BR2_x86_pentium_m
-	default "pentium2"	if BR2_x86_pentium2
-	default "pentium3"	if BR2_x86_pentium3
-	default "pentium4"	if BR2_x86_pentium4
-	default "prescott"	if BR2_x86_prescott
-	default "nocona"	if BR2_x86_nocona
-	default "core2"		if BR2_x86_core2
-	default "corei7"	if BR2_x86_corei7
-	default "atom"		if BR2_x86_atom
-	default "k8"		if BR2_x86_opteron
-	default "k8-sse3"	if BR2_x86_opteron_sse3
-	default "barcelona"	if BR2_x86_barcelona
-	default "btver2"	if BR2_x86_jaguar
-	default "k6"		if BR2_x86_k6
-	default "k6-2"		if BR2_x86_k6_2
-	default "athlon"	if BR2_x86_athlon
-	default "athlon-4"	if BR2_x86_athlon_4
-	default "winchip-c6"	if BR2_x86_winchip_c6
-	default "winchip2"	if BR2_x86_winchip2
-	default "c3"		if BR2_x86_c3
-	default "c3-2"		if BR2_x86_c32
-	default "geode"		if BR2_x86_geode
-	default "generic"	if BR2_x86_generic
-
 config BR2_GCC_TARGET_ARCH
 	default "i386"		if BR2_x86_i386
 	default "i486"		if BR2_x86_i486
@@ -265,3 +234,4 @@ config BR2_GCC_TARGET_ARCH
 	default "c3"		if BR2_x86_c3
 	default "c3-2"		if BR2_x86_c32
 	default "geode"		if BR2_x86_geode
+	default "generic"	if BR2_x86_generic
Signature · 1 line
2.0.0
#36 lore raw

PATCH v2 25/30 arch/sparc: get rid of BR2_GCC_TARGET_TUNE

In reply to Thomas Petazzoni

On SPARC, BR2_GCC_TARGET_TUNE was only used for one specific case, the BR2_sparc_v8. There is actually no reason to not use BR2_GCC_TARGET_CPU instead for this, as all values supported for -mtune are also supported for -mcpu. Therefore, the only BR2_GCC_TARGET_TUNE case is moved as a BR2_GCC_TARGET_CPU case.

---
 arch/Config.in.sparc | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
arch/Config.in.sparc +1 -3
index 657c825..19907b9 100644
@@ -26,10 +26,8 @@ config BR2_ENDIAN
 config BR2_ARCH_HAS_ATOMICS
 	default y
 
-config BR2_GCC_TARGET_TUNE
-	default "v8"		if BR2_sparc_v8
-
 config BR2_GCC_TARGET_CPU
+	default "v8"		if BR2_sparc_v8
 	default "sparchfleon"	if BR2_sparc_sparchfleon
 	default "sparchfleonv8"	if BR2_sparc_sparchfleonv8
 	default "sparcsfleon"	if BR2_sparc_sparcsfleon
Signature · 1 line
2.0.0
#37 lore raw

PATCH v2 26/30 arch/powerpc: get rid of BR2_GCC_TARGET_TUNE

In reply to Thomas Petazzoni

According to the gcc documentation for PowerPC options:

'-mtune=CPU_TYPE'
Set the instruction scheduling parameters for machine type CPU_TYPE, but do not set the architecture type, register usage, or choice of mnemonics, as '-mcpu=CPU_TYPE' would. The same values for CPU_TYPE are used for '-mtune' as for '-mcpu'. If both are specified, the code generated will use the architecture, registers, and mnemonics set by '-mcpu', but the scheduling parameters set by '-mtune'.

In the case of Buildroot where we only target a specific system, using -mtune therefore doesn't make much sense, and using -mcpu would be more appropriate. As a consequence, this patch makes PowerPC use BR2_GCC_TARGET_CPU instead of BR2_GCC_TARGET_TUNE.

---
 arch/Config.in.powerpc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/Config.in.powerpc +1 -1
index 239f5dc..fabee9f 100644
@@ -160,7 +160,7 @@ config BR2_ENDIAN
 config BR2_ARCH_HAS_ATOMICS
 	default y
 
-config BR2_GCC_TARGET_TUNE
+config BR2_GCC_TARGET_CPU
 	default "401"		if BR2_powerpc_401
 	default "403"		if BR2_powerpc_403
 	default "405"		if BR2_powerpc_405
Signature · 1 line
2.0.0
#38 lore raw

PATCH v2 27/30 arch/m68k: get rid of BR2_GCC_TARGET_TUNE

In reply to Thomas Petazzoni

On m68k, we are passing the exact same values of BR2_GCC_TARGET_ARCH and BR2_GCC_TARGET_TUNE, which is redundant. Therefore, this commit removes the usage of BR2_GCC_TARGET_TUNE on m68k.

---
 arch/Config.in.m68k | 8 --------
 1 file changed, 8 deletions(-)
arch/Config.in.m68k +0 -8
index 6b79307..6b868a1 100644
@@ -7,14 +7,6 @@ config BR2_ENDIAN
 config BR2_ARCH_HAS_ATOMICS
 	default y
 
-config BR2_GCC_TARGET_TUNE
-	default "68000"		if BR2_m68k_68000
-	default "68010"		if BR2_m68k_68010
-	default "68020"		if BR2_m68k_68020
-	default "68030"		if BR2_m68k_68030
-	default "68040"		if BR2_m68k_68040
-	default "68060"		if BR2_m68k_68060
-
 config BR2_GCC_TARGET_ARCH
 	default "68000"		if BR2_m68k_68000
 	default "68010"		if BR2_m68k_68010
Signature · 1 line
2.0.0
#39 lore raw

PATCH v2 28/30 gcc: do not use BR2_GCC_TARGET_TUNE anymore

In reply to Thomas Petazzoni

Since the BR2_GCC_TARGET_TUNE value is always empty now, there is no longer a point in using it in the gcc package.

---
 package/gcc/gcc.mk | 3 ---
 1 file changed, 3 deletions(-)
package/gcc/gcc.mk +0 -3
index 7bed159..f5ec96a 100644
@@ -174,9 +174,6 @@ endif
 ifneq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),)
 HOST_GCC_COMMON_CONF_OPTS += --with-arch=$(BR2_GCC_TARGET_ARCH)
 endif
-ifneq ($(call qstrip,$(BR2_GCC_TARGET_TUNE)),)
-HOST_GCC_COMMON_CONF_OPTS += --with-tune=$(BR2_GCC_TARGET_TUNE)
-endif
 ifneq ($(call qstrip,$(BR2_GCC_TARGET_ABI)),)
 HOST_GCC_COMMON_CONF_OPTS += --with-abi=$(BR2_GCC_TARGET_ABI)
 endif
Signature · 1 line
2.0.0
#40 lore raw

PATCH v2 29/30 toolchain-external: do not use BR2_GCC_TARGET_TUNE anymore

In reply to Thomas Petazzoni

Since the BR2_GCC_TARGET_TUNE value is always empty now, there is no longer a point in using it in the external toolchain logic.

---
 toolchain/toolchain-external/ext-toolchain-wrapper.c | 12 +++---------
 toolchain/toolchain-external/toolchain-external.mk   |  5 -----
 2 files changed, 3 insertions(+), 14 deletions(-)
toolchain/toolchain-external/ext-toolchain-wrapper.c +3 -9
index 8db4ac4..f459a7e 100644
@@ -33,10 +33,9 @@ static char sysroot[PATH_MAX];
  * Currently, we have:
  * 	-mfloat-abi=
  * 	-march=
- * 	-mtune=
  * 	-mcpu=
  */
-#define EXCLUSIVE_ARGS	4
+#define EXCLUSIVE_ARGS	3
 
 static char *predef_args[] = {
 	path,
@@ -154,14 +153,12 @@ int main(int argc, char **argv)
 #endif
 
 #if defined(BR_ARCH) || \
-    defined(BR_TUNE) || \
     defined(BR_CPU)
-	/* Add our -march/cpu/tune/abi flags, but only if none are
+	/* Add our -march/cpu/abi flags, but only if none are
 	 * already specified on the commandline
 	 */
 	for (i = 1; i < argc; i++) {
 		if (!strncmp(argv[i], "-march=", strlen("-march=")) ||
-		    !strncmp(argv[i], "-mtune=", strlen("-mtune=")) ||
 		    !strncmp(argv[i], "-mcpu=",  strlen("-mcpu=" )))
 			break;
 	}
@@ -169,14 +166,11 @@ int main(int argc, char **argv)
 #ifdef BR_ARCH
 		*cur++ = "-march=" BR_ARCH;
 #endif
-#ifdef BR_TUNE
-		*cur++ = "-mtune=" BR_TUNE;
-#endif
 #ifdef BR_CPU
 		*cur++ = "-mcpu=" BR_CPU;
 #endif
 	}
-#endif /* ARCH || TUNE || CPU */
+#endif /* ARCH || CPU */
 
 	/* append forward args */
 	memcpy(cur, &argv[1], sizeof(char *) * (argc - 1));
toolchain/toolchain-external/toolchain-external.mk +0 -5
index b7a0e60..e16fce5 100644
@@ -163,7 +163,6 @@ TOOLCHAIN_EXTERNAL_WRAPPER_ARGS += \
 	-DBR_CROSS_PATH_REL='"$(TOOLCHAIN_EXTERNAL_BIN:$(HOST_DIR)/%=%)"'
 endif
 
-CC_TARGET_TUNE_ := $(call qstrip,$(BR2_GCC_TARGET_TUNE))
 ifeq ($(call qstrip,$(BR2_GCC_TARGET_CPU_REVISION)),)
 CC_TARGET_CPU_ := $(call qstrip,$(BR2_GCC_TARGET_CPU))
 else
@@ -181,10 +180,6 @@ ifeq ($(BR2_x86_64),y)
 TOOLCHAIN_EXTERNAL_CFLAGS += -m64
 TOOLCHAIN_EXTERNAL_WRAPPER_ARGS += -DBR_64
 endif
-ifneq ($(CC_TARGET_TUNE_),)
-TOOLCHAIN_EXTERNAL_CFLAGS += -mtune=$(CC_TARGET_TUNE_)
-TOOLCHAIN_EXTERNAL_WRAPPER_ARGS += -DBR_TUNE='"$(CC_TARGET_TUNE_)"'
-endif
 ifneq ($(CC_TARGET_ARCH_),)
 TOOLCHAIN_EXTERNAL_CFLAGS += -march=$(CC_TARGET_ARCH_)
 TOOLCHAIN_EXTERNAL_WRAPPER_ARGS += -DBR_ARCH='"$(CC_TARGET_ARCH_)"'
Signature · 1 line
2.0.0
#41 lore raw

PATCH v2 30/30 arch: remove the BR2_GCC_TARGET_TUNE option

In reply to Thomas Petazzoni

The BR2_GCC_TARGET_TUNE option is now unused, so we can get rid of it.

---
 arch/Config.in | 3 ---
 1 file changed, 3 deletions(-)
arch/Config.in +0 -3
index 1126d43..d62d887 100644
@@ -217,9 +217,6 @@ config BR2_ARCH
 config BR2_ENDIAN
 	string
 
-config BR2_GCC_TARGET_TUNE
-	string
-
 config BR2_GCC_TARGET_ARCH
 	string
 
Signature · 1 line
2.0.0
#42 lore raw

v2 cover Removal of BR2_GCC_TARGET_TUNE and other arch/ updates

In reply to Thomas Petazzoni

Hello,

Quoted 6 lines · Thomas Petazzoni

Thomas Petazzoni (30):
arch/arm: add blind options to know the ARM architecture
ffmpeg: use the new BR2_ARM_CPU_ARM* options
ffmpeg: fix ARM condition for --{enable,disable}-vfp
gst-ffmpeg: use the new BR2_ARM_CPU_ARM* options
gst-ffmpeg: allow usage of ARMv6 optimizations on ARMv7 platforms

I've applied those first five patches, since they have been Reviewed-by Yann. I'll leave the other patches pending for now, until someone reviews them.

Thanks,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#43 lore raw

v2 cover Removal of BR2_GCC_TARGET_TUNE and other arch/ updates

In reply to Thomas Petazzoni

Hello,

Ping about this series? The first 6 patches have been applied, but not the remainder. Would it be possible to apply them for the 2014.11 release, in order to solve the conflicting cflags used on ARM, and reported by many users?

Thanks,

Thomas

Quoted 125 lines · Thomas Petazzoni

Hello,

As discussed during the Buildroot Developers meeting, this patch series implement a few changes to the handling of the BR2_GCC_TARGET_{ARCH,CPU,TUNE} options.

In sequence, this patch series:

- PATCH 1 introduces a number of ARM architecture blind options:
BR2_ARM_CPU_ARMV4, BR2_ARM_CPU_ARMV5, BR2_ARM_CPU_ARMV6, BR2_ARM_CPU_ARMV7A. These options will allow to simplify testing against an ARM architecture (instead of using each individual ARM core), and also allow to remove tests against BR2_GCC_TARGET_ARCH on ARM, since we later get rid of all values for this variable on ARM as part of a later patch in this series.

- PATCH 2 to 19 make use of those new blind options to replace a number of dependencies/conditions on individual ARM cores by dependencies/conditions on ARM architecture levels.

- PATCH 20 fixes the dhcpcd package as it uses the BR2_GCC_TARGET_ARCH value, which may not always exists on certain architectures.

- PATCH 21 and 22 remove the BR2_GCC_TARGET_ARCH values from the ARM architecture, since they are causing conflicts with the BR2_GCC_TARGET_CPU values. We now only specify the -mcpu value (through BR2_GCC_TARGET_CPU), and let gcc derive the corresponding ARM architecture. This fixes a long standing bug report where Buildroot would pass conflicting -march and -mcpu values for certain versions of gcc.

- PATCH 23 prepares ffmpeg for the removal of BR2_GCC_TARGET_TUNE by using BR2_GCC_TARGET_ARCH or BR2_GCC_TARGET_CPU instead.

- PATCH 24 to 27 modifies the architecture definitions to no longer use BR2_GCC_TARGET_TUNE, and instead use BR2_GCC_TARGET_CPU or BR2_GCC_TARGET_ARCH as appropriate.

- PATCH 28 to 30 finally get rid of BR2_GCC_TARGET_TUNE entirely since it is no longer used.

Changes since v1:

* Instead of having multiple BR2_ARM_CPU_ARMV{4,4T,5TE,etc.} per architecture level, use only one. All the follow-up patches have been fixed up following this.

* Add a patch to take into account the bug noticed by Arnout about VFP enabling in the ffmpeg package.

* Remove the two patches that have been merged.

* Add Reviewed-by tags from Yann on a certain number of patches, as he gave them on the list.

Note that I haven't done any modification of the Thumb / Thumb-2 handling suggested by Yann. This is orthogonal to this series, and can be done in a follow-up series.

Best regards,

Thomas

Thomas Petazzoni (30):
arch/arm: add blind options to know the ARM architecture
ffmpeg: use the new BR2_ARM_CPU_ARM* options
ffmpeg: fix ARM condition for --{enable,disable}-vfp
gst-ffmpeg: use the new BR2_ARM_CPU_ARM* options
gst-ffmpeg: allow usage of ARMv6 optimizations on ARMv7 platforms
gst1-libav: use the new BR2_ARM_CPU_ARM* options
gst1-libav: allow usage of ARMv6 optimizations on ARMv7 platforms
mplayer: use BR2_ARM_CPU_ARM* options
libplayer: use BR2_ARM_CPU_ARM* option
nettle: use the BR2_ARM_CPU_ARM* options
nodejs: use BR2_ARM_CPU_ARM* options
qt5: use the BR2_ARM_CPU_ARM* options
speex: use BR2_ARM_CPU_ARM* options
vo-aacenc: use the BR2_ARM_CPU_ARM* options
webkit: use BR2_ARM_CPU_ARM* options
valgrind: use the BR2_ARM_CPU_ARM* options
x264: use the BR2_ARM_CPU_ARMV7A option
libnspr: use the BR2_ARM_CPU_ARMV7A option
toolchain-external: use BR2_ARM_CPU_ARM* options
dhcpcd: do not pass --target option
arch/arm: do not distinguish revisions of ARM1136JF-S arch/arm: remove BR2_GCC_TARGET_ARCH definitions on ARM
ffmpeg: use arch and cpu instead of tune
arch/x86: get rid of BR2_GCC_TARGET_TUNE
arch/sparc: get rid of BR2_GCC_TARGET_TUNE arch/powerpc: get rid of BR2_GCC_TARGET_TUNE arch/m68k: get rid of BR2_GCC_TARGET_TUNE
gcc: do not use BR2_GCC_TARGET_TUNE anymore
toolchain-external: do not use BR2_GCC_TARGET_TUNE anymore
arch: remove the BR2_GCC_TARGET_TUNE option

 arch/Config.in                                     |  3 --
 arch/Config.in.arm                                 | 61 +++++++++++-----------
 arch/Config.in.m68k                                |  8 ---
 arch/Config.in.powerpc                             |  2 +-
 arch/Config.in.sparc                               |  4 +-
 arch/Config.in.x86                                 | 32 +-----------
 package/dhcpcd/dhcpcd.mk                           |  1 -
 package/ffmpeg/ffmpeg.mk                           | 13 +++--
 package/gcc/gcc.mk                                 |  3 --
 package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk         |  4 +-
 package/gstreamer1/gst1-libav/gst1-libav.mk        |  4 +-
 package/libnspr/libnspr.mk                         |  2 +-
 package/libplayer/Config.in                        |  3 +-
 package/mplayer/Config.in                          |  3 +-
 package/mplayer/mplayer.mk                         |  4 +-
 package/nettle/nettle.mk                           |  2 +-
 package/nodejs/Config.in                           |  4 +-
 package/qt5/Config.in                              |  2 +-
 package/speex/Config.in                            |  2 +-
 package/valgrind/Config.in                         |  7 ++-
 package/valgrind/valgrind.mk                       |  4 +-
 package/vo-aacenc/vo-aacenc.mk                     |  2 +-
 package/webkit/Config.in                           |  3 +-
 package/x264/x264.mk                               |  2 +-
 toolchain/toolchain-external/Config.in             | 14 +++--
 .../toolchain-external/ext-toolchain-wrapper.c     | 12 ++---
 toolchain/toolchain-external/toolchain-external.mk |  5 --
 27 files changed, 74 insertions(+), 132 deletions(-)
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#44 lore raw

v2 cover Removal of BR2_GCC_TARGET_TUNE and other arch/ updates

Quoted 7 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

Hello,
Ping about this series? The first 6 patches have been applied, but not the remainder. Would it be possible to apply them for the 2014.11 release, in order to solve the conflicting cflags used on ARM, and reported by many users?

Yes, I also think we should add it for 2014.11. I'll review them now and commit.

Thanks for the reminder.

Signature · 1 line
Bye, Peter Korsgaard
#45 lore raw

v2 cover Removal of BR2_GCC_TARGET_TUNE and other arch/ updates

In reply to Thomas Petazzoni
Quoted 36 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

Hello,
As discussed during the Buildroot Developers meeting, this patch series implement a few changes to the handling of the BR2_GCC_TARGET_{ARCH,CPU,TUNE} options.

In sequence, this patch series:

- PATCH 1 introduces a number of ARM architecture blind options:
BR2_ARM_CPU_ARMV4, BR2_ARM_CPU_ARMV5, BR2_ARM_CPU_ARMV6, BR2_ARM_CPU_ARMV7A. These options will allow to simplify testing against an ARM architecture (instead of using each individual ARM core), and also allow to remove tests against BR2_GCC_TARGET_ARCH on ARM, since we later get rid of all values for this variable on ARM as part of a later patch in this series.

- PATCH 2 to 19 make use of those new blind options to replace a number of dependencies/conditions on individual ARM cores by dependencies/conditions on ARM architecture levels.

- PATCH 20 fixes the dhcpcd package as it uses the BR2_GCC_TARGET_ARCH value, which may not always exists on certain architectures.

- PATCH 21 and 22 remove the BR2_GCC_TARGET_ARCH values from the ARM architecture, since they are causing conflicts with the BR2_GCC_TARGET_CPU values. We now only specify the -mcpu value (through BR2_GCC_TARGET_CPU), and let gcc derive the corresponding ARM architecture. This fixes a long standing bug report where Buildroot would pass conflicting -march and -mcpu values for certain versions of gcc.

- PATCH 23 prepares ffmpeg for the removal of BR2_GCC_TARGET_TUNE by using BR2_GCC_TARGET_ARCH or BR2_GCC_TARGET_CPU instead.

Quoted 6 lines

- PATCH 24 to 27 modifies the architecture definitions to no longer use BR2_GCC_TARGET_TUNE, and instead use BR2_GCC_TARGET_CPU or BR2_GCC_TARGET_ARCH as appropriate.

- PATCH 28 to 30 finally get rid of BR2_GCC_TARGET_TUNE entirely since it is no longer used.

Committed remainder of series, thanks!

Signature · 1 line
Bye, Peter Korsgaard