toolchain/gcc: enable zstd support LTO object files will now be compressed using zstd. Compressing debug sections with zstd will have to wait for GCC 13, which adds support for -gz=zstd. NOTE: wiping the ccache is strongly recommended, not doing so might yield build error later on: "lto1: internal compiler error: original not compressed with zstd" Signed-off-by: Andre Heider <a.heider@gmail.com>
toolchain/binutils: switch to version 2.40 by default This was build tested with all core packages on all targets successfully. This was run tested on the following systems: * lantiq/xrx200 musl * x86/64 musl * x86/64 glibc * malta/be The size of some of the initramfs images from lantiq/xrx increased by 240 bytes. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
toolchain/binutils: backport stable patches Add the patches with real changes from the binutils 2.40 stable branch. I am not aware that we ran into any of these problems, but I think it is better to take the existing stable patches. They were exported like this: git format-patch binutils-2_40...origin/binutils-2_40-branch I removed the patches changing the version numbers and updating the translations only. I removed the following patches: *Automatic-date-updat* 001-Re-enable-development.-Update-version-to-2.40.0.patch 004-Updated-translations-for-the-gas-and-binutils-sub-di.patch 015-Updated-Swedish-translation-for-the-binutils-sub-dir.patch 027-Updated-Swedish-translation-for-the-binutils-sub-dir.patch Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
toolchain: remove references to $(LIBC)/utils subtarget The utils subtarget was used for uClibc and eglibc which are both obsolete and replaced in Openwrt by mainline musl and glibc, which do not have a utils Makefile target. Ref: 5d19a38d8 ("toolchain: sync eglibc headers/build split with uclibc changes") Fixes: 63fb17520 ("toolchain: remove uClibc-ng") Suggested-by: Andre Heider <a.heider@gmail.com> Signed-off-by: Michael Pratt <mcpratt@pm.me>
toolchain: fix stampfile dependency Use the gcc/final/install target stampfile as the prerequisite for the toolchain/compile target stampfile. The previous filename was also incorrect, the stampfile name format was changed (see reference) but was never updated here. The issue was never noticed because the usage of timestamp.pl was broken (fixed in previous commit) causing the extra prereq files passed to 'call stampfile' to never get checked at all. Fixes: 5149ed151 ("gcc: split up the build process into three distinct stages") Signed-off-by: Michael Pratt <mcpratt@pm.me>
toolchain: remove installing twice in the "initial" subdir This was apparently introduced to recreate the toolchain (wipe staging_dir/toolchain*, but keep build_dir/toolchain*, followed by a `make toolchain/compile`). But it leaves leftovers and causes re-links to happen at src_install phase, because of the changed paths, possibly adding yet another source of issues. With the prior commits removing various hacks related to the "initial" folder we can remove installing it twice altogether. The recreated toolchain is exactly the same as before. Signed-off-by: Andre Heider <a.heider@gmail.com>
toolchain/musl: remove libgcc_initial hack This reverts r15599 [0]. This was added to fix an uclibc rebuild issue, but since uclibc isn't supported anymore [Fixes:] this can be removed. [0] https://git.openwrt.org/?p=openwrt/svn-archive/archive.git;a=commitdiff;h=016a052efeee6bc2da3f501a8c66b5aea20350b4 Fixes: 63fb1752 "toolchain: remove uClibc-ng" Signed-off-by: Andre Heider <a.heider@gmail.com>
toolchain/glibc: fixup the libm.so linker script too Add it to the existing list to fix it up. Found by mold: toolchain-x86_64_gcc-12.2.0_glibc/lib/libm.so:4: GROUP ( /lib/libm.so.6 AS_NEEDED ( /lib/libmvec.so.1 ) ) ^ library not found: /lib/libm.so.6 Signed-off-by: Andre Heider <a.heider@gmail.com>
toolchain/gcc: remove glibc libgcc_eh hack A modern glibc only links against libgcc_eh for its tests or when building it static, which doesn't happen here. Reverts a hunk of: a3edea1b "add support for alternative C libraries..." Signed-off-by: Andre Heider <a.heider@gmail.com>
toolchain/binutils: get rid of outdated linaro version string hack This reverts commit 9d1b619cb1a7dd18cd12cab0d9f93452b10e2e11. No Linaro binutils are supported anymore, the leftover removal commit missed one line. Fixes: b648e1c0 "binutils: remove 2.25.1 support and leftovers of older versions" Signed-off-by: Andre Heider <a.heider@gmail.com>
toolchain/binutils: get rid of outdated libiberty hack This reverts commit 68fcb15f90edd92ef36990c5696b9e79df07a6ec. binutils syncs libiberty from gcc, which defaults to not installing itself since [0], see also [1]. That change is apparently part of binutils 2.24, and the oldest supported version here is 2.37, hence we can remove this hack. [0] https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=48d7db63ff581b026e057badf39f1f23fdf47928 [1] https://gcc.gnu.org/onlinedocs/libiberty/Using.html Signed-off-by: Andre Heider <a.heider@gmail.com>
toolchain/binutils: get rid of ARC leftovers In [0] support for ARC specific binutils were added, which was later removed again [Fixes:]. Upstream binutils never had an extlib. [0] 8b5d644b "toolchain: add support of ARC architecture" Fixes: 8568dcd9 "toolchain: Remove binutils 2.29 for ARC targets" Signed-off-by: Andre Heider <a.heider@gmail.com>
toolchain/gcc: clean up CFLAGS Instead of having two different ways to pass flags to the gcc build process, add them as configure args, which is a reliable way to let gcc pass them around to its various pieces. Also add CXXFLAGS, since gcc started to use c++ for itself recently (~10 years ago now). Signed-off-by: Andre Heider <a.heider@gmail.com>
treewide: strip useless `default n` Kconfig lines Kconfig docs say: > The default value deliberately defaults to 'n' in order to avoid > bloating the build. Apply this rule everywhere, to avoid more cloning of bad examples Signed-off-by: Tony Butler <spudz76@gmail.com>