diff options
author | Felix Fietkau <nbd@nbd.name> | 2021-11-04 15:16:07 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2021-11-04 16:59:22 +0100 |
commit | 2a832b3df5990f33aa3d5944733e43bf5287475c (patch) | |
tree | 205a4a2cc0956ef685b92b1b4fc611528627a367 | |
parent | a7c0d7c06c5b353c98f6db6b0b766d2ff3dd6887 (diff) | |
download | upstream-2a832b3df5990f33aa3d5944733e43bf5287475c.tar.gz upstream-2a832b3df5990f33aa3d5944733e43bf5287475c.tar.bz2 upstream-2a832b3df5990f33aa3d5944733e43bf5287475c.zip |
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>
-rw-r--r-- | target/sdk/Config.in | 9 | ||||
-rw-r--r-- | target/sdk/Makefile | 3 | ||||
-rw-r--r-- | toolchain/Config.in | 2 | ||||
-rw-r--r-- | tools/llvm-bpf/Makefile | 25 |
4 files changed, 36 insertions, 3 deletions
diff --git a/target/sdk/Config.in b/target/sdk/Config.in index 0c8a61d247..1984e242e7 100644 --- a/target/sdk/Config.in +++ b/target/sdk/Config.in @@ -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 diff --git a/target/sdk/Makefile b/target/sdk/Makefile index 0606621192..7d7f09b514 100644 --- a/target/sdk/Makefile +++ b/target/sdk/Makefile @@ -34,7 +34,8 @@ EXCLUDE_DIRS:= \ *.install.flags \ *.install \ */doc \ - */share/locale + */share/locale \ + */llvm-bpf* SDK_DIRS = \ $(STAGING_SUBDIR_HOST) \ diff --git a/toolchain/Config.in b/toolchain/Config.in index b8b4cfeb88..a7da2a1f73 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -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 diff --git a/tools/llvm-bpf/Makefile b/tools/llvm-bpf/Makefile index ae279d26d2..a9fcc04495 100644 --- a/tools/llvm-bpf/Makefile +++ b/tools/llvm-bpf/Makefile @@ -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)) |