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>
This commit is contained in:
Felix Fietkau 2021-11-04 15:16:07 +01:00
parent a7c0d7c06c
commit 2a832b3df5
4 changed files with 36 additions and 3 deletions

View File

@ -7,4 +7,11 @@ config SDK
with a precompiled toolchain. It can be used to develop and
test packages for OpenWrt before including them in the buildroot
config SDK_LLVM_BPF
bool "Build the LLVM-BPF toolchain tarball"
depends on BPF_TOOLCHAIN_BUILD_LLVM
default BUILDBOT
help
This is a tarball of the precompiled LLVM toolchain suitable
for unpacking into the buildroot/SDK. It is used to build packages
that ship with eBPF kernel modules

View File

@ -34,7 +34,8 @@ EXCLUDE_DIRS:= \
*.install.flags \
*.install \
*/doc \
*/share/locale
*/share/locale \
*/llvm-bpf*
SDK_DIRS = \
$(STAGING_SUBDIR_HOST) \

View File

@ -40,6 +40,7 @@ menuconfig TARGET_OPTIONS
choice BPF_TOOLCHAIN
prompt "BPF toolchain" if DEVEL
default BPF_TOOLCHAIN_BUILD_LLVM if BUILDBOT
default BPF_TOOLCHAIN_NONE
config BPF_TOOLCHAIN_NONE
@ -302,6 +303,7 @@ config USE_LLVM_HOST
bool
config USE_LLVM_BUILD
default y if !DEVEL && BUILDBOT
select HAS_BPF_TOOLCHAIN
bool

View File

@ -24,7 +24,9 @@ CMAKE_SOURCE_SUBDIR := llvm
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/cmake.mk
CMAKE_HOST_INSTALL_PREFIX = $(STAGING_DIR_HOST)/llvm-bpf
LLVM_BPF_PREFIX = llvm-bpf-$(PKG_VERSION).$(HOST_OS)-$(HOST_ARCH)
CMAKE_HOST_INSTALL_PREFIX = $(STAGING_DIR_HOST)/$(LLVM_BPF_PREFIX)
CMAKE_HOST_OPTIONS += \
-DLLVM_ENABLE_BINDINGS=OFF \
@ -39,4 +41,25 @@ CMAKE_HOST_OPTIONS += \
-DLLVM_TOOLCHAIN_TOOLS="llvm-objcopy;llvm-objdump;llvm-readelf;llvm-strip;llvm-ar;llvm-as;llvm-dis;llvm-link;llvm-nm;llvm-ranlib;llc;opt" \
-DCMAKE_SKIP_RPATH=OFF
ifneq ($(CONFIG_SDK_LLVM_BPF),)
define Host/Install/Bin
echo "$(PKG_VERSION)" > $(CMAKE_HOST_INSTALL_PREFIX)/.llvm-version
STRIP_KMOD= PATCHELF= STRIP=strip $(SCRIPT_DIR)/rstrip.sh $(STAGING_DIR_HOST)/llvm-bpf
tar -C $(STAGING_DIR_HOST) \
-I '$(STAGING_DIR_HOST)/bin/xz -7e -T$(if $(filter 1,$(NPROC)),2,0)' \
-cf $(BIN_DIR)/llvm-bpf-$(PKG_VERSION).tar.xz llvm-bpf $(LLVM_BPF_PREFIX)
endef
endif
define Host/Install
rm -rf $(STAGING_DIR_HOST)/llvm-bpf*
$(Host/Install/Default)
ln -s $(LLVM_BPF_PREFIX) $(STAGING_DIR_HOST)/llvm-bpf
$(Host/Install/Bin)
endef
define Host/Uninstall
rm -rf $(STAGING_DIR_HOST)/llvm-bpf*
endef
$(eval $(call HostBuild))