Skip to content

Commit

Permalink
llvm-bpf: support creating a tarball in bin
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
nbd168 committed Nov 4, 2021
1 parent a7c0d7c commit 2a832b3
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 3 deletions.
9 changes: 8 additions & 1 deletion target/sdk/Config.in
Expand Up @@ -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
3 changes: 2 additions & 1 deletion target/sdk/Makefile
Expand Up @@ -34,7 +34,8 @@ EXCLUDE_DIRS:= \
*.install.flags \
*.install \
*/doc \
*/share/locale
*/share/locale \
*/llvm-bpf*

SDK_DIRS = \
$(STAGING_SUBDIR_HOST) \
Expand Down
2 changes: 2 additions & 0 deletions toolchain/Config.in
Expand Up @@ -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
Expand Down Expand Up @@ -302,6 +303,7 @@ config USE_LLVM_HOST
bool

config USE_LLVM_BUILD
default y if !DEVEL && BUILDBOT
select HAS_BPF_TOOLCHAIN
bool

Expand Down
25 changes: 24 additions & 1 deletion tools/llvm-bpf/Makefile
Expand Up @@ -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 \
Expand All @@ -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))

0 comments on commit 2a832b3

Please sign in to comment.