aboutsummaryrefslogtreecommitdiff
path: root/scripts/build
Commit message (Collapse)AuthorAgeFilesLines
...
| * | Add 'companion tools for host' step.Alexey Neyman2016-12-026-46/+206
| | | | | | | | | | | | Signed-off-by: Alexey Neyman <stilor@att.net>
| * | Move companion tool build into a separate step.Alexey Neyman2016-12-026-10/+34
| | | | | | | | | | | | | | | | | | | | | Also, rename "build" -> "for_build", since we're going to have a "for_host" as well. Signed-off-by: Alexey Neyman <stilor@att.net>
* | | Fix use of custom location if it is a directory.Alexey Neyman2016-12-026-6/+6
|/ / | | | | | | | | | | | | | | | | In that case, CT_GetCustom just creates a symlink to the original. In that case, 'cp -a <path> .' gives an error and 'cp -a <path> <newdir>' creates <newdir> as a symlink (which will then run the build inside the shared directory, .build/src/<package>). Signed-off-by: Alexey Neyman <stilor@att.net>
* | Pass FOR_BUILD flags when building the pass-1/2 core GCC.Alexey Neyman2016-11-281-7/+8
| | | | | | | | | | | | | | | | | | | | | | | | Current build passes {CFLAGS,LDFLAGS}_FOR_HOST - which breaks canadian cross (e.g. tried building for x86_64-unknown-linux-uclibc host). This dates back to the days of yore when CFLAGS were set directly in the do_gcc_core_backend (and that function is used as the final gcc's backend). do_gcc_core_backend is now passed with CFLAGS/LDFLAGS to use, so let the pass-1/pass-2/final-for-build steps pass the appropriate flags. Signed-off-by: Alexey Neyman <stilor@att.net>
* | xtensa: fix endianness supportMax Filippov2016-11-221-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To build uClibc correctly we need correct endianness selected in the crosstool-NG. Xtensa cores may be little- or big-endian, but this property is static. The toolchain knows the core endianness and doesn't need options to select it. Enable ARCH_SUPPORTS_BOTH_ENDIAN and select LE by default. Specify empty CT_ARCH_ENDIAN_CFLAG so that -m{big,little}-endian don't get added to the TARGET_CFLAGS, as it's not supported by gcc. Specify empty CT_ARCH_ENDIAN_LDFLAG so that -EB/-EL don't get added to the TARGET_LDFLAGS as they are ignored. Select big-endian in the example xtensa-unknown-linux-uclibc configuration. This fixes uClibc toolchain build for little-endian cores. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
* | Give companion tools some love.Alexey Neyman2016-11-215-11/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow selection of make/m4/... version. Support imports of new versions via addToolVersion.sh. Import newest versions of the companion tools. One non-trivial change is the handling of make versions. Existing code was not handling make companion tool as described (see the previous commit). However, since most modern systems have make 4.x, that previous commit made crosstool-ng always build make as a companion tool. This traces back to the commit dd15c93 from 2014. That commit's log message says that actually it was 3.81 which broke the build for certain component (it was originally breaking eglibc, but I noticed it was breaking current glibc on powerpc64), and introduced an option to force using 3.81 by "components that really need it". It looks like in 2.5 years we haven't seen any such components that really need make 3.81, and (given that make has already had a few releases since 3.81) we're unlikely to see them in the future. Hence, the configure check is changed from "exactly 3.81" to "3.81 or newer". In its current form, configure will accept make 3.80+, and will not require make as a companion tool for 3.81+. We might want to bump the latter check to even newer version given the claim from dd15c93. Killed COMP_TOOLS_make_3_81_NEEDED. Anyway, I retained 3.81 just in case; ditto for m4 1.14.3, autoconf 2.65 and automake 1.11.1. Signed-off-by: Alexey Neyman <stilor@att.net>
* | Partially revert 6f8e89cb5ca061e899bf3feaaf3fecf30d366c3e.Alexey Neyman2016-11-2033-161/+161
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The referenced commit replaced 'make' with '${make}' everywhere. This is wrong for at least the utilities that we may build as companion tools (make, libtool): this will always invoke the version detected by configure by supplying the absolute path. In other words, the wrappers in .build/tools/bin are not fallbacks - they are either temporary (in case a respective companion tool is built) or permanent redirectors. This is the reason why the PATH= has .build/*/buildtools/bin at higher precedence than .build/tools/bin; the latter has the versions detected by configure and the former has the versions built as companion tools. Revert the rest of the gang (grep/sed/...) for consistency. After all, we may decide to supply some of them as well (awk, for instance). Signed-off-by: Alexey Neyman <stilor@att.net>
* | comptools/make: Fix CT_COMP_TOOLS_make_gmake optionBernhard Walle2016-11-191-1/+1
| | | | | | | | | | | | | | | | | | Commit 6f8e89cb5ca061e899bf3feaaf3fecf30d366c3e broke that option. Since ${make} points to /usr/bin/make, making the symlink from gmake to /usr/bin/make is obviously the wrong decision. gmake should link to our (old-versioned) self-built make. Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
* | Merge remote-tracking branch 'upstream/master'Dmitry Pankratov2016-11-113-6/+67
|\ \
| * \ Merge pull request #472 from stilor/unparallel-make-installBryan Hundven2016-11-091-3/+12
| |\ \ | | | | | | | | Do not run 'make install' in parallel in GCC.
| | * | Do not run 'make install' in parallel in GCC.Alexey Neyman2016-11-091-3/+12
| | | | | | | | | | | | | | | | Signed-off-by: Alexey Neyman <stilor@att.net>
| * | | Merge pull request #452 from KirillSmirnov/janitorialAlexey Neyman2016-11-091-1/+2
| |\ \ \ | | |/ / | |/| | Janitorial: update patches
| | * | Merge branch 'master' into janitorialBryan Hundven2016-10-241-0/+5
| | |\ \
| | * \ \ Merge branch 'master' into janitorialKirill Smirnov2016-10-051-2/+36
| | |\ \ \
| | * \ \ \ Merge branch 'master' into janitorialKirill Smirnov2016-09-231-1/+2
| | |\ \ \ \
| | * | | | | build/glibc: Improve confusing commentKirill K. Smirnov2016-09-151-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Up until cset 4e2227e8a5537a8553c503e55d2cb2190f2a0d2f there was an 'if' statement with a comment. The abovementioned changeset removed the conditional statement but the comment survived. Signed-off-by: Kirill K. Smirnov <kirill.k.smirnov@gmail.com>
| * | | | | | Merge branch 'master' into static-libgcc-more-fixesAlexey Neyman2016-10-121-0/+5
| |\ \ \ \ \ \ | | | |_|_|/ / | | |/| | | |
| | * | | | | Fix m68k with uClibc-ng >= 1.0.15.Alexey Neyman2016-10-041-0/+5
| | | |_|/ / | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1.0.15 only kept a single LINUXTHREADS option, and renamed it, making it no longer option-compatible with uClibc. The option for "1.0.14 or later" version of uClibc-ng is not currently used; rename it to "1.0.15 or later" and use it to handle newer uClibc-ng's linuxthreads. m68k happens to be the only sample using linuxthreads. Signed-off-by: Alexey Neyman <stilor@att.net>
| * / | | | Fine-tune moving gcc libraries to sysroot.Alexey Neyman2016-10-071-0/+12
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. Check if anything was installed outside sysroot; on some [baremetal only?] configurations GCC doesn't install anything to ${CT_PREFIX_DIR}/${CT_TARGET}/lib. 2. We need to create <sysroot>/lib/<multilib> if it doesn't exist (MUSL only installs in <sysroot>/usr/lib). 3. Do not move the linker scripts; elf2flt expects to find them in gcc's dir, not sysroot. Signed-off-by: Alexey Neyman <stilor@att.net>
| * | | | Merge branch 'master' into x86-muslAlexey Neyman2016-10-041-2/+27
| |\ \ \ \
| | * | | | GCC uses multi_os_dir for libgcc, not multi_dir.Alexey Neyman2016-10-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Alexey Neyman <stilor@att.net>
| | * | | | Fix issue #449.Alexey Neyman2016-10-021-2/+27
| | | |/ / | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | After building final gcc, place the libraries in non-sysroot libs into sysroot. Signed-off-by: Alexey Neyman <stilor@att.net>
| * / | | Add a checkbox for libmpx build.Alexey Neyman2016-09-221-0/+9
| |/ / / | | | | | | | | | | | | | | | | | | | | Disable libmpx for musl builds. Signed-off-by: Alexey Neyman <stilor@att.net>
* | | | Merge branch 'master' of https://github.com/crosstool-ng/crosstool-ngDmitry Pankratov2016-10-0123-691/+1091
|\| | |
| * | | elf2flt: do not treat warnings as errorsKirill K. Smirnov2016-09-201-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | elf2flt is configured with -Werror flag by default. Disable it. Signed-off-by: Kirill K. Smirnov <kirill.k.smirnov@gmail.com>
| * | | binutils: make symlinks in a consistent wayKirill K. Smirnov2016-09-131-1/+1
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On the stage "core gcc pass-2" the following layout is created: 1) buildtools/bin/TARGET-{ar,as,elf2flt,flthdr,ld,ld.bfd,ranlib,strip} 2) buildtools/TARGET/bin/{ar,as,elf2flt,flthdr,ld,ld.bfd,ranlib,strip} 3) x-tools/TARGET/bin/TARGET-{ar,as,elf2flt,flthdr,ld,ld.bfd,ranlib,strip} 4) x-tools/TARGET/TARGET/bin{ar,as,elf2flt,flthdr,ld,ld.bfd,ranlib,strip} where both (1) and (2) are symlinks to (3). This effectively renders core pass-2 gcc with elf2flt linker unusable. Related elf2flt discussion: https://github.com/crosstool-ng/crosstool-ng/pull/443 Signed-off-by: Kirill K. Smirnov <kirill.k.smirnov@gmail.com>
| * / internals: properly strip gdbserverKirill K. Smirnov2016-09-101-1/+10
| |/ | | | | | | | | | | | | On mingw target gdbserver is suffixed with '.exe', thus plain 'strip gdbserver' fails. Signed-off-by: Kirill K. Smirnov <kirill.k.smirnov@gmail.com>
| * Merge pull request #435 from KirillSmirnov/uclibcBryan Hundven2016-08-301-1/+7
| |\ | | | | | | uClibc: improve managing shared libs
| | * uClibc: propagate SHARED_LIBS option.Kirill K. Smirnov2016-08-301-0/+6
| | | | | | | | | | | | | | | | | | | | | This patch synchronizes crosstool CT_SHARED_LIBS and uclibc HAVE_SHARED options. Signed-off-by: Kirill K. Smirnov <kirill.k.smirnov@gmail.com>
| | * uClibc: install native utilsKirill K. Smirnov2016-08-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | This change adds native ldd and ldconfig utils to sysroot. For glibc just 'make install' installs everything including utils. For uclibc there exists a separate goal 'install_utils'. Make it. Signed-off-by: Kirill K. Smirnov <kirill.k.smirnov@gmail.com>
| * | Update x86.shPedro Navarro2016-08-251-1/+3
| |/ | | | | Added additional x86 architectures, like core2, that also map to i686
| * Merge pull request #410 from jmlemetayer/fix_populateBryan Hundven2016-08-231-0/+1
| |\ | | | | | | populate: Fix undefined awk
| | * populate: Fix undefined awkJean-Marie Lemetayer2016-07-261-0/+1
| | | | | | | | | | | | Fix minor issue introduced by 6f8e89cb5ca061e899bf3feaaf3fecf30d366c3e
| * | Merge pull request #402 from lundmar/fix_elf2flt_repoBryan Hundven2016-08-231-1/+1
| |\ \ | | | | | | | | Update elf2flt git repository location
| | * | Update elf2flt git repository locationMartin Lund2016-06-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The elf2flt git repository has been moved to GitHub. Updated the script accordingly. Signed-off-by: Martin Lund <martin.lund@keep-it-simple.com>
| * | | musl: Add multilib support.Alexey Neyman2016-08-234-36/+77
| | | | | | | | | | | | | | | | Signed-off-by: Alexey Neyman <stilor@att.net>
| * | | uClibc: move ldso check to post_cc.Alexey Neyman2016-08-231-43/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It turns out that core GCC on binfmt architectures (m68k, for example) cannot produce the final executable (looks for ld.real in the wrong place). Need to wait for the final gcc to become available. Signed-off-by: Alexey Neyman <stilor@att.net>
| * | | Support multilib in sh/uClibc.Alexey Neyman2016-08-233-189/+90
| | | | | | | | | | | | | | | | Signed-off-by: Alexey Neyman <stilor@att.net>
| * | | Treat multiroots differently.Alexey Neyman2016-08-232-17/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'ld' does not search for dependency libraries in multi_os_directory, so if there's both multi_os_directory and multi_root, and there is only one configuration in each multi_root, forgo the multi_os_directory suffix. Needed for sh4-multilib-linux-uclibc. Signed-off-by: Alexey Neyman <stilor@att.net>
| * | | First stab at multilib/uClibc.Alexey Neyman2016-08-235-16/+273
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Create a separate 'libc_backend_once', install headers into a subdirectory (different sets of headers are installed for 32- and 64-bit architectures), and create a symlink for the dynamic linker location expected by GCC. Signed-off-by: Alexey Neyman <stilor@att.net>
| * | | uClibc: Split configuration tweaker into per-arch functions.Alexey Neyman2016-08-2311-113/+174
| | | | | | | | | | | | | | | | Signed-off-by: Alexey Neyman <stilor@att.net>
| * | | Change multilib functions to set the variable.Alexey Neyman2016-08-236-54/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather than echo-ing the new value, set the value into the variable with the name passed as an argument (similar to CT_SanitizeVarDir). This allows to use CT_DoLog in these functions. Signed-off-by: Alexey Neyman <stilor@att.net>
| * | | libc/*.sh: Deprecate libc_check_config step.Alexey Neyman2016-08-2318-142/+93
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This step was only used in uClibc. However, with upcoming multilib, the config management will have to be done for each variant differently, anyway. uClibc was the only user of libc_check_config step, as well as CT_CONFIG_DIR directory. Retire these. Two other clean-ups in uClibc.sh: - KERNEL_HEADERS check seems to be bogus, this config option is not present even in 0.9.30 - which is not supported already. - SHARED_LIB_LOADER_PREFIX was renamed to MULTILIB_DIR in 0.9.31, according to ChangeLog - and MULTILIB_DIR is passed from command line instead. Signed-off-by: Alexey Neyman <stilor@att.net>
| * | | uclibc: merge startfiles/final into single backend.Alexey Neyman2016-08-231-160/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In preparation for multilib support, use the same "backend" model that is already employed by glibc and musl. Also, the verbosity setting descriptions were swapped. V=2 is actually less verbose than V=1: V=1 prints full commands, while V=2 prints 'CC <file> <defines>'. Signed-off-by: Alexey Neyman <stilor@att.net>
| * | | uClibc.sh: typo, local -> locale.Alexey Neyman2016-08-231-13/+13
| | | | | | | | | | | | | | | | Signed-off-by: Alexey Neyman <stilor@att.net>
| * | | glibc.sh: cleanupsAlexey Neyman2016-08-231-55/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Dump CT_LIBC_EXTRA_CC_ARGS: instead, treat CT_LIBC_EXTRA_CFLAGS as arguments to CC (or they are not applied to .S, for example). Combine them with multi_flags and CT_TARGET_CFLAGS in proper order. - Analyze thus combined flags to determine --with-fp/--without-fp. Don't need to check CT_ARCH_FLOAT - it is reflected in CT_TARGET_CFLAGS anyway. Check more soft/hard float options defined on different architectures. - Drop checking for endianness flags: they are not reflected in configure arguments in any way, and they're already present in CFLAGS (either via multi_flags or via CT_TARGET_CFLAGS). Besides, CT_ARCH_ENDIAN_OPT was actually called CT_ARCH_ENDIAN_CFLAG, so this was a no-op anyway. Signed-off-by: Alexey Neyman <stilor@att.net>
| * | | libc/*.sh: handle combinations of multilib root/dir.Alexey Neyman2016-08-234-160/+150
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Install startfiles for libc variants into the most specific combination (suffixed sysroot, if applicable + suffixed multi-os dir, if applicable). Install headers once in every suffixed sysroot (although it seems that GCC picks up headers from top-level sysroot, GCC manual claims that sysroot suffix affects headers search path). In uClibc, this requires a better sanitization of the directory: it creates symlinks from {sysroot}/usr/lib/{multi_os_dir} to {sysroot}/lib/{multi_os_dir} and to do so, it counts the number of path components in the libdir. This breaks if one of such components is `..' - symlinks contain an extra `../..' then. Since such sanitization had to be implemented anyway, use it in other places to print more sensible directory names. Also, fix the description of configure --host/--target per musl's configure help message (and its actual code). Signed-off-by: Alexey Neyman <stilor@att.net>
| * | | multilib: Determine which options may pass through.Alexey Neyman2016-08-232-54/+186
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On some arches (e.g. MIPS) the options like -mabi do not work if specified more than once (see the comment in 100-gcc.sh). Therefore, we need to determine which of the options produced by <arch>.sh can be passed to multilib builds and which must be removed (i.e., which options vary among the multilibs). This presents a chicken-and-egg problem. GCC developers, in their infinite wisdom, do not allow arbitrary multilib specification to be supplied to GCC's configure. Instead, the target (and sometimes some extra options) determine the set of multilibs - which may include different CPUs, different ABIs, different endianness, different FPUs, different floating-point ABIs, ... That is, we don't know which parts vary until we build GCC and ask it. So, the solution implemented here is: - For multilib builds, start with empty CT_ARCH_TARGET_CFLAGS/LDFLAGS. - For multilib builds, require core pass 1. Pass 1 does not build any target binaries, so at that point, our target options have not been used yet. - Provide an API to modify the environment variables for the steps that follow the current one. - As a part of multilib-related housekeeping, determine the variable part of multilibs and filter out these options; pass the rest into CT_TARGET_CFLAGS/LDFLAGS. This still does not handle extra dependencies between GCC options (like -ma implying -mcpu=X -mtune=Y, etc.) but I feel that would complicate matters too much. Let's leave this until there's a compelling case for it. Also, query GCC's sysroot suffix for targets that use it (SuperH, for example) - the default multilib may not work if the command line specifies the default option explicitly (%sysroot_suffix_spec is not aware of multilib defaults). Signed-off-by: Alexey Neyman <stilor@att.net>
| * | | glibc: Build manuals and locales lastRay Donnelly2016-08-231-3/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather then building the manuals and locales for each multilib target, only build the manuals on the last multilib target. If you are not building a multilib toolchain, then the first libc build will be the last. Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
| * | | crosstool-NG.sh.in: Don't make lots of symlinks to lib folderRay Donnelly2016-08-232-38/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For 4 different folders: ${CT_PREFIX_DIR} ${CT_SYSROOT_DIR} ${CT_SYSROOT_DIR}/usr ${CT_PREFIX_DIR}/${CT_TARGET} .. symlinks from 'lib32' and 'lib64' to 'lib' were created. This was untidy and incorrect for multilib (the bitness of the libraries in 'lib32' and 'lib64' will not be the same) We can not know which folders this toolchain configuration will require at this time so let them be created on-demand instead. Changed by Alexey Neyman: original change removed too much; we still need to create the default directories because the os directories are based off them (e.g. `lib/../lib64'). Signed-off-by: Ray Donnelly <mingw.android@gmail.com> Signed-off-by: Alexey Neyman <stilor@att.net>