Removal of BR2_GCC_TARGET_TUNE and other arch/ updates
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
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
@@ -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
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_ARCHfor ARM, this commit introduces a number of blind options for each ARM architecture, so that packages/toolchains that had dependencies usingBR2_GCC_TARGET_ARCHcan continue to express their dependencies. It can also be used to simplify package dependencies that were using the individual ARM core options.Signed-off-by Thomas Petazzoni <[email protected]>--- arch/Config.in.arm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)arch/Config.in.arm +1
-0@@ -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
-0choice 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_sSignature · 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. | '------------------------------^-------^------------------^--------------------'
PATCH v2 2/30 ffmpeg: use the new BR2_ARM_CPU_ARM* options
In reply to Thomas PetazzoniInstead 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
@@ -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
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.
Signed-off-by Thomas Petazzoni <[email protected]>
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@@ -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-vfpSignature · 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. | '------------------------------^-------^------------------^--------------------'
PATCH v2 3/30 ffmpeg: fix ARM condition for --{enable, disable}-vfp
In reply to Thomas PetazzoniAs 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
@@ -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
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
Signed-off-by Thomas Petazzoni <[email protected]>
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@@ -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-vfpSignature · 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. | '------------------------------^-------^------------------^--------------------'
PATCH v2 4/30 gst-ffmpeg: use the new BR2_ARM_CPU_ARM* options
In reply to Thomas PetazzoniInstead 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
@@ -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
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.
Signed-off-by Thomas Petazzoni <[email protected]>
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@@ -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. | '------------------------------^-------^------------------^--------------------'
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-armv6t2armv6t2: 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
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-armv6t2armv6t2: 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
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
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
#ifHAVE_ARMV6T2&& !CONFIG_PIC && !defined(__APPLE__)
movw \rd, #:lower16:\val
movt \rd, #:upper16:\val
#else
ldr \rd, =\val
#endif
.endmSo 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
PATCH v2 5/30 gst-ffmpeg: allow usage of ARMv6 optimizations on ARMv7 platforms
In reply to Thomas PetazzoniContrary 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
@@ -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
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.
Signed-off-by Thomas Petazzoni <[email protected]>
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@@ -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-armv6t2Signature · 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. | '------------------------------^-------^------------------^--------------------'
PATCH v2 6/30 gst1-libav: use the new BR2_ARM_CPU_ARM* options
In reply to Thomas PetazzoniInstead 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
@@ -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
PATCH v2 7/30 gst1-libav: allow usage of ARMv6 optimizations on ARMv7 platforms
In reply to Thomas PetazzoniContrary 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
@@ -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
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
@@ -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
@@ -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
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:
Signed-off-by Thomas Petazzoni <[email protected]>--- package/mplayer/Config.in | 3 +-- package/mplayer/mplayer.mk | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-)package/mplayer/Config.in +1
-2@@ -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 supportspackage/mplayer/mplayer.mk +0
-0@@ -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
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
@@ -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
PATCH v2 10/30 nettle: use the BR2_ARM_CPU_ARM* options
In reply to Thomas PetazzoniAdjust 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
@@ -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
PATCH v2 11/30 nodejs: use BR2_ARM_CPU_ARM* options
In reply to Thomas PetazzoniAdjust 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
@@ -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
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
@@ -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
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
@@ -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
PATCH v2 14/30 vo-aacenc: use the BR2_ARM_CPU_ARM* options
In reply to Thomas PetazzoniThe 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
@@ -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
PATCH v2 15/30 webkit: use BR2_ARM_CPU_ARM* options
In reply to Thomas PetazzoniThe 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
@@ -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
PATCH v2 16/30 valgrind: use the BR2_ARM_CPU_ARM* options
In reply to Thomas PetazzoniInstead 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
@@ -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
@@ -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
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
@@ -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
PATCH v2 18/30 libnspr: use the BR2_ARM_CPU_ARMV7A option
In reply to Thomas PetazzoniThe 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
@@ -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
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_ARMV7Ainstead, which will allow using Thumb2 for this package even with the other Cortex-A cores.Signed-off-by Thomas Petazzoni <[email protected]>--- package/libnspr/libnspr.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)package/libnspr/libnspr.mk +0
-0
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
PATCH v2 19/30 toolchain-external: use BR2_ARM_CPU_ARM* options
In reply to Thomas PetazzoniRefactor 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
@@ -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
PATCH v2 20/30 dhcpcd: do not pass --target option
In reply to Thomas Petazzonidhcpcd 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
@@ -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
PATCH v2 21/30 arch/arm: do not distinguish revisions of ARM1136JF-S
In reply to Thomas PetazzoniIn 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.
--- arch/Config.in.arm | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-)
arch/Config.in.arm +3 -13
@@ -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
PATCH v2 22/30 arch/arm: remove BR2_GCC_TARGET_ARCH definitions on ARM
In reply to Thomas PetazzoniOn 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
@@ -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
PATCH v2 23/30 ffmpeg: use arch and cpu instead of tune
In reply to Thomas Petazzoniffmpeg 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
@@ -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
PATCH v2 24/30 arch/x86: get rid of BR2_GCC_TARGET_TUNE
In reply to Thomas PetazzoniAccording 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
@@ -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
PATCH v2 25/30 arch/sparc: get rid of BR2_GCC_TARGET_TUNE
In reply to Thomas PetazzoniOn 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
@@ -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
PATCH v2 26/30 arch/powerpc: get rid of BR2_GCC_TARGET_TUNE
In reply to Thomas PetazzoniAccording 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
@@ -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
PATCH v2 27/30 arch/m68k: get rid of BR2_GCC_TARGET_TUNE
In reply to Thomas PetazzoniOn 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
@@ -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
PATCH v2 28/30 gcc: do not use BR2_GCC_TARGET_TUNE anymore
In reply to Thomas PetazzoniSince 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
@@ -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
PATCH v2 29/30 toolchain-external: do not use BR2_GCC_TARGET_TUNE anymore
In reply to Thomas PetazzoniSince 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
@@ -33,10 +33,9 @@ static char sysroot[PATH_MAX];* Currently, we have: * -mfloat-abi= * -march= -* -mtune= * -mcpu= */ -#define EXCLUSIVE_ARGS 4 +#define EXCLUSIVE_ARGS 3static 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
@@ -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
PATCH v2 30/30 arch: remove the BR2_GCC_TARGET_TUNE option
In reply to Thomas PetazzoniThe 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
@@ -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
v2 cover Removal of BR2_GCC_TARGET_TUNE and other arch/ updates
In reply to Thomas PetazzoniHello,
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
v2 cover Removal of BR2_GCC_TARGET_TUNE and other arch/ updates
In reply to Thomas PetazzoniHello,
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 againstBR2_GCC_TARGET_ARCHon 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_ARCHvalue, which may not always exists on certain architectures.- PATCH 21 and 22 remove the
BR2_GCC_TARGET_ARCHvalues from the ARM architecture, since they are causing conflicts with theBR2_GCC_TARGET_CPUvalues. We now only specify the -mcpu value (throughBR2_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_TUNEby usingBR2_GCC_TARGET_ARCHorBR2_GCC_TARGET_CPUinstead.- PATCH 24 to 27 modifies the architecture definitions to no longer use
BR2_GCC_TARGET_TUNE, and instead useBR2_GCC_TARGET_CPUorBR2_GCC_TARGET_ARCHas appropriate.- PATCH 28 to 30 finally get rid of
BR2_GCC_TARGET_TUNEentirely 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 theBR2_ARM_CPU_ARMV7Aoption
libnspr: use theBR2_ARM_CPU_ARMV7Aoption
toolchain-external: use BR2_ARM_CPU_ARM* options
dhcpcd: do not pass --target option
arch/arm: do not distinguish revisions of ARM1136JF-Sarch/arm: removeBR2_GCC_TARGET_ARCHdefinitions on ARM
ffmpeg: use arch and cpu instead of tune
arch/x86: get rid ofBR2_GCC_TARGET_TUNE
arch/sparc: get rid ofBR2_GCC_TARGET_TUNEarch/powerpc: get rid ofBR2_GCC_TARGET_TUNEarch/m68k: get rid ofBR2_GCC_TARGET_TUNE
gcc: do not useBR2_GCC_TARGET_TUNEanymore
toolchain-external: do not useBR2_GCC_TARGET_TUNEanymore
arch: remove theBR2_GCC_TARGET_TUNEoptionarch/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
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
v2 cover Removal of BR2_GCC_TARGET_TUNE and other arch/ updates
In reply to Thomas PetazzoniQuoted 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 againstBR2_GCC_TARGET_ARCHon 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_ARCHvalue, which may not always exists on certain architectures.- PATCH 21 and 22 remove the
BR2_GCC_TARGET_ARCHvalues from the ARM architecture, since they are causing conflicts with theBR2_GCC_TARGET_CPUvalues. We now only specify the -mcpu value (throughBR2_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_TUNEby usingBR2_GCC_TARGET_ARCHorBR2_GCC_TARGET_CPUinstead.
Quoted 6 lines
- PATCH 24 to 27 modifies the architecture definitions to no longer use
BR2_GCC_TARGET_TUNE, and instead useBR2_GCC_TARGET_CPUorBR2_GCC_TARGET_ARCHas appropriate.- PATCH 28 to 30 finally get rid of
BR2_GCC_TARGET_TUNEentirely since it is no longer used.
Committed remainder of series, thanks!
Signature · 1 line
Bye, Peter Korsgaard