toolchain-external: support gcc < 4.3
PATCH v2 1/2 toolchain-external: support gcc < 4.3
We currently support gcc as old as 4.3. However, Buildroot works perfectly well with even older gcc versions (tested with 4.1). So we can add an option BR2_TOOLCHAIN_EXTERNAL_GCC_OLD to support that. The help text of this option is written with plenty of discouragement.
We use _OLD and not something like _PRE_4_3, because at some point we will likely remove the 4.3 option and what would then require a name change.
We don't set any _AT_LEAST option in this case because it's no use - there is no lower bound on the version in this case. We therefore leave BR2_TOOLCHAIN_GCC_AT_LEAST empty (the implicit default). When it is empty, we don't do a version check at all in check_gcc_version (previously we errored out when it was empty).
---
v2: rebase on next, slightly reword commit message
We should also remove the 4.3 and 4.4 options, because they are currently unused and (after the next patch) untested in the autobuilders.
--- toolchain/helpers.mk | 3 +-- .../toolchain-external-custom/Config.in.options | 11 +++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-)
toolchain/helpers.mk +1 -2
@@ -145,8 +145,7 @@ check_kernel_headers_version = \ check_gcc_version = \ expected_version="$(strip $2)" ; \ if [ -z "$${expected_version}" ]; then \ - printf "Internal error, gcc version unknown (no GCC_AT_LEAST_X_Y selected)\n"; \ - exit 1 ; \ + exit 0 ; \ fi; \ real_version=`$(1) --version | sed -r -e '1!d; s/^[^)]+\) ([^[:space:]]+).*/\1/;'` ; \ if [[ ! "$${real_version}" =~ ^$${expected_version}\. ]] ; then \
toolchain/toolchain-external/toolchain-external-custom/Config.in.options +11 -0
@@ -59,6 +59,17 @@ config BR2_TOOLCHAIN_EXTERNAL_GCC_4_3 bool "4.3.x" select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 +config BR2_TOOLCHAIN_EXTERNAL_GCC_OLD + bool "older" + help + Use this option if your GCC version is older than any of the + above. + + Note that the Buildroot community doesn't do any testing with + such old toolchains. Some packages may fail to build in + surprising ways, or the generated root filesystem may not + work at all. Use such old toolchains at your own risk. + endchoice choice
Signature · 1 line
2.10.2
PATCH v2 2/2 toolchain: kill ADI Blackfin toolchain
This toolchain has many problems which are fixed in contemporary gcc and uClibc-ng. In addition, several hacks are needed to be able to work with this toolchain. All these hacks are removed as well. Also the package exceptions for this toolchain are removed.
The BR2_BFIN_INSTALL_FDPIC_SHARED and BR2_BFIN_INSTALL_FLAT_SHARED options don't get a legacy entry. For the ADI toolchain, there already is a legacy entry, so it doesn't make sense to add it twice. For other external toolchains, these options didn't actually work, because they rely on the specific layout of the ADI toolchain.
---
v2: new patch
--- Config.in.legacy | 8 +++ package/glog/Config.in | 3 -- package/php-amqp/Config.in | 2 - package/rabbitmq-c/Config.in | 4 -- package/tinycbor/Config.in | 2 - package/x264/Config.in | 1 - toolchain/toolchain-external/Config.in | 33 ------------ .../toolchain-external/pkg-toolchain-external.mk | 59 ---------------------- .../toolchain-external-blackfin-uclinux/Config.in | 17 ------- .../Config.in.options | 10 ---- .../toolchain-external-blackfin-uclinux.hash | 3 -- .../toolchain-external-blackfin-uclinux.mk | 33 ------------ 12 files changed, 8 insertions(+), 167 deletions(-) delete mode 100644 toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in delete mode 100644 toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in.options delete mode 100644 toolchain/toolchain-external/toolchain-external-blackfin-uclinux/toolchain-external-blackfin-uclinux.hash delete mode 100644 toolchain/toolchain-external/toolchain-external-blackfin-uclinux/toolchain-external-blackfin-uclinux.mk
Config.in.legacy +8 -0
@@ -145,6 +145,14 @@ endif ############################################################################### comment "Legacy options removed in 2017.02" +config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX + bool "Blackfin.uclinux.org 2014R1" + select BR2_LEGACY + help + The ADI Blackfin toolchain has many bugs which are fixed in + more recent gcc and uClibc-ng releases. Use the Buildroot + toolchain instead. + config BR2_PACKAGE_MAKEDEVS bool "makedevs removed" select BR2_LEGACY
package/glog/Config.in +0 -3
@@ -3,14 +3,11 @@ config BR2_PACKAGE_GLOG depends on BR2_INSTALL_LIBSTDCPP depends on BR2_TOOLCHAIN_HAS_THREADS depends on !BR2_STATIC_LIBS - # build issues with this external toolchain - depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX help C++ implementation of the Google logging module https://github.com/google/glog comment "glog needs a toolchain w/ C++, threads, dynamic library" - depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ BR2_STATIC_LIBS
package/php-amqp/Config.in +0 -2
@@ -2,7 +2,6 @@ config BR2_PACKAGE_PHP_AMQP bool "php-amqp" depends on BR2_PACKAGE_PHP depends on BR2_TOOLCHAIN_HAS_THREADS # rabbitmq-c - depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX # rabbitmq-c select BR2_PACKAGE_RABBITMQ_C help Communicate with any AMQP compliant server.
@@ -11,4 +10,3 @@ config BR2_PACKAGE_PHP_AMQP comment "php-amqp needs a toolchain w/ threads" depends on !BR2_TOOLCHAIN_HAS_THREADS - depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX
package/rabbitmq-c/Config.in +0 -4
@@ -1,9 +1,6 @@ config BR2_PACKAGE_RABBITMQ_C bool "rabbitmq-c" depends on BR2_TOOLCHAIN_HAS_THREADS - # too old uClibc, not providing posix_spawn functions - # http://autobuild.buildroot.net/results/a6c3e79c61c5a535970d03bf37b068349f766a7f/ - depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX help This is a C-language AMQP client library for use with v2.0+ of the RabbitMQ broker.
@@ -12,4 +9,3 @@ config BR2_PACKAGE_RABBITMQ_C comment "rabbitmq-c needs a toolchain w/ threads" depends on !BR2_TOOLCHAIN_HAS_THREADS - depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX
package/tinycbor/Config.in +0 -2
@@ -1,7 +1,5 @@ config BR2_PACKAGE_TINYCBOR bool "tinycbor" - # package uses fopencookie(), not available with this toolchain - depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX help Concise Binary Object Representation (CBOR) Library
package/x264/Config.in +0 -1
@@ -1,6 +1,5 @@ config BR2_PACKAGE_X264 bool "x264" - depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX # madvise() help x264 is a free software library and application for encoding video streams into the H.264/MPEG-4 AVC
toolchain/toolchain-external/Config.in +0 -33
@@ -25,9 +25,6 @@ source "toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config. # ARM big-endian source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in" -# Blackfin -source "toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in" - # MIPS (use codesourcery toolchain by default) source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in" source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in"
@@ -125,9 +122,6 @@ source "toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config. # ARM big-endian source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options" -# Blackfin -source "toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in.options" - # MIPS source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options" source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options"
@@ -156,31 +150,4 @@ config BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY Copy the gdbserver provided by the external toolchain to the target. -# When the FDPIC shared binary format is used, the corresponding libraries are -# always installed. When a different binary format is used, we offer the option -# of installing the FDPIC shared libraries. -config BR2_BFIN_INSTALL_FDPIC_SHARED - bool "Install FDPIC shared libraries" - depends on BR2_bfin && !BR2_BINFMT_FDPIC - help - The Linux kernel supports running both FDPIC and FLAT applications - concurrently if the binary format specific libraries are installed - properly. This option allows developer to install FDPIC libraries - into a buildroot rootfs image built with binary format that is not - FDPIC. - -# When the FLAT shared binary format is used, we force the installation -# of the corresponding libraries. When a different binary format is -# used, we offer the option of installing the FLAT shared libraries. -config BR2_BFIN_INSTALL_FLAT_SHARED - bool "Install FLAT shared libraries" if !BR2_BINFMT_FLAT_SHARED - depends on BR2_bfin - default y if BR2_BINFMT_FLAT_SHARED - help - The Linux kernel supports running both FDPIC and FLAT applications - concurrently if the binary format specific libraries are installed - properly. This option allows developer to install FLAT libraries - into a buildroot rootfs image built with binary format that is not - shared FLAT. - endif # BR2_TOOLCHAIN_EXTERNAL
toolchain/toolchain-external/pkg-toolchain-external.mk +0 -59
91 lines not on this page · raw message
toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in deleted +0 -17
@@ -1,17 +0,0 @@ -config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX - bool "Blackfin.uclinux.org 2014R1" - depends on BR2_bfin - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - select BR2_TOOLCHAIN_EXTERNAL_UCLIBC - select BR2_INSTALL_LIBSTDCPP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_USE_WCHAR - select BR2_TOOLCHAIN_HAS_THREADS - select BR2_TOOLCHAIN_HAS_THREADS_DEBUG - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 - select BR2_TOOLCHAIN_HAS_FORTRAN - help - Toolchain for the Blackfin architecture, from - http://blackfin.uclinux.org.
toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in.options deleted +0 -10
@@ -1,10 +0,0 @@ -if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX - -config BR2_TOOLCHAIN_EXTERNAL_PREFIX - default "bfin-uclinux" if BR2_BINFMT_FLAT - default "bfin-linux-uclibc" if BR2_BINFMT_FDPIC - -config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL - default "toolchain-external-blackfin-uclinux" - -endif
toolchain/toolchain-external/toolchain-external-blackfin-uclinux/toolchain-external-blackfin-uclinux.hash deleted +0 -3
@@ -1,3 +0,0 @@ -# Locally calculated -sha256 e424e90d8481d942a40266d78d1488726561fed3ec38403094f98055e61889d0 blackfin-toolchain-2014R1-RC2.i386.tar.bz2 -sha256 c65b1b4b918d5185349d62a3b7bf43b4b21e1175c52598ec047ca56b3f11d857 blackfin-toolchain-uclibc-full-2014R1-RC2.i386.tar.bz2
toolchain/toolchain-external/toolchain-external-blackfin-uclinux/toolchain-external-blackfin-uclinux.mk deleted +0 -33
@@ -1,33 +0,0 @@ -################################################################################ -# -# toolchain-external-blackfin-uclinux -# -################################################################################ - -TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_VERSION_MAJOR = 2014R1 -TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_VERSION = $(TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_VERSION_MAJOR)-RC2 - -ifeq ($(BR2_BINFMT_FLAT),y) -TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_SUBDIR = bfin-uclinux -else -TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_SUBDIR = bfin-linux-uclibc -endif - -TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_SITE = http://downloads.sourceforge.net/project/adi-toolchain/$(TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_VERSION_MAJOR)/$(TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_VERSION)/i386 -TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_SOURCE = blackfin-toolchain-$(TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_VERSION).i386.tar.bz2 -TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_EXTRA_DOWNLOADS = blackfin-toolchain-uclibc-full-$(TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_VERSION).i386.tar.bz2 - -TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_STRIP_COMPONENTS = 3 - -# Special handling for Blackfin toolchain, because of the split in two -# tarballs, and the organization of tarball contents. The tarballs -# contain ./opt/uClinux/{bfin-uclinux,bfin-linux-uclibc} directories, -# which themselves contain the toolchain. This is why we strip more -# components than usual. -define TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_UCLIBC_EXTRA_EXTRACT - $(call suitable-extractor,$(TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_EXTRA_DOWNLOADS)) $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_EXTRA_DOWNLOADS) | \ - $(TAR) --strip-components=3 -C $(@D) $(TAR_OPTIONS) - -endef -TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_POST_EXTRACT_HOOKS += TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_UCLIBC_EXTRA_EXTRACT - -$(eval $(toolchain-external-package))
Signature · 1 line
2.10.2
PATCH v2 2/2 toolchain: kill ADI Blackfin toolchain
Hi Arnout,
Arnout Vandecappelle (Essensium/Mind) wrote,
Quoted 5 lines
This toolchain has many problems which are fixed in contemporary gcc and uClibc-ng. In addition, several hacks are needed to be able to work with this toolchain. All these hacks are removed as well. Also the package exceptions for this toolchain are removed.
Quoted 7 lines
The
BR2_BFIN_INSTALL_FDPIC_SHAREDandBR2_BFIN_INSTALL_FLAT_SHAREDoptions don't get a legacy entry. For the ADI toolchain, there already is a legacy entry, so it doesn't make sense to add it twice. For other external toolchains, these options didn't actually work, because they rely on the specific layout of the ADI toolchain.
ACK from me. May be we convince ADI people to get more stuff fixed upstream, when this toolchain is removed.
best regards
Waldemar
Thomas Petazzoni
AppliedPATCH v2 2/2 toolchain: kill ADI Blackfin toolchain
In reply to Arnout Vandecappelle (Essensium/Mind)Hello,
Config.in.legacy endif · line 149
Quoted 2 lines · Arnout Vandecappelle (Essensium/Mind)
Config.in.legacy +2
-0+config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX + bool "Blackfin.uclinux.org 2014R1"
This prompt was a bit short, so I changed it to:
bool "Blackfin.uclinux.org 2014R1 toolchain removed"
Applied to next. Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com
Thomas Petazzoni
AppliedPATCH v2 1/2 toolchain-external: support gcc < 4.3
In reply to Arnout Vandecappelle (Essensium/Mind)Hello,
Quoted 15 lines · Arnout Vandecappelle (Essensium/Mind)
We currently support gcc as old as 4.3. However, Buildroot works perfectly well with even older gcc versions (tested with 4.1). So we can add an option
BR2_TOOLCHAIN_EXTERNAL_GCC_OLDto support that. The help text of this option is written with plenty of discouragement.We use
_OLDand not something like_PRE_4_3, because at some point we will likely remove the 4.3 option and what would then require a name change.We don't set any
_AT_LEASToption in this case because it's no use - there is no lower bound on the version in this case. We therefore leaveBR2_TOOLCHAIN_GCC_AT_LEASTempty (the implicit default). When it is empty, we don't do a version check at all incheck_gcc_version(previously we errored out when it was empty).
Quoted 3 lines
---
v2: rebase on next, slightly reword commit message
Applied to next, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com