From 2076d68c132d34432df3330cbc78884844e73cac Mon Sep 17 00:00:00 2001 From: Ben Ashbaugh Date: Wed, 13 May 2026 11:24:26 -0700 Subject: [PATCH 01/15] update submodules for OpenCL 3.1 --- external/OpenCL-Headers | 2 +- external/OpenCL-ICD-Loader | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/external/OpenCL-Headers b/external/OpenCL-Headers index 8a97ebc8..6fe718c3 160000 --- a/external/OpenCL-Headers +++ b/external/OpenCL-Headers @@ -1 +1 @@ -Subproject commit 8a97ebc88daa3495d6f57ec10bb515224400186f +Subproject commit 6fe718c31a45fe25151362a72ef041c3a1047cbd diff --git a/external/OpenCL-ICD-Loader b/external/OpenCL-ICD-Loader index ad770a1b..e3fae46f 160000 --- a/external/OpenCL-ICD-Loader +++ b/external/OpenCL-ICD-Loader @@ -1 +1 @@ -Subproject commit ad770a1b64c6b8d5f2ed4e153f22e4f45939f27f +Subproject commit e3fae46f9323480856bd599cef8452f2e2f91e9b From 4f4f08b7f03acd248d1838b8863c66812bbc26d7 Mon Sep 17 00:00:00 2001 From: Ben Ashbaugh Date: Wed, 13 May 2026 21:10:21 -0700 Subject: [PATCH 02/15] update submodules --- external/OpenCL-ICD-Loader | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/OpenCL-ICD-Loader b/external/OpenCL-ICD-Loader index e3fae46f..dfa960ba 160000 --- a/external/OpenCL-ICD-Loader +++ b/external/OpenCL-ICD-Loader @@ -1 +1 @@ -Subproject commit e3fae46f9323480856bd599cef8452f2e2f91e9b +Subproject commit dfa960baac44b133ebbd740c582e5439ca8e0a24 From eda5b53e8c9be2c0b6791496881511048eb9dafc Mon Sep 17 00:00:00 2001 From: Ben Ashbaugh Date: Wed, 13 May 2026 21:13:59 -0700 Subject: [PATCH 03/15] update Vulkan SDK version --- .github/workflows/presubmit.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 42632c30..abe90406 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -429,8 +429,8 @@ jobs: 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_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 + VULKAN_SDK_URL: https://sdk.lunarg.com/sdk/download/1.4.350.0/windows/vulkansdk-windows-X64-1.4.350.0.exe + VULKAN_SDK: C:/VulkanSDK/1.4.350.0 steps: From c1538fc66b0e92e6ed6536e6f39ad7bbca21ea90 Mon Sep 17 00:00:00 2001 From: Ben Ashbaugh Date: Wed, 13 May 2026 21:30:53 -0700 Subject: [PATCH 04/15] temporary changes for testing --- .github/workflows/presubmit.yml | 1135 ++++++++++++++++--------------- 1 file changed, 568 insertions(+), 567 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index abe90406..01a68e9a 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -42,76 +42,76 @@ jobs: 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: 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: "" + # - 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: 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: Debug - - GEN: Unix Makefiles - CONFIG: Release - - GEN: Ninja Multi-Config 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 + # 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 @@ -285,7 +285,8 @@ jobs: -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH -S $GITHUB_WORKSPACE - -B $GITHUB_WORKSPACE/build + -B $GITHUB_WORKSPACE/build && + find $GITHUB_WORKSPACE/build -name icd_cmake* -ls - name: Build run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; @@ -389,519 +390,519 @@ jobs: $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 - 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_SDK_URL: https://sdk.lunarg.com/sdk/download/1.4.350.0/windows/vulkansdk-windows-X64-1.4.350.0.exe - VULKAN_SDK: C:/VulkanSDK/1.4.350.0 - - steps: - - - name: Install CMake & Ninja - uses: lukka/get-cmake@v3.26.4 - - - name: Update Vcpkg - if: matrix.DEPS == 'vcpkg' - run: | - git -C ${env:VCPKG_INSTALLATION_ROOT} pull - & ${env:VCPKG_INSTALLATION_ROOT}\bootstrap-vcpkg.bat - - - 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: Set up compiler flags - run: | - Write-Output "CMAKE_CFLAGS=/W4" | Out-File $env:GITHUB_ENV -Append - Write-Output "CMAKE_CXXFLAGS=/W4 /EHsc" | Out-File $env:GITHUB_ENV -Append - - - name: Checkout OpenCL-SDK - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: recursive - - - name: Install samples dependencies - run: | - Invoke-WebRequest ${env:VULKAN_SDK_URL} -OutFile vulkan-sdk-installer.exe - .\vulkan-sdk-installer.exe --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.32bit - Remove-Item vulkan-sdk-installer.exe - if ('${{ matrix.BIN }}' -eq 'x64') - { - echo "Vulkan_LIB_DIR=$env:VULKAN_SDK/Lib" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - } else { - echo "Vulkan_LIB_DIR=$env:VULKAN_SDK/Lib32" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - } - - - 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 OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON ` - -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON ` - -D CMAKE_C_STANDARD=${{matrix.STD.C}} ` - -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} ` - -D CMAKE_C_FLAGS="${env:CMAKE_CFLAGS}" ` - -D CMAKE_CXX_FLAGS="${env:CMAKE_CXXFLAGS}" ` - -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="ninja.exe" ` - -D BUILD_DOCS=ON ` - -D BUILD_TESTING=ON ` - -D OPENCL_SDK_BUILD_SAMPLES=ON ` - -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON ` - -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON ` - -D CMAKE_C_STANDARD=${{matrix.STD.C}} ` - -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} ` - -D CMAKE_C_FLAGS="${env:CMAKE_CFLAGS}" ` - -D CMAKE_CXX_FLAGS="${env:CMAKE_CXXFLAGS}" ` - -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 = 'externalmemory.*' - foreach ($Config in 'Release','Debug') { - & ctest ` - --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="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 && - cmake --version - - - name: Install Sample Dependencies (Homebrew) - run: | - brew install vulkan-loader - - - name: Install Optional SDK Dependencies (Homebrew) - if: matrix.DEPS == 'system' - run: brew install tclap glm glew sfml mesa-glu - - - name: Install CMake & Ninja - uses: lukka/get-cmake@v3.26.4 - - - name: Install Vcpkg - if: matrix.DEPS == 'vcpkg' - run: | - git clone https://github.com/Microsoft/vcpkg.git vcpkg - ./vcpkg/bootstrap-vcpkg.sh - echo "VCPKG_INSTALLATION_ROOT=$GITHUB_WORKSPACE/vcpkg" >> $GITHUB_ENV - - - 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 "CMAKE_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 "CMAKE_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` - `if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" ]]; then echo "-D CMAKE_MAKE_PROGRAM=ninja"; fi` - -D BUILD_DOCS=ON - -D BUILD_TESTING=ON - -D BUILD_EXAMPLES=ON - -D OPENCL_SDK_BUILD_SAMPLES=ON - -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON - -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON - -D CMAKE_C_STANDARD=${{matrix.STD.C}} - -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} - -D CMAKE_C_FLAGS="${CMAKE_CFLAGS}" - -D CMAKE_CXX_FLAGS="${CMAKE_CXXFLAGS}" - -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: Set up Test Environment - run: | - # We need to provide an OpenCL driver for Intel CPU on mac - brew install pocl - POCL_INSTALL_PATH=$(brew --prefix pocl) - echo "OCL_ICD_VENDORS=$POCL_INSTALL_PATH/etc/OpenCL/vendors" >> $GITHUB_ENV - # This is needed so PoCL can find system libraries with newer LLVM versions, see: - # https://github.com/KhronosGroup/OpenCL-SDK/issues/144 - SDKROOT=$(xcrun --show-sdk-path) - echo "SDKROOT=$SDKROOT" >> $GITHUB_ENV - - - name: Test - working-directory: ${{runner.workspace}}/OpenCL-SDK/build - run: | - # externalmemory is not supported on macos. - # callbackcpp is unexpectedly failing (segfault) with PoCL - needs more debug. - # multidevice is unexpectedly failing (clCreateSubBuffer error) with PoCL - needs more debug. - # see: https://github.com/KhronosGroup/OpenCL-SDK/issues/146 - EXCLUDE_REGEX="(externalmemory|callbackcpp|multidevice).*" - 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}} - -S $GITHUB_WORKSPACE - -B $GITHUB_WORKSPACE/build - - - name: Build - run: cmake --build $GITHUB_WORKSPACE/build --parallel `nproc` + # 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 + # 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_SDK_URL: https://sdk.lunarg.com/sdk/download/1.4.350.0/windows/vulkansdk-windows-X64-1.4.350.0.exe + # VULKAN_SDK: C:/VulkanSDK/1.4.350.0 + + # steps: + + # - name: Install CMake & Ninja + # uses: lukka/get-cmake@v3.26.4 + + # - name: Update Vcpkg + # if: matrix.DEPS == 'vcpkg' + # run: | + # git -C ${env:VCPKG_INSTALLATION_ROOT} pull + # & ${env:VCPKG_INSTALLATION_ROOT}\bootstrap-vcpkg.bat + + # - 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: Set up compiler flags + # run: | + # Write-Output "CMAKE_CFLAGS=/W4" | Out-File $env:GITHUB_ENV -Append + # Write-Output "CMAKE_CXXFLAGS=/W4 /EHsc" | Out-File $env:GITHUB_ENV -Append + + # - name: Checkout OpenCL-SDK + # uses: actions/checkout@v4 + # with: + # fetch-depth: 0 + # submodules: recursive + + # - name: Install samples dependencies + # run: | + # Invoke-WebRequest ${env:VULKAN_SDK_URL} -OutFile vulkan-sdk-installer.exe + # .\vulkan-sdk-installer.exe --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.32bit + # Remove-Item vulkan-sdk-installer.exe + # if ('${{ matrix.BIN }}' -eq 'x64') + # { + # echo "Vulkan_LIB_DIR=$env:VULKAN_SDK/Lib" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + # } else { + # echo "Vulkan_LIB_DIR=$env:VULKAN_SDK/Lib32" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + # } + + # - 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 OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON ` + # -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON ` + # -D CMAKE_C_STANDARD=${{matrix.STD.C}} ` + # -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} ` + # -D CMAKE_C_FLAGS="${env:CMAKE_CFLAGS}" ` + # -D CMAKE_CXX_FLAGS="${env:CMAKE_CXXFLAGS}" ` + # -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="ninja.exe" ` + # -D BUILD_DOCS=ON ` + # -D BUILD_TESTING=ON ` + # -D OPENCL_SDK_BUILD_SAMPLES=ON ` + # -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON ` + # -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON ` + # -D CMAKE_C_STANDARD=${{matrix.STD.C}} ` + # -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} ` + # -D CMAKE_C_FLAGS="${env:CMAKE_CFLAGS}" ` + # -D CMAKE_CXX_FLAGS="${env:CMAKE_CXXFLAGS}" ` + # -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 = 'externalmemory.*' + # foreach ($Config in 'Release','Debug') { + # & ctest ` + # --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="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 && + # cmake --version + + # - name: Install Sample Dependencies (Homebrew) + # run: | + # brew install vulkan-loader + + # - name: Install Optional SDK Dependencies (Homebrew) + # if: matrix.DEPS == 'system' + # run: brew install tclap glm glew sfml mesa-glu + + # - name: Install CMake & Ninja + # uses: lukka/get-cmake@v3.26.4 + + # - name: Install Vcpkg + # if: matrix.DEPS == 'vcpkg' + # run: | + # git clone https://github.com/Microsoft/vcpkg.git vcpkg + # ./vcpkg/bootstrap-vcpkg.sh + # echo "VCPKG_INSTALLATION_ROOT=$GITHUB_WORKSPACE/vcpkg" >> $GITHUB_ENV + + # - 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 "CMAKE_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 "CMAKE_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` + # `if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" ]]; then echo "-D CMAKE_MAKE_PROGRAM=ninja"; fi` + # -D BUILD_DOCS=ON + # -D BUILD_TESTING=ON + # -D BUILD_EXAMPLES=ON + # -D OPENCL_SDK_BUILD_SAMPLES=ON + # -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON + # -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON + # -D CMAKE_C_STANDARD=${{matrix.STD.C}} + # -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} + # -D CMAKE_C_FLAGS="${CMAKE_CFLAGS}" + # -D CMAKE_CXX_FLAGS="${CMAKE_CXXFLAGS}" + # -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: Set up Test Environment + # run: | + # # We need to provide an OpenCL driver for Intel CPU on mac + # brew install pocl + # POCL_INSTALL_PATH=$(brew --prefix pocl) + # echo "OCL_ICD_VENDORS=$POCL_INSTALL_PATH/etc/OpenCL/vendors" >> $GITHUB_ENV + # # This is needed so PoCL can find system libraries with newer LLVM versions, see: + # # https://github.com/KhronosGroup/OpenCL-SDK/issues/144 + # SDKROOT=$(xcrun --show-sdk-path) + # echo "SDKROOT=$SDKROOT" >> $GITHUB_ENV + + # - name: Test + # working-directory: ${{runner.workspace}}/OpenCL-SDK/build + # run: | + # # externalmemory is not supported on macos. + # # callbackcpp is unexpectedly failing (segfault) with PoCL - needs more debug. + # # multidevice is unexpectedly failing (clCreateSubBuffer error) with PoCL - needs more debug. + # # see: https://github.com/KhronosGroup/OpenCL-SDK/issues/146 + # EXCLUDE_REGEX="(externalmemory|callbackcpp|multidevice).*" + # 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}} + # -S $GITHUB_WORKSPACE + # -B $GITHUB_WORKSPACE/build + + # - name: Build + # run: cmake --build $GITHUB_WORKSPACE/build --parallel `nproc` simple-readme-build: strategy: From 6f73604e5106dc980ec07ff4a052d3c6dc3e2001 Mon Sep 17 00:00:00 2001 From: Ben Ashbaugh Date: Wed, 13 May 2026 22:01:10 -0700 Subject: [PATCH 05/15] Revert "temporary changes for testing" This reverts commit c1538fc66b0e92e6ed6536e6f39ad7bbca21ea90. --- .github/workflows/presubmit.yml | 1135 +++++++++++++++---------------- 1 file changed, 567 insertions(+), 568 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 01a68e9a..abe90406 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -42,76 +42,76 @@ jobs: 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: 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: "" + - 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: 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: Debug + - GEN: Unix Makefiles + CONFIG: Release + - GEN: Ninja Multi-Config 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 + 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 @@ -285,8 +285,7 @@ jobs: -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH -S $GITHUB_WORKSPACE - -B $GITHUB_WORKSPACE/build && - find $GITHUB_WORKSPACE/build -name icd_cmake* -ls + -B $GITHUB_WORKSPACE/build - name: Build run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; @@ -390,519 +389,519 @@ jobs: $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 - # 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_SDK_URL: https://sdk.lunarg.com/sdk/download/1.4.350.0/windows/vulkansdk-windows-X64-1.4.350.0.exe - # VULKAN_SDK: C:/VulkanSDK/1.4.350.0 - - # steps: - - # - name: Install CMake & Ninja - # uses: lukka/get-cmake@v3.26.4 - - # - name: Update Vcpkg - # if: matrix.DEPS == 'vcpkg' - # run: | - # git -C ${env:VCPKG_INSTALLATION_ROOT} pull - # & ${env:VCPKG_INSTALLATION_ROOT}\bootstrap-vcpkg.bat - - # - 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: Set up compiler flags - # run: | - # Write-Output "CMAKE_CFLAGS=/W4" | Out-File $env:GITHUB_ENV -Append - # Write-Output "CMAKE_CXXFLAGS=/W4 /EHsc" | Out-File $env:GITHUB_ENV -Append - - # - name: Checkout OpenCL-SDK - # uses: actions/checkout@v4 - # with: - # fetch-depth: 0 - # submodules: recursive - - # - name: Install samples dependencies - # run: | - # Invoke-WebRequest ${env:VULKAN_SDK_URL} -OutFile vulkan-sdk-installer.exe - # .\vulkan-sdk-installer.exe --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.32bit - # Remove-Item vulkan-sdk-installer.exe - # if ('${{ matrix.BIN }}' -eq 'x64') - # { - # echo "Vulkan_LIB_DIR=$env:VULKAN_SDK/Lib" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - # } else { - # echo "Vulkan_LIB_DIR=$env:VULKAN_SDK/Lib32" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - # } - - # - 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 OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON ` - # -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON ` - # -D CMAKE_C_STANDARD=${{matrix.STD.C}} ` - # -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} ` - # -D CMAKE_C_FLAGS="${env:CMAKE_CFLAGS}" ` - # -D CMAKE_CXX_FLAGS="${env:CMAKE_CXXFLAGS}" ` - # -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="ninja.exe" ` - # -D BUILD_DOCS=ON ` - # -D BUILD_TESTING=ON ` - # -D OPENCL_SDK_BUILD_SAMPLES=ON ` - # -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON ` - # -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON ` - # -D CMAKE_C_STANDARD=${{matrix.STD.C}} ` - # -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} ` - # -D CMAKE_C_FLAGS="${env:CMAKE_CFLAGS}" ` - # -D CMAKE_CXX_FLAGS="${env:CMAKE_CXXFLAGS}" ` - # -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 = 'externalmemory.*' - # foreach ($Config in 'Release','Debug') { - # & ctest ` - # --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="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 && - # cmake --version - - # - name: Install Sample Dependencies (Homebrew) - # run: | - # brew install vulkan-loader - - # - name: Install Optional SDK Dependencies (Homebrew) - # if: matrix.DEPS == 'system' - # run: brew install tclap glm glew sfml mesa-glu - - # - name: Install CMake & Ninja - # uses: lukka/get-cmake@v3.26.4 - - # - name: Install Vcpkg - # if: matrix.DEPS == 'vcpkg' - # run: | - # git clone https://github.com/Microsoft/vcpkg.git vcpkg - # ./vcpkg/bootstrap-vcpkg.sh - # echo "VCPKG_INSTALLATION_ROOT=$GITHUB_WORKSPACE/vcpkg" >> $GITHUB_ENV - - # - 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 "CMAKE_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 "CMAKE_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` - # `if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" ]]; then echo "-D CMAKE_MAKE_PROGRAM=ninja"; fi` - # -D BUILD_DOCS=ON - # -D BUILD_TESTING=ON - # -D BUILD_EXAMPLES=ON - # -D OPENCL_SDK_BUILD_SAMPLES=ON - # -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON - # -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON - # -D CMAKE_C_STANDARD=${{matrix.STD.C}} - # -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} - # -D CMAKE_C_FLAGS="${CMAKE_CFLAGS}" - # -D CMAKE_CXX_FLAGS="${CMAKE_CXXFLAGS}" - # -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: Set up Test Environment - # run: | - # # We need to provide an OpenCL driver for Intel CPU on mac - # brew install pocl - # POCL_INSTALL_PATH=$(brew --prefix pocl) - # echo "OCL_ICD_VENDORS=$POCL_INSTALL_PATH/etc/OpenCL/vendors" >> $GITHUB_ENV - # # This is needed so PoCL can find system libraries with newer LLVM versions, see: - # # https://github.com/KhronosGroup/OpenCL-SDK/issues/144 - # SDKROOT=$(xcrun --show-sdk-path) - # echo "SDKROOT=$SDKROOT" >> $GITHUB_ENV - - # - name: Test - # working-directory: ${{runner.workspace}}/OpenCL-SDK/build - # run: | - # # externalmemory is not supported on macos. - # # callbackcpp is unexpectedly failing (segfault) with PoCL - needs more debug. - # # multidevice is unexpectedly failing (clCreateSubBuffer error) with PoCL - needs more debug. - # # see: https://github.com/KhronosGroup/OpenCL-SDK/issues/146 - # EXCLUDE_REGEX="(externalmemory|callbackcpp|multidevice).*" - # 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}} - # -S $GITHUB_WORKSPACE - # -B $GITHUB_WORKSPACE/build - - # - name: Build - # run: cmake --build $GITHUB_WORKSPACE/build --parallel `nproc` + 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 + 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_SDK_URL: https://sdk.lunarg.com/sdk/download/1.4.350.0/windows/vulkansdk-windows-X64-1.4.350.0.exe + VULKAN_SDK: C:/VulkanSDK/1.4.350.0 + + steps: + + - name: Install CMake & Ninja + uses: lukka/get-cmake@v3.26.4 + + - name: Update Vcpkg + if: matrix.DEPS == 'vcpkg' + run: | + git -C ${env:VCPKG_INSTALLATION_ROOT} pull + & ${env:VCPKG_INSTALLATION_ROOT}\bootstrap-vcpkg.bat + + - 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: Set up compiler flags + run: | + Write-Output "CMAKE_CFLAGS=/W4" | Out-File $env:GITHUB_ENV -Append + Write-Output "CMAKE_CXXFLAGS=/W4 /EHsc" | Out-File $env:GITHUB_ENV -Append + + - name: Checkout OpenCL-SDK + uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: recursive + + - name: Install samples dependencies + run: | + Invoke-WebRequest ${env:VULKAN_SDK_URL} -OutFile vulkan-sdk-installer.exe + .\vulkan-sdk-installer.exe --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.32bit + Remove-Item vulkan-sdk-installer.exe + if ('${{ matrix.BIN }}' -eq 'x64') + { + echo "Vulkan_LIB_DIR=$env:VULKAN_SDK/Lib" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + } else { + echo "Vulkan_LIB_DIR=$env:VULKAN_SDK/Lib32" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + } + + - 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 OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON ` + -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON ` + -D CMAKE_C_STANDARD=${{matrix.STD.C}} ` + -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} ` + -D CMAKE_C_FLAGS="${env:CMAKE_CFLAGS}" ` + -D CMAKE_CXX_FLAGS="${env:CMAKE_CXXFLAGS}" ` + -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="ninja.exe" ` + -D BUILD_DOCS=ON ` + -D BUILD_TESTING=ON ` + -D OPENCL_SDK_BUILD_SAMPLES=ON ` + -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON ` + -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON ` + -D CMAKE_C_STANDARD=${{matrix.STD.C}} ` + -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} ` + -D CMAKE_C_FLAGS="${env:CMAKE_CFLAGS}" ` + -D CMAKE_CXX_FLAGS="${env:CMAKE_CXXFLAGS}" ` + -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 = 'externalmemory.*' + foreach ($Config in 'Release','Debug') { + & ctest ` + --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="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 && + cmake --version + + - name: Install Sample Dependencies (Homebrew) + run: | + brew install vulkan-loader + + - name: Install Optional SDK Dependencies (Homebrew) + if: matrix.DEPS == 'system' + run: brew install tclap glm glew sfml mesa-glu + + - name: Install CMake & Ninja + uses: lukka/get-cmake@v3.26.4 + + - name: Install Vcpkg + if: matrix.DEPS == 'vcpkg' + run: | + git clone https://github.com/Microsoft/vcpkg.git vcpkg + ./vcpkg/bootstrap-vcpkg.sh + echo "VCPKG_INSTALLATION_ROOT=$GITHUB_WORKSPACE/vcpkg" >> $GITHUB_ENV + + - 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 "CMAKE_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 "CMAKE_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` + `if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" ]]; then echo "-D CMAKE_MAKE_PROGRAM=ninja"; fi` + -D BUILD_DOCS=ON + -D BUILD_TESTING=ON + -D BUILD_EXAMPLES=ON + -D OPENCL_SDK_BUILD_SAMPLES=ON + -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON + -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON + -D CMAKE_C_STANDARD=${{matrix.STD.C}} + -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} + -D CMAKE_C_FLAGS="${CMAKE_CFLAGS}" + -D CMAKE_CXX_FLAGS="${CMAKE_CXXFLAGS}" + -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: Set up Test Environment + run: | + # We need to provide an OpenCL driver for Intel CPU on mac + brew install pocl + POCL_INSTALL_PATH=$(brew --prefix pocl) + echo "OCL_ICD_VENDORS=$POCL_INSTALL_PATH/etc/OpenCL/vendors" >> $GITHUB_ENV + # This is needed so PoCL can find system libraries with newer LLVM versions, see: + # https://github.com/KhronosGroup/OpenCL-SDK/issues/144 + SDKROOT=$(xcrun --show-sdk-path) + echo "SDKROOT=$SDKROOT" >> $GITHUB_ENV + + - name: Test + working-directory: ${{runner.workspace}}/OpenCL-SDK/build + run: | + # externalmemory is not supported on macos. + # callbackcpp is unexpectedly failing (segfault) with PoCL - needs more debug. + # multidevice is unexpectedly failing (clCreateSubBuffer error) with PoCL - needs more debug. + # see: https://github.com/KhronosGroup/OpenCL-SDK/issues/146 + EXCLUDE_REGEX="(externalmemory|callbackcpp|multidevice).*" + 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}} + -S $GITHUB_WORKSPACE + -B $GITHUB_WORKSPACE/build + + - name: Build + run: cmake --build $GITHUB_WORKSPACE/build --parallel `nproc` simple-readme-build: strategy: From 08a06a8d66949bfb88befc627327d3b38f8adf6f Mon Sep 17 00:00:00 2001 From: Ben Ashbaugh Date: Wed, 13 May 2026 22:18:44 -0700 Subject: [PATCH 06/15] disable Vulkan samples for 32-bit Windows builds The Vulkan SDK no longer supports 32-bit Windows. --- .github/workflows/presubmit.yml | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index abe90406..a07a7275 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -474,14 +474,11 @@ jobs: - name: Install samples dependencies run: | - Invoke-WebRequest ${env:VULKAN_SDK_URL} -OutFile vulkan-sdk-installer.exe - .\vulkan-sdk-installer.exe --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.32bit - Remove-Item vulkan-sdk-installer.exe - if ('${{ matrix.BIN }}' -eq 'x64') - { + if ('${{ matrix.BIN }}' -eq 'x64') { + Invoke-WebRequest ${env:VULKAN_SDK_URL} -OutFile vulkan-sdk-installer.exe + .\vulkan-sdk-installer.exe --accept-licenses --default-answer --confirm-command install + Remove-Item vulkan-sdk-installer.exe echo "Vulkan_LIB_DIR=$env:VULKAN_SDK/Lib" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - } else { - echo "Vulkan_LIB_DIR=$env:VULKAN_SDK/Lib32" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append } - name: Configure (MSBuild) @@ -492,7 +489,13 @@ jobs: } else { $TOOLCHAIN_ARG='' } - $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + if ('${{matrix.BIN}}' -eq 'x64') { + $BIN = 'x64' + $VULKAN_ARG = "-D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON -D Vulkan_INCLUDE_DIR=${env:VULKAN_SDK}/Include -D Vulkan_LIBRARY=${env:Vulkan_LIB_DIR}/vulkan-1.lib" + } else { + $BIN = 'Win32' + #VULKAN_ARG = '' + } & cmake ` $TOOLCHAIN_ARG ` -G "${{matrix.GEN}}" ` @@ -502,14 +505,12 @@ jobs: -D BUILD_TESTING=ON ` -D OPENCL_SDK_BUILD_SAMPLES=ON ` -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON ` - -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON ` + $VULKAN_ARG ` -D CMAKE_C_STANDARD=${{matrix.STD.C}} ` -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} ` -D CMAKE_C_FLAGS="${env:CMAKE_CFLAGS}" ` -D CMAKE_CXX_FLAGS="${env:CMAKE_CXXFLAGS}" ` -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." } @@ -522,6 +523,11 @@ jobs: } else { $TOOLCHAIN_ARG='' } + if ('${{matrix.BIN}}' -eq 'x64') { + $VULKAN_ARG = "-D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON -D Vulkan_INCLUDE_DIR=${env:VULKAN_SDK}/Include -D Vulkan_LIBRARY=${env:Vulkan_LIB_DIR}/vulkan-1.lib" + } else { + #VULKAN_ARG = '' + } $VER = switch ('${{matrix.VER}}') { ` 'v142' {'14.2'} ` 'v143' {'14.4'} } @@ -535,15 +541,13 @@ jobs: -D BUILD_TESTING=ON ` -D OPENCL_SDK_BUILD_SAMPLES=ON ` -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON ` - -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON ` + $VULKAN_ARG ` -D CMAKE_C_STANDARD=${{matrix.STD.C}} ` -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} ` -D CMAKE_C_FLAGS="${env:CMAKE_CFLAGS}" ` -D CMAKE_CXX_FLAGS="${env:CMAKE_CXXFLAGS}" ` -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." } From 336caac643bfa09748f2baf0825445564182e87f Mon Sep 17 00:00:00 2001 From: Ben Ashbaugh Date: Wed, 13 May 2026 22:19:22 -0700 Subject: [PATCH 07/15] temporarily disable ICD loader testing to work around issue --- .github/workflows/presubmit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index a07a7275..c5d5f82c 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -277,7 +277,7 @@ jobs: -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON `if [[ "${{matrix.BIN}}" == "32" ]]; then echo "-D OPENCL_SDK_BUILD_OPENGL_SAMPLES=OFF"; fi;` - -D OPENCL_ICD_LOADER_BUILD_TESTING=ON + -D OPENCL_ICD_LOADER_BUILD_TESTING=OFF -D CMAKE_C_STANDARD=${{matrix.STD.C}} -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} -D CMAKE_C_FLAGS="${CMAKE_CFLAGS}" From 583edcb0a7c5419be5f4ed7a38184018f7b46226 Mon Sep 17 00:00:00 2001 From: Ben Ashbaugh Date: Wed, 13 May 2026 22:34:24 -0700 Subject: [PATCH 08/15] update GitHub actions, switch to pinned hashes --- .github/workflows/presubmit.yml | 20 ++++++++++---------- .github/workflows/release.yml | 8 ++++---- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index c5d5f82c..3ee347c5 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -21,7 +21,7 @@ jobs: run: shell: bash steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: # repository: ${{ github.repository }} (default) fetch-depth: 0 @@ -193,7 +193,7 @@ jobs: echo "CMAKE_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 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 submodules: recursive @@ -435,7 +435,7 @@ jobs: steps: - name: Install CMake & Ninja - uses: lukka/get-cmake@v3.26.4 + uses: lukka/get-cmake@a234373d65f7cab3afb0390fbaba1f20a7510fdc # v3.26.4 - name: Update Vcpkg if: matrix.DEPS == 'vcpkg' @@ -467,7 +467,7 @@ jobs: Write-Output "CMAKE_CXXFLAGS=/W4 /EHsc" | Out-File $env:GITHUB_ENV -Append - name: Checkout OpenCL-SDK - uses: actions/checkout@v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 submodules: recursive @@ -690,7 +690,7 @@ jobs: CXX: /usr/bin/clang++ steps: - name: Checkout OpenCL-SDK - uses: actions/checkout@v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 submodules: recursive @@ -710,7 +710,7 @@ jobs: run: brew install tclap glm glew sfml mesa-glu - name: Install CMake & Ninja - uses: lukka/get-cmake@v3.26.4 + uses: lukka/get-cmake@a234373d65f7cab3afb0390fbaba1f20a7510fdc # v3.26.4 - name: Install Vcpkg if: matrix.DEPS == 'vcpkg' @@ -809,7 +809,7 @@ jobs: os: [ubuntu-latest] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Environment setup run: | MINIFORGE_INSTALL_DIR=.miniforge3 @@ -849,7 +849,7 @@ jobs: #os: [ubuntu-latest, macos-latest] os: [ubuntu-latest, macos-13] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 submodules: recursive @@ -889,7 +889,7 @@ jobs: CXXFLAGS: -Wall -Wextra -pedantic -Werror -Wno-error=missing-field-initializers steps: - name: Checkout OpenCL-SDK - uses: actions/checkout@v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 submodules: recursive @@ -919,7 +919,7 @@ jobs: needs: format steps: - name: Checkout OpenCL-SDK - uses: actions/checkout@v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 submodules: recursive diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 719bcc6a..3ce740b4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ jobs: MultiProcMaxCount: 3 steps: - name: Checkout OpenCL-SDK - uses: actions/checkout@v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 submodules: recursive @@ -77,7 +77,7 @@ jobs: if ($LASTEXITCODE -ne 0) { throw "Packaging OpenCL-SDK failed." } - name: Upload - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3.0.0 with: draft: true token: ${{ secrets.ACTIONS_CREATE_RELEASE_TOKEN }} @@ -99,7 +99,7 @@ jobs: steps: - name: Checkout OpenCL-SDK - uses: actions/checkout@v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 submodules: recursive @@ -150,7 +150,7 @@ jobs: if ($LASTEXITCODE -ne 0) { throw "Packaging OpenCL-SDK source failed." } - name: Upload - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3.0.0 with: draft: true token: ${{ secrets.ACTIONS_CREATE_RELEASE_TOKEN }} From 79d1e28cc8e19aa15d4e321d0c98aafd723ed5e2 Mon Sep 17 00:00:00 2001 From: Ben Ashbaugh Date: Wed, 13 May 2026 22:45:51 -0700 Subject: [PATCH 09/15] add dependabot --- .github/dependabot.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..2390d8c8 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" + groups: + github-actions: + patterns: + - "*" From fb811f2819aa474a126e9822cdaf9f5b245be700 Mon Sep 17 00:00:00 2001 From: Ben Ashbaugh Date: Thu, 14 May 2026 08:01:19 -0700 Subject: [PATCH 10/15] disable ruby testing on macos --- .github/workflows/presubmit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 3ee347c5..e4243daa 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -847,7 +847,7 @@ jobs: strategy: matrix: #os: [ubuntu-latest, macos-latest] - os: [ubuntu-latest, macos-13] + os: [ubuntu-latest] steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: From 7a9df211fb1a616d35b9d43a0ac6ec9e7984d377 Mon Sep 17 00:00:00 2001 From: Ben Ashbaugh Date: Thu, 14 May 2026 08:03:15 -0700 Subject: [PATCH 11/15] update submodules --- external/OpenCL-ICD-Loader | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/OpenCL-ICD-Loader b/external/OpenCL-ICD-Loader index dfa960ba..9f260601 160000 --- a/external/OpenCL-ICD-Loader +++ b/external/OpenCL-ICD-Loader @@ -1 +1 @@ -Subproject commit dfa960baac44b133ebbd740c582e5439ca8e0a24 +Subproject commit 9f260601dfa45edb6ee52d4d2fa4806bc3db66d8 From 9a29e7d5ec02a2c100117bb3530093d1a7e0794e Mon Sep 17 00:00:00 2001 From: Ben Ashbaugh Date: Thu, 14 May 2026 08:04:30 -0700 Subject: [PATCH 12/15] re-enable ICD loader testing --- .github/workflows/presubmit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index e4243daa..9e09faab 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -277,7 +277,7 @@ jobs: -D OPENCL_SDK_BUILD_OPENGL_SAMPLES=ON -D OPENCL_SDK_BUILD_VULKAN_SAMPLES=ON `if [[ "${{matrix.BIN}}" == "32" ]]; then echo "-D OPENCL_SDK_BUILD_OPENGL_SAMPLES=OFF"; fi;` - -D OPENCL_ICD_LOADER_BUILD_TESTING=OFF + -D OPENCL_ICD_LOADER_BUILD_TESTING=ON -D CMAKE_C_STANDARD=${{matrix.STD.C}} -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} -D CMAKE_C_FLAGS="${CMAKE_CFLAGS}" From dab5bf939482b3ab50dc5bfe7aedc14dfdf4bb2f Mon Sep 17 00:00:00 2001 From: Ben Ashbaugh Date: Thu, 14 May 2026 08:05:27 -0700 Subject: [PATCH 13/15] try ruby testing on macos-latest --- .github/workflows/presubmit.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 9e09faab..f0935314 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -846,8 +846,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - #os: [ubuntu-latest, macos-latest] - os: [ubuntu-latest] + os: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: From ba13a04154653b08465a31e74f3aad11b40faaa3 Mon Sep 17 00:00:00 2001 From: Ben Ashbaugh Date: Thu, 14 May 2026 08:56:17 -0700 Subject: [PATCH 14/15] disable ruby testing on macos --- .github/workflows/presubmit.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index f0935314..9e09faab 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -846,7 +846,8 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, macos-latest] + #os: [ubuntu-latest, macos-latest] + os: [ubuntu-latest] steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: From ad3e283341c3fc149a9f0ab48dd9904354ee949c Mon Sep 17 00:00:00 2001 From: Ben Ashbaugh Date: Tue, 19 May 2026 15:48:41 -0700 Subject: [PATCH 15/15] update submodules --- external/OpenCL-CLHPP | 2 +- external/OpenCL-ICD-Loader | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/external/OpenCL-CLHPP b/external/OpenCL-CLHPP index 2a608428..5661a0ef 160000 --- a/external/OpenCL-CLHPP +++ b/external/OpenCL-CLHPP @@ -1 +1 @@ -Subproject commit 2a608428f725cad7903ef55e1ce5b995895838f5 +Subproject commit 5661a0efc215b1e05d3b90315c64f670101fdbde diff --git a/external/OpenCL-ICD-Loader b/external/OpenCL-ICD-Loader index 9f260601..b7bd2803 160000 --- a/external/OpenCL-ICD-Loader +++ b/external/OpenCL-ICD-Loader @@ -1 +1 @@ -Subproject commit 9f260601dfa45edb6ee52d4d2fa4806bc3db66d8 +Subproject commit b7bd2803acc779c03d96588e9ca9e9568a18698a