• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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