1*6467f958SSadaf Ebrahimi#!/usr/bin/env bash 2*6467f958SSadaf Ebrahimi 3*6467f958SSadaf Ebrahimiset -e 4*6467f958SSadaf Ebrahimi 5*6467f958SSadaf Ebrahimiexport TOP=$(pwd) 6*6467f958SSadaf Ebrahimi 7*6467f958SSadaf EbrahimiTOOLCHAIN_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" 8*6467f958SSadaf EbrahimiTOOLCHAIN_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*6467f958SSadaf Ebrahimi 10*6467f958SSadaf EbrahimiTOOLCHAIN_PREFIX_arm=arm-linux-gnueabihf 11*6467f958SSadaf EbrahimiTOOLCHAIN_PREFIX_aarch64=aarch64-linux-gnu 12*6467f958SSadaf Ebrahimi 13*6467f958SSadaf EbrahimiTOOLCHAIN_FILE=${TOP}/toolchain.cmake 14*6467f958SSadaf Ebrahimitouch ${TOOLCHAIN_FILE} 15*6467f958SSadaf EbrahimiBUILD_OPENGL_TEST="OFF" 16*6467f958SSadaf EbrahimiBUILD_VULKAN_TEST="ON" 17*6467f958SSadaf Ebrahimi 18*6467f958SSadaf Ebrahimicmake --version 19*6467f958SSadaf Ebrahimiecho 20*6467f958SSadaf Ebrahimi 21*6467f958SSadaf Ebrahimi# Prepare toolchain if needed 22*6467f958SSadaf Ebrahimiif [[ ${JOB_ARCHITECTURE} != "" && ${RUNNER_OS} != "Windows" ]]; then 23*6467f958SSadaf Ebrahimi TOOLCHAIN_URL_VAR=TOOLCHAIN_URL_${JOB_ARCHITECTURE} 24*6467f958SSadaf Ebrahimi TOOLCHAIN_URL=${!TOOLCHAIN_URL_VAR} 25*6467f958SSadaf Ebrahimi wget ${TOOLCHAIN_URL} 26*6467f958SSadaf Ebrahimi TOOLCHAIN_ARCHIVE=${TOOLCHAIN_URL##*/} 27*6467f958SSadaf Ebrahimi tar xf ${TOOLCHAIN_ARCHIVE} 28*6467f958SSadaf Ebrahimi TOOLCHAIN_DIR=${TOP}/${TOOLCHAIN_ARCHIVE%.tar.xz} 29*6467f958SSadaf Ebrahimi export PATH=${TOOLCHAIN_DIR}/bin:${PATH} 30*6467f958SSadaf Ebrahimi 31*6467f958SSadaf Ebrahimi TOOLCHAIN_PREFIX_VAR=TOOLCHAIN_PREFIX_${JOB_ARCHITECTURE} 32*6467f958SSadaf Ebrahimi TOOLCHAIN_PREFIX=${!TOOLCHAIN_PREFIX_VAR} 33*6467f958SSadaf Ebrahimi 34*6467f958SSadaf Ebrahimi echo "SET(CMAKE_SYSTEM_NAME Linux)" >> ${TOOLCHAIN_FILE} 35*6467f958SSadaf Ebrahimi echo "SET(CMAKE_SYSTEM_PROCESSOR ${JOB_ARCHITECTURE})" >> ${TOOLCHAIN_FILE} 36*6467f958SSadaf Ebrahimi echo "SET(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)" >> ${TOOLCHAIN_FILE} 37*6467f958SSadaf Ebrahimi echo "SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)" >> ${TOOLCHAIN_FILE} 38*6467f958SSadaf Ebrahimi echo "SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)" >> ${TOOLCHAIN_FILE} 39*6467f958SSadaf Ebrahimi echo "SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)" >> ${TOOLCHAIN_FILE} 40*6467f958SSadaf Ebrahimi echo "SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" >> ${TOOLCHAIN_FILE} 41*6467f958SSadaf Ebrahimifi 42*6467f958SSadaf Ebrahimi 43*6467f958SSadaf Ebrahimiif [[ ( ${JOB_ARCHITECTURE} == "" && ${JOB_ENABLE_GL} == "1" ) ]]; then 44*6467f958SSadaf Ebrahimi BUILD_OPENGL_TEST="ON" 45*6467f958SSadaf Ebrahimifi 46*6467f958SSadaf Ebrahimi 47*6467f958SSadaf Ebrahimiif [[ ${JOB_ENABLE_DEBUG} == 1 ]]; then 48*6467f958SSadaf Ebrahimi BUILD_CONFIG="Debug" 49*6467f958SSadaf Ebrahimielse 50*6467f958SSadaf Ebrahimi BUILD_CONFIG="Release" 51*6467f958SSadaf Ebrahimifi 52*6467f958SSadaf Ebrahimi 53*6467f958SSadaf Ebrahimi#Vulkan Headers 54*6467f958SSadaf Ebrahimigit clone https://github.com/KhronosGroup/Vulkan-Headers.git 55*6467f958SSadaf Ebrahimi 56*6467f958SSadaf Ebrahimi# Get and build loader 57*6467f958SSadaf Ebrahimigit clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git 58*6467f958SSadaf Ebrahimicd ${TOP}/OpenCL-ICD-Loader 59*6467f958SSadaf Ebrahimimkdir build 60*6467f958SSadaf Ebrahimicd build 61*6467f958SSadaf Ebrahimicmake .. -G Ninja \ 62*6467f958SSadaf Ebrahimi -DCMAKE_BUILD_TYPE=Release \ 63*6467f958SSadaf Ebrahimi -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ 64*6467f958SSadaf Ebrahimi -DOPENCL_ICD_LOADER_HEADERS_DIR=${TOP}/OpenCL-Headers/ 65*6467f958SSadaf Ebrahimicmake --build . -j2 66*6467f958SSadaf Ebrahimi 67*6467f958SSadaf Ebrahimi#Vulkan Loader 68*6467f958SSadaf Ebrahimicd ${TOP} 69*6467f958SSadaf Ebrahimigit clone https://github.com/KhronosGroup/Vulkan-Loader.git 70*6467f958SSadaf Ebrahimicd Vulkan-Loader 71*6467f958SSadaf Ebrahimimkdir build 72*6467f958SSadaf Ebrahimicd build 73*6467f958SSadaf Ebrahimipython3 ../scripts/update_deps.py 74*6467f958SSadaf Ebrahimicmake .. -G Ninja \ 75*6467f958SSadaf Ebrahimi -DCMAKE_BUILD_TYPE=Release \ 76*6467f958SSadaf Ebrahimi -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ 77*6467f958SSadaf Ebrahimi -DBUILD_WSI_XLIB_SUPPORT=OFF \ 78*6467f958SSadaf Ebrahimi -DBUILD_WSI_XCB_SUPPORT=OFF \ 79*6467f958SSadaf Ebrahimi -DBUILD_WSI_WAYLAND_SUPPORT=OFF \ 80*6467f958SSadaf Ebrahimi -C helper.cmake .. 81*6467f958SSadaf Ebrahimicmake --build . -j2 82*6467f958SSadaf Ebrahimi 83*6467f958SSadaf Ebrahimi# Build CTS 84*6467f958SSadaf Ebrahimicd ${TOP} 85*6467f958SSadaf Ebrahimils -l 86*6467f958SSadaf Ebrahimimkdir build 87*6467f958SSadaf Ebrahimicd build 88*6467f958SSadaf Ebrahimiif [[ ${RUNNER_OS} == "Windows" ]]; then 89*6467f958SSadaf Ebrahimi CMAKE_OPENCL_LIBRARIES_OPTION="OpenCL" 90*6467f958SSadaf Ebrahimi CMAKE_CACHE_OPTIONS="" 91*6467f958SSadaf Ebrahimielse 92*6467f958SSadaf Ebrahimi CMAKE_OPENCL_LIBRARIES_OPTION="-lOpenCL -lpthread" 93*6467f958SSadaf Ebrahimi CMAKE_CACHE_OPTIONS="-DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache" 94*6467f958SSadaf Ebrahimifi 95*6467f958SSadaf Ebrahimicmake .. -G Ninja \ 96*6467f958SSadaf Ebrahimi -DCMAKE_BUILD_TYPE="${BUILD_CONFIG}" \ 97*6467f958SSadaf Ebrahimi ${CMAKE_CACHE_OPTIONS} \ 98*6467f958SSadaf Ebrahimi -DCL_INCLUDE_DIR=${TOP}/OpenCL-Headers \ 99*6467f958SSadaf Ebrahimi -DCL_LIB_DIR=${TOP}/OpenCL-ICD-Loader/build \ 100*6467f958SSadaf Ebrahimi -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ 101*6467f958SSadaf Ebrahimi -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=./bin \ 102*6467f958SSadaf Ebrahimi -DOPENCL_LIBRARIES="${CMAKE_OPENCL_LIBRARIES_OPTION}" \ 103*6467f958SSadaf Ebrahimi -DUSE_CL_EXPERIMENTAL=ON \ 104*6467f958SSadaf Ebrahimi -DGL_IS_SUPPORTED=${BUILD_OPENGL_TEST} \ 105*6467f958SSadaf Ebrahimi -DVULKAN_IS_SUPPORTED=${BUILD_VULKAN_TEST} \ 106*6467f958SSadaf Ebrahimi -DVULKAN_INCLUDE_DIR=${TOP}/Vulkan-Headers/include/ \ 107*6467f958SSadaf Ebrahimi -DVULKAN_LIB_DIR=${TOP}/Vulkan-Loader/build/loader/ 108*6467f958SSadaf Ebrahimicmake --build . -j3 109