2164 Commits

Author SHA1 Message Date
93d5d7664f Use -std=c17 for companion libs, which won't build with C23 standard, default for gcc15
Some checks failed
CI / crosstool (macos-13) (push) Has been cancelled
CI / crosstool (ubuntu-22.04) (push) Has been cancelled
CI / tarballs (ubuntu-22.04) (push) Has been cancelled
CI / toolchains (push) Has been cancelled
Signed-off-by: Michał Zagórski <zagura6+github@gmail.com>
2025-06-13 21:02:44 +12:00
f1c585edd0 libc/glibc: Add workaround for makeinfo build issue
Newer versions of makeinfo fail to build the older versions of the glibc
manual triggering build failures. Add a workaround for this my disabling
makeinfo for the glibc build where needed.

Fixes #2358
Signed-off-by: Chris Packham <judge.packham@gmail.com>
2025-06-04 09:23:45 +12:00
ef676fb85a gcc: Add default pie support to do_gcc_backend
Some checks failed
CI / crosstool (macos-13) (push) Has been cancelled
CI / crosstool (ubuntu-22.04) (push) Has been cancelled
CI / tarballs (ubuntu-22.04) (push) Has been cancelled
CI / toolchains (push) Has been cancelled
This was added to do_gcc_core_backend but not do_gcc_backend so the
final compiler didn't have the configuration. Fix this so that the
setting affects bot the core and final compilers.

Fixes #2362
Signed-off-by: Chris Packham <judge.packham@gmail.com>
2025-05-30 08:33:13 +12:00
cabc7a3578 Add the FPU options for SuperH
A lot of the old code didn't even work

Signed-off-by: QBos07 <qubos@outlook.de>
2025-05-07 16:33:28 +12:00
2fb4cf18d1 companion_libs: Make picolibc build compatible with 1.8.10
Picolibc 1.8.10 reworked the configuration option for single/multi
thread support and removed some unused options for exit handler
support.

Map LIBC_PICOLIBC_MULTITHREAD to the new single-thread option or the old
newlib-retargetable-locking+newlib-multithread options depending on whether
the picolibc version knows about the single-thread option.

Remove support for newlib-register-fini, newlib-atexit-dynamic-alloc,
newlib-global-atexit and lite-exit options as all of those relate to
the legacy exit handler code. There hasn't ever been any way to enable
this using crosstool-ng, so none of these options have ever done
anything.

The help strings for each of of the unused configuration variables
have been updated.

Signed-off-by: Keith Packard <keithp@keithp.com>
2025-04-26 15:06:15 +12:00
63765c98c0 picolibc: Add LIBC_PICOLIBC_GCC_LIBSTDCXX_TARGET_CXXFLAGS
This provides additional flags used when building libstdc++ for
picolibc.

Signed-off-by: Keith Packard <keithp@keithp.com>
2025-04-26 15:05:43 +12:00
a23edf4267 gcc: Add CC_GCC_LIBSTDCXX_TARGET_CXXFLAGS
This parallels the newlib-nano setting,
NEWLIB_NANO_GCC_LIBSTDCXX_TARGET_CXXFLAGS, and provides a place to
specify options that control how libstdc++ is build, such as
-fno-exceptions.

Signed-off-by: Keith Packard <keithp@keithp.com>
2025-04-26 15:05:43 +12:00
a50a39aa84 Fix missing $ for variable
Some checks failed
CI / crosstool (macos-13) (push) Has been cancelled
CI / crosstool (ubuntu-22.04) (push) Has been cancelled
CI / tarballs (ubuntu-22.04) (push) Has been cancelled
CI / toolchains (push) Has been cancelled
Fixes https://github.com/crosstool-ng/crosstool-ng/issues/2321
Credit to @jimbomorrison for spotting it.

Signed-off-by: Quentin Boswank <qubos@outlook.de>
2025-04-16 12:22:25 +12:00
c819f837f4 arch: Add support for RX gcc build
Signed-off-by: Duy Nguyen <duy.nguyen.xa@renesas.com>
2025-04-04 08:31:24 +13:00
371c04bf3d Fix disabled libstdc++-v3
the config var is unset and not just `n`.

Signed-off-by: Quentin Boswank <qubos@outlook.de>
2025-03-10 08:36:44 +13:00
7458341776 contrib/gcc-test-suite: Add configuration options including qemu setup
Some checks failed
CI / crosstool (macos-13) (push) Has been cancelled
CI / crosstool (ubuntu-22.04) (push) Has been cancelled
CI / tarballs (ubuntu-22.04) (push) Has been cancelled
CI / toolchains (push) Has been cancelled
This makes the options necessary to run the gcc test suite
configurable in the crosstool-ng config file.

That includes the ability to run the test suite using qemu instead of
on a remote host.

Signed-off-by: Keith Packard <keithp@keithp.com>
2025-03-01 19:33:37 +13:00
5a11188bd0 ncurses: Pass --disable-widec to configure
Some checks failed
CI / crosstool (macos-13) (push) Has been cancelled
CI / crosstool (ubuntu-22.04) (push) Has been cancelled
CI / tarballs (ubuntu-22.04) (push) Has been cancelled
CI / toolchains (push) Has been cancelled
The default for wide char support has changed in ncurses-6.5. This
causes build failures for gdb. Pass --disable-widec to prevent the build
errors.

Fixes #2292, #2294
Signed-off-by: Chris Packham <judge.packham@gmail.com>
2025-02-24 08:47:14 +13:00
9983219611 lm32: Initial LatticeMicro32 support
This target is in GCC/binutils for a while.

It's baremetal only without upstream Linux support.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
2025-01-07 09:07:14 +13:00
b07f41fe31 openrisc: Initial OpenRISC 1000 support
This target is in GCC/binutils/Linux/Glibc/musl for a while.

Baremetal/glibc/musl toolchains are all build tested.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
2025-01-07 09:06:53 +13:00
51bda9ebd6 picolibc: Avoid build system headers
Some checks failed
CI / crosstool (macos-13) (push) Has been cancelled
CI / crosstool (ubuntu-22.04) (push) Has been cancelled
CI / tarballs (ubuntu-22.04) (push) Has been cancelled
CI / toolchains (push) Has been cancelled
When building picolibc as a companion library the configure step can end
up picking up certain headers from the build system which causes build
failures. Pass an appropriate --with-headers= to the GCC back end when
building picolibc as a companion library so that the correct headers are
detected by ./configure.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
2025-01-05 12:02:19 +13:00
5014530b4f gcc: Support plugins in core gcc compiler
When building for bare metal only do_gcc_core_backend() is used. In
order to support GCC plugins the --enable-plugin needs to be passed to
GCC's configure.

Fixes #2244
Signed-off-by: Chris Packham <judge.packham@gmail.com>
2025-01-05 12:01:29 +13:00
0145966e8e Cleanup old avr-libstdcxx code and make it usable on other targets
Some checks failed
CI / crosstool (macos-13) (push) Has been cancelled
CI / crosstool (ubuntu-22.04) (push) Has been cancelled
CI / tarballs (ubuntu-22.04) (push) Has been cancelled
CI / toolchains (push) Has been cancelled
Should not cause major unwanted behavior changes

 - C++ is now selected by default in many configs.

Signed-off-by: QBos07 <qubos@outlook.de>
[cp: depend on CC_LANG_CXX instead of select]
Signed-off-by: Chris Packham <judge.packham@gmail.com>
2024-12-23 19:13:45 +13:00
71cfd2d094 gdb/gdbserver: use -static --static for static build
Some checks failed
CI / crosstool (macos-13) (push) Has been cancelled
CI / crosstool (ubuntu-22.04) (push) Has been cancelled
CI / tarballs (ubuntu-22.04) (push) Has been cancelled
CI / toolchains (push) Has been cancelled
With gdb15.2 gdb uses libtool for linking, but gdbserver is not.
Should not break #2230 or #2053

Signed-off-by: Michał Zagórski <zagura6+github@gmail.com>
2024-12-16 08:37:33 +13:00
9c444f4ca6 gdb: build native gdb with static libexpat
Use --with-libexpat-type=static to search for static libexpat in gdb
native. This should fix #2230.

Signed-off-by: Michał Zagórski <zagura6+github@gmail.com>
2024-12-16 08:37:33 +13:00
1c395b298d mold: tell cmake which compilers to use
The mold build was using gcc in the PATH, instead of the shiny gcc we
just built (the way the other companion libs/tools do)

Signed-off-by: Mike Lundy <mlundy@splunk.com>
2024-11-17 20:00:37 +13:00
558d67ec0d initial support to build tricore gcc
Add support for Tricore architecture.
TriCore architecture is optimized for real-time embedded systems.
More information can be found at AURIX™ TC3xx Architecture vol 1

https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Architecture_vol1-UserManual-v01_00-EN.pdf?fileId=5546d46276fb756a01771bc4c2e33bdd

Signed-off-by: jferreir <jesus.ferreira@gmail.com>
2024-11-10 20:14:52 +13:00
6d1d61cbca gdb: fix GDB_CC_LD_LIBTOOL reference
GDB_CC_LD_LIBTOOL doesn't exist and so else branch always taken.
We should use CT_GDB_CC_LD_LIBTOOL.

Signed-off-by: demin.han <demin.han@starfivetech.com>
2024-10-16 14:54:04 +13:00
246f46c1cb gcc: Specify '--with-headers' when building final gcc
The final gcc build process was relying on `CT_CC_SYSROOT_ARG` to
provide the `--with-headers` argument pointing to the libc header
directory.

Since `CT_CC_SYSROOT_ARG` no longer provides `--with-headers`, this adds
one directly to the final gcc build invocation.

Without this, gcc build system will not copy all the required libc
headers into the `sys-include` directory.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2024-10-06 15:51:13 +13:00
9884db4c87 Specify header path in CT_CC_SYSROOT_ARG only for glibc
When building a non-sysrooted toolchain, `--with-headers` argument is
specified in `CT_CC_SYSROOT_ARG` as a hack, supposedly because "final
gcc will define disable_glibc while building libgcc, and you'll have no
profiling."

This, however, leads to `--with-headers` being specified multiple times
when building libstdc++ for additional libc variants (e.g. newlib-nano
and picolibc) and results in wrong libc headers being used by the
libstdc++ build under certain circumstances -- GCC does not use the last
specified `--with-headers` when building for macOS and Windows hosts.

Since the above hack is intended for glibc only, this commit adds a
check to ensure that `--with-headers` is added to `CT_CC_SYSROOT_ARG`
only when building glibc.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2024-10-06 15:51:13 +13:00
902fab451b companion_libs: zstd: Build nomt configuration
We have been building the multi threaded zstd target. This requires that
anything that links with lzstd also links with lpthread. On more recent
systems this is fine because lpthread is part of GNU libc so the
-pthread option is a no-op but on other systems this will cause GCC to
either fail to build or to silently disable zstd compression. By
building the libzstd.a-nomt-release we can be compatible with older GCC
versions and ensure that support for zstd is not silently dropped.

Fixes: #2198
Signed-off-by: Chris Packham <judge.packham@gmail.com>
2024-09-09 08:59:38 +12:00
5a1dc8d95d scripts: Save toolchain config as regular file
Since commit 16c6cc99 ("Save the toolchain configuration to its own
file, as an auto-extracting shell script:") we've been saving the
configuration as a self extracting script. This is a little non-obvious
as it looks like it should be a regular file but the bzipped payload
means it can be easily inspected. It may also cause alarm for users who
should rightly be suspicious of unexpected binaries that get shipped
along with packaged toolchains. It also assumes that bzip2 (or at least
bzcat) is available on the machine running the toolchain.

Instead of the self extracting shell script save the config as a regular
compressed file with an obvious file extension.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
2024-07-29 13:13:26 +12:00
b6a4766d22 binutils: Allow gold to be statically linked
gold uses g++ to link which doesn't recognise -all-static. It appears as
if -static should work for both libtool and g++ but for some reason it
doesn't. Remove the restriction that gold can't be included in a static
toolchain. When a static toolchain is requested pass
--with-gold-ldflags=--static to configure. Finally build gold separately
so it does not get the extra_make_flags which may contain -all-static.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
2024-07-29 13:12:59 +12:00
067d7743b6 Optimize zstd we build
- multithreading enabled
- release mode

Signed-off-by: Quentin Boswank <qubos@outlook.de>
2024-06-17 13:36:49 +12:00
b82f532f0b scripts/functions: Update sourceware mirrors
Add https mirror for sourceware.org. Use https instead of http for
kernel.org and gnu.org.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
2024-06-05 19:32:16 +12:00
f9ab04b63a Add mold linker build
Allows building the #mold linker, which can then be used in the
cross-toolchain by passing the -fuse-ld=mold to the gcc flags. It is
much faster than ld or gold.

This requires a C++20 compiler and cmake.

Initially implemented by Arnaud, and HC added configure check for cmake.

Outstanding task to validate compiler is C++20 compatible.

Signed-off-by: Arnaud Vrac <avrac@freebox.fr>
Signed-off-by: Hans-Christian Noren Egtvedt <egtvedt@samfundet.no>
2024-06-05 19:31:45 +12:00
d4953677cd Allow for Runtime-less build of GDC and GNAT
Both D and GNAT have their own runtimes (resp. libphotos and libada).
It is still possible to build the compiler proper without any runtime,
and have an external runtime installed later. This is most commonly
found in embedded systems.

An example for D is: https://github.com/KitsunebiGames/tinyd-rt
An example for Ada: https://github.com/Fabien-Chouteau/bare_runtime

Signed-off-by: Marc Poulhiès <dkm@kataplop.net>
2024-06-05 19:30:31 +12:00
c5a17024a9 Disable implicit-function-declaration error for newlib
GCC14 will treat implicit-function-declaration as an error by default.
See https://gcc.gnu.org/gcc-14/porting_to.html for details.

Some libc function like __trap34 are defined in assembly and break this GCC diagnostic.

Signed-off-by: Nik Konyuchenko <spaun2002mobile@gmail.com>
2024-05-18 15:45:55 +12:00
810021d912 mingw-w64: enable wildcard
Wildcard is an opt-in (disabled by the default) feature that is used by many GNU tools like Binutils.

Signed-off-by: Mateusz Mikuła <mati865@gmail.com>
2024-04-24 18:14:12 +12:00
6c54b50336 scripts/functions: Use CT_Abort when paths.sh is missing
Code added to deal with --enable-local used the non-existent CT_Error
instead of CT_Abort. Use the correct function so the build aborts with a
useful error message.

Fixes #2141
Signed-off-by: Chris Packham <judge.packham@gmail.com>
2024-04-24 18:13:48 +12:00
6ad7b96903 gdb: Use correct libexpat for native build
The native gdb needs the version of libexpat built for the target. On
some systems gdb's configure will find the one from the build machine.
Use --with-expat= to point at the correct one for the target.

Fixes: 2092

Signed-off-by: Chris Packham <judge.packham@gmail.com>
2024-03-13 17:03:23 +13:00
c64500d94b gnuprumcu: Pass host sysroot to build toolchain
In canadian builds, the target toolchain running on the build
machine is not compiling and installing target Newlib.  Thus it
cannot by itself link target executables.  This results in
errors for gnuprumcu package when its configure script attempts
to test the compiler:

     .../ld: cannot find crt0.o: No such file or directory
     configure:3738: error: C compiler cannot create executables

Fix by passing the host toolchains's sysroot in target CFLAGS.

While at it, also add a missing passing of target LDFLAGS.

Successfully tested the following canadian builds:
  x86_64-unknown-linux-gnu,pru
  x86_64-w64-mingw32,pru
  arm-unknown-linux-gnueabihf,pru

Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
2024-03-11 17:29:13 +13:00
ace8d69df0 glibc: fix the broken build for glibc 2.19 with gcc 13.
macos silicon SDK does not contain stat64 (and other LFS extension), and glibc 2.19 makes use of it.

Signed-off-by: Hao Li <hayatelee@gmail.com>
2024-03-01 14:48:49 +13:00
d75c8c3b0f gdb: Fix extra config variable name for cross GDB
Similar to commit 65e5960a ("gdb: Fix extra config variable name for
native GDB") we need to use cross_extra_config for the options we're
passing to the gdb build when cross compiling.

Fixes: 5463ab4b ("gdb: Add gdb-10.2")
Signed-off-by: Chris Packham <judge.packham@gmail.com>
2024-03-01 14:48:05 +13:00
e7a88ff52d Revert "binutils: Disable glob for better portability"
This reverts commit 57f5909285. This was
originally added so that a toolchain could be built on a newer system but
run on an older one. With the benefit of hindsight that is probably the
wrong approach. The best way of achieving that goal would be to use
docker/podman container to provide an environment that is the same as
the oldest supported system and build inside that. The resulting
toolchain should be compatible with the old system and the new one.

Closes #2094

Signed-off-by: Chris Packham <judge.packham@gmail.com>
2024-03-01 14:45:27 +13:00
aa6a6c3a34 Ignore a bad id command to allow docker
Signed-off-by: Quentin Boswank <qubos@outlook.de>
2024-02-18 10:56:54 +13:00
4d660cff7d Update config.{guess,sub}
from: git://git.savannah.gnu.org/config.git

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2024-02-02 15:15:29 +13:00
44208730a6 gdb: Explicitly point to target's libgmp for native build
Starting from GDB 11.x, gmp is needed as a dependency to build full gdb.
And by default build system of native GDB will try to link with libgmp
of the build host. And to make sure that doesn't happen we need to
specify location of the target's sysroot so that library search starts
from there. Which we do in that change.

Fixes [1] & [1].

[1] https://github.com/crosstool-ng/crosstool-ng/issues/2084
[2] https://github.com/crosstool-ng/crosstool-ng/issues/1656

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
2024-01-30 11:04:56 +13:00
6cf65db329 Fix zlib build on win32 near enviroments
We set some variables for linking zlib to '' which we shouldn't do. Let
the Makefile sort these things out.

Signed-off-by: Quentin Boswank <qubos@outlook.de>
2023-12-18 16:28:45 +13:00
d91732672e scripts/build/binutils: Update path for libbfd
As of binutils 2.41 libbfd.a is not placed directly in the output
directory. Fortunately the libtool .libs location seems to have been
in place for some time so we can update the path without worrying about
backwards compatibility.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
2023-12-08 12:19:38 +13:00
70c6e877fa Adjust GUESS tuple for PA-RISC linux.
64-bit kernels can support running both 32 and 64-bit user code. Select
hppa-unknown-linux-$LIBC or hppa64-unknown-linux-$LIBC depending on
whether compiler defines LP64 or not.

Always select hppa-unknown-linux-$LIBC with 32-bit kernel. This will
generate 32-bit PA 1.1 code. If PA 2.0 code is desired, user can use a
compiler option to select it.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
2023-11-25 15:41:47 +13:00
1ea6e309e5 Map parisc64 to hppa64 in config.sub.
Debian and Gentoo use hppa/hppa64 for the PA-RISC ports. These are the
proper CPU designations for configuring most packages.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
2023-11-25 15:41:47 +13:00
5f3a1ef166 Add support for 32 and 64-bit PA-RISC linux build targets.
Note: The 64-bit target lacks a glibc port and doesn't build. Also,
there is no uclibc support.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
2023-11-25 15:41:47 +13:00
daf19e1761 gdb: Use correct arguments for static linking
As of version 13.x GDB uses libtool for linking instead of g++ these
take different arguments for static linking.  Commit 6146b5a6 ("use
-all-static when building a static gdb") attempted to deal with this but
had the effect of causing older GDB versions to fail to build
statically. Add a new internal flag GDB_CC_LD_LIBTOOL and use this to
decide whether to pass `-static` or `-all-static`.

Fixes #2053
Signed-off-by: Chris Packham <judge.packham@gmail.com>
2023-11-02 20:49:26 +13:00
f11d4d9c1e Add gnatls & gnatlink
add gnatls and gnatlink to list of tools since it is needed to support Ada just like gnatmake and gnatbind

Update crosstool-NG.sh & TODO

Signed-off-by: c-grant <60671494+c-grant@users.noreply.github.com>
2023-11-02 20:48:03 +13:00
cf6b1740a1 Add more caching to the CI
more specificaly to the tarballs download. The function CT_Fetch now
touches the already existing files to be comparable to the not used ones
that can araise when a package is updated.
This comparsion is needed because if it would not exist the tarball
would grow in size due to not used but still cached packages.
This would take time but is definitly something to worry about.

Signed-off-by: Quentin Boswank <qubos@outlook.de>
2023-10-04 16:12:23 +13:00