xref: /aosp_15_r20/external/OpenCL-CTS/presubmit.sh (revision 6467f958c7de8070b317fc65bcb0f6472e388d82)
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