mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
The "Ninja" CMake generator does not support multiple configurations, i.e. it does not support use of the '--config' option when running 'cmake --build'. As such, the default configuration (i.e. Debug) was getting used for all builds. Use the CMAKE_BUILD_TYPE variable instead, so that we do release builds, but change one build (ubuntu-20.04 aarch64) to use Debug as its build type, to keep some build coverage for asserts, etc. For Vulkan-Loader and OpenCL-ICD-Loader, we do release builds unconditionally, as we assume there is no need in the CI workflow to actually run the binaries that are built, and therefore no need for any additional debug info. Signed-off-by: Stuart Brady <stuart.brady@arm.com>
108 lines
3.5 KiB
Bash
Executable File
108 lines
3.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
export TOP=$(pwd)
|
|
|
|
TOOLCHAIN_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"
|
|
TOOLCHAIN_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"
|
|
|
|
TOOLCHAIN_PREFIX_arm=arm-linux-gnueabihf
|
|
TOOLCHAIN_PREFIX_aarch64=aarch64-linux-gnu
|
|
|
|
TOOLCHAIN_FILE=${TOP}/toolchain.cmake
|
|
touch ${TOOLCHAIN_FILE}
|
|
BUILD_OPENGL_TEST="OFF"
|
|
|
|
cmake --version
|
|
echo
|
|
|
|
# Prepare toolchain if needed
|
|
if [[ ${JOB_ARCHITECTURE} != "" && ${RUNNER_OS} != "Windows" ]]; then
|
|
TOOLCHAIN_URL_VAR=TOOLCHAIN_URL_${JOB_ARCHITECTURE}
|
|
TOOLCHAIN_URL=${!TOOLCHAIN_URL_VAR}
|
|
wget ${TOOLCHAIN_URL}
|
|
TOOLCHAIN_ARCHIVE=${TOOLCHAIN_URL##*/}
|
|
tar xf ${TOOLCHAIN_ARCHIVE}
|
|
TOOLCHAIN_DIR=${TOP}/${TOOLCHAIN_ARCHIVE%.tar.xz}
|
|
export PATH=${TOOLCHAIN_DIR}/bin:${PATH}
|
|
|
|
TOOLCHAIN_PREFIX_VAR=TOOLCHAIN_PREFIX_${JOB_ARCHITECTURE}
|
|
TOOLCHAIN_PREFIX=${!TOOLCHAIN_PREFIX_VAR}
|
|
|
|
echo "SET(CMAKE_SYSTEM_NAME Linux)" >> ${TOOLCHAIN_FILE}
|
|
echo "SET(CMAKE_SYSTEM_PROCESSOR ${JOB_ARCHITECTURE})" >> ${TOOLCHAIN_FILE}
|
|
echo "SET(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)" >> ${TOOLCHAIN_FILE}
|
|
echo "SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)" >> ${TOOLCHAIN_FILE}
|
|
echo "SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)" >> ${TOOLCHAIN_FILE}
|
|
echo "SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)" >> ${TOOLCHAIN_FILE}
|
|
echo "SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" >> ${TOOLCHAIN_FILE}
|
|
fi
|
|
|
|
if [[ ( ${JOB_ARCHITECTURE} == "" && ${JOB_ENABLE_GL} == "1" ) ]]; then
|
|
BUILD_OPENGL_TEST="ON"
|
|
fi
|
|
|
|
if [[ ${JOB_ENABLE_DEBUG} == 1 ]]; then
|
|
BUILD_CONFIG="Debug"
|
|
else
|
|
BUILD_CONFIG="Release"
|
|
fi
|
|
|
|
#Vulkan Headers
|
|
git clone https://github.com/KhronosGroup/Vulkan-Headers.git
|
|
|
|
# Get and build loader
|
|
git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git
|
|
cd ${TOP}/OpenCL-ICD-Loader
|
|
mkdir build
|
|
cd build
|
|
cmake .. -G Ninja \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \
|
|
-DOPENCL_ICD_LOADER_HEADERS_DIR=${TOP}/OpenCL-Headers/
|
|
cmake --build . -j2
|
|
|
|
#Vulkan Loader
|
|
cd ${TOP}
|
|
git clone https://github.com/KhronosGroup/Vulkan-Loader.git
|
|
cd Vulkan-Loader
|
|
mkdir build
|
|
cd build
|
|
python3 ../scripts/update_deps.py
|
|
cmake .. -G Ninja \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \
|
|
-DBUILD_WSI_XLIB_SUPPORT=OFF \
|
|
-DBUILD_WSI_XCB_SUPPORT=OFF \
|
|
-DBUILD_WSI_WAYLAND_SUPPORT=OFF \
|
|
-DUSE_GAS=OFF \
|
|
-C helper.cmake ..
|
|
cmake --build . -j2
|
|
|
|
# Build CTS
|
|
cd ${TOP}
|
|
ls -l
|
|
mkdir build
|
|
cd build
|
|
if [[ ${RUNNER_OS} == "Windows" ]]; then
|
|
CMAKE_OPENCL_LIBRARIES_OPTION="OpenCL"
|
|
CMAKE_CACHE_OPTIONS=""
|
|
else
|
|
CMAKE_OPENCL_LIBRARIES_OPTION="-lOpenCL -lpthread"
|
|
CMAKE_CACHE_OPTIONS="-DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache"
|
|
fi
|
|
cmake .. -G Ninja \
|
|
-DCMAKE_BUILD_TYPE="${BUILD_CONFIG}" \
|
|
${CMAKE_CACHE_OPTIONS} \
|
|
-DCL_INCLUDE_DIR=${TOP}/OpenCL-Headers \
|
|
-DCL_LIB_DIR=${TOP}/OpenCL-ICD-Loader/build \
|
|
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \
|
|
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=./bin \
|
|
-DOPENCL_LIBRARIES="${CMAKE_OPENCL_LIBRARIES_OPTION}" \
|
|
-DUSE_CL_EXPERIMENTAL=ON \
|
|
-DGL_IS_SUPPORTED=${BUILD_OPENGL_TEST} \
|
|
-DVULKAN_INCLUDE_DIR=${TOP}/Vulkan-Headers/include/ \
|
|
-DVULKAN_LIB_DIR=${TOP}/Vulkan-Loader/build/loader/
|
|
cmake --build . -j3
|