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 with a precompiled toolchain. It can be used to develop and
test packages for OpenWrt before including them in the buildroot 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.flags \
*.install \ *.install \
*/doc \ */doc \
*/share/locale */share/locale \
*/llvm-bpf*
SDK_DIRS = \ SDK_DIRS = \
$(STAGING_SUBDIR_HOST) \ $(STAGING_SUBDIR_HOST) \

View File

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

View File

@ -24,7 +24,9 @@ CMAKE_SOURCE_SUBDIR := llvm
include $(INCLUDE_DIR)/host-build.mk include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/cmake.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 += \ CMAKE_HOST_OPTIONS += \
-DLLVM_ENABLE_BINDINGS=OFF \ -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" \ -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 -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)) $(eval $(call HostBuild))