summaryrefslogtreecommitdiffstats
path: root/toolchain
Commit message (Collapse)AuthorAgeFilesLines
* toolchain-external: fix getent installation with Codescape MIPS toolchainsThomas Petazzoni2016-03-301-0/+22
| | | | | | | | | | | | | | | | | | | | | | When a toolchain is glibc based, the getent package assumes that $(STAGING_DIR)/usr/bin contains the getent program. Unfortunately, the Codescape MIPS toolchains do not conform with this: $(STAGING_DIR)/usr/{bin,sbin} are empty, and instead three directories are provided: bin-o32, bin-n32 and bin-n64 (ditto for sbin), one for each supported MIPS ABI. Since this is a toolchain-specific oddity, we handle it by adding a post-install fixup hook that creates $(STAGING_DIR)/usr/{bin,sbin} as symbolic link to the appropriate directory. Fixes: http://autobuild.buildroot.org/results/9c0ee836021553319f166f9de88750535aee0a58/ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Tested-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain: introduce BR2_TOOLCHAIN_HAS_LIBATOMICThomas Petazzoni2016-03-201-2/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Until now, we were assuming that whenever you have gcc 4.8, libatomic is available. It turns out that this is not correct, since libatomic will not be available if thread support is disabled in the toolchain. Therefore, __atomic_*() intrinsics may not be available even if the toolchain uses gcc 4.8. To solve this problem, we introduce a BR2_TOOLCHAIN_HAS_LIBATOMIC boolean, which indicates whether the toolchain has libatomic. It is the case when you are using gcc >= 4.8 *and* thread support is enabled. We then use this new BR2_TOOLCHAIN_HAS_LIBATOMIC to define BR2_TOOLCHAIN_HAS_ATOMIC. As explained in the comment, on certain architectures, libatomic is technically not needed to provide the __atomic_*() intrinsics since they might be all built-in. However, since libatomic is only absent in non-thread capable toolchains, it is not worth making things more complex for such seldomly used configuration. Note that we are introducing the intermediate BR2_TOOLCHAIN_HAS_LIBATOMIC option because it will be useful on its own for certain packages. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> [Thomas: improve Config.in comment using a suggestion from Yann.]
* toolchain/external: add hashes for actual sourcesYann E. MORIN2016-03-191-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As we currently download the actual sources as part of saving the legal-info, we do not check the hashes of those downloads. That's because, during legal-info, there is not package involved, and thus there's no path to an actual .hash file. However, this precludes legal-info from working in off-line mode. A subsequent patch will make it possible to do so, and actual sources will be downloaded as another classical package download. This will have two consequences: - first, we will be able to add hashes for actual sources, so we can ensure their integrity, - second, and as a direct consequence of the above, when a .hash file is present, it would have to list all the hashes for that package, or that would be treated as an error. Currently, the only package that falls in this case is the external- toolchain, for which we have means to retrieve the sources for some of the toolchains. So we just add hashes for those actual external-toolchain sources we may have to download. Those hashes are not used for now, but they'll come into play a few patches down. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain: add 4.5.x choice for headersGustavo Zacarias2016-03-142-0/+9
| | | | | Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain: switch linaro to https urlsJason Abele2016-03-091-6/+6
| | | | | | Signed-off-by: Jason Abele <jason@nextthing.co> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain: also source the musl packageYann E. MORIN2016-03-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We do source the glibc and uClibc packages in the toolchain menu, because they do provide user-visible options. However, we do not so far source the musl Config.in file However, in 822be87 (toolchain: include C libraries in legal-info), a Config.in file for musl was explicitly created, so that: - legal-info would work (needed at the time, probably no longer needed nowadays), - the appropriate packages are enabled, like netbsd-queue or kernel headers. Yet, we do not source musl/Config.in, which means we do not get netbsd-queue or kernel-headers to be selected: $ make distclean; make menuconfig Toolchain ---> C library ---> musl save-and-exit $ grep BR2_PACKAGE_LINUX_HEADERS .config [nothing] $ grep BR2_PACKAGE_NETBSD_QUEUE .config [nothing] Fix that by sourcing musl/Config.in at the same place we source glibc and uClibc. Normally, we do have a check in place that verifies that a package that is not enabled is not a dependency of another package that is enabled. However, musl is only a dependency of host-gcc-final, which is a host package and has no corresponding BR2_PACKAGE_HOST_GCC_FINAL. Thus host-gcc-final is not in the PACKAGES variable, and thus does not trigger our check. Reported-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain: bump Codescape toolchains to version 2015.10Vicente Olivert Riera2016-03-083-34/+73
| | | | | Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: bump musl toolchain to 1.1.12Thomas Petazzoni2016-03-053-24/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While the prebuilt musl toolchains provided by http://musl.codu.org/ had not been updated in a while, a new release based on musl 1.1.12 has been put online in December 2015. This commit updates our external toolchain package to use this new pre-built toolchain. Compared to the previous 1.1.6 toolchain, there are some changes: - The MIPS big endian soft-float variant is no longer available. - The Microblaze variant is no longer available. - SuperH 4, both little and big endian, variants have been added. - The components have been updated: gcc 5.3 is used, binutils 2.25.1, and of course musl 1.1.12. Besides the update itself, in this commit, we are: - Making the musl toolchain non-selectable on MIPS big endian soft-float. - Making the musl toolchain actually work on MIPS little endian soft-float, by downloading the right tarball and setting up the right symbolic link. - Removing support for the Microblaze variant, and adding support for the SH4 variants. All variants except armeb have been boot tested under Qemu, up to a Busybox shell prompt. armeb has not been tested due to the lack of a Qemu configuration for this architecture. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Merge branch 'next'Peter Korsgaard2016-03-021-3/+2
|\ | | | | | | Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
| * glibc: remove version 2.21Gustavo Zacarias2016-02-291-3/+2
| | | | | | | | | | | | | | Mask out glibc for sparc as well since it's no longer available. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* | toolchain-external/Config.in: Fix Linaro typoPeter Korsgaard2016-02-211-2/+2
|/ | | | Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain: add BR2_TOOLCHAIN_HAS_{SYNC_x, ATOMIC} hidden booleansThomas Petazzoni2016-02-061-0/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, Buildroot provides one BR2_ARCH_HAS_ATOMICS boolean option to indicate whether the architecture supports atomic operations or not. However, the reality of atomic operations support is much more complicated and requires more than one option to be expressed properly. There are in fact two types of atomic built-ins provided by gcc: (1) The __sync_*() family of functions, which have been in gcc for a long time (probably gcc 4.1). They are available in variants operating on 1-byte, 2-byte, 4-byte and 8-byte integers. Some architectures implement a number of variants, some do not implement any, some implement all of them. They are now considered "legacy" by the gcc developers but are nonetheless still being used by a significant number of userspace libraries and applications. https://gcc.gnu.org/onlinedocs/gcc/_005f_005fsync-Builtins.html (2) The __atomic_*() family of functions, which have been introduced in gcc 4.7. They have been introduced in order to support C++11 atomic operations. In gcc 4.8, they are available on all architectures, either built-in or in the libatomic library part of the gcc runtime (in which case the application needs to be linked with -latomic). In gcc 4.7, the __atomic_*() intrinsics are only supported on certain architectures, since libatomic did not exist at the time. For (1), a single BR2_ARCH_HAS_ATOMICS is not sufficient, because depending on the architecture, some variants may or may not be available. Setting BR2_ARCH_HAS_ATOMICS to false as soon as one of the variant is missing would cause a large number of packages to become unavailable, even if they in fact use only more common variants available on a large number of architectures. For this reason, we've chosen to introduce four new Config.in options: - BR2_TOOLCHAIN_HAS_SYNC_1 - BR2_TOOLCHAIN_HAS_SYNC_2 - BR2_TOOLCHAIN_HAS_SYNC_3 - BR2_TOOLCHAIN_HAS_SYNC_4 Which indicate whether the toolchain support 1-byte, 2-byte, 4-byte and 8-byte __sync_*() built-ins respectively. For (2), we introduce a BR2_TOOLCHAIN_HAS_ATOMIC, which indicates if the __atomic_*() built-ins are available. Note that it is up to the package to link with -latomic when gcc is >= 4.8. Since __atomic_*() intrinsics for all sizes are supported starting We conducted a fairly large analysis about various architectures supported by Buildroot, as well as with a number of different toolchains, to check which combinations support which variant. To do, we linked the following program with various toolchains: int main(void) { uint8_t a; uint16_t b; uint32_t c; uint64_t d; __sync_fetch_and_add(&a, 3); __sync_fetch_and_add(&b, 3); __sync_fetch_and_add(&c, 3); __sync_fetch_and_add(&d, 3); __sync_val_compare_and_swap(&a, 1, 2); __sync_val_compare_and_swap(&b, 1, 2); __sync_val_compare_and_swap(&c, 1, 2); __sync_val_compare_and_swap(&d, 1, 2); __atomic_add_fetch(&a, 3, __ATOMIC_RELAXED); __atomic_add_fetch(&b, 3, __ATOMIC_RELAXED); __atomic_add_fetch(&c, 3, __ATOMIC_RELAXED); __atomic_add_fetch(&d, 3, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&a, &a, 2, 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&b, &b, 2, 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&c, &c, 2, 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED); __atomic_compare_exchange_n(&d, &d, 2, 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED); return 0; } And looked at which symbols were unresolved. For the __atomic_*() ones, we tested with and without -latomic to see which variants are built-in, which variants require libatomic. This testing effort has led to the following results: __sync __atomic gcc 1 2 4 8 1 2 4 8 ARC Y Y Y - Y Y Y L 4.8 [with BR2_ARC_ATOMIC_EXT] ARC - - - - L L L L 4.8 [without BR2_ARC_ATOMIC_EXT] ARM Y Y Y X Y Y Y Y 4.8, 4.7 ARM Y Y Y - 4.5 AArch64 Y Y Y Y Y Y Y Y 4.9, 5.1 Bfin - - Y - 4.3 i386 (i386) - - - - L L L L 4.9 i386 (i486..) Y Y Y - L L L L 4.9 [i486, c3, winchip2, winchip-c6] i386 (> i586) Y Y Y Y L L L L 4.9 Microblaze - - Y - L L Y L 4.9 MIPS Y Y Y - Y Y Y L 4.9 MIPS64 Y Y Y Y Y Y Y Y 4.9 NIOS 2 Y Y Y - Y Y Y L 4.9, 5.2 PowerPC Y Y Y - Y Y Y L 4.9 SuperH Y Y Y - Y Y Y L 4.9 SPARC - - - - L L L L 4.9 SPARC64 Y Y Y Y Y Y Y Y 4.9 x86_64 Y Y Y Y Y Y Y Y 4.7, 4.9 Xtensa Y Y Y - Y Y Y Y 4.9 Notes: * __atomic built-ins appeared in gcc 4.7, so for toolchais older than that, the __atomic column is empty. * Y means 'supported built-in' * L means 'supported via linking to libatomic' (only for __atomic functions) * X indicates a very special case for 8 bytes __sync built-ins on ARM. On ARMv7, there is no problem, starting from gcc 4.7, the __sync built-in for 8 bytes integers is implemented, fully in userspace. For cores < ARMv7, doing a 8 bytes atomic operation requires help from the kernel. Unfortunately, the libgcc code implementing this uses the __write() function to display an error, and this function is internal to glibc. Therefore, if you're using glibc everything is fine, but if you're using uClibc or musl, you cannot link an application that uses 8 bytes __sync operations. This has been fixed as part of gcc PR68095, merged in the gcc 5 branch but not yet part of any gcc release. * - means not supported This commit only introduces the new options. Follow-up commits will progressively change the packages using BR2_ARCH_HAS_ATOMICS to use the appropriate BR2_TOOLCHAIN_HAS_SYNC_x or BR2_TOOLCHAIN_HAS_ATOMIC until the point where BR2_ARCH_HAS_ATOMICS can be removed. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain/external: newer Linaro toolchains do not provide source codeYann E. MORIN2016-02-031-3/+3
| | | | | | | | | | | | | | | | Currently, we have a pattern-matching that automatically derives the the source tarball filename from the binary tarball filename. However, the latest Linaro toolchains no longer follow that scheme (and do not even readily provide the sources...). Remove the generic pattern-matching, and explicitly set the source tarball name for those toolchains that do have a source tarball readily available. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain: copy_toolchain_lib_root: rename LIBSPATH to LIBPATHSThomas De Schampheleire2016-02-031-3/+3
| | | | | | | | | | | | | | | | LIBSPATH is populated based on a find with a pattern that can look like: libfoo*.so and thus the output of the find will contain all file paths that match this pattern. Unfortunately, the name LIBSPATH suggests that only one entry is returned, rather than possibly multiple. As this code is quite complex, use the more accurate name LIBPATHS iso LIBSPATH. Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: bump Linaro ARMEB to 2015.11-2Romain Naour2016-02-013-5/+5
| | | | | | | Signed-off-by: Romain Naour <romain.naour@gmail.com> [Thomas: only add the symlink with the old 2014.09 Linaro toolchain, for the newer ones, it is no longer needed.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: bump Linaro ARM to 2015.11-2Romain Naour2016-02-013-5/+5
| | | | | | | | | | | | Runtime tested with Qemu 2.3.1 using a configuration based on qemu_arm_vexpress_defconfig with BR2_ARM_ENABLE_VFP and BR2_ARM_EABIHF selected Signed-off-by: Romain Naour <romain.naour@gmail.com> [Thomas: only add the symlink with the old 2014.09 Linaro toolchain, for the newer ones, it is no longer needed. This has been runtime tested in Qemu.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: bump Linaro AArch64 to 2015.11-2Romain Naour2016-02-013-5/+5
| | | | | | | | | | Runtime tested with Qemu 2.3.1 using qemu_aarch64_virt_defconfig. Signed-off-by: Romain Naour <romain.naour@gmail.com> [Thomas: only add the symlink with the old 2014.09 Linaro toolchain, for the newer ones, it is no longer needed. This has been runtime tested in Qemu.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: create symlink ARCH_LIB_DIR->libThomas De Schampheleire2016-02-011-0/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, following symbolic links are created in both target and staging directories: - lib(32|64) --> lib - usr/lib(32|64) --> lib The decision for lib32 or lib64 is based on the target architecture configuration in buildroot (BR2_ARCH_IS_64). In at least one case this is not correct: when building for a Cavium Octeon III processor using the toolchain from the Cavium Networks SDK, and specifying -march=octeon3 in BR2_TARGET_OPTIMIZATION, libraries are expected in directory 'lib32-fp' rather than 'lib32' (ABI=n32; likewise for lib64-fp in case of ABI=n64) More generally the correct symbolic link is from (usr/)${ARCH_LIB_DIR}->lib. However, feedback from Arnout Vandecappelle is that there are packages that do depend on the lib32/lib64 symlink, even if ARCH_LIB_DIR is different. Hence, these links must be kept. Fix the problem as follows: - For internal toolchains: no change - For external toolchains: create a symlink ARCH_LIB_DIR->lib if (usr/)ARCH_LIB_DIR does not exist yet. Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: "Yann E. Morin" <yann.morin.1998@free.fr> Cc: Romain Naour <romain.naour@gmail.com> Cc: Peter Korsgaard <peter@korsgaard.com> Reviewed-by: Romain Naour <romain.naour@gmail.com> Tested-by: Romain Naour <romain.naour@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: improve sysroot rsync if ARCH_LIB_DIR != lib/lib32/lib64Thomas De Schampheleire2016-02-011-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The copy_toolchain_sysroot helper in toolchain/helpers.mk performs an rsync of various directories from the extracted external toolchain to the corresponding directory in staging. The relevant (simplified) snippet is: for i in etc $${ARCH_LIB_DIR} sbin usr usr/$${ARCH_LIB_DIR}; do \ rsync -au --chmod=u=rwX,go=rX --exclude 'usr/lib/locale' \ --exclude '/lib/' --exclude '/lib32/' \ --exclude '/lib64/' \ $${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \ done ; \ The exclusion logic of lib/lib32/lib64 has originally been added by commit 5628776c4a4d29d0715633ea463b64cc19e19c5a with the purpose of only copying the relevant usr/lib* directory from the toolchain to staging, instead of all. For example, if ARCH_LIB_DIR is 'lib64', then only usr/lib64 would be copied and usr/lib and usr/lib32 are ignored. It works by ignoring any lib/lib32/lib64 subdirectory on the rsync of 'usr' and then separately copying usr/{lib,lib32,lib64} as appropriate. (The exclusion rules only have impact on the files beneath the main source directory.) However, ARCH_LIB_DIR can take other values than (lib, lib32, lib64), for example lib32-fp or lib64-fp (Octeon III toolchain with -march=octeon3). In the existing code, the rsync for 'usr' would then already copy these lib directories, and the next rsync for 'usr/$${ARCH_LIB_DIR}' does nothing. By itself, this is not a very big problem: the staging directory simply has some extra directories. However, a subsequent patch will create a staging symlink from $${ARCH_LIB_DIR} to lib. The first rsync would then overwrite that symlink with the real directory usr/$${ARCH_LIB_DIR} from the toolchain, which is not correct. Assuming the patch that creates the symlink ARCH_LIB_DIR->lib is applied, the original situation after 'make clean toolchain' with an ARCH_LIB_DIR=lib32-fp is: $ ls -ld output/staging/{,usr/}lib* output/target/{usr/,}lib* drwxr-xr-x 2 4096 May 26 2015 output/staging/lib lrwxrwxrwx 1 3 Jan 20 13:47 output/staging/lib32 -> lib lrwxrwxrwx 1 3 Jan 20 13:47 output/staging/lib32-fp -> lib drwxr-xr-x 2 4096 Jan 20 13:47 output/staging/usr/lib lrwxrwxrwx 1 3 Jan 20 13:47 output/staging/usr/lib32 -> lib drwxr-xr-x 4 4096 May 26 2015 output/staging/usr/lib32-fp drwxr-xr-x 4 4096 May 26 2015 output/staging/usr/lib64-fp drwxr-xr-x 4 4096 May 26 2015 output/staging/usr/libexec drwxr-xr-x 3 4096 May 26 2015 output/staging/usr/libexec32 drwxr-xr-x 3 4096 May 26 2015 output/staging/usr/libexec32-fp drwxr-xr-x 3 4096 May 26 2015 output/staging/usr/libexec64-fp drwxr-xr-x 2 4096 Jan 20 13:48 output/target/lib lrwxrwxrwx 1 3 Jan 20 13:47 output/target/lib32 -> lib lrwxrwxrwx 1 3 Jan 20 13:47 output/target/lib32-fp -> lib drwxr-xr-x 2 4096 Jan 20 13:48 output/target/usr/lib lrwxrwxrwx 1 3 Jan 20 13:47 output/target/usr/lib32 -> lib lrwxrwxrwx 1 3 Jan 20 13:47 output/target/usr/lib32-fp -> lib Notice how usr/lib32-fp is not a symlink but a directory, and the presence of an unnecessary directory usr/lib64-fp. This patch improves the rsync exclusion rules by excluding any lib* directory on the first rsync. As this would also exclude any libexec/libexec32/... directory, explicitly include them first (first match takes precedence). This (as is already the case today) results in more usr/libexec* directories than needed, but it is not touched by this patch. With the fix applied, the situation becomes: drwxr-xr-x 2 4096 May 26 2015 output/staging/lib lrwxrwxrwx 1 3 Jan 20 14:27 output/staging/lib32 -> lib lrwxrwxrwx 1 3 Jan 20 14:27 output/staging/lib32-fp -> lib drwxr-xr-x 4 4096 May 26 2015 output/staging/usr/lib lrwxrwxrwx 1 3 Jan 20 14:27 output/staging/usr/lib32 -> lib lrwxrwxrwx 1 3 Jan 20 14:27 output/staging/usr/lib32-fp -> lib drwxr-xr-x 4 4096 May 26 2015 output/staging/usr/libexec drwxr-xr-x 3 4096 May 26 2015 output/staging/usr/libexec32 drwxr-xr-x 3 4096 May 26 2015 output/staging/usr/libexec32-fp drwxr-xr-x 3 4096 May 26 2015 output/staging/usr/libexec64-fp drwxr-xr-x 2 4096 Jan 20 14:27 output/target/lib lrwxrwxrwx 1 3 Jan 20 14:27 output/target/lib32 -> lib lrwxrwxrwx 1 3 Jan 20 14:27 output/target/lib32-fp -> lib drwxr-xr-x 2 4096 Jan 20 14:27 output/target/usr/lib lrwxrwxrwx 1 3 Jan 20 14:27 output/target/usr/lib32 -> lib lrwxrwxrwx 1 3 Jan 20 14:27 output/target/usr/lib32-fp -> lib For cases where ARCH_LIB_DIR is one of lib, lib32 or lib64 this fix makes no difference, and likewise for internal toolchains. Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Cc: Samuel Martin <s.martin49@gmail.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Arnout Vandecappelle <arnout@mind.be> Reviewed-by: Romain Naour <romain.naour@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: don't exclude too much lib in sysroot rsyncThomas De Schampheleire2016-02-011-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The copy_toolchain_sysroot helper in toolchain/helpers.mk performs an rsync of various directories from the extracted external toolchain to the corresponding directory in staging. The relevant (simplified) snippet is: for i in etc $${ARCH_LIB_DIR} sbin usr usr/$${ARCH_LIB_DIR}; do \ rsync -au --chmod=u=rwX,go=rX --exclude 'usr/lib/locale' \ --exclude lib --exclude lib32 --exclude lib64 \ $${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \ done ; \ The exclusion logic of lib/lib32/lib64 has been added by commit 5628776c4a4d29d0715633ea463b64cc19e19c5a with the purpose of only copying the relevant usr/lib* directory from the toolchain to staging, instead of all. For example, if ARCH_LIB_DIR is 'lib64', then only usr/lib64 would be copied and usr/lib and usr/lib32 are ignored. It works by ignoring any lib/lib32/lib64 subdirectory on the rsync of 'usr' and then separately copying usr/{lib,lib32,lib64} as appropriate. (The exclusion rules only have impact on the files beneath the main source directory.) However, on the rsync of 'usr', ANY of the following directories AND files would be excluded: lib/ lib lib32/ foobar/something/lib/ something-else/lib64/ while it is only the intention to skip directories directly under usr. Therefore, add a leading (to restrict the scope to first-level) and trailing (to restrict to directories) slash to the exclude pattern. From 'man rsync': - if the pattern starts with a / then it is anchored to [..] the root of the transfer. - if the pattern ends with a / then it will only match a directory, not a regular file, symlink, or device. Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Cc: Samuel Martin <s.martin49@gmail.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Arnout Vandecappelle <arnout@mind.be> Reviewed-by: Romain Naour <romain.naour@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* package, toolchain: remove BR2_TOOLCHAIN_HAS_GCC_BUG_* optionsThomas Petazzoni2016-01-301-6/+0
| | | | | | | | | | | | | | | | | | | Quite some time ago, we added the options BR2_TOOLCHAIN_HAS_GCC_BUG_58595 and BR2_TOOLCHAIN_HAS_GCC_BUG_58854 to indicate if the toolchain was affected by those gcc bugs, which were causing build failure with a number of packages. With the recent change in the external toolchain logic to provide only the latest version of each toolchain "family", all the toolchains which were affected by those issues disappeared from Buildroot. Those options are no longer being selected anywhere, and being blind options, it means their value is always going to be "disabled". Conquently, this commit removes those options completely, and updates all the packages where they were used. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain/external: add MIPS Codescape IMG GNU Linux toolchainVicente Olivert Riera2016-01-203-0/+50
| | | | | | | | | | | [Thomas: - rebase on top of master - remove version number of the Config.in option name.] Cc: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain/external: add MIPS Codescape MTI GNU Linux toolchainVicente Olivert Riera2016-01-203-0/+60
| | | | | | | | | [Thomas: - rebase on top of master - remove version number of the Config.in option name.] Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain: allow side by side sysroot directoriesVicente Olivert Riera2016-01-191-18/+41
| | | | | | | | | | | | | | | | | | Currently our toolchain infrastructure assumes that every toolchain has nested sysroot directories. However that's not true for all of them. The Codescape toolchains from Imagination Technologies use a side by side sysroot structure, for instance. This patch allows our toolchain infrastructure to detect what kind of sysroot structure we have (nested or side by side) and performs the appropriate actions. [Thomas: update the comment above the function, to explain what's going on with nested sysroots and side-by-side sysroots.] Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Reviewed-by: Romain Naour <romain.naour@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain: add 4.4.x choice for headersGustavo Zacarias2016-01-112-0/+9
| | | | | Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain-external: CodeSourcery PowerPC: Revert the removal of CS PowerPC ↵Romain Naour2015-12-303-5/+43
| | | | | | | | | | | | | | | | | | | | | | | | | 2011.03 As reported by Yann E. MORIN [1], the latest CS PowerPC toolchain (2012.03) requires a PPC CPU with SPE, which is basically two variants, 8540 (e500v1) and 8548 (e500v2) in Buildroot. All other PPC CPU can't use that toolchain. Keep CS PowerPC 2011.03 as latest available version and add a second Kconfig symbol for the CS PowerPC 2012.03 since it's verry specific to one CPU type (e500v2). Previously it was possible to select the CS 2012.03 with a powerpc 8540 (e500v1) CPU but the sysroot provided by the toolchain only support the 8548 (e500v2) variant. Allow to select CS 2012.03 only with BR2_powerpc_8548. Also re-add the previous CS toolchain handling for pixman and liquid-dsp. [1] http://lists.busybox.net/pipermail/buildroot/2015-December/148308.html Reported-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Romain Naour <romain.naour@gmail.com> Cc: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: select netbsd-queue for musl toolchainsThomas Petazzoni2015-12-301-0/+1
| | | | | | | | | | Following the introduction of the check that target packages must have their Config.in option enabled, we started to see failures related to netbsd-queue. Yann fixed the internal toolchain case in commit e84fd04e88bcda2771847958b3b5153e476db45f. This commit fixes the similar issue, but for the external toolchain case. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* package/c-libraries: need linux-headersYann E. MORIN2015-12-301-0/+1
| | | | | | | | | | | | | | | | | | | | Now that we check that a target package in the _DEPENDENCIES of another package has to be enabled in config, all target packages must have a kconfig symbol. Add a Kconfig symbol for linux-headers, and select it from the packages that depends on it (C libraries). Also remove the now-misleading comments "for legal-info" from the C libraries. Fixes: http://autobuild.buildroot.org/results/2a9/2a9e5d27b34357819b44f573a834da1ba5079030/ ... and numerous similar failures ... Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain/external: Arago armv7 toolchain really requires a VFPv3Yann E. MORIN2015-12-271-1/+1
| | | | | | | | | The Arago armv7 toolchain really requires a VFPv3 unit, so only expose it to the user when the CPU actually has such a VFP unit Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: add support for musl toolchain on ARM EABIhfThomas Petazzoni2015-12-202-4/+10
| | | | | | | | Since a few releases, the pre-built musl external toolchain has added an ARM EABIhf variant, built for ARMv5T. This commit allows this additional external toolchain to be used. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: Ti Arago ARM: support only one versionRomain Naour2015-12-202-6/+6
| | | | | | | | | | | | | | See the conclusion about external toolchains during the Buildroot meeting [1]: "In the future, we stick to a single external toolchain version. The Kconfig symbol should not encode the version (avoid legacy handling)" [1] http://elinux.org/index.php?title=Buildroot:DeveloperDaysELCE2015#Report Just rename Kconfig symbols Signed-off-by: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: Synopsys ARC: support only one versionRomain Naour2015-12-202-4/+4
| | | | | | | | | | | | | | | See the conclusion about external toolchains during the Buildroot meeting [1]: "In the future, we stick to a single external toolchain version. The Kconfig symbol should not encode the version (avoid legacy handling)" [1] http://elinux.org/index.php?title=Buildroot:DeveloperDaysELCE2015#Report Rename the Kconfig symbol even if this toolchain is marked as broken. Signed-off-by: Romain Naour <romain.naour@openwide.fr> Cc: Alexey Brodkin <abrodkin@synopsys.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: ADI Blackfin: support only one versionRomain Naour2015-12-203-34/+5
| | | | | | | | | | | | | | See the conclusion about external toolchains during the Buildroot meeting [1]: "In the future, we stick to a single external toolchain version. The Kconfig symbol should not encode the version (avoid legacy handling)" [1] http://elinux.org/index.php?title=Buildroot:DeveloperDaysELCE2015#Report Remove old ADI toolchain handling in glog, openpgm and zeromq. Signed-off-by: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: CodeSourcery x86: support only one versionRomain Naour2015-12-203-70/+3
| | | | | | | | | | | | See the conclusion about external toolchains during the Buildroot meeting [1]: "In the future, we stick to a single external toolchain version. The Kconfig symbol should not encode the version (avoid legacy handling)" [1] http://elinux.org/index.php?title=Buildroot:DeveloperDaysELCE2015#Report Signed-off-by: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: CodeSourcery SH: support only one versionRomain Naour2015-12-203-62/+3
| | | | | | | | | | | | See the conclusion about external toolchains during the Buildroot meeting [1]: "In the future, we stick to a single external toolchain version. The Kconfig symbol should not encode the version (avoid legacy handling)" [1] http://elinux.org/index.php?title=Buildroot:DeveloperDaysELCE2015#Report Signed-off-by: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: CodeSourcery PowerPC: support only one versionRomain Naour2015-12-203-79/+3
| | | | | | | | | | | | | | See the conclusion about external toolchains during the Buildroot meeting [1]: "In the future, we stick to a single external toolchain version. The Kconfig symbol should not encode the version (avoid legacy handling)" [1] http://elinux.org/index.php?title=Buildroot:DeveloperDaysELCE2015#Report Remove old CS toolchain handling in pixman and liquid-dsp. Signed-off-by: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: CodeSourcery ARM: support only one versionRomain Naour2015-12-203-72/+3
| | | | | | | | | | | | See the conclusion about external toolchains during the Buildroot meeting [1]: "In the future, we stick to a single external toolchain version. The Kconfig symbol should not encode the version (avoid legacy handling)" [1] http://elinux.org/index.php?title=Buildroot:DeveloperDaysELCE2015#Report Signed-off-by: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: bump CodeSourcery MIPS to 2015.11Romain Naour2015-12-183-40/+8
| | | | | | | | | | Use a stronger hash. Signed-off-by: Romain Naour <romain.naour@openwide.fr> Cc: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Reviewed-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Tested-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: CodeSourcery MIPS: support only one versionRomain Naour2015-12-183-189/+3
| | | | | | | | | | | | | | | See the conclusion about external toolchains during the Buildroot meeting [1]: "In the future, we stick to a single external toolchain version. The Kconfig symbol should not encode the version (avoid legacy handling)" [1] http://elinux.org/index.php?title=Buildroot:DeveloperDaysELCE2015#Report Signed-off-by: Romain Naour <romain.naour@openwide.fr> Cc: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Reviewed-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Tested-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: bump CodeSourcery NIOSII to 2015.11Romain Naour2015-12-183-7/+7
| | | | | | | | | | Some package black list CS NIOSII toolchains, mainly due to _gp link issue. A follow up patch can remove the restriction case by case. Signed-off-by: Romain Naour <romain.naour@openwide.fr> Reviewed-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Tested-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: CodeSourcery NIOSII: support only one versionRomain Naour2015-12-183-37/+3
| | | | | | | | | | | | | | See the conclusion about external toolchains during the Buildroot meeting [1]: "In the future, we stick to a single external toolchain version. The Kconfig symbol should not encode the version (avoid legacy handling)" [1] http://elinux.org/index.php?title=Buildroot:DeveloperDaysELCE2015#Report Signed-off-by: Romain Naour <romain.naour@openwide.fr> Reviewed-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Tested-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: bump CodeSourcery AMD64 to 2015.11Romain Naour2015-12-183-11/+9
| | | | | | | | | Use a stronger hash. Signed-off-by: Romain Naour <romain.naour@openwide.fr> Reviewed-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Tested-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: CodeSourcery AMD64: support only one versionRomain Naour2015-12-182-3/+3
| | | | | | | | | | | | | | See the conclusion about external toolchains during the Buildroot meeting [1]: "In the future, we stick to a single external toolchain version. The Kconfig symbol should not encode the version (avoid legacy handling)" [1] http://elinux.org/index.php?title=Buildroot:DeveloperDaysELCE2015#Report Signed-off-by: Romain Naour <romain.naour@openwide.fr> Reviewed-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Tested-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* musl: add a sys/queue.h implementationSergio Prado2015-12-171-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | Musl does not provide a 'sys/queue.h' implementation, and this has been a problem for packages that depend on it. So lets create a package called netbsd-queue that will install a 'sys/queue.h' in the staging directory when enabled, based on the NetBSD implementation. Musl toolchain and external toolchain packages will depend on this package, so that 'sys/queue.h' will be always installed when compiling with a musl based toolchain. Tested on ARM and x86 in the following cases: - Buildroot musl toolchain. - External musl toolchain without 'sys/queue.h'. - External musl toolchain with 'sys/queue.h'. Fixes: http://autobuild.buildroot.net/results/24bad2d06ab40024dacf136bee722072d587f84e And possibly many others. Signed-off-by: Sergio Prado <sergio.prado@e-labworks.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain/external: fix gdbserver install with Linaro 2015.08Trent Piepho2015-11-051-1/+4
| | | | | | | | | | | | | | | In the latest Linaro toolchain, the gdbserver has moved (surprise!) and is now located side-by-side with the toolchain executables. This commit adds this path as a new location where to search for a gdbserver, and while at it wraps the line that has become too long in the process. [Thomas: rework commit log according to Yann's suggestion.] Signed-off-by: Trent Piepho <tpiepho@kymetacorp.com> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external: make extraction idempotentArnout Vandecappelle2015-11-041-0/+1
| | | | | | | | | | | | | Commit 23ffa7ec first extracts to the toolchain-external build directory and then moves everything to $(HOST_DIR)/opt/ext-toolchain. However, this is not idempotent, because moving directories over existing ones doesn't always work, particularly if the target is on another device. Simply remove the destination contents before moving. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain/external: use generic extract commands (blackfin case)Yann E. MORIN2015-11-031-15/+16
| | | | | | | | | | | | | The backfin toolchains come in two archives. We extract the first (main) archive using the generic extract commands, while the second is extracted as a post-extract hook. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Reviewed-by: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain/external: use generic extract commands (!blackfin case)Yann E. MORIN2015-11-031-8/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that packages can provide a list of files to be excluded when extracting their archive, downloaded external toolchains are no longer special in this respect. Still, those toolchains are currently extracted directly into their final location, $(HOST_DIR)/opt/ext-toolchain/ which means we still need a custom extract command. Except, we don't really need it: we can just move the toolchain, after it's been extracted by the generic extract command, with a post-extract hook. This means that: - we now extract the toolchain with the generic extract command, - the toolchain is thus extracted into $(@D) , - fixup commands are run against $(@D), as a post-extract hook, instead of against $(HOST_DIR)/opt/ext-toolchain , - once this is done, we move $(@D)/* into the final location with a new post-extract hook. Note: the blackfin case is special, and will be handled in a follow-up patch. [Thomas: register the TOOLCHAIN_EXTERNAL_FIXUP_CMDS only for the Arago case, add some additional comments in the code about why we're moving the toolchain around.] Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Reviewed-by: Romain Naour <romain.naour@openwide.fr> Reviewed-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Tested-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain-external/blackfin: drop --hard-dereferenceYann E. MORIN2015-11-031-2/+2
| | | | | | | | | | | | | | | | Currently, for the blackfin external toolchains, we tell tar to extract files with the --hard-dereference. However, --hard-dereference is only meaningful when creating an archive, not when extracting it. Therefore, let's drop this option. [Thomas: rework commit title and commit log, after some suggestions from Arnout.] Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* toolchain/external: bump Linaro AArch64 to 2015.08Yann E. MORIN2015-11-033-2/+23
| | | | | | | | | | | | | | | That toolchain is built for an x86_64 host, so we make it available only for x86_64, and we keep the old 2014.09 toolchain for x86 hosts. To avoid dealing with legacy symbols and introduce versioned options, we reuse the same symbol for both toolchains. Thanks to the different depednencies (on the host), we can give them different prompts and different help texts. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
OpenPOWER on IntegriCloud