scripts/ext-toolchain: implement external GCC version detection Some package may needs to enable compatibility option based on the GCC version. Currently the GCC version is set based on the default value and doesn't actually reflect the real value provided by the external toolchain if used. Fix this by correctly detecting the GCC version in the external toolchain and set the correct value in CONFIG_GCC_VERSION. A new option is added in menuconfig to manually set the GCC version if needed. Signed-off-by: Christian Marangi <ansuelsmth@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>
toolchain: Include ./include/fortify for external musl toolchain When building with an external toolcahin with musl also include ./include/fortify by default. This is also done when we build with the internal toolchain using musl libc. Without this extra include the fortify source feature is not working when using an external musl toolchain. All binaries were compiled without fortify source when an external musl toolchain was used. All binaries release done by the OpenWrt project use the internal toolcahin where fortify source is working. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
tools/dwarves: add host package dwarves is a set of tools that use the debugging information inserted in ELF binaries by compilers such as GCC. Utilities in the dwarves suite include pahole, which can be used to find alignment holes in structs and classes, and also extracts other information such as CPU cacheline alignment, helping pack those structures to achieve more cache hits. These tools are also used to encode and read the BTF type information format used with the bpf syscall, making this a Linux build dependency when using kernel BTF information. Signed-off-by: Tony Ambardar <itugrok@yahoo.com> Signed-off-by: Felix Fietkau <nbd@nbd.name> [bump to 1.23, add elfutils dep, drop host lib usage, drop cmake release target, use RM macro] Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
build: add support for using prebuilt LLVM toolchain When the prebuilt llvm toolchain is unpacked into the source dir, it is automatically picked up and used by the build system, and eBPF based packages can be selected Signed-off-by: Felix Fietkau <nbd@nbd.name>
llvm-bpf: support creating a tarball in bin This can be used for adding the toolchain to an existing tree without having to build it from scratch. Enable building the toolchain + tarball by default on buildbot Signed-off-by: Felix Fietkau <nbd@nbd.name>
build: fix bpf toolchain dependency for qosify Add hidden symbols to fix defaults with CONFIG_DEVEL unset Signed-off-by: Felix Fietkau <nbd@nbd.name>
config: add choice for selecting the LLVM toolchain type This is global for all BPF based packages Signed-off-by: Felix Fietkau <nbd@nbd.name>
tools/llvm-bpf: add llvm+clang build suitable for compiling code to eBPF Preparation for building packages that ship eBPF code Signed-off-by: Felix Fietkau <nbd@nbd.name>
toolchain: gdb: Add optional python support Compile gdb with python support optionally. To use the Python support in gdb some extra python files are needed, install them too. While at it also install other shared files which we did not install before. If gdb is built without Python support the python folder does not exists. Signed-off-by: Hauke Mehrtens <hmehrtens@maxlinear.com>
toolchain: Fix glibc selection on ARC targets Without this change no libc is selected and the build will fail. This will select glibc for ARC CPUs. Fixes: 95f1002acab5 ("toolchain: default to glibc for ARC") Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
toolchain: remove uClibc-ng config stuff This is in preparation for removing it. Signed-off-by: Rosen Penev <rosenp@gmail.com>
toolchain: default to glibc for ARC glibc 2.32 gained support for the ARC architecture. This is preparation for removing uClibc-ng. Signed-off-by: Rosen Penev <rosenp@gmail.com>
toolchain: remove gcc libssp and use libc variant Removes the standalone implementation of stack smashing protection in gcc's libssp in favour of the native implementation available in glibc and uclibc. Musl libc already uses its native ssp, so this patch does not affect musl-based toolchains. Stack smashing protection configuration options are now uniform across all supported libc variants. This also makes kernel-level stack smashing protection available for x86_64 and i386 builds using non-musl libc. Signed-off-by: Ian Cooper <iancooper@hotmail.com>
toolchain: Simplify libc selection uClibc-ng is only needed for ARC. Simplify the conditions. Signed-off-by: Rosen Penev <rosenp@gmail.com>
toolchain: Remove powerpc64 libc restriction Starting with version 1.1.15, musl supports powerpc64. There are no known users of powerpc64 yet. This is effectively a revert of 0de93311e1575ab6f8e9e90b5023b6fb2cedcf1f Signed-off-by: Rosen Penev <rosenp@gmail.com>
toolchain: replace LEDE in help text Use generic wording. Signed-off-by: Karl Pálsson <karlp@etactica.com> Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [fixed a -> á]
musl: improve crypt() size hack Instead of silently downgrading any non-MD5 crypt() request to DES, cleanly fail with return NULL and errno = ENOSYS. This allows callers to notice the missing support instead of the unwanted silent fallback to DES. Also add a menuconfig toolchain option to optionally disable the crypt size hack completely. This can be probably made dependant on SMALL_FLASH or a similar feature indicator in a future commit. Ref: https://github.com/openwrt/openwrt/pull/1331 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
toolchain: Replace YASM with NASM Packages libx264 and ffmpeg are built with ASM options on x86 platforms. The current libx264 version no longer builds with YASM and requires NASM. ffmpeg 3.x can be built with either YASM or NASM however, furture 4.x versions will require NASM. Signed-off-by: Ted Hess <thess@kitschensync.net> Acked-by: Rosen Penev <rosenp@gmail.com>
toolchain: gdb: activate on ARM64 gdb supports ARM64 since quite some time now, activate it there like on other CPU architectures. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>