summaryrefslogtreecommitdiffstats
path: root/toolchain/toolchain-external
Commit message (Collapse)AuthorAgeFilesLines
...
* deprecated handling: introduce BR2_DEPRECATED_SINCE_xxxx_xxThomas De Schampheleire2014-01-101-4/+4
| | | | | | | | | | | | | | | | | | | | | In order to keep better track of when a feature got deprecated, and hence when it can be removed, a new set of symbols BR2_DEPRECATED_SINCE_xxxx_xx is introduced. These symbols are automatically selected when BR2_DEPRECATED is selected, and thus are transparent to the user. A deprecated feature will no longer depend on BR2_DEPRECATED directly, but rather on the appropriate BR2_DEPRECATED_SINCE_xxxx_xx. If that symbol does not yet exist, it has to be created in Config.in. When removing a deprecated feature, one should also check whether this was the last feature using the BR2_DEPRECATED_SINCE_xxxx_xx symbol, in which case the latter can be removed from Config.in. A followup patch will make sure the overview is added to the list of deprecated features in the manual, so that a buildroot core developer can easily determine which features to remove in a given development cycle. Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain/external: fix wrapper by not passing conflicting flagsYann E. MORIN2014-01-091-10/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In our wrapper, we forcibly add the -march=, -mcpu= and-mtune= flags to the actual compiler, this in an attempt to always generate correct and optimised code for the target. But in some cases, the caller knows better than we do, and passes its own set, or subset of those flags. In this case, some may conflict with the ones we pass. The most prominent offender being the Linux kernel. For example, on the ARM Raspberry Pi, the Linux kernel will set the -march=armv6 flag and no -mcpu= flag, but we pass -mcpu=arm1176jzf-s, which conflicts: drivers/scsi/scsi_trace.c:1:0: warning: switch -mcpu=arm1176jzf-s conflicts with -march=armv6 switch (and so for all the files the kernel compiles, pretty messy) (note: arm1176jzf-s is not an armv6, it is an armv6zk. Yeah...) To avoid this situation, we scan our commandline for any occurence of the possibly conflicting flags. If none is found, then we add our owns. If any is found, then we don't add any of our owns. The idea behind this is that we trust the caller to know better than we do what it is doing. Since the biggest, and sole so far, offender is the Linux kernel, then this is a rather safe bet. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Peter Korsgaard <jacmet@uclibc.org> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* package: remove the empty trailing line(s)Jerzy Grzegorek2014-01-041-1/+0
| | | | | Signed-off-by: Jerzy Grzegorek <jerzy.grzegorek@trzebnica.net> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-external: add support for the Blackfin 2013R1 toolchainThomas Petazzoni2013-12-312-1/+24
| | | | Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: mark Microblaze external toolchains as deprecatedThomas Petazzoni2013-12-311-0/+4
| | | | | | | | | | | The Xilinx Microblaze external toolchains that we had support for are very old, and are causing a huge number of build issues. Thanks to Spenser Gilliland, we now have support for Microblaze in the internal toolchain backend, and the autobuilders have been using the internal toolchain backend since then. Therefore, it's time to deprecate those old and unusable external toolchains. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: update Linaro AArch64 toolchainsThomas Petazzoni2013-12-312-14/+14
| | | | | | | | Add Linaro AArch64 2013.10 and Linaro AArch64 2013.11, and remove Linaro AArch64 2013.07 and Linaro AArch64 2013.08. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
* toolchain-external: update Linaro ARM toolchainsThomas Petazzoni2013-12-312-21/+21
| | | | | | | | | Add Linaro ARM 2013.10 and Linaro ARM 2013.11, and remove Linaro ARM 2013.07 and Linaro ARM 2013.08. The main change for those versions is the switch to eglibc 2.18. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: add Sourcery MIPS 2013.11, remove Sourcery MIPS 2012.03Thomas Petazzoni2013-12-312-28/+28
| | | | | | | | | | | | This commit adds the support for the recently release Sourcery MIPS 2013.11 toolchain (gcc 4.8, gdb 7.6, glibc 2.18), and consequently removes the support for the Sourcery MIPS 2012.03 toolchain. While we're at it, also fix the incorrect help text related to the MIPS64 multilib selection. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
* toolchain-external: add Sourcery ARM 2013.11, remove Sourcery ARM 2011.09Thomas Petazzoni2013-12-292-17/+17
| | | | | | | | | This commit adds the support for the recently release Sourcery ARM 2013.11 toolchain (gcc 4.8, gdb 7.6, glibc 2.18), and consequently removes the support for the Sourcery ARM 2011.09 toolchain. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
* toolchain-external: make sure (e)glibc isn't chosen when BR2_PREFER_STATIC_LIB=yThomas Petazzoni2013-11-111-0/+37
| | | | | | | | | | | (e)glibc doesn't support a fully statically linked userspace. Even a basic program such as Busybox fails to do authentication due to glibc loading some libraries dynamically. Therefore, we disable the possibility of using a (e)glibc toolchain when BR2_PREFER_STATIC_LIB=y. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* 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-141-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | 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-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: 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-092-1/+29
| | | | | | | | | | | | | | | | | | 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: modify the wildcard logic for shared libraries copyingThomas Petazzoni2013-10-091-5/+5
| | | | | | | | | | | | | | | | | 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-091-85/+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-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-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: refactor Stack Smashing Protection supportThomas Petazzoni2013-09-151-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | 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>
* 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>
* toolchain-external: fix lib64 symlinksSamuel Martin2013-08-271-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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>
* 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>
* ext-toolchain-wrapper: fix uboot/linux with hardfpSpenser Gilliland2013-07-211-4/+25
| | | | | | | | | | | | | | The linux kernel and uboot specify -msoft-float in order to prevent floating point code from being generated. This causes a conflict when -mfloat-abi=hard or -mfloat-abi options are specified in the wrapper. This patch removes the -mfloat-abi option from the options generated by the wrapper only when -msoft-float, -mhard-float or -mfloat-abi are specified by the user. [Peter: fix !BR_FLOAT_ABI case, simplify] Signed-off-by: Spenser Gilliland <spenser@gillilanding.com> Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* ext-toolchain-wrapper: fix typo on s/BR2_FPU/BR_FPU/Spenser Gilliland2013-07-211-1/+1
| | | | | | Signed-off-by: Spenser Gilliland <spenser@gillilanding.com> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* fix white spacesJerzy Grzegorek2013-07-201-62/+62
| | | | | Signed-off-by: Jerzy Grzegorek <jerzy.grzegorek@trzebnica.net> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* toolchain: instrument external toolchain wrapperYann E. MORIN2013-07-191-0/+9
| | | | | | | | | | If BR_DEBUG_WRAPPER is set in the envirnment, dump the actual command being exec()uted, to ease debugging issues with the wrapper. [Peter: adjust code style and output format to be cut'n'paste compatible] Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* toolchain/toolchain-external: don't use x$(...) construct or ==Thomas Petazzoni2013-07-181-4/+4
| | | | | | | | | | | With modern shells, we can simply do test using the "$(...)" = "value" form. This commit gets rid of the x$(...) = x"value" constructs and replaces == by =, which is the correct operator to test the equality of two strings with the test program. 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 <jacmet@sunsite.dk>
* toolchain: check ARM EABI vs. EABIhf for external toolchainsThomas Petazzoni2013-07-181-1/+4
| | | | | | | | | | | | | | | | | | | | Following the introduction of the support of EABIhf as a second ARM ABI, it is important to check whether the external toolchain provided by the user actually uses the ABI that has been selected in the Buildroot configuration. This commit introduces such a check by looking at the 'Tag_ABI_VFP_args' tag of the architecture-specific section of the ELF headers. This assumes that ELF is the binary format used on ARM, which may not be the case on ARM noMMU systems (they use the FLAT binary format), but Buildroot doesn't have support for such systems at the moment. Also ensure the correct CFLAGS are passed to the cross compiler for the test, so the correct variant is used in case the toolchain is multilib. [Peter: mention CFLAGS change] 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 <jacmet@sunsite.dk>
* arch/arm: add support for Thumb2Thomas Petazzoni2013-07-162-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | Until now, we were using the default ARM instruction set, as used by the toolchain: the 32 bits ARM instruction set for the internal backend, and for external toolchain, whatever default was chosen when the toolchain was generated. This commit adds support for the Thumb2 instruction set. To do so, it: * provides a menuconfig choice between ARM and Thumb2. The choice is only shown when Thumb2 is supported, i.e on ARMv7-A CPUs. * passes the --with-mode={arm,thumb} option when building gcc in the internal backend. This tells the compiler which type of instructions it should generate. * passes the m{arm,thumb} option in the external toolchain wrapper. ARM and Thumb2 code can freely be mixed together, so the fact that the C library has been built either ARM or Thumb2 and that the rest of the code is built Thumb2 or ARM is not a problem. [Peter: fix empty BR2_GCC_TARGET_MODE check] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
* toolchain-external: update config options after EABIhf introductionThomas Petazzoni2013-07-161-4/+20
| | | | | | | | | | | | | | | | | | | | | | | | The introduction of the EABIhf ABI requires a few updates to the configuration options for external toolchains, in order to ensure that the user doesn't do any invalid selection. In detail: * The Linaro ARM toolchains now depend on BR2_ARM_EABIHF, because that's the ABI they use, and it is incompatible with EABI. The comment about the availability of Linaro toolchains is updated to inform users selecting EABI that they should select EABIhf if they want to see Linaro toolchains. * The Sourcery CodeBench toolchains now depend on BR2_ARM_EABI, because that's the ABI they use. A comment is added to inform users that have selected EABIhf that Sourcery CodeBench are only available when EABI is used. * The Arago toolchains now depend on BR2_ARM_EABI, because that's the ABI they use. The description of the ARMv7 Arago toolchain is also slightly improved. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
OpenPOWER on IntegriCloud