Skip to content

Install runtimer components with installer #934

Install runtimer components with installer

Install runtimer components with installer #934

Workflow file for this run

name: Presubmit
on: [push, pull_request]
jobs:
format:
name: Code formatting
runs-on: ubuntu-latest
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
with:
# repository: ${{ github.repository }} (default)
fetch-depth: 0
- name: Install clang-format
run: sudo apt-get install clang-format
- name: Check format
run: $GITHUB_WORKSPACE/scripts/check-format.sh
origin/`if [[ "${{ github.event_name }}" == "push" ]]; then echo "main"; else echo "${{ github.base_ref }}"; fi`
--binary clang-format
# linux:
# runs-on: ubuntu-latest
# needs: format
# defaults:
# run:
# shell: bash
# strategy:
# matrix:
# CMAKE: [3.26.4]
# COMPILER:
# - C_NAME: gcc
# CXX_NAME: g++
# VER: 11
# EXCLUSIVE_C_FLAGS: -Wno-maybe-uninitialized
# - C_NAME: gcc
# CXX_NAME: g++
# VER: 13
# EXCLUSIVE_C_FLAGS: -Wno-maybe-uninitialized
# - C_NAME: clang
# CXX_NAME: clang++
# VER: 14
# EXCLUSIVE_C_FLAGS: ""
# - C_NAME: clang
# CXX_NAME: clang++
# VER: 16
# EXCLUSIVE_C_FLAGS: ""
# DEPS: [system, vcpkg, fetch]
# BIN: [64]
# STD:
# - C: 11 # Utils C library uses C11 functions (e.g. timespec_get)
# CXX: 14 # Utils C++ library uses C14 types (e.g. integer_sequence)
# - C: 17
# CXX: 17
# CONF:
# - GEN: Unix Makefiles
# CONFIG: Debug
# - GEN: Unix Makefiles
# CONFIG: Release
# - GEN: Ninja Multi-Config
# CONFIG: Release
# IMAGE:
# - khronosgroup/docker-images:opencl-sdk-intelcpu-ubuntu-22.04.20230717
# include:
# - CMAKE: system
# COMPILER:
# C_NAME: gcc
# CXX_NAME: g++
# VER: 9
# # A warning in libstb-dev
# EXCLUSIVE_C_FLAGS: "-Wno-type-limits"
# EXCLUSIVE_CXX_FLAGS: "-Wno-type-limits"
# DEPS: system
# BIN: 64
# STD:
# C: 11
# CXX: 14
# CONF:
# GEN: Unix Makefiles
# CONFIG: Debug
# IMAGE: khronosgroup/docker-images:opencl-sdk-intelcpu-ubuntu-20.04.20230717
# - CMAKE: system
# COMPILER:
# C_NAME: gcc
# CXX_NAME: g++
# VER: 9
# # A warning in libstb-dev
# EXCLUSIVE_C_FLAGS: "-Wno-type-limits"
# EXCLUSIVE_CXX_FLAGS: "-Wno-type-limits"
# DEPS: system
# BIN: 64
# STD:
# C: 11
# CXX: 14
# CONF:
# GEN: Unix Makefiles
# CONFIG: Release
# IMAGE: khronosgroup/docker-images:opencl-sdk-intelcpu-ubuntu-20.04.20230717
# - CMAKE: system
# COMPILER:
# C_NAME: gcc
# CXX_NAME: g++
# VER: 9
# EXCLUSIVE_C_FLAGS: ""
# DEPS: vcpkg
# BIN: 32
# STD:
# C: 11
# CXX: 14
# CONF:
# GEN: Unix Makefiles
# CONFIG: Debug
# IMAGE: khronosgroup/docker-images:opencl-sdk-intelcpu-ubuntu-20.04.20230717
# - CMAKE: system
# COMPILER:
# C_NAME: gcc
# CXX_NAME: g++
# VER: 9
# EXCLUSIVE_C_FLAGS: ""
# DEPS: vcpkg
# BIN: 32
# STD:
# C: 11
# CXX: 14
# CONF:
# GEN: Unix Makefiles
# CONFIG: Release
# IMAGE: khronosgroup/docker-images:opencl-sdk-intelcpu-ubuntu-20.04.20230717
# container: ${{matrix.IMAGE}}
# env:
# CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake
# CPACK_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cpack
# CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest
# DEB_INSTALLATION_PATH: /usr
# CC: ${{matrix.COMPILER.C_NAME}}-${{matrix.COMPILER.VER}}
# CXX: ${{matrix.COMPILER.CXX_NAME}}-${{matrix.COMPILER.VER}}
# steps:
# - name: Set up vcpkg triplet
# if: matrix.DEPS == 'vcpkg'
# run: if [[ "${{ matrix.BIN }}" == "64" ]]; then
# echo "VCPKG_TRIPLET=x64-linux" >> $GITHUB_ENV;
# else
# echo "VCPKG_TRIPLET=x86-linux" >> $GITHUB_ENV;
# fi
# - name: Install system CMake
# if: matrix.CMAKE == 'system'
# run: apt-get update -qq && apt-get install -y cmake &&
# echo "CMAKE_EXE=cmake" >> "$GITHUB_ENV" &&
# echo "CTEST_EXE=ctest" >> "$GITHUB_ENV" &&
# echo "CPACK_EXE=cpack" >> "$GITHUB_ENV"
# - name: Install dependencies (system)
# if: matrix.DEPS == 'system'
# run: apt-get update -qq && apt-get install -y libfreetype-dev libsfml-dev libglm-dev libglew-dev libtclap-dev libstb-dev
# - name: Cache dependencies (vcpkg)
# if: matrix.DEPS == 'vcpkg'
# id: vcpkg-install
# uses: actions/cache@v4
# with:
# path: /opt/Microsoft/vcpkg
# key: vcpkg-linux-${{matrix.BIN}}
# - name: Install dependencies (vcpkg)
# if: matrix.DEPS == 'vcpkg' && steps.vcpkg-install.outputs.cache-hit != 'true'
# run: |
# cd /opt/Microsoft/vcpkg
# git pull
# ./bootstrap-vcpkg.sh
# ./vcpkg --triplet=$VCPKG_TRIPLET install tclap stb
# # It is not possible to cross-compile the OpenGL samples on Ubuntu
# # because system dev dependencies are not available for i386
# if [[ "${{ matrix.BIN }}" == "64" ]]; then
# ./vcpkg --triplet=$VCPKG_TRIPLET install sfml glm glew;
# fi
# - name: Set up compiler flags
# run: |
# # Excluding missing-field-initializers error because it comes from the Std dependency
# # Excluding maybe-uninitialized error because cannot workaround the compiler issuing this error
# # Not using -pedantic: error: ISO C forbids braced-groups within expressions
# echo "CFLAGS=-Wall -Wextra -Werror -m${{matrix.BIN}} -Wno-missing-field-initializers ${{ matrix.COMPILER.EXCLUSIVE_C_FLAGS }}" >> $GITHUB_ENV;
# # Excluding missing-field-initializers error because it comes from the Std dependency
# echo "CXXFLAGS=-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}} -Wno-missing-field-initializers ${{ matrix.COMPILER.EXCLUSIVE_CXX_FLAGS }}" >> $GITHUB_ENV;
# - name: Checkout OpenCL-SDK
# uses: actions/checkout@v4
# with:
# fetch-depth: 0
# submodules: recursive
# - name: Install samples dependencies
# run: |
# if [[ "${{ matrix.BIN }}" == "64" ]]; then
# apt-get update -qq;
# apt-get install -y libvulkan-dev;
# else
# dpkg --add-architecture i386;
# apt-get update -qq;
# apt-get install -y libvulkan-dev:i386;
# fi
# - name: Configure, package & install OpenCL-Headers
# run: $CMAKE_EXE
# -G "${{matrix.CONF.GEN}}"
# `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi`
# -D BUILD_TESTING=OFF
# -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH
# -S $GITHUB_WORKSPACE/external/OpenCL-Headers
# -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build &&
# $CPACK_EXE
# --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake"
# -G DEB
# -C ${{matrix.CONF.CONFIG}}
# -B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" &&
# dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb
# - name: Configure, package & install OpenCL-ICD-Loader
# run: $CMAKE_EXE
# -G "${{matrix.CONF.GEN}}"
# `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi`
# -D BUILD_TESTING=OFF
# -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH
# -S $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader
# -B $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build &&
# if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]];
# then
# $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build --parallel `nproc`;
# else
# $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build --config Debug --parallel `nproc`;
# $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build --config Release --parallel `nproc`;
# fi &&
# $CPACK_EXE
# --config "$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build/CPackConfig.cmake"
# -G DEB
# -C ${{matrix.CONF.CONFIG}}
# -B "$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/package-deb" &&
# dpkg -i $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/package-deb/*.deb
# - name: Configure, package & install OpenCL-CLHPP
# run: $CMAKE_EXE
# -G "${{matrix.CONF.GEN}}"
# `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi`
# -D BUILD_TESTING=OFF
# -D BUILD_EXAMPLES=OFF
# -D BUILD_DOCS=OFF
# -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH
# -S $GITHUB_WORKSPACE/external/OpenCL-CLHPP
# -B $GITHUB_WORKSPACE/external/OpenCL-CLHPP/build &&
# $CPACK_EXE
# --config "$GITHUB_WORKSPACE/external/OpenCL-CLHPP/build/CPackConfig.cmake"
# -G DEB
# -C ${{matrix.CONF.CONFIG}}
# -B "$GITHUB_WORKSPACE/external/OpenCL-CLHPP/package-deb" &&
# dpkg -i $GITHUB_WORKSPACE/external/OpenCL-CLHPP/package-deb/*.deb
# - name: Configure
# run: $CMAKE_EXE
# -G "${{matrix.CONF.GEN}}"
# `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi`
# `if [[ "${{matrix.DEPS}}" == "vcpkg" ]]; then echo "-D CMAKE_TOOLCHAIN_FILE=/opt/Microsoft/vcpkg/scripts/buildsystems/vcpkg.cmake"; fi;`
# `if [[ "${{matrix.DEPS}}" == "vcpkg" ]]; then echo "-D VCPKG_TARGET_TRIPLET=$VCPKG_TRIPLET"; fi;`
# -D BUILD_DOCS=ON
# -D BUILD_TESTING=ON
# -D BUILD_EXAMPLES=ON
# -D OPENCL_SDK_BUILD_SAMPLES=ON
# `if [[ "${{matrix.BIN}}" == "32" ]]; then echo "-D OPENCL_SDK_BUILD_OPENGL_SAMPLES=OFF"; fi;`
# -D OPENCL_ICD_LOADER_BUILD_TESTING=ON
# -D CMAKE_C_STANDARD=${{matrix.STD.C}}
# -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}}
# -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install
# -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH
# -S $GITHUB_WORKSPACE
# -B $GITHUB_WORKSPACE/build
# - name: Build
# run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]];
# then
# $CMAKE_EXE --build $GITHUB_WORKSPACE/build --parallel `nproc`;
# else
# $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug;
# $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release;
# fi;
# - name: Test
# if: matrix.BIN != 32
# working-directory: ${{runner.workspace}}/OpenCL-SDK/build
# run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]];
# then
# $CTEST_EXE --output-on-failure --no-tests=error -C ${{matrix.CONF.CONFIG}} --parallel `nproc`;
# else
# $CTEST_EXE --output-on-failure --no-tests=error -C Debug --parallel `nproc`;
# $CTEST_EXE --output-on-failure --no-tests=error -C Release --parallel `nproc`;
# fi;
# - name: Package DEB
# run: $CPACK_EXE
# --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake"
# -G DEB
# -C ${{matrix.CONF.CONFIG}}
# -B "$GITHUB_WORKSPACE/package-deb"
# - name: Consume (DEB)
# run: dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb &&
# $CMAKE_EXE
# -G "${{matrix.CONF.GEN}}"
# `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi`
# -D CMAKE_C_STANDARD=${{matrix.STD.C}}
# -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}}
# -S $GITHUB_WORKSPACE/test/cmake/pkgconfig/useutil
# -B $GITHUB_WORKSPACE/build_package &&
# if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]];
# then
# $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --parallel `nproc`;
# else
# $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug;
# $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release;
# fi
# - name: Run consume test (DEB)
# if: matrix.BIN != 32
# working-directory: ${{runner.workspace}}/OpenCL-SDK/build_package
# run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]];
# then
# $CTEST_EXE -C ${{matrix.CONF.CONFIG}} --no-tests=error --output-on-failure --parallel `nproc`;
# else
# $CTEST_EXE -C Debug --output-on-failure --no-tests=error --parallel `nproc`;
# $CTEST_EXE -C Release --output-on-failure --no-tests=error --parallel `nproc`;
# fi
# - name: Run clinfo (DEB)
# run: clinfo
# - name: Uninstall (DEB)
# run: apt-get remove -y "khronos-opencl-loader*" opencl-c-headers opencl-clhpp-headers opencl-sdk clinfo
# - name: Test install
# run: $CMAKE_EXE
# --build $GITHUB_WORKSPACE/build
# --target install
# --config ${{matrix.CONF.CONFIG}}
# --parallel `nproc`
# - name: Consume (install)
# run: $CMAKE_EXE
# -G "${{matrix.CONF.GEN}}"
# `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi`
# -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install
# -D CMAKE_C_STANDARD=${{matrix.STD.C}}
# -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}}
# -S $GITHUB_WORKSPACE/test/cmake/pkgconfig/useutil
# -B $GITHUB_WORKSPACE/build_install &&
# if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]];
# then
# $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --parallel `nproc`;
# else
# $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Debug;
# $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Release;
# fi
# - name: Run consume test (install)
# if: matrix.BIN != 32
# working-directory: ${{runner.workspace}}/OpenCL-SDK/build_install
# run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]];
# then
# $CTEST_EXE -C ${{matrix.CONF.CONFIG}} --output-on-failure --no-tests=error --parallel `nproc`;
# else
# $CTEST_EXE -C Debug --output-on-failure --no-tests=error --parallel `nproc`;
# $CTEST_EXE -C Release --output-on-failure --no-tests=error --parallel `nproc`;
# fi
windows:
runs-on: windows-latest
needs: format
defaults:
run:
shell: pwsh
strategy:
matrix:
VER: [v142, v143, clangcl]
GEN: [Visual Studio 17 2022, Ninja Multi-Config]
DEPS: [vcpkg, fetch]
BIN: [x64]
STD:
- C: 11
CXX: 14
- C: 17
CXX: 17
exclude:
- VER: clangcl
GEN: Ninja Multi-Config
include:
- VER: v142
GEN: Visual Studio 17 2022
BIN: x86
DEPS: fetch
STD:
C: 11
CXX: 14
env:
NINJA_URL: https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip
NINJA_ROOT: C:\Tools\Ninja
VS_ROOT: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise'
UseMultiToolTask: true # Better parallel MSBuild execution
EnforceProcessCountAcrossBuilds: 'true' # -=-
MultiProcMaxCount: '3' # -=-
WindowsSDKVersion: '10.0.22621.0'
INTEL_OCL_URL: https://github.com/intel/llvm/releases/download/2023-WW27/win-oclcpuexp-2023.16.6.0.28_rel.zip
INTEL_TBB_URL: https://github.com/oneapi-src/oneTBB/releases/download/v2021.10.0/oneapi-tbb-2021.10.0-win.zip
IMAGE_INTEL_PREFIX: C:\Tools\Intel
VULKAN_RT_URL: https://sdk.lunarg.com/sdk/download/1.3.261.1/windows/VulkanRT-1.3.261.1-Installer.exe
VULKAN_SDK_URL: https://sdk.lunarg.com/sdk/download/1.3.261.1/windows/VulkanSDK-1.3.261.1-Installer.exe
VULKAN_SDK: C:/VulkanSDK/1.3.261.1
steps:
- name: Cache Ninja install
if: matrix.GEN == 'Ninja Multi-Config'
id: ninja-install
uses: actions/cache@v4
with:
path: |
C:\Tools\Ninja
key: ${{runner.os}}-ninja-${{env.NINJA_URL}}
- name: Install Ninja
if: matrix.GEN == 'Ninja Multi-Config' && steps.ninja-install.outputs.cache-hit != 'true'
run: |
Invoke-WebRequest ${env:NINJA_URL} -OutFile ~\Downloads\ninja-win.zip
Expand-Archive ~\Downloads\ninja-win.zip -DestinationPath ${env:NINJA_ROOT}\
Remove-Item ~\Downloads\*
- name: Install OpenCL runtime
if: matrix.BIN != 'x86'
run: |
$INTEL_OCL_ARCHIVE_NAME = Split-Path ${env:INTEL_OCL_URL} -Leaf; `
Invoke-WebRequest ${env:INTEL_OCL_URL} -OutFile ${env:TEMP}\$INTEL_OCL_ARCHIVE_NAME; `
Expand-Archive ${env:TEMP}\$INTEL_OCL_ARCHIVE_NAME -DestinationPath ${env:IMAGE_INTEL_PREFIX}\oclcpuexp; `
Remove-Item ${env:TEMP}\$INTEL_OCL_ARCHIVE_NAME; `
$INTEL_TBB_ARCHIVE_NAME = Split-Path ${env:INTEL_TBB_URL} -Leaf; `
Invoke-WebRequest ${env:INTEL_TBB_URL} -OutFile ${env:TEMP}\$INTEL_TBB_ARCHIVE_NAME; `
Expand-Archive ${env:TEMP}\$INTEL_TBB_ARCHIVE_NAME -DestinationPath ${env:IMAGE_INTEL_PREFIX}; `
Get-ChildItem ${env:IMAGE_INTEL_PREFIX}\oneapi-tbb* | Rename-Item -NewName oneapi-tbb; `
Remove-Item ${env:TEMP}\$INTEL_TBB_ARCHIVE_NAME; `
New-Item -Type Directory ${env:IMAGE_INTEL_PREFIX}\oclcpuexp\tbb | Out-Null; `
Get-ChildItem ${env:IMAGE_INTEL_PREFIX}\oneapi-tbb\redist\intel64\vc14\*.dll | ForEach-Object { New-Item -Type SymbolicLink -Path ${env:IMAGE_INTEL_PREFIX}\oclcpuexp\tbb -Name $_.Name -Value $_.FullName | Out-Null; }; `
New-Item -Type Directory HKLM:\SOFTWARE\Khronos\OpenCL -Force | Out-Null; `
New-Item -Type File HKLM:\SOFTWARE\Khronos\OpenCL\Vendors | Out-Null; `
Set-ItemProperty -Path HKLM:\SOFTWARE\Khronos\OpenCL\Vendors -Name ${env:IMAGE_INTEL_PREFIX}\oclcpuexp\intelocl64.dll -Type DWord -Value 0;
- name: Install Vulkan dependencies
run: |
Invoke-WebRequest ${env:VULKAN_RT_URL} -OutFile vulkan-rt-installer.exe; `
Invoke-WebRequest ${env:VULKAN_SDK_URL} -OutFile vulkan-sdk-installer.exe; `
Start-Process -FilePath .\vulkan-sdk-installer.exe -ArgumentList "--accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.32bit" -Wait; `
Start-Process -FilePath .\vulkan-rt-installer.exe -ArgumentList "/S" -Verb RunAs -Wait; `
Remove-Item vulkan-sdk-installer.exe; `
Remove-Item vulkan-rt-installer.exe; `
if ('${{ matrix.BIN }}' -eq 'x64')
{
echo "Vulkan_LIB_DIR=$env:VULKAN_SDK/Lib" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
dir C:\Windows\System32\vulkan-1.dll
} else {
echo "Vulkan_LIB_DIR=$env:VULKAN_SDK/Lib32" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
}
- name: Cache dependencies (vcpkg)
if: matrix.DEPS == 'vcpkg'
id: vcpkg-install
uses: actions/cache@v4
with:
path: |
C:\vcpkg
key: x64-windows-sfml-tclap-glm-glew-stb
- name: Install dependencies (vcpkg)
if: matrix.DEPS == 'vcpkg' && steps.vcpkg-install.outputs.cache-hit != 'true'
run: C:\vcpkg\vcpkg.exe --triplet=x64-windows install sfml tclap glm glew stb
- name: Set up compiler flags
run: |
echo "CFLAGS=/W4 /WX" >> $GITHUB_ENV
echo "CXXFLAGS=/W4 /WX" >> $GITHUB_ENV
- name: Checkout OpenCL-SDK
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: Configure (MSBuild)
if: matrix.GEN == 'Visual Studio 17 2022'
run: |
if ('${{ matrix.DEPS }}' -eq 'vcpkg') {
$TOOLCHAIN_ARG="-D CMAKE_TOOLCHAIN_FILE=${env:VCPKG_INSTALLATION_ROOT}\scripts\buildsystems\vcpkg.cmake"
} else {
$TOOLCHAIN_ARG=''
}
$BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'}
& cmake `
$TOOLCHAIN_ARG `
-G "${{matrix.GEN}}" `
-A $BIN `
-T ${{matrix.VER}} `
-D BUILD_DOCS=ON `
-D BUILD_TESTING=ON `
-D OPENCL_SDK_BUILD_SAMPLES=ON `
-D CMAKE_C_STANDARD=${{matrix.STD.C}} `
-D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} `
-D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install `
-D Vulkan_INCLUDE_DIR=${env:VULKAN_SDK}/Include `
-D Vulkan_LIBRARY=${env:Vulkan_LIB_DIR}/vulkan-1.lib `
-S ${env:GITHUB_WORKSPACE} `
-B ${env:GITHUB_WORKSPACE}\build
if ($LASTEXITCODE -ne 0) { throw "Configuring OpenCL-SDK failed." }
- name: Configure (Ninja Multi-Config)
if: matrix.GEN == 'Ninja Multi-Config'
run: |
if ('${{ matrix.DEPS }}' -eq 'vcpkg') {
$TOOLCHAIN_ARG="-D CMAKE_TOOLCHAIN_FILE=${env:VCPKG_INSTALLATION_ROOT}\scripts\buildsystems\vcpkg.cmake"
} else {
$TOOLCHAIN_ARG=''
}
$VER = switch ('${{matrix.VER}}') { `
'v142' {'14.2'} `
'v143' {'14.4'} }
Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=$VER"
& cmake `
$TOOLCHAIN_ARG `
-G "${{matrix.GEN}}" `
-D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" `
-D BUILD_DOCS=ON `
-D BUILD_TESTING=ON `
-D OPENCL_SDK_BUILD_SAMPLES=ON `
-D CMAKE_C_STANDARD=${{matrix.STD.C}} `
-D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} `
-D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL `
-D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install `
-D Vulkan_INCLUDE_DIR=${env:VULKAN_SDK}/Include `
-D Vulkan_LIBRARY=${env:Vulkan_LIB_DIR}/vulkan-1.lib `
-S ${env:GITHUB_WORKSPACE} `
-B ${env:GITHUB_WORKSPACE}\build
if ($LASTEXITCODE -ne 0) { throw "Configuring OpenCL-SDK failed." }
- name: Build (MSBuild)
if: matrix.GEN == 'Visual Studio 17 2022'
run: |
foreach ($Config in 'Release','Debug') { `
& cmake `
--build "${env:GITHUB_WORKSPACE}\build" `
--config $Config `
-- `
/verbosity:minimal `
/maxCpuCount `
/noLogo
if ($LASTEXITCODE -ne 0) { throw "Building OpenCL-SDK in $Config failed." }
}
- name: Build (Ninja Multi-Config)
if: matrix.GEN == 'Ninja Multi-Config'
run: |
$VER = switch ('${{matrix.VER}}') { `
'v142' {'14.2'} `
'v143' {'14.4'} }
Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=$VER"
foreach ($Config in 'Release','Debug') { `
& cmake `
--build "${env:GITHUB_WORKSPACE}\build" `
--config $Config
if ($LASTEXITCODE -ne 0) { throw "Building OpenCL-SDK in $Config failed." }
}
- name: Test
if: matrix.BIN != 'x86'
working-directory: ${{runner.workspace}}/OpenCL-SDK/build
run: |
$EXCLUDE_REGEX = ''
foreach ($Config in 'Release','Debug') {
& ctest `
-V `
--build-config ${Config} `
--output-on-failure `
--no-tests=error `
--parallel ${env:NUMBER_OF_PROCESSORS} `
--exclude-regex "$EXCLUDE_REGEX"
if ($LASTEXITCODE -ne 0) { throw "Running OpenCL-SDK tests in $Config failed." }
}
- name: Install
run: |
& cmake `
--install "${env:GITHUB_WORKSPACE}\build" `
--prefix "${env:GITHUB_WORKSPACE}\install" `
--config Release
if ($LASTEXITCODE -ne 0) { throw "Installing OpenCL-SDK failed." }
- name: "Consume (MSBuild SDK): Configure/Build/Test"
if: matrix.GEN == 'Visual Studio 17 2022'
run: |
$BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'}
& cmake `
-G '${{matrix.GEN}}' `
-A $BIN `
-T ${{matrix.VER}} `
-D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL `
-D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" `
-D CMAKE_C_STANDARD=${{matrix.STD.C}} `
-D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} `
-S ${env:GITHUB_WORKSPACE}\test\cmake\pkgconfig\useutil `
-B ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\useutil
if ($LASTEXITCODE -ne 0) { throw "Configuring OpenCL-SDK consume test failed." }
foreach ($Config in 'Release') {
& cmake `
--build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\useutil" `
--config ${Config}
if ($LASTEXITCODE -ne 0) { throw "Building OpenCL-SDK consume test in $Config failed." }
}
- name: "Consume (Ninja-Multi-Config SDK): Configure/Build/Test"
if: matrix.GEN == 'Ninja Multi-Config'
run: |
$VER = switch ('${{matrix.VER}}') { `
'v142' {'14.2'} `
'v143' {'14.4'} }
Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=${VER}"
& cmake `
-G '${{matrix.GEN}}' `
-D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" `
-D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL `
-D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" `
-D CMAKE_C_STANDARD=${{matrix.STD.C}} `
-D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} `
-S ${env:GITHUB_WORKSPACE}\test\cmake\pkgconfig\useutil `
-B ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\useutil
if ($LASTEXITCODE -ne 0) { throw "Configuring OpenCL-SDK consume test failed." }
foreach ($Config in 'Release') {
& cmake `
--build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\useutil" `
--config ${Config}
if ($LASTEXITCODE -ne 0) { throw "Building OpenCL-SDK consume test in $Config failed." }
}
- name: Consume test
if: matrix.BIN != 'x86'
working-directory: ${{runner.workspace}}/OpenCL-SDK/downstream/pkgconfig/useutil
run: |
foreach ($Config in 'Release') {
& ctest `
--build-config ${Config} `
--output-on-failure `
--no-tests=error `
--parallel ${env:NUMBER_OF_PROCESSORS}
if ($LASTEXITCODE -ne 0) { throw "Running OpenCL-SDK consume test in $Config failed." }
}
# macos:
# runs-on: macos-latest
# needs: format
# defaults:
# run:
# shell: bash
# strategy:
# matrix:
# GEN:
# - Xcode
# - Ninja Multi-Config
# DEPS:
# - system
# - vcpkg
# - fetch
# STD:
# - C: 11
# CXX: 14
# - C: 17
# CXX: 17
# env:
# CC: /usr/bin/clang
# CXX: /usr/bin/clang++
# steps:
# - name: Checkout OpenCL-SDK
# uses: actions/checkout@v4
# with:
# fetch-depth: 0
# submodules: recursive
# - name: Create Build Environment
# run: |
# # Install Ninja only if it's the selected generator and it's not available.
# if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" && ! `which ninja` ]]; then brew install ninja; fi &&
# # We need to provide an OpenCL driver for Intel CPU on mac
# brew install pocl
# echo "OCL_ICD_VENDORS=/opt/homebrew/Cellar/pocl/6.0/etc/OpenCL/vendors" >> $GITHUB_ENV
# cmake --version
# - name: Install samples dependencies
# run: |
# brew install vulkan-loader
# - name: Install dependencies (Homebrew)
# if: matrix.DEPS == 'system'
# run: brew install tclap glm glew sfml mesa-glu
# - name: Install dependencies (vcpkg)
# if: matrix.DEPS == 'vcpkg'
# run: |
# git clone https://github.com/Microsoft/vcpkg.git vcpkg
# ./vcpkg/bootstrap-vcpkg.sh
# ./vcpkg/vcpkg install tclap glm glew sfml stb
# - name: Set up compiler flags
# run: |
# # Not using -pedantic: error: ISO C forbids braced-groups within expressions
# # The flags
# # * -Wno-missing-field-initializers
# # * -Wno-conditional-uninitialized
# # have been added because of Std compilation errors
# echo "CFLAGS=-Wall -Wextra -Werror -Wno-missing-field-initializers -Wno-conditional-uninitialized" >> $GITHUB_ENV;
# # The flags
# # * -Wno-deprecated-declarations
# # * -Wno-missing-field-initializers
# # have been added because of Std compilation errors
# echo "CXXFLAGS=-Wall -Wextra -pedantic -Wno-format -Werror -Wno-missing-field-initializers -Wno-deprecated-declarations" >> $GITHUB_ENV;
# - name: Configure
# run: cmake
# -G "${{matrix.GEN}}"
# `if [[ "${{matrix.DEPS}}" == "vcpkg" ]]; then echo "-D CMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake"; fi`
# -D BUILD_DOCS=ON
# -D BUILD_TESTING=ON
# -D BUILD_EXAMPLES=ON
# -D OPENCL_SDK_BUILD_SAMPLES=ON
# -D CMAKE_C_STANDARD=${{matrix.STD.C}}
# -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}}
# -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install
# -D CMAKE_OSX_ARCHITECTURES=arm64
# -S $GITHUB_WORKSPACE
# -B $GITHUB_WORKSPACE/build
# - name: Build
# run: |
# cmake --build $GITHUB_WORKSPACE/build --config Debug --parallel `sysctl -n hw.logicalcpu`
# cmake --build $GITHUB_WORKSPACE/build --config Release --parallel `sysctl -n hw.logicalcpu`
# - name: Test
# working-directory: ${{runner.workspace}}/OpenCL-SDK/build
# run: |
# EXCLUDE_REGEX="(multidevice|externalmemory).*"
# ctest -C Debug --output-on-failure --no-tests=error --parallel `sysctl -n hw.logicalcpu` --exclude-regex "$EXCLUDE_REGEX"
# ctest -C Release --output-on-failure --no-tests=error --parallel `sysctl -n hw.logicalcpu` --exclude-regex "$EXCLUDE_REGEX"
# - name: Install
# run: |
# cmake --build $GITHUB_WORKSPACE/build --config Release --target install
# - name: Consume (install)
# run: cmake
# -G "${{matrix.GEN}}"
# -D CMAKE_C_STANDARD=${{matrix.STD.C}}
# -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}}
# -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/install"
# -S $GITHUB_WORKSPACE/test/cmake/pkgconfig/useutil
# -B $GITHUB_WORKSPACE/build_install &&
# cmake --build $GITHUB_WORKSPACE/build_install --config Debug --parallel `sysctl -n hw.logicalcpu` &&
# cmake --build $GITHUB_WORKSPACE/build_install --config Release --parallel `sysctl -n hw.logicalcpu` &&
# cd $GITHUB_WORKSPACE/build_install &&
# ctest -C Debug --output-on-failure --no-tests=error --parallel `sysctl -n hw.logicalcpu` &&
# ctest -C Release --output-on-failure --no-tests=error --parallel `sysctl -n hw.logicalcpu`
# python:
# name: Exercise Python examples on ${{matrix.os}}
# defaults:
# run:
# shell: bash
# strategy:
# matrix:
# #os: [ubuntu-latest, macos-latest]
# os: [ubuntu-latest]
# runs-on: ${{ matrix.os }}
# steps:
# - uses: actions/checkout@v4
# - name: Environment setup
# run: |
# MINIFORGE_INSTALL_DIR=.miniforge3
# MINIFORGE_INSTALL_SH="Miniforge3-$(uname)-$(uname -m).sh"
# curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/$MINIFORGE_INSTALL_SH"
# bash "$MINIFORGE_INSTALL_SH" -b -p "$MINIFORGE_INSTALL_DIR"
# PATH="$MINIFORGE_INSTALL_DIR/bin/:$PATH" conda update conda --yes --quiet
# PATH="$MINIFORGE_INSTALL_DIR/bin/:$PATH" conda update --all --yes --quiet
# PATH="$MINIFORGE_INSTALL_DIR/bin:$PATH" conda env create --file python/.test-conda-env.yml --name testing --quiet
# - name: Linter
# run: |
# source ".miniforge3/bin/activate" testing
# (cd python && flake8)
# - name: Run examples
# run: |
# source ".miniforge3/bin/activate" testing
# for i in python/*.py; do
# echo "-----------------------------------------------------------------------"
# echo "RUNNING $i"
# echo "-----------------------------------------------------------------------"
# time python $i
# done
# checkruby:
# name: Check Ruby Samples ${{ matrix.os }}
# defaults:
# run:
# shell: bash
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# #os: [ubuntu-latest, macos-latest]
# os: [ubuntu-latest, macos-13]
# steps:
# - uses: actions/checkout@v4
# with:
# fetch-depth: 0
# submodules: recursive
# - name: Install Ruby and POCL
# run: sudo apt update; sudo apt install pocl-opencl-icd
# if: ${{ matrix.os == 'ubuntu-latest' }}
# - name: Install OpenCL Ruby Bindings and RuboCop
# run: gem install --user-install opencl_ruby_ffi rubocop
# - name: Check Ruby Syntax
# run: |
# export PATH=`ruby -r rubygems -e 'puts Gem.user_dir'`/bin:$PATH
# rubocop
# working-directory: ruby
# - name: Run Ruby Samples
# run: rake test
# working-directory: ruby
# android:
# runs-on: ubuntu-latest
# needs: format
# defaults:
# run:
# shell: bash
# strategy:
# matrix:
# ABI:
# - arm64-v8a
# - x86_64
# API_LEVEL:
# - android-29
# - android-33
# CONFIG:
# - Debug
# - Release
# env:
# CFLAGS: -Wall -Wextra -pedantic -Werror -Wno-error=gnu-statement-expression
# CXXFLAGS: -Wall -Wextra -pedantic -Werror -Wno-error=missing-field-initializers
# steps:
# - name: Checkout OpenCL-SDK
# uses: actions/checkout@v4
# with:
# fetch-depth: 0
# submodules: recursive
# - name: Configure
# run: cmake
# -G "Unix Makefiles"
# -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}}
# -D CMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake
# -D ANDROID_ABI=${{matrix.ABI}}
# -D ANDROID_PLATFORM=${{matrix.API_LEVEL}}
# -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=OFF
# -S $GITHUB_WORKSPACE
# -B $GITHUB_WORKSPACE/build
# - name: Build
# run: cmake --build $GITHUB_WORKSPACE/build --parallel `nproc`