summaryrefslogtreecommitdiffstats
path: root/toolchain
Commit message (Collapse)AuthorAgeFilesLines
...
* Config.in files: whitespace cleanupThomas De Schampheleire2013-11-111-33/+33
| | | | | | | | | | This patch fixes the following whitespace problems in Config.in files: - trailing whitespace - spaces instead of tabs for indentation - help text not indented with tab + 2 spaces Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-external: factorize regular expressionsThomas Petazzoni2013-11-111-10/+22
| | | | | | | | | | Based on a suggestion from Peter, this commit factorizes the logic and regular expressions that are used to find the sysroot and libdir for a given compiler. It reduces a bit the duplication of code, and centralizes the most bizarre part of this logic in one place. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-external: update commentsThomas Petazzoni2013-11-111-18/+24
| | | | | | [Peter: drop extra # as pointed out by Baruch Siach] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-external: fix the SYSROOT_DIR mangling logicThomas Petazzoni2013-11-111-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In a1d94aaa3a21911 ('toolchain-external: add support for musl C library'), we made the following change to the SYSROOT_DIR mangling logic: - SYSROOT_DIR=`echo $${LIBC_A_LOCATION} | sed -r -e 's:usr/lib(32|64)?/(.*/)?libc\.a::'` ; \ + SYSROOT_DIR=`echo $${LIBC_A_LOCATION} | sed -r -e 's:(usr/)?lib(32|64)?/(.*/)?libc\.a::'` ; \ This was needed to accomodate for musl based toolchains that don't have libc.a in usr/lib/..., but directory in lib/... Basically, the change makes the usr/ at the beginning optional. However, with the very permissive (.*) matching in the middle of the path, the change above had an unexpected consequence: any path contain '/lib' would be truncated before this lib. As an example, Peter reported that his builds, running from /var/lib/buildbot/ were no longer working because the SYSROOT_DIR was decided to be /var instead of something like /var/lib/buildbot/buildroot/output/host/opt/ext-toolchain/arm-linux-gnueabihf/libc/. So, this commit changes (again!) this regexp by changing (.*) to ([^/]*), the idea being that it will match only *one* path component. Note that this intermediate (.*) directory was added in e6e60becb008 ('external-toolchain: add support for Linaro 2012.01') to accomodate for Linaro toolchains that have a subdirectory in their sysroot named after the target tuple: $ ./output/host/opt/ext-toolchain/bin/arm-linux-gnueabihf-gcc -print-file-name=libc.a /home/thomas/projets/buildroot/output/host/opt/ext-toolchain/bin/../arm-linux-gnueabihf/libc/usr/lib/arm-linux-gnueabihf/libc.a In addition to this, this commit also makes sure that the change making usr/ optional is properly reported on all the instances of this regular expression. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Avoid toolchain download when it is preinstalledLaurent GONZALEZ2013-11-111-0/+8
| | | | | | | | | | | | For configurations using a toolchain that is preinstalled on the host, <pkg>_SITE and <pkg>_SOURCE variables must be kept empty to avoid downloading any toolchain package. The actual implementation has been proposed by Thomas Petazzoni. Signed-off-by: GONZALEZ Laurent <br2@gezedo.com> Reviewed-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Tested-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* glibc, toolchain-external: copy libthread_db when gdb is enabledThomas Petazzoni2013-10-301-1/+1
| | | | | | | | | | | | As Samuel Martin noticed, libthread_db is not only needed when cross-gdb+gdbserver is used, but also when the native gdb is used on the target. As a consequence, this patch modifies the glibc package and the external toolchain logic to ensure that libthread_db is copied to the target either when the native gdb or gdbserver is enabled, by relying on the BR2_PACKAGE_GDB option, which is enabled when native gdb and/or gdbserver are enabled. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: fix visibility and length of Linaro toolchain commentThomas Petazzoni2013-10-301-3/+2
| | | | | | | | | | | | | | | | | Maxime Ripard reported that the Linaro toolchains were not visible when selecting a Cortex-A, but forgetting to set the EABI to EABIhf. While this is expected, Buildroot should normally should a comment in this case. However, the comment is only visible when the selected ARM architecture is not ARMv7 *and* the EABI is not EABIhf. Instead, make the comment visible when either the selected architecture is not ARMv7 *or* when the selected EABI is not EABIhf. While we're at it, reword the comment text so that it actually fits within the limits of the menuconfig screen. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reported-by: Maxime Ripard <maxime.ripard@free-electrons.com> Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
* toolchain-external: add missing symlink for Linaro toolchainsThomas Petazzoni2013-10-301-2/+3
| | | | | | | | | | | | | | | | | In 11ec38b6950 ("toolchain-external: fix Linaro ARM toolchain support"), we fixed the support for Linaro EABIhf toolchains by adding a /lib/arm-linux-gnueabihf -> /lib symbolic link. This is needed because the dynamic loader looks for libraries in /lib/arm-linux-gnueabihf rather than the usual /lib, but Buildroot installs all libraries in /lib. However, we forgot that the dynamic loader also loads libraries from /usr/lib/arm-linux-gnueabihf rather than /usr/lib, so this patch fixes that by adding the necessary symbolic link. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reported-by: Maxime Ripard <maxime.ripard@free-electrons.com> Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
* ext-toolchain: MIPS: Select correct endianness for the targetMarkos Chandras2013-10-303-19/+20
| | | | | | | | | | | | | | Previously, an external-toolchain on a mipsel/mips64el target didn't select the appriopriate endianness but it asked the user to set the correct CFLAGS on his/her own. We fix this by appending "-EL" to the toolchain wrapper options if the user has selected a mipsel/mips64el target. [Thomas: remove unneeded test on BR2_ENDIAN, since mipsel and mips64el are always little-endian, and add the corresponding big endian case.] Signed-off-by: Markos Chandras <markos.chandras@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Remove redundant dollar signs in Config.in filesThomas De Schampheleire2013-10-261-1/+1
| | | | | | | | | | | | | | | Some Config.in(.host) files have constructs like: config FOO_VERSION string default "1.0" if FOO_1_0 default "2.0" if FOO_2_0 default $FOO_CUSTOM_VERSION if FOO_CUSTOM The dollar sign here is not needed and confusing, so can be removed. Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-external: add a specific check to avoid Angstrom toolchainsThomas Petazzoni2013-10-142-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | The Angstrom toolchains available at http://www.angstrom-distribution.org/toolchains/ are not usable as external toolchains in Buildroot, because they are not pure toolchains with just the C library, but instead complete SDKs with many cross-compiled libraries (Gtk, Qt, glib, neon, sqlite, X.org, and many more, approximately 200 MB of libraries). Buildroot cannot use such toolchains, and while this is documented in our manual, some users still try to do this. Today, one such user came on the IRC channel, reporting a build problem, which we started investigating, only to realize after a long time that he was using an Angstrom toolchain. To avoid this problem in the future, we explicitly check if the toolchain is from Angstrom by looking at the vendor part of the tuple exposed by the toolchain: as soon as it is <something>-angstrom-<something-else>, we reject the toolchain with an explanation. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-buildroot: fix s/Trigerring/Triggering/ typoPeter Korsgaard2013-10-091-1/+1
| | | | | Reported-by: Thomas De Schampheleire <patrickdepinguin@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-external: fix Linaro ARM toolchain supportThomas Petazzoni2013-10-091-1/+16
| | | | | | | | | | | | | | | | | | This commit fixes bug #6452 (eglibc from Linaro 2013.07 not copied to target correctly) by: * Copying only the relevant library loader to the target on ARMhf (i.e ld-linux-armhf.so and not ld.so*). This is needed since Linaro toolchains provide two library loaders, one ARMv7 hf, and one ARMv4 soft-float. * Making sure a $(TARGET_DIR)/lib/arm-linux-gnueabihf/ symbolic link to $(TARGET_DIR)/lib/ exists, since the dynamic loader of Linaro toolchains expects libraries to be found in $(TARGET_DIR)/lib/arm-linux-gnueabihf/. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-external: improve target library copy logicThomas Petazzoni2013-10-091-7/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The copy_toolchain_lib_root function is responsible for copying a given library (and its symbolic link) to the target filesystem. To do so, it looks for the library in various locations, and then iterates over the symbolic link all the way to the library, copying them as needed to the target filesystem. However, the latest Linaro toolchains bring an interesting use case: the lib/ directory in the toolchain is organized as follows: - ld-linux.so.3 -> arm-linux-gnueabi/ld-2.17...so - ld-linux-armhf.so.3 -> arm-linux-gnueabihf/ld-2.17...so - arm-linux-gnueabi/ - all ARMv4T soft float libraries - arm-linux-gnueabihf/ - all ARMv7 hard float libraries In order to match what we do with all other toolchains, we want all those libraries and symbolic links to be copied directly under $(TARGET_DIR)/lib. This commit does that by adjusting the copy logic. This is part of the fix for bug #6452 (eglibc from Linaro 2013.07 not copied to target correctly). Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-external: update Linaro AArch64 toolchainThomas Petazzoni2013-10-092-10/+10
| | | | | Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-external: update Linaro ARM toolchainThomas Petazzoni2013-10-092-13/+13
| | | | | Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-external: improve help text of some optionsThomas Petazzoni2013-10-091-4/+11
| | | | | Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-external: add support for musl C libraryThomas Petazzoni2013-10-094-1/+49
| | | | | | | | | | | | | | | | | | This commit adds support for external toolchains based on the musl C library, as available from http://www.musl-libc.org. Note that the pre-built musl toolchains available from http://musl.codu.org/ are not working for the moment, since they lack sysroot support. However, this problem has been reported to the maintainer, who has already added sysroot support in his scripts at https://bitbucket.org/GregorR/musl-cross, and therefore the next version of the pre-built toolchains should work with Buildroot out-of-the-box. In the mean time, the musl-cross script must be used to build the toolchain. [Peter: reword comment] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain: do not check largefile, wchar, IPv6 and locale for glibc toolchainsThomas Petazzoni2013-10-091-4/+0
| | | | | | | | | | | | | | The check_glibc function contained checks to verify that the user had properly enabled the largefile, IPv6, locale and wchar options, to match how glibc is configured. This was useful when the support for glibc external toolchains was introduced, but since then, we added the BR2_TOOLCHAIN_USES_GLIBC symbol that automatically enables largefile, IPv6, locale and wchar support when a glibc or eglibc external toolchain is used. Therefore, many of the check_glibc checks are useless now, so we can remove these. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain: fix the helpers.mk commentThomas Petazzoni2013-10-091-6/+7
| | | | | | | | | | | | | | | | | | | | This commit fixes various typos and mistakes in the comment at the top of the helpers.mk file: * usefull -> useful * The optional stripping of libraries no longer exists, so there's no reason to mention it. * Indicate that the copy_toolchain_lib_root function is also used by the glibc package, not only by the external toolchain logic. * Separate more clearly the top comment introducing the entire file, from the comment introducing the first function. [Peter: reword top comment, add missing 'by'] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain: modify the wildcard logic for shared libraries copyingThomas Petazzoni2013-10-092-6/+6
| | | | | | | | | | | | | | | | | Until now, the copy_toolchain_lib_root function took as argument the base name of a library (e.g: libm.so), and was assuming that the usual scheme libm.so.<x> being a symbolic link to the real library was used. However, with musl based toolchains, the C library is named libc.so directly, with no symbolic link at all. Therefore, this commit changes the copy_toolchain_lib_root to move the responsibility of using a wildcard or not after the library name the caller's responsibility. So, all the existing LIB_EXTERNAL_LIBS values are modified to have a .* at the end, so that the behavior is effectively unchanged. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-external: conditionalize the installation of librariesThomas Petazzoni2013-10-091-8/+11
| | | | | | | | | | | | | | | | | | | The external toolchain code makes the assumption that all C libraries have a ld*.so, libc.so, libcrypt.so, libdl.so, libgcc_s.so, libm.so, libnsl.so, libresolv.so, libutil.so, and when thread support is enabled, libpthread.so, etc. However, this is not the case with the musl C library, which integrates all the functionalities in a single libc.so file. In preparation of the support of the musl library, we make the current value of LIB_EXTERNAL_LIBS conditional to glibc or uClibc. The addition of additional libraries through BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS is kept outside the condition, at the end. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-external: convert to the package infrastructureThomas Petazzoni2013-10-092-89/+69
| | | | | | | | | | | | | | | | | | | | | This commit converts the 'toolchain-external' logic to the package infrastructure. The TOOLCHAIN_EXTERNAL_DIR variable (which points to where the toolchain is located) is renamed to TOOLCHAIN_EXTERNAL_INSTALL_DIR, because the former conflicts with the package infrastructure (which defines the <pkg>_DIR variable for each package as pointing to its build directory). The new _EXTRA_DOWNLOADS mechanism is used for Blackfin toolchains. The extract, configuration and installation steps are converted inside the <pkg>_EXTRACT_CMDS, <pkg>_CONFIGURE_CMDS and <pkg>_INSTALL_STAGING_CMDS. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Acked-by: Luca Ceresoli <luca@lucaceresoli.net> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-buildroot: convert to the package infrastructureThomas Petazzoni2013-10-092-9/+17
| | | | | | | | | | | This commit converts the toolchain-buildroot logic to the package infrastructure. The package is fairly simple as it only defines BUILDROOT_LIBC, and depends on host-gcc-final to get the overall internal toolchain build logic started. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain: introduce a virtual packageThomas Petazzoni2013-10-091-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit introduces a virtual package called 'toolchain', located in 'toolchain/toolchain', which simply depends on 'toolchain-buildroot' or 'toolchain-external' depending on the selected toolchain backend. For now, toolchain-buildroot and toolchain-external are still manual make targets, but the following patches convert those backends to use the package infrastructure as well. In addition to this: * The main Makefile is modified to always make BASE_TARGETS point to this new toolchain virtual package. * The main Makefile is changed to include all the toolchain/*/*.mk files: the toolchain virtual package, and the toolchain-buildroot and toolchain-external directories. * The dependency of the toolchain on prepare dirs and dependencies is moved to the toolchain virtual package. It is moved as a prerequisite of the "toolchain-source" rule to ensure that all directories are prepared before we even start extracting the toolchain. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Acked-by: Luca Ceresoli <luca@lucaceresoli.net> Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-external: make ext-tool.mk includable in all casesThomas Petazzoni2013-10-061-1/+2
| | | | | | | | | | | | The ext-tool.mk logic uses the TOOLCHAIN_EXTERNAL_PREFIX variable unconditionally, even if the external toolchain is not used. Until now this wasn't a problem since ext-tool.mk was only included when the external toolchain backend was selected, but the next patches are going to include this file unconditionally. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-crosstool-ng: remove supportThomas Petazzoni2013-10-069-2020/+1
| | | | | | | | | | In order to avoid the work of converting the toolchain-crosstool-ng logic to the package infrastructure, we remove it from Buildroot, since it has been deprecated since quite some time. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Revert "toolchain-internal: skip gcc-intermediate when possible"Thomas Petazzoni2013-10-041-9/+0
| | | | | | | | | | | | | While the idea of skipping the intermediate gcc step seems to work fine in most situations, it causes problems with the SSP support. Until we can figure out a proper solution for this problem, we need to revert back to the previous solution of a three stages build. This reverts commit 2babed4a50fcd050abc4686e05e24d0e374d10a8. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-wrapper: minor code style fixupPeter Korsgaard2013-09-231-1/+1
| | | | | | Missed from 60cb290475c (add option to print one argument per line). Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* toolchain/wrapper: add option to print one argument per lineYann E. MORIN2013-09-221-8/+17
| | | | | | | | | | | | | | | | | | | | | | | | | In case there are many arguments passed to the tools, the command line can get very long, and difficult to parse visually. For example, the Linux kernel passes a lot of arguments to gcc (at least 45, which gives 53 with our hard-coded args). Looking at such a command line is daunting. So, add the possibility to print each argument on its own line. Also, enclose all args between single quotes, so the command line can be safely copy-pasted without special chars (spaces, $) being inrerpreted by the shell. Add blurb about toolchain-wrapper to documentation at the same time. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com> Acked-by: Luca Ceresoli <luca@lucaceresoli.net> Tested-by: Luca Ceresoli <luca@lucaceresoli.net> Acked-by: Samuel Martin <s.martin49@gmail.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* toolchain-external: Update Sourcery CodeBench MIPS toolchainMarkos Chandras2013-09-171-1/+1
| | | | | | | | | | | Update to the latest update for the 2013.05 toolchain released on 11 September 2013. https://sourcery.mentor.com/GNUToolchain/release2554 Signed-off-by: Markos Chandras <markos.chandras@imgtec.com> Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* toolchain: update Linaro AArch64 external toolchainsThomas Petazzoni2013-09-152-13/+13
| | | | | Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* toolchain: update Linaro ARM external toolchainsThomas Petazzoni2013-09-152-29/+32
| | | | | Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* toolchain: move elf2flt option inclusion to toolchain-buildroot/Config.inThomas Petazzoni2013-09-153-10/+1
| | | | | | | | | | The only remaining thing in toolchain-buildroot/Config.in.2 is the inclusion of the elf2flt option. It doesn't really make sense to have a separate Config.in file for that, so let's move this to toolchain-buildroot/Config.in. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* toolchain: refactor Stack Smashing Protection supportThomas Petazzoni2013-09-155-10/+15
| | | | | | | | | | | | | | | | | | | | | | | | | This commit refactors how Stack Smashing Protection support is handled in Buildroot: *) It turns the BR2_TOOLCHAIN_BUILDROOT_USE_SSP option into an option that only enables the SSP support in uClibc, when using the internal toolchain backend. *) It adds an hidden BR2_TOOLCHAIN_HAS_SSP option that gets enabled when the toolchain has SSP support. Here we have the usual dance: glibc/eglibc in internal/external backend always select this option, in the case of uClibc/internal, it gets selected when BR2_TOOLCHAIN_BUILDROOT_USE_SSP is enabled, in the case of uClibc/external, there is a new configuration option that the user must select (or not) depending on whether the toolchain has SSP support. *) It adds a new options BR2_ENABLE_SSP in the "Build options" menu, to enable the usage of SSP support, by adding -fstack-protector-all to the CFLAGS. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* toolchain: add support for glibcThomas Petazzoni2013-09-151-1/+23
| | | | | | | | | | | | | The support for eglibc 2.17 was added to the internal toolchain backend for 2013.08. This commit now adds glibc 2.18 support to the internal toolchain backend. Since the building procedure is very similar to the one of eglibc, we have renamed the 'eglibc' package to 'glibc', and made it capable of handling either glibc or eglibc. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* gcc: move C++ support option next to Fortran/Objective-CThomas Petazzoni2013-09-151-13/+0
| | | | | | | | | | | | The option to enable C++ support was still located in toolchain/toolchain-buildroot/Config.in.2, with misc other toolchain options. It seems more logical to have this option with the other options to select the languages supported by the cross-compiler, so we move it next to the Fortran/Objective-C options in package/gcc/Config.in.host. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* toolchain-internal: skip gcc-intermediate when possibleThomas Petazzoni2013-09-151-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When NPTL support was introduced, gcc required a three stages build process. Since gcc 4.7, this is no longer necessary, and it is possible to get back to a two stages build process. This patch takes advantage of this, by doing a two stages build process when possible. We introduce a few hidden kconfig options: * BR2_GCC_VERSION_NEEDS_THREE_STAGE_BUILD, which is set by the gcc Config.in logic to indicate that the compiler might need a three stages build. Currently, all versions prior to 4.7.x are selecting this kconfig option. * BR2_TOOLCHAIN_LIBC_NEEDS_THREE_STAGE_BUILD, which indicates whether the C library might need a three stages build. This is the case for eglibc, and uClibc when NPTL is enabled. * BR2_TOOLCHAIN_NEEDS_THREE_STAGE_BUILD finally is enabled when both of the previous options are enabled. It indicates that a three stages build is actually needed. In addition to those options, the uClibc/gcc build logic is changed to use only a two stages build process when possible. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* infra: introduce suitable-extractor helper functionThomas De Schampheleire2013-09-061-3/+3
| | | | | | | | | | In order to simplify determining the right extractor tool for a given file type, this patch introduces a make function 'suitable-extractor'. Its usage is $(call suitable-extractor,filename), and it returns the path to the suitable extractor. Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* toolchain-external: Add Sourcery CodeBench for Nios-IIEzequiel Garcia2013-09-022-0/+17
| | | | | | | | | This commit adds the pre-built Sourcery CodeBench toolchains currently available for the Nios-II architecture. Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* nios2: Add new architectureEzequiel Garcia2013-09-021-2/+3
| | | | | | | | | | | | | | This commit adds very basic support to build for the Nios II architecture. Toolchain support is still missing and instead we need to use an external custom toolchain. Notice that this architecture had been previously removed in Buildroot 2010.05-rc1 release (as explained in the CHANGES file) and this commit adds it back. Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* Merge branch 'next'Peter Korsgaard2013-08-311-0/+1
|\
| * eglibc: needs MMUGustavo Zacarias2013-08-101-0/+1
| | | | | | | | | | Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* | toolchain-external: fix lib64 symlinksSamuel Martin2013-08-272-20/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Always link lib64 or lib32 to lib * Only copy the architecture's lib directory to staging * Also cleanup a couple of mkdirs (concerning some 'lib' directories). Before this patch: $ ls -ld host/usr/x86_64-buildroot-linux-gnu/sysroot/{,usr/}lib* target/{usr/,}lib* drwxr-xr-x 2 samuel users 4.0K Aug 12 22:26 host/usr/x86_64-buildroot-linux-gnu/sysroot/lib/ drwxr-xr-x 2 samuel users 4.0K Aug 12 22:27 host/usr/x86_64-buildroot-linux-gnu/sysroot/lib64/ drwxr-xr-x 5 samuel users 4.0K Oct 30 2012 host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/ drwxr-xr-x 5 samuel users 4.0K Aug 12 22:27 host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib64/ drwxr-xr-x 3 samuel users 4.0K Oct 30 2012 host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/libexec/ drwxr-xr-x 2 samuel users 4.0K Aug 12 22:27 target/lib/ lrwxrwxrwx 1 samuel users 3 Aug 12 22:27 target/lib64 -> lib/ drwxr-xr-x 2 samuel users 4.0K Aug 12 22:27 target/usr/lib/ lrwxrwxrwx 1 samuel users 3 Aug 12 22:27 target/usr/lib64 -> lib/ $ find . -type l -xtype l # find broken symlinks find: `./host/usr/x86_64-buildroot-linux-gnu/sysroot/lib64/lib': Too many levels of symbolic links find: `./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib64/lib': Too many levels of symbolic links ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libnss_files.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libnss_nis.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libnss_compat.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libnss_nisplus.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libutil.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libthread_db.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libcidn.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libcrypt.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libm.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libnss_hesiod.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libnsl.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/librt.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libnss_db.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libanl.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libBrokenLocale.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libnss_dns.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libresolv.so ./host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/libdl.so ./target/etc/resolv.conf ./target/dev/log After this patch: $ ls -ld host/usr/x86_64-buildroot-linux-gnu/sysroot/{,usr/}lib* target/{usr/,}lib* drwxr-xr-x 2 samuel users 4.0K Oct 30 2012 host/usr/x86_64-buildroot-linux-gnu/sysroot/lib/ lrwxrwxrwx 1 samuel users 5 Aug 12 22:36 host/usr/x86_64-buildroot-linux-gnu/sysroot/lib64 -> lib/ drwxr-xr-x 5 samuel users 4.0K Oct 30 2012 host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib/ lrwxrwxrwx 1 samuel users 5 Aug 12 22:36 host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/lib64 -> lib/ drwxr-xr-x 3 samuel users 4.0K Oct 30 2012 host/usr/x86_64-buildroot-linux-gnu/sysroot/usr/libexec/ drwxr-xr-x 2 samuel users 4.0K Aug 12 22:36 target/lib/ lrwxrwxrwx 1 samuel users 3 Aug 12 22:36 target/lib64 -> lib/ drwxr-xr-x 2 samuel users 4.0K Aug 12 22:36 target/usr/lib/ lrwxrwxrwx 1 samuel users 3 Aug 12 22:36 target/usr/lib64 -> lib/ $ find . -type l -xtype l # find broken symlinks ./target/etc/resolv.conf ./target/dev/log Fixes http://autobuild.buildroot.net/results/23fb6b1479d2b5906b72c9437b06ab4700ff246d/ Signed-off-by: Samuel Martin <s.martin49@gmail.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* | toolchain-external: Restrict Sourcery CodeBench toolchains for MIPS/n32Markos Chandras2013-08-131-0/+6
| | | | | | | | | | | | | | n32 is not supported in Sourcery CodeBench toolchains. Signed-off-by: Markos Chandras <markos.chandras@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* | toolchain-external: don't create gdb symlink when building host-gdbThomas De Schampheleire2013-08-101-2/+8
|/ | | | | | | | | | | | | | | | | | | | The external-toolchain infrastructure creates symbolic links for all tools in the host directory. However, when buildroot builds its own version of a cross debugger (BR2_PACKAGE_HOST_GDB), and the toolchain also provides a cross debugger, there would be two symbolic links for gdb in the host directory, which is confusing. An example use case is where the external toolchain only provides a 64-bit gdbserver (e.g. Cavium Networks SDK) but the target is completely 32-bit (e.g. n32 ABI). In this case, using gdbserver on target requires copying a bunch of 64-bit libraries to the target as well, just for gdb. In this case, one can let buildroot build both gdbserver as cross-gdb (both in 32-bit). This patch modifies the symlink creation so that no gdb (or gdbtui) symlink is created if buildroot is going to build a cross-gdb. Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Revert "uClibc: Add uClibc patch to fix MIPS64/n64 interpreter"Thomas Petazzoni2013-07-311-52/+0
| | | | | | | | | This reverts commit 1c834dd1ce5d8b6eedb36126c878dd3f9dbbdb55. This patch has been mistakenly applied, while a new version of it had already been merged. Thanks Gustavo for noticing. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* uClibc: Add uClibc patch to fix MIPS64/n64 interpreterMarkos Chandras2013-07-301-0/+52
| | | | | | | | | | | | uClibc picks the wrong interpreter for MIPS64/n64. This patch fixes this problem by checking the selected MIPS ABI instead of the MIPS variant. This patch was sent upstream: http://lists.uclibc.org/pipermail/uclibc/2013-July/047838.html Signed-off-by: Markos Chandras <markos.chandras@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: support toolchains with lib32 directoriesThomas De Schampheleire2013-07-271-10/+10
| | | | | | | | | | Some toolchains, like the Cavium Networks' one, have lib32/ and lib64/ directories, while the standard lib/ is empty. To find libc.a, buildroot currently only looks in lib/ and lib64/. This patch extends the search to lib32/ as well. Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain/buildroot: properly handle SSPGustavo Zacarias2013-07-271-1/+1
| | | | | | | | | | | | | | The current SSP handling is incomplete. First we need to build uClibc with SSP support for a complete "experience". Second, it doesn't hurt to add -fstack-protector-all to the CFLAGS/CXXFLAGS since most users would expect buildroot to do this rather than adding the flags themselves. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
OpenPOWER on IntegriCloud