aboutsummaryrefslogtreecommitdiff
path: root/scripts/build/cc
Commit message (Collapse)AuthorAgeFilesLines
* Fixes for libstdcxx-verbose option tristateNorbert Lange2022-07-111-0/+2
| | | | | | | | Make it proper "tristate" by not specifying the option. The config GCC_4_8_or_later was removed with cc6b7fad46f5cb3d84, so dont use it.
* Allow libsanitizer on architectures that support itChris Packham2022-07-111-5/+5
| | | | | | | | | | | | libsanitizer is only supported on selected architectures. Add ARCH_SUPPORTS_LIBSANITIZER and have architectures select this option based on the list of supported configurations from GCC's libsanitizer/configure.tgt. Support for mips64 was added in GCC12 so this is an additional condition for the mips architecture. Fixes #1733 Signed-off-by: Chris Packham <judge.packham@gmail.com>
* Switch CT_CC_{CORE_}SYSROOT_ARG to arraysJustin Chen2022-07-011-1/+1
| | | | | | | CT_CC_{CORE_}SYSROOT_ARG is being used both as an array and string. Switch everything to be used as an array for consistency. Signed-off-by: Justin Chen <justinpopo6@gmail.com>
* Enable D language supportMarc Poulhiès2022-06-141-0/+1
| | | | | | | Enable D support as an experimental feature. GDC becomes a build dependency when enabled. Signed-off-by: Marc Poulhiès <dkm@kataplop.net>
* gcc: Fix compilation error in core C gcc compiler older than v5Guillermo E. Martinez2022-06-011-2/+8
| | | | | | | | | | | | | | | | | | | | | When core gcc older than v5 is compiled it shows the error message: Build failed in step 'Installing core C gcc compiler' called in step '(top-level)' Error happened in: CT_DoExecLog[scripts/functions@376] called from: do_gcc_core_backend[scripts/build/cc/gcc.sh@627] called from: do_cc_core[scripts/build/cc/gcc.sh@210] called from: main[scripts/crosstool-NG.sh@697] configure: error: in `.../build/build-cc-gcc-core/fixincludes': configure: error: C compiler cannot create executables This patch disable `all-build-libcpp' target when core gcc older than v5 is configured. Signed-off-by: Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
* gcc: Add 12.1Chris Packham2022-05-191-2/+2
| | | | | | | | | | | | | | | | | | | Add GCC 12.1 https://gcc.gnu.org/gcc-12/ The following patches from GCC 11.3.0 are no longer needed: - 0005-arc-Update-ZOL-pattern.patch - 0006-arc-Update-u-maddhisi4-patterns.patch - 0007-arc-Fix-maddhisi-patterns.patch - 0008-Darwin-aarch64-Initial-support-for-the-self-host-dri.patch - 0009-libstdc-Check-for-TLS-support-on-mingw-cross-compile.patch One new patch is needed to avoid issues building sh-unknown-elf: - 0006-sh-Avoid-mb-m1-multilib-combination.patch It is also necessary to build all-build-libcpp. This target exists as far back as GCC 6 so has been done unconditionally. Signed-off-by: Chris Packham <judge.packham@gmail.com>
* cc/gcc: Create liblto_plugin symbolic link with correct extensionJoel Holdsworth2022-05-111-4/+12
| | | | | | | | | | | | Previously, cc/gcc.sh assumed that liblto_plugin would always be installed with the ".so" file extension. However, this assumption is incorrect when the host machine is Windows (".dll") or MacOS (".dylib"). This patch corrects this issue by probing the file extension in similar fashion to the way adjacent code determines the file extension of executable binaries. Signed-off-by: Joel Holdsworth <jholdsworth@nvidia.com>
* cc/gcc: Ensure value of ext is always setJoel Holdsworth2022-05-111-2/+2
| | | | | | | | The "ext" variable is set with the file extension of executable binaries for a given platform. To improve tidiness, this patch ensures the variable is always set even when there is no file path. Signed-off-by: Joel Holdsworth <jholdsworth@nvidia.com>
* cc/gcc: Declare "file" and "ext" variables localJoel Holdsworth2022-05-111-0/+4
| | | | | | | | In do_gcc_core_backend and do_gcc_backend, variables "file" and "ext" are used to store intermediate values. Previously, these were not declared local. This patch corrects this issue. Signed-off-by: Joel Holdsworth <jholdsworth@nvidia.com>
* cc/gcc: Remove -lstdc++ and -lm from gcc LDFLAGSJoel Holdsworth2022-05-111-24/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In Bryan Hundven's patch 1ad439907 from 2010, the author added -lstdc++ and -lm to the host gcc build's LDFLAGS, because at the time the linker did not correctly include these libraries causing the build to fail. In modern builds, this causes a problem for canadian gcc builds where the host machine is mingw32-w64 Windows. Within the gcc build there is the liblto_plugin module. On Windows this must be built as the "liblto_plugin.dll" dynamic library. However, libtool cannot produce a dynamic library unless every library dependency is also a dynamic library, and falls back to producing a libstdc++.a static library. liblto_plugin does not require libstdc++ - it does not contain any C++ code, and the dependency would usually be elided by the linker. Unfortunately, in this case, crosstool-ng will never build a libstdc++.dll dynamic library - only a libstdc++.a static library. Therefore, there will never be a dynamic library version of stdc++ for libtool to load and then discard. This patch corrects the issue by removing "-lstdc++" from LDFLAGS, because modern versions of gcc are able to correctly include libstdc++ where necessary. It also remove "-lm" for similar reasons. Signed-off-by: Joel Holdsworth <jholdsworth@nvidia.com>
* gcc: add gcc libstdcxx-verbose optionNorbert Lange2022-02-231-0/+10
| | | | | | | Rather important option for arm cortex toolchains supporting c++, avoids pulling in all printf/iostream code by default. Signed-off-by: Norbert Lange <nolange79@gmail.com>
* Unify core passesAlexey Neyman2022-02-111-70/+15
| | | | | | | | | With libc_headers step before pass-1, there is no need to distinguish pass-1 and pass-2; they are configured identically (note that with the current configuration, core pass-2 is only used for win32 - hence, uses build_libgcc=yes and mode=static). Signed-off-by: Alexey Neyman <stilor@att.net>
* Convert tabs to spacesAlexey Neyman2022-02-111-20/+20
| | | | | | | Recent changes introduced a mixture of tabs/spaces that result in broken indentation in multiple places. Signed-off-by: Alexey Neyman <stilor@att.net>
* gcc: Build static libgcc in core_pass1Chris Packham2022-01-121-0/+2
| | | | | | | | | | | | | | | | | | Per https://github.com/crosstool-ng/crosstool-ng/issues/808 build static libgcc in the first pass which lets us skip the second one. Building mingw-w64 requires header files in order to build C++ support so mingw builds core pass 2. This could probably be cleaned up by splitting libc_start_files into a separate libc_header step. But for now having core 2 for mingw-w64 and core 1 for the other libcs will have to do. Anything that previously selected CC_CORE_PASSES_NEEDED now selects CC_CORE_PASS_1_NEEDED. The same goes for CC_CORE_PASS_2_NEEDED with the exception of mingw-w64. Fixes #808 Fixes #217 Signed-off-by: Chris Packham <judge.packham@gmail.com>
* Merge branch 'canadian-cross-build' of ↵Chris Packham2021-09-081-13/+1
|\ | | | | | | | | | | https://github.com/foss-for-synopsys-dwc-arc-processors/crosstool-ng Signed-off-by: Chris Packham <judge.packham@gmail.com>
| * gcc: Fix canadian cross building on older hostsAlexey Brodkin2021-09-061-13/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GCC 11+ requires compiler being used to support C++11 standard [1]. And while GCC starting from 6.x has C++11 support enabled by default [2], older versions need to be forced to implement it with "-std=gnu++11" and luckily GCC's build-system takes care of that: 1. For ${host} compiler - [1] 2. For ${build} compiler - [3, 4] In a nutshell the configure script tries a couple of options and the one which helps to build a test source gets appended to CXX (not CXXFLAGS!), so on say CentOS 7.x with GCC 4.8.5 during cross-compilation of GCC CXX="x86_64-build_pc-linux-gnu-g++ -std=gnu++11". And all is good. But in case of canadian cross due to [5] we for some reason* force set CXX_FOR_BUILD with just a compiler name, effectively overriding all the magic done by GCC's internals described above. This leads to a compilation failures like that: ------------------------------------->8---------------------------------- [ALL ] In file included from /usr/include/c++/4.8.2/type_traits:35:0, [ALL ] from .../HOST-x86_64-apple-darwin14/arc-gcc11-elf/src/gcc/gcc/system.h:244, [ALL ] from .../HOST-x86_64-apple-darwin14/arc-gcc11-elf/src/gcc/gcc/gengtype.c:26: [ERROR] /usr/include/c++/4.8.2/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. [ALL ] #error This file requires compiler and library support for the ^ ------------------------------------->8---------------------------------- * my guess that [5] was done because back in the day indeed we used to have "--build=${CT_BUILD} --host=${CT_HOST}" in do_cc_core(). But now after [6] this is no longer necessary as we use "--build=${CT_BUILD} --host=${CT_BUILD}" and all is safe and clean. So yet another old quirk goes away - hooray! [1] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=5329b59a2e13dabbe2038af0fe2e3cf5fc7f98ed [2] https://gcc.gnu.org/gcc-6/changes.html [3] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96612 [4] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=7ffcf5d61174dda1f39a623e15f7e5d6b98bbafc [5] https://github.com/crosstool-ng/crosstool-ng/commit/9c6c090d7b6f5a03213b8ac6bd33a5cb812ec4c4 [6] https://github.com/crosstool-ng/crosstool-ng/commit/08161250ed65a9b91d680a305d01acd8052f937f Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
* | gcc: Don't mess with --with-host-libstdcxx if recent GCC (6+) is usedAlexey Brodkin2021-09-071-8/+12
|/ | | | | | | | | | | | | | | | | | | | | "--with-host-libstdcxx" option was removed in GCC 6.x, see [1] because of [2]. So it makes no sense to use it with later GCC versions. Frankly I don't like that implementation with yet another set of "if XXX", but since we still support GCC down to 4.8.5 what else we may do? Well, technically we may keep using things as they are now, because surprisingly GCC's configure script doesn't mind accepting meaningless options, but as a person who's looking at differences between various builds and drill-down to peculiarities of various config options, I'd prefer to not pollute configure with garbage. But for all the rest... well, it works now and maybe nodody else cares. [1] https://gcc.gnu.org/git/?p=gcc.git&a=commit;h=5dc85f7ec719a79ecfbcdd8563b07e5f0f365e65 [2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67092 Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
* cc/gcc: Add options for zstd usageChris Packham2021-08-291-0/+5
| | | | | | | | | | | | GCC can support using zstd compression for LTO object files. By default GCC's configure will enable this if libzstd is installed on the machine building the toolchain. This may be undesirable if the toolchain is to be used on a different machine. Add an option to control zstd usage and set the default to the same as the current behaviour (i.e. auto). Fixes #1579 Signed-off-by: Chris Packham <judge.packham@gmail.com>
* Add EXTRA_CXXFLAGS_FOR_BUILD optionRaphael Catolino2021-07-061-5/+8
| | | | Signed-off-by: Raphael Catolino <raphael.catolino@gmail.com>
* 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>