aboutsummaryrefslogtreecommitdiff
path: root/scripts/build/cc
Commit message (Collapse)AuthorAgeFilesLines
* gcc: Make CC_GCC_TM_CLONE_REGISTRY tristateChris Packham2021-06-201-10/+10
| | | | | | | | | | | | | | Explicitly passing --disable-tm-clone-registry causes gcc to create a crtbegin.o with a zero-sized .init_array/.fini_array. This in turn causes ld to complain. Make CC_GCC_TM_CLONE_REGISTRY a tristate so if it's not explicitly enabled we can let ./configure decide. Fixes #1531 Fixes: 1e21a302 ("gcc: Add CT_CC_GCC_TM_CLONE_REGISTRY config") Signed-off-by: Chris Packham <judge.packham@gmail.com>
* Merge pull request #1524 from ↵Chris Packham2021-06-091-5/+36
|\ | | | | | | | | stephanosio/gcc_custom_libstdcpp_cxx_flags_upstream Fix libstdc++ build options
| * gcc: Allow setting custom target CXXFLAGSStephanos Ioannidis2021-06-071-3/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds two additional arguments (`cxxflags_for_target` and `extra_cxxflags_for_target`) for the gcc backend build function that can be used to specify custom target CXXFLAGS. By default, the target CXXFLAGS is set to the target CFLAGS. When `cxxflags_for_target` is specified however, it overrides that behaviour and allows setting different target CXXFLAGS from the target CFLAGS. The `extra_cxxflags_for_target` argument can be used to specify the extra target CXXFLAGS to be appended to the target CXXFLAGS. This is useful when it is necessary to append CXX-specific flags to the existing CFLAGS to be used as the target CXXFLAGS. A useful application of this is building full and nano versions of libstdc++ with different target CXXFLAGS as necessitated by `nano.specs`. Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
| * gcc: Assume '-O2' by default for building gcc target librariesStephanos Ioannidis2021-06-071-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The gcc target libraries (e.g. libstdc++) are currently built without any optimisation flag when `CT_CC_GCC_ENABLE_TARGET_OPTSPACE` is not enabled and default to `-O0` unless user explicitly specifies an optimisation flag. This commit updates the gcc build script to assume `-O2` for building target libraries unless user provides a different optimisation flag. Note also that this is the default behaviour for gcc when C[XX]FLAGS_FOR_TARGET is not overridden. Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
* | gcc: Add CT_CC_GCC_TM_CLONE_REGISTRY configStephanos Ioannidis2021-06-081-0/+12
|/ | | | | | | | | | | This commit adds a new gcc config `CT_CC_GCC_TM_CLONE_REGISTRY` that enables the GCC transactional memory clone registry feature for libgcc. Note that the gcc option to control this feature is only available in gcc 10 and above. (see gcc commit 5a4602805eb3ebddbc935b102481e63bffc7c5e6) Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
* Extend CC_GCC_LIBSSP with manual stateIvan Kukhta2021-03-171-10/+10
| | | | Signed-off-by: Ivan Kukhta <Ivan.Kukhta@acronis.com>
*-. Merge branches 'elijahr-dtc-1.6.0', 'elijahr-readme-typo', ↵Chris Packham2021-01-131-7/+77
|\ \ | | | | | | | | | 'foss-for-synopsys-dwc-arc-processors-abrodkin-libgmp-for-mac' and 'keith-packard-picolibc-companion'
| | * gcc: Add support for building libstdc++ with alternate libcKeith Packard2021-01-111-7/+77
| |/ | | | | | | | | | | | | This adds another mode to do_gcc_core_backend that builds libstdc++ against an alternate libc implementation. Signed-off-by: Keith Packard <keithp@keithp.com>
* / gcc: Make it aware of Newlib nano IO featureAlexey Brodkin2020-12-231-0/+5
|/ | | | | | | | | | | | | | | | | | | | | | Even though GCC as a compiler has nothing to do with a C library being used it still makes sense to know about Newlib's compact implementation of IO functions: * For targets like MSP430 which require to have such a tuned Newlib if "-mtiny-printf" is passed to the GCC's command-line [1] * For correct compilation of the following GCC's own DejaGnu tests [2]: - gcc/testsuite/gcc.c-torture/execute/920501-8.c - gcc/testsuite/gcc.c-torture/execute/930513-1.c - gcc/testsuite/gcc.dg/torture/builtin-sprintf.c - gcc/testsuite/gcc.c-torture/execute/ieee/920810-1.x [1] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=02afb6a9321fbfb435452636cedc2cd43f0c4fd2 [2] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=571bbd0d48d5872eacbd0b681fce6e1ae754520b So we add that missing cross-dependency now. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
* Set --with-cpu-{32,64} for multilib buildsAlexey Neyman2020-02-261-2/+2
| | | | | | | GLIBC 2.31 needs --with-cpu=ultrasparc for both 32/64-bits now, and --with-cpu only sets the CPU model for the "primary" bitness. Signed-off-by: Alexey Neyman <stilor@att.net>
* Rename JOBSFLAGS -> CT_JOBSFLAGSAlexey Neyman2019-04-041-15/+15
| | | | | | ... so that it is saved/restored when restarting the build. Signed-off-by: Alexey Neyman <stilor@att.net>
* Duh! do not override ${cflags}Alexey Neyman2019-02-191-2/+3
| | | | | | | | ... in the backend function with ${CFLAGS_FOR_HOST}. The caller either supplies them already, or (in case of pass-1/2 of the canadian cross) passes ${CFLAGS_FOR_BUILD} there. Signed-off-by: Alexey Neyman <stilor@att.net>
* Use -idirafter instead of copying headers.Alexey Neyman2019-02-171-13/+20
| | | | Signed-off-by: Alexey Neyman <stilor@att.net>
* Implement an option to store downloads in subdirsAlexey Neyman2019-02-131-2/+2
| | | | | | ... following the buildroot model. Signed-off-by: Alexey Neyman <stilor@att.net>
* Canonicalize prefix dir and sysrootAlexey Neyman2019-01-141-5/+14
| | | | | | | | ... because GCC prints the sysroot with symlinks resolved. Fixes #892. Signed-off-by: Alexey Neyman <stilor@att.net>
* Add a symlink to LTO for binutilsAlexey Neyman2018-12-111-0/+14
| | | | | | | ... so that ar can find the plugin even when invoked directly, not via the gcc-ar plugin. Signed-off-by: Alexey Neyman <stilor@att.net>
* Set ALL_TARGET_CFLAGS initially for !MULTILIBAlexey Neyman2018-12-071-21/+23
| | | | | | Fixes #1107. Signed-off-by: Alexey Neyman <stilor@att.net>
* Merge pull request #985 from antmak/platform_headersAlexey Neyman2018-11-031-6/+5
|\ | | | | Use the platform headers in the pass-2 and canadian gcc stages
| * Use the platform headers in the pass-2 and canadian gcc stagesAnton Maklakov2018-06-121-6/+5
| |
* | Supply "very old" and "very new" glibc versionsAlexey Neyman2018-10-211-1/+5
| | | | | | | | | | | | | | | | ... as 1.0 and 99.99, respectively, to gcc configure. Fixes #1031. Signed-off-by: Alexey Neyman <stilor@att.net>
* | Avoid adding arch/cpu/tune flags for target to GCC buildAlexey Neyman2018-06-051-3/+9
|/ | | | | | ... as it may need to override them for building runtime-selectable code. Signed-off-by: Alexey Neyman <stilor@att.net>
* cc/gcc: use correct sysroot arg for do_gcc_core_backendM1cha2018-02-121-1/+2
| | | | | | | This fixes gccs LIMITS_H_TEST detection for baremetal targets so limits.h will be installed correctly. Signed-off-by: Michael Zimmermann <sigmaepsilon92@gmail.com>
* Add an ability to verify the digest/signatureAlexey Neyman2017-09-271-1/+2
| | | | | | Fixes #611. Signed-off-by: Alexey Neyman <stilor@att.net>
* Workaround for static uClibc-ng issue with -lpthreadAlexey Neyman2017-09-031-2/+9
| | | | | | Also, preserve .config when running test-package.sh. Signed-off-by: Alexey Neyman <stilor@att.net>
* Super-H multilib toolchain fixesAlexey Neyman2017-09-031-1/+1
| | | | | | | | | | | | | | | 1. On SuperH, configuring GCC with explicit variant of the CPU (like "sh4") limits the default set of multilibs to just that CPU and requires --with-multilib-list to change. Allow for "unspecified" variant, so that we can defer to GCC to determine the list. 2. Support toolchains with both endiannesses at the same time. 3. Add a SuperH/newlib sample 4. Add more flags processing for uClibc Signed-off-by: Alexey Neyman <stilor@att.net>
* config: Add package versioning flexibilityNathan Chancellor2017-09-011-2/+2
| | | | | | | | | | | | | | Some users (like myself) may want to omit the crosstool-NG version from the binaries' versioning output, as it can be incredibly long and not too helpful. Add a config option to disable it. The possible combinations are as follows: - crosstool-NG version (default) - crosstool-NG version - custom toolchain ID - Custom toolchain ID - No crosstool-NG version OR custom toolchain ID Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
* Fix glibc-ports with the new frameworkAlexey Neyman2017-08-261-1/+3
| | | | | | | While here, also consider patched by anything other than "bundled patches" as per-target sources. Add scary warnings in case of a failure. Signed-off-by: Alexey Neyman <stilor@att.net>
* Fix PPC64LE by supplying --with-glibc-versionAlexey Neyman2017-08-221-0/+10
| | | | Signed-off-by: Alexey Neyman <stilor@att.net>
* Save export status for environment varsAlexey Neyman2017-08-211-2/+2
| | | | | | | | ... and limit our modifications to our variables. Fixes #762. Signed-off-by: Alexey Neyman <stilor@att.net>
* Use per-package list of formats to determine downloadsAlexey Neyman2017-08-191-1/+1
| | | | | | Fixes #789 Signed-off-by: Alexey Neyman <stilor@att.net>
* Resolve a few more TBDsAlexey Neyman2017-07-091-4/+5
| | | | Signed-off-by: Alexey Neyman <stilor@att.net>
* Some locations were missed while renaming kconfig symbolsAlexey Neyman2017-07-081-7/+6
| | | | | | | | | ... because there the symbols were constructer part by part. Also, remove cc.sh and source $(CT_CC).sh directly - we only build a single compiler at a time. Signed-off-by: Alexey Neyman <stilor@att.net>
* Building packages using the new frameworkAlexey Neyman2017-07-081-0/+1
| | | | | | (fails at building GMP off the VCS because it needs to run bootstrap scripts) Signed-off-by: Alexey Neyman <stilor@att.net>
* Fix the references to old config variablesAlexey Neyman2017-07-081-33/+11
| | | | Signed-off-by: Alexey Neyman <stilor@att.net>
* Honor CFLAGS_FOR_BUILDAlexey Neyman2017-06-151-1/+1
| | | | Signed-off-by: Alexey Neyman <stilor@att.net>
* Retire CT_CC_GCC_TARGET_FINALAlexey Neyman2017-05-241-8/+4
| | | | | | | | | | | Make this behavior default in case the core gcc backend is used for final compiler (i.e., for baremetal configurations). Not setting this option breaks canadian baremetal configurations, and not setting it makes little sense at all in any baremetal configuration (since in baremetal we don't have any libc to begin with). Signed-off-by: Alexey Neyman <stilor@att.net>
* Add symlinks from the libraries' original location to the new one.Alexey Neyman2017-03-291-0/+3
| | | | Signed-off-by: Alexey Neyman <stilor@att.net>
* Fix up the sysroot issue for sh4 in a different wayAlexey Neyman2017-03-261-52/+2
| | | | | | | | | | | (see the comments in the code for details on the issue) Old workaround in 100-gcc.sh stopped working (probably, due to one of GCC version upgrades), so switch to the other approach originally described there: adjust the list of multilibs to not include the default target explicitly. Signed-off-by: Alexey Neyman <stilor@att.net>
* Do not create multilib symlinks if not using sysrootAlexey Neyman2017-03-231-1/+1
| | | | Signed-off-by: Alexey Neyman <stilor@att.net>
* Add an option to "demultilib"Alexey Neyman2017-03-171-20/+38
| | | | | | | | | | | It turns out buildroot does not currently accept a toolchain where a dynamic linker does not reside in the multi-os-directory. Unfortunately this is how glibc installs itself on AArch64 without any extra tricks. So, provide an option to force everything into /lib or /usr/lib; patch to buildroot will be worked on separately. Signed-off-by: Alexey Neyman <stilor@att.net>
* Create ld.so.confAlexey Neyman2017-03-131-1/+1
| | | | | | | Also a fix for CT_IterateMultilibs: it didn't pass multi_os_dir_gcc, so it only worked if the caller did *not* declare it as a local variable. Signed-off-by: Alexey Neyman <stilor@att.net>
* When moving gcc libs, prefer the same directory as libcAlexey Neyman2017-03-091-3/+12
| | | | | | | If libc ended up in a directory other than /lib, place GCC's libs in that directory as well. Signed-off-by: Alexey Neyman <stilor@att.net>
* Only add clang-specific flags to clangAlexey Neyman2017-03-061-4/+32
| | | | | | I.e., only to CFLAGS_FOR_BUILD if the build is canadian. Signed-off-by: Alexey Neyman <stilor@att.net>
* Revert "Determine whether -E/-r option selects extended regexp"Alexey Neyman2017-02-261-1/+1
| | | | This reverts commit 7bcf18bfab84374d3305c7a088f95ac1219ddf93.
* Added new gcc config option CC_GCC_CONFIG_TLSJasmin Jessich2017-02-211-0/+12
| | | | | | | Adding new tristate configuration for TLS (Thread Local Storage) to add "--enable-tls" (y), "--disable-tls" (n) or nothing (m). Signed-off-by: Jasmin Jessich <jasmin@anw.at>
* More garbage collectionAlexey Neyman2017-02-181-14/+6
| | | | Signed-off-by: Alexey Neyman <stilor@att.net>
* Have LTO depend-on non-static buildsAlexey Neyman2017-02-181-0/+2
| | | | | | | | | Loading a dynamic library (LTO plugin) from a static binary fails on ArchLinux. It is also prone to break if a system is ever upgraded. Also, disable plugins if not enabled explicitly. Signed-off-by: Alexey Neyman <stilor@att.net>
* More GCAlexey Neyman2017-02-181-22/+16
| | | | Signed-off-by: Alexey Neyman <stilor@att.net>
* Garbage collection for GCC options that are sameAlexey Neyman2017-02-181-12/+10
| | | | | | ... on all supported versions. Signed-off-by: Alexey Neyman <stilor@att.net>
* Determine whether -E/-r option selects extended regexpAlexey Neyman2017-02-131-1/+1
| | | | | | | | | | | | | | ... and then use the right option. See the note in scripts/functions on where we should use ${foo} and where just 'foo'; this boils down to whether we can expect the build tools override to be in effect (e.g. in the actual build scripts) or not (i.e. outside of scripts/build). While running in scripts/functions, or in scripts/crosstool-NG.sh the build tools override directory (.build/tools/bin) may have not been set up (yet, or at all). Also, modify the installed scripts (populate, xldd) accordingly. Signed-off-by: Alexey Neyman <stilor@att.net>