Is there a discussion around building with CONFIG_USE_LLVM_BUILD=y
which the buildbot config option sets vs not (ie gcc)? Any performance benefits to compiled images?
Some background reading for those who are interested:
Thanks for the reference. I am interested in a head-to-head with Openwrt if such an experiment exists. Also interested to see if different subarchs are different than x86_64.
Afair it does not mean building OpenWrt with LLVM but building a local LLVM toolchain (instead of downloading a prebuilt one or using a host installed one) for compiling eBPF programs
I believe you are correct... but I am still confused by the buildbot option which sets:
CONFIG_ALL_KMODS=y
CONFIG_ALL_NONSHARED=y
CONFIG_BUILDBOT=y
CONFIG_COLLECT_KERNEL_DEBUG=y
CONFIG_HAS_BPF_TOOLCHAIN=y
CONFIG_IB=y
CONFIG_KERNEL_BUILD_DOMAIN="buildhost"
CONFIG_KERNEL_BUILD_USER="builder"
CONFIG_PACKAGE_libbpf=m
CONFIG_PACKAGE_libelf=m
CONFIG_PACKAGE_libpcap=m
CONFIG_PACKAGE_libxdp=m
CONFIG_PACKAGE_qosify=m
CONFIG_PACKAGE_tc-tiny=m
CONFIG_PACKAGE_xdp-filter=m
CONFIG_PACKAGE_xdp-loader=m
CONFIG_PACKAGE_xdpdump=m
CONFIG_PACKAGE_zlib=m
CONFIG_REPRODUCIBLE_DEBUG_INFO=y
CONFIG_USE_LLVM_BUILD=y
Even though it's an external toolchain, it is clang not gcc.
AFAIK, this was added to support the qosify package, which can also use a prebuilt / installed:
# CONFIG_BPF_TOOLCHAIN_BUILD_LLVM is not set
CONFIG_BPF_TOOLCHAIN_HOST_PATH="/usr/lib/llvm-16"
# CONFIG_HAS_PREBUILT_LLVM_TOOLCHAIN is not set
CONFIG_USE_LLVM_HOST=y
I am wondering why it is the default for the buildbot config. If I understand it, this is how all official packages are built. Is that correct? External toolchain?
Yes, I think that is correct.