1#!/usr/bin/env bash 2 3set -e 4 5export TOP=$(pwd) 6 7if [ "${JOB_CHECK_FORMAT}" -eq 1 ]; then 8 ./check-format.sh 9 exit $? 10fi 11 12TOOLCHAIN_URL_arm="https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz" 13TOOLCHAIN_URL_aarch64="https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz" 14 15TOOLCHAIN_PREFIX_arm=arm-linux-gnueabihf 16TOOLCHAIN_PREFIX_aarch64=aarch64-linux-gnu 17 18TOOLCHAIN_FILE=${TOP}/toolchain.cmake 19touch ${TOOLCHAIN_FILE} 20 21# Prepare toolchain if needed 22if [[ ${JOB_ARCHITECTURE} != "" ]]; then 23 TOOLCHAIN_URL_VAR=TOOLCHAIN_URL_${JOB_ARCHITECTURE} 24 TOOLCHAIN_URL=${!TOOLCHAIN_URL_VAR} 25 wget ${TOOLCHAIN_URL} 26 TOOLCHAIN_ARCHIVE=${TOOLCHAIN_URL##*/} 27 tar xf ${TOOLCHAIN_ARCHIVE} 28 TOOLCHAIN_DIR=${TOP}/${TOOLCHAIN_ARCHIVE%.tar.xz} 29 export PATH=${TOOLCHAIN_DIR}/bin:${PATH} 30 31 TOOLCHAIN_PREFIX_VAR=TOOLCHAIN_PREFIX_${JOB_ARCHITECTURE} 32 TOOLCHAIN_PREFIX=${!TOOLCHAIN_PREFIX_VAR} 33 34 echo "SET(CMAKE_SYSTEM_NAME Linux)" >> ${TOOLCHAIN_FILE} 35 echo "SET(CMAKE_SYSTEM_PROCESSOR ${JOB_ARCHITECTURE})" >> ${TOOLCHAIN_FILE} 36 echo "SET(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)" >> ${TOOLCHAIN_FILE} 37 echo "SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)" >> ${TOOLCHAIN_FILE} 38 echo "SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)" >> ${TOOLCHAIN_FILE} 39 echo "SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)" >> ${TOOLCHAIN_FILE} 40 echo "SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" >> ${TOOLCHAIN_FILE} 41fi 42 43# Prepare headers 44git clone https://github.com/KhronosGroup/OpenCL-Headers.git 45cd OpenCL-Headers 46ln -s CL OpenCL # For OSX builds 47cd .. 48 49# Get and build loader 50git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git 51cd ${TOP}/OpenCL-ICD-Loader 52mkdir build 53cd build 54cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} -DOPENCL_ICD_LOADER_HEADERS_DIR=${TOP}/OpenCL-Headers/ .. 55make 56 57# Get libclcxx 58cd ${TOP} 59git clone https://github.com/KhronosGroup/libclcxx.git 60 61# Build CTS 62ls -l 63mkdir build 64cd build 65cmake -DCL_INCLUDE_DIR=${TOP}/OpenCL-Headers \ 66 -DCL_LIB_DIR=${TOP}/OpenCL-ICD-Loader/build \ 67 -DCL_LIBCLCXX_DIR=${TOP}/libclcxx \ 68 -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ 69 -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=./bin \ 70 -DOPENCL_LIBRARIES="-lOpenCL -lpthread" \ 71 -DUSE_CL_EXPERIMENTAL=ON \ 72 .. 73make -j2 74 75