1#!/bin/bash 2 3set -euo pipefail 4 5THISDIR="$(cd $(dirname $0) && pwd)" 6 7source ${THISDIR}/helpers.sh 8 9foldable start prepare_selftests "Building selftests" 10 11LIBBPF_PATH="${REPO_ROOT}" 12 13llvm_default_version() { 14 echo "16" 15} 16 17llvm_latest_version() { 18 echo "17" 19} 20 21LLVM_VERSION=$(llvm_default_version) 22if [[ "${LLVM_VERSION}" == $(llvm_latest_version) ]]; then 23 REPO_DISTRO_SUFFIX="" 24else 25 REPO_DISTRO_SUFFIX="-${LLVM_VERSION}" 26fi 27 28echo "deb https://apt.llvm.org/focal/ llvm-toolchain-focal${REPO_DISTRO_SUFFIX} main" \ 29 | sudo tee /etc/apt/sources.list.d/llvm.list 30 31PREPARE_SELFTESTS_SCRIPT=${THISDIR}/prepare_selftests-${KERNEL}.sh 32if [ -f "${PREPARE_SELFTESTS_SCRIPT}" ]; then 33 (cd "${REPO_ROOT}/${REPO_PATH}/tools/testing/selftests/bpf" && ${PREPARE_SELFTESTS_SCRIPT}) 34fi 35 36if [[ "${KERNEL}" = 'LATEST' ]]; then 37 VMLINUX_H= 38else 39 VMLINUX_H=${THISDIR}/vmlinux.h 40fi 41 42cd ${REPO_ROOT}/${REPO_PATH} 43make headers 44make \ 45 CLANG=clang-${LLVM_VERSION} \ 46 LLC=llc-${LLVM_VERSION} \ 47 LLVM_STRIP=llvm-strip-${LLVM_VERSION} \ 48 VMLINUX_BTF="${VMLINUX_BTF}" \ 49 VMLINUX_H=${VMLINUX_H} \ 50 -C "${REPO_ROOT}/${REPO_PATH}/tools/testing/selftests/bpf" \ 51 -j $((4*$(nproc))) > /dev/null 52cd - 53mkdir ${LIBBPF_PATH}/selftests 54cp -R "${REPO_ROOT}/${REPO_PATH}/tools/testing/selftests/bpf" \ 55 ${LIBBPF_PATH}/selftests 56cd ${LIBBPF_PATH} 57rm selftests/bpf/.gitignore 58git add selftests 59 60foldable end prepare_selftests 61