88# Give a pipeline a non-zero exit code if one of its constituents fails
99set -o pipefail
1010
11- function llvm_linux_target_triple() {
12- case " $1 " in
13- 9.0.1) echo " x86_64-linux-gnu-ubuntu-16.04" ;;
14- * ) echo " x86_64-linux-gnu-ubuntu-18.04" ;;
15- esac
16- }
17-
18- function llvm_macos_target_triple() {
19- case " $1 " in
20- 9.0.1) echo " x86_64-apple-darwin" ;;
21- * ) echo " arm64-apple-darwin22.0" ;;
22- esac
23- }
24-
25- function llvm_version_triple() {
26- case " $1 " in
27- 9.0) echo " 9.0.1" ;;
28- # By default, take the .0 patch release
29- * ) echo " $1 .0" ;;
30- esac
31- }
32-
33- function llvm_base_url() {
34- local llvm_version_triple=$1
35- echo " https://github.com/llvm/llvm-project/releases/download/llvmorg-$llvm_version_triple "
36- }
37-
38- function llvm_download() {
39- local base_url=$1
40- local arch=$2
41-
42- export LLVM=clang+llvm-${LLVM_VERSION_TRIPLE} -$arch
43- export LLVM_DIRECTORY=" $HOME /.llvm/${LLVM} "
44-
45- if [ -d " ${LLVM_DIRECTORY} " ]; then
46- echo " Using cached LLVM download for ${LLVM} ..."
47- else
48- wget --no-verbose $base_url /${LLVM} .tar.xz
49- mkdir -p " ${LLVM_DIRECTORY} "
50- tar xf ${LLVM} .tar.xz -C " ${LLVM_DIRECTORY} " --strip-components=1
51- fi
52-
53- export LIBCLANG_PATH=" ${LLVM_DIRECTORY} /lib"
54- export LLVM_CONFIG_PATH=" ${LLVM_DIRECTORY} /bin/llvm-config"
55- }
56-
57- # Download and set up a sane LLVM version
5811set_llvm_env () {
59- export LLVM_VERSION_TRIPLE=` llvm_version_triple ${LLVM_VERSION} `
60- local base_url=` llvm_base_url ${LLVM_VERSION_TRIPLE} `
61-
62- if [ " $GITHUB_ACTIONS_OS " == " ubuntu-latest" ]; then
63- llvm_download $base_url ` llvm_linux_target_triple ${LLVM_VERSION_TRIPLE} `
64- export LD_LIBRARY_PATH=" ${LLVM_DIRECTORY} /lib" :${LD_LIBRARY_PATH:- }
65- else
66- llvm_download $base_url ` llvm_macos_target_triple ${LLVM_VERSION_TRIPLE} `
67- export DYLD_LIBRARY_PATH=" ${LLVM_DIRECTORY} /lib" :${DYLD_LIBRARY_PATH:- }
68- fi
12+ export LLVM_CONFIG_PATH=${LLVM_PATH} /bin/llvm-config
13+ echo " LLVM_CONFIG_PATH=$LLVM_CONFIG_PATH "
14+
15+ export LIBCLANG_PATH=${LLVM_PATH} /lib/
16+ echo " LIBCLANG_PATH=$LIBCLANG_PATH "
17+
18+ export CLANG_PATH=${LLVM_PATH} /bin/clang
19+ echo " CLANG_PATH=$CLANG_PATH "
6920}
7021
7122assert_no_diff () {
@@ -74,8 +25,6 @@ assert_no_diff() {
7425 git diff-index --quiet HEAD
7526}
7627
77- set_llvm_env
78-
7928get_cargo_args () {
8029 local args=" "
8130 if [ ! -z " $RUST_TARGET " ]; then
@@ -100,6 +49,8 @@ get_cargo_args() {
10049 echo $args
10150}
10251
52+ set_llvm_env
53+
10354if [ ! -z " $RUST_CROSS_COMPILER " ]; then
10455 export RUSTFLAGS=" -C linker=${RUST_CROSS_COMPILER} -gcc"
10556fi
@@ -128,7 +79,7 @@ if [ "$BINDGEN_RUST_FOR_LINUX_TEST" == "1" ]; then
12879
12980 # Put LLVM binaries in the path for `LLVM=1`. The LLVM `bin` directory should
13081 # go first since there are others in the Ubuntu image.
131- export PATH=" ${LLVM_DIRECTORY } /bin:${PATH} "
82+ export PATH=" ${LLVM_PATH } /bin:${PATH} "
13283
13384 # Kernel build dependency: `bindgen-cli`, which is under test.
13485 #
0 commit comments