1#!/usr/bin/env bash 2 3set -e 4 5export TOP=$(pwd) 6 7TOOLCHAIN_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" 8TOOLCHAIN_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" 9 10TOOLCHAIN_PREFIX_arm=arm-linux-gnueabihf 11TOOLCHAIN_PREFIX_aarch64=aarch64-linux-gnu 12 13TOOLCHAIN_FILE=${TOP}/toolchain.cmake 14touch ${TOOLCHAIN_FILE} 15BUILD_OPENGL_TEST="OFF" 16BUILD_VULKAN_TEST="ON" 17 18cmake --version 19echo 20 21# Prepare toolchain if needed 22if [[ ${JOB_ARCHITECTURE} != "" && ${RUNNER_OS} != "Windows" ]]; 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 43if [[ ( ${JOB_ARCHITECTURE} == "" && ${JOB_ENABLE_GL} == "1" ) ]]; then 44 BUILD_OPENGL_TEST="ON" 45fi 46 47if [[ ${JOB_ENABLE_DEBUG} == 1 ]]; then 48 BUILD_CONFIG="Debug" 49else 50 BUILD_CONFIG="Release" 51fi 52 53#Vulkan Headers 54git clone https://github.com/KhronosGroup/Vulkan-Headers.git 55 56# Get and build loader 57git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git 58cd ${TOP}/OpenCL-ICD-Loader 59mkdir build 60cd build 61cmake .. -G Ninja \ 62 -DCMAKE_BUILD_TYPE=Release \ 63 -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ 64 -DOPENCL_ICD_LOADER_HEADERS_DIR=${TOP}/OpenCL-Headers/ 65cmake --build . -j2 66 67#Vulkan Loader 68cd ${TOP} 69git clone https://github.com/KhronosGroup/Vulkan-Loader.git 70cd Vulkan-Loader 71mkdir build 72cd build 73python3 ../scripts/update_deps.py 74cmake .. -G Ninja \ 75 -DCMAKE_BUILD_TYPE=Release \ 76 -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ 77 -DBUILD_WSI_XLIB_SUPPORT=OFF \ 78 -DBUILD_WSI_XCB_SUPPORT=OFF \ 79 -DBUILD_WSI_WAYLAND_SUPPORT=OFF \ 80 -C helper.cmake .. 81cmake --build . -j2 82 83# Build CTS 84cd ${TOP} 85ls -l 86mkdir build 87cd build 88if [[ ${RUNNER_OS} == "Windows" ]]; then 89 CMAKE_OPENCL_LIBRARIES_OPTION="OpenCL" 90 CMAKE_CACHE_OPTIONS="" 91else 92 CMAKE_OPENCL_LIBRARIES_OPTION="-lOpenCL -lpthread" 93 CMAKE_CACHE_OPTIONS="-DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache" 94fi 95cmake .. -G Ninja \ 96 -DCMAKE_BUILD_TYPE="${BUILD_CONFIG}" \ 97 ${CMAKE_CACHE_OPTIONS} \ 98 -DCL_INCLUDE_DIR=${TOP}/OpenCL-Headers \ 99 -DCL_LIB_DIR=${TOP}/OpenCL-ICD-Loader/build \ 100 -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ 101 -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=./bin \ 102 -DOPENCL_LIBRARIES="${CMAKE_OPENCL_LIBRARIES_OPTION}" \ 103 -DUSE_CL_EXPERIMENTAL=ON \ 104 -DGL_IS_SUPPORTED=${BUILD_OPENGL_TEST} \ 105 -DVULKAN_IS_SUPPORTED=${BUILD_VULKAN_TEST} \ 106 -DVULKAN_INCLUDE_DIR=${TOP}/Vulkan-Headers/include/ \ 107 -DVULKAN_LIB_DIR=${TOP}/Vulkan-Loader/build/loader/ 108cmake --build . -j3 109