From 9f90a89655d41ba8afcd8018d7bc8b3753beb17e Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Thu, 4 Nov 2021 20:04:44 +0100 Subject: [PATCH] build: add support for using prebuilt LLVM toolchain When the prebuilt llvm toolchain is unpacked into the source dir, it is automatically picked up and used by the build system, and eBPF based packages can be selected Signed-off-by: Felix Fietkau --- include/bpf.mk | 10 +++++++--- toolchain/Config.in | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/include/bpf.mk b/include/bpf.mk index 28cdf6cb32..c68ad74554 100644 --- a/include/bpf.mk +++ b/include/bpf.mk @@ -1,6 +1,7 @@ BPF_DEPENDS := @HAS_BPF_TOOLCHAIN +LLVM_VER:= -ifneq ($(CONFIG_BPF_TOOLCHAIN_HOST),) +ifneq ($(CONFIG_USE_LLVM_HOST),) BPF_TOOLCHAIN_HOST_PATH:=$(call qstrip,$(CONFIG_BPF_TOOLCHAIN_HOST_PATH)) ifneq ($(BPF_TOOLCHAIN_HOST_PATH),) BPF_PATH:=$(BPF_TOOLCHAIN_HOST_PATH)/bin:$(PATH) @@ -9,9 +10,12 @@ ifneq ($(CONFIG_BPF_TOOLCHAIN_HOST),) endif CLANG:=$(firstword $(shell PATH='$(BPF_PATH)' which clang clang-13 clang-12 clang-11)) LLVM_VER:=$(subst clang,,$(notdir $(CLANG))) -else +endif +ifneq ($(CONFIG_USE_LLVM_PREBUILT),) + CLANG:=$(TOPDIR)/llvm-bpf/bin/clang +endif +ifneq ($(CONFIG_USE_LLVM_BUILD),) CLANG:=$(STAGING_DIR_HOST)/llvm-bpf/bin/clang - LLVM_VER:= endif LLVM_PATH:=$(dir $(CLANG)) diff --git a/toolchain/Config.in b/toolchain/Config.in index a7da2a1f73..366f5c8b48 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -41,11 +41,17 @@ menuconfig TARGET_OPTIONS choice BPF_TOOLCHAIN prompt "BPF toolchain" if DEVEL default BPF_TOOLCHAIN_BUILD_LLVM if BUILDBOT + default BPF_TOOLCHAIN_PREBUILT if HAS_PREBUILT_LLVM_TOOLCHAIN default BPF_TOOLCHAIN_NONE config BPF_TOOLCHAIN_NONE bool "None" + config BPF_TOOLCHAIN_PREBUILT + bool "Use prebuilt LLVM toolchain" + depends on HAS_PREBUILT_LLVM_TOOLCHAIN + select USE_LLVM_PREBUILT + config BPF_TOOLCHAIN_HOST select USE_LLVM_HOST bool "Use host LLVM toolchain" @@ -298,10 +304,18 @@ config GDB_PYTHON config HAS_BPF_TOOLCHAIN bool +config HAS_PREBUILT_LLVM_TOOLCHAIN + def_bool $(shell, [ -f llvm-bpf/.llvm-version ] && echo y || echo n) + config USE_LLVM_HOST select HAS_BPF_TOOLCHAIN bool +config USE_LLVM_PREBUILT + select HAS_BPF_TOOLCHAIN + default y if !DEVEL && !BUILDBOT && HAS_PREBUILT_LLVM_TOOLCHAIN + bool + config USE_LLVM_BUILD default y if !DEVEL && BUILDBOT select HAS_BPF_TOOLCHAIN