From 02e85b7e61b018e243d3c1478fa5cb44633aa54e Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Wed, 21 Jun 2023 15:09:14 +0000 Subject: [PATCH 01/12] Add DEB packaging --- .github/workflows/linux.yml | 192 +++++++++++++++++++++++++----------- .gitignore | 11 +++ CMakeLists.txt | 1 + cmake/Package.cmake | 44 +++++++++ 4 files changed, 188 insertions(+), 60 deletions(-) create mode 100644 .gitignore create mode 100644 cmake/Package.cmake diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 5792620f..2f242a17 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -21,7 +21,9 @@ jobs: CMAKE: [3.1.3] env: CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake + CPACK_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cpack CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest + DEB_INSTALLATION_PATH: /usr # Workaround for https://github.com/actions/runner/issues/2058 OPENCL_PKGCONFIG_PATHS: /__w/OpenCL-CLHPP/OpenCL-CLHPP/install/share/pkgconfig:/__w/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-Headers/install/share/pkgconfig:/__w/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-ICD-Loader/install/lib/pkgconfig @@ -35,8 +37,11 @@ jobs: - name: Checkout OpenCL-Headers uses: actions/checkout@v3 with: - repository: KhronosGroup/OpenCL-Headers + # Change to KhronosGroup/OpenCL-Headers when PR for DEB packaging is merged + repository: StreamHPC/OpenCL-Headers path: external/OpenCL-Headers + # Remove when PR for DEB packaging is merged + ref: 58-create-deb-package - name: Checkout OpenCL-ICD-Loader uses: actions/checkout@v3 @@ -44,35 +49,43 @@ jobs: repository: KhronosGroup/OpenCL-ICD-Loader path: external/OpenCL-ICD-Loader - - name: Build & install OpenCL-Headers - run: $CMAKE_EXE + - name: Build, install & package OpenCL-Headers + run: mkdir $GITHUB_WORKSPACE/external/OpenCL-Headers/build && + cd $GITHUB_WORKSPACE/external/OpenCL-Headers/build && + $CMAKE_EXE -G "${{matrix.GEN}}" -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install -D BUILD_TESTING=OFF - -B$GITHUB_WORKSPACE/external/OpenCL-Headers/build - -H$GITHUB_WORKSPACE/external/OpenCL-Headers && + $GITHUB_WORKSPACE/external/OpenCL-Headers && $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build --target install -- - -j`nproc` + -j`nproc` && + $CPACK_EXE + --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" + -G DEB + -C Release + -B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" - name: Build & install OpenCL-ICD-Loader - run: $CMAKE_EXE + run: mkdir $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && + cd $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && + $CMAKE_EXE -G "${{matrix.GEN}}" -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" -D BUILD_TESTING=OFF - -B$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build - -H$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader && + $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader && $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build --target install @@ -84,7 +97,7 @@ jobs: # no -Werror during configuration because: # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] # warning: unused parameter [-Wunused-parameter] - run: + run: mkdir $GITHUB_WORKSPACE/build && cd $GITHUB_WORKSPACE/build && $CMAKE_EXE -G "${{matrix.GEN}}" -D BUILD_TESTING=ON @@ -96,8 +109,8 @@ jobs: -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" - -B$GITHUB_WORKSPACE/build - -H$GITHUB_WORKSPACE + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH + $GITHUB_WORKSPACE - name: Build shell: bash @@ -111,6 +124,14 @@ jobs: shell: bash run: $CTEST_EXE --output-on-failure --parallel `nproc` + - name: Package DEB + shell: bash + run: $CPACK_EXE + --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" + -G DEB + -C Release + -B "$GITHUB_WORKSPACE/package-deb" + - name: Install shell: bash run: $CMAKE_EXE @@ -119,27 +140,45 @@ jobs: -- -j`nproc` + - name: Consume (Package DEB) + shell: bash + run: dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb && + dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && + mkdir $GITHUB_WORKSPACE/build_package && cd $GITHUB_WORKSPACE/build_package && + $CMAKE_EXE + -G "${{matrix.GEN}}" + -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" + -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} + -D CMAKE_CXX_STANDARD=${{matrix.STD}} + -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" + $GITHUB_WORKSPACE/tests/pkgconfig/bare && + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package -- -j`nproc` + - name: "Consume (standalone): Configure/Build/Test" shell: bash - run: $CMAKE_EXE + run: mkdir -p $GITHUB_WORKSPACE/build/downstream/bare && + cd $GITHUB_WORKSPACE/build/downstream/bare && + $CMAKE_EXE -G "${{matrix.GEN}}" -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} -D CMAKE_CXX_STANDARD=${{matrix.STD}} -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" - -B$GITHUB_WORKSPACE/build/downstream/bare - -H$GITHUB_WORKSPACE/tests/pkgconfig/bare ; + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" + $GITHUB_WORKSPACE/tests/pkgconfig/bare && $CMAKE_EXE - --build $GITHUB_WORKSPACE/build/downstream/bare ; - cd $GITHUB_WORKSPACE/build/downstream/bare ; + --build $GITHUB_WORKSPACE/build/downstream/bare && + cd $GITHUB_WORKSPACE/build/downstream/bare && $CTEST_EXE --output-on-failure - name: "Consume (SDK): Configure/Build/Test" shell: bash - run: $CMAKE_EXE -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL ; - echo -e "include(\"$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")\ninclude(\"\${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake\")" > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake ; + run: $CMAKE_EXE -E make_directory $DEB_INSTALLATION_PATH/share/cmake/OpenCL && + echo -e "include(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")\ninclude(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake\")" > $DEB_INSTALLATION_PATH/share/cmake/OpenCL/OpenCLConfig.cmake && + mkdir -p $GITHUB_WORKSPACE/build/downstream/sdk && + cd $GITHUB_WORKSPACE/build/downstream/sdk && $CMAKE_EXE -G "${{matrix.GEN}}" -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} @@ -147,12 +186,11 @@ jobs: -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} -D CMAKE_CXX_STANDARD=${{matrix.STD}} -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" - -B$GITHUB_WORKSPACE/build/downstream/sdk - -H$GITHUB_WORKSPACE/tests/pkgconfig/sdk ; + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" + $GITHUB_WORKSPACE/tests/pkgconfig/sdk && $CMAKE_EXE - --build $GITHUB_WORKSPACE/build/downstream/sdk ; - cd $GITHUB_WORKSPACE/build/downstream/sdk ; + --build $GITHUB_WORKSPACE/build/downstream/sdk && + cd $GITHUB_WORKSPACE/build/downstream/sdk && $CTEST_EXE --output-on-failure - name: Test pkg-config @@ -165,8 +203,6 @@ jobs: - - cmake-latest: runs-on: ${{ matrix.OS }} strategy: @@ -177,11 +213,13 @@ jobs: GEN: [Ninja Multi-Config] STD: [11, 14] BIN: [64] # Temporarily disable cross-compilation (will need toolchain files) - CMAKE: [3.21.2] + CMAKE: [3.21.3] env: CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{ matrix.CMAKE }}/cmake-${{ matrix.CMAKE }}-Linux-x86_64.tar.gz CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake + CPACK_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cpack CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest + DEB_INSTALLATION_PATH: /usr steps: @@ -193,8 +231,11 @@ jobs: - name: Checkout OpenCL-Headers uses: actions/checkout@v3 with: - repository: KhronosGroup/OpenCL-Headers + # Change to KhronosGroup/OpenCL-Headers when PR for DEB packaging is merged + repository: StreamHPC/OpenCL-Headers path: external/OpenCL-Headers + # Remove when PR for DEB packaging is merged + ref: 58-create-deb-package - name: Checkout OpenCL-ICD-Loader uses: actions/checkout@v3 @@ -205,7 +246,7 @@ jobs: - name: Create Build Environment run: sudo apt-get update -q; if [[ "${{matrix.GEN}}" =~ "Ninja" && ! `which ninja` ]]; then sudo apt install -y ninja-build; fi; - sudo apt install gcc-${{matrix.VER}} g++-${{matrix.VER}}; + sudo apt install gcc-${{matrix.VER}} g++-${{matrix.VER}}; if [[ "${{matrix.BIN}}" == "32" ]]; then sudo apt install gcc-${COMPILER_VER}-multilib; fi; @@ -214,22 +255,28 @@ jobs: mv /opt/Kitware/CMake/cmake-${{ matrix.CMAKE }}-* /opt/Kitware/CMake/${{ matrix.CMAKE }} # Install Ninja only if it's the selected generator and it's not available. - - name: Build & install OpenCL-Headers + - name: Build, install & package OpenCL-Headers run: $CMAKE_EXE -G "${{matrix.GEN}}" + -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install -D BUILD_TESTING=OFF - -B$GITHUB_WORKSPACE/external/OpenCL-Headers/build - -H$GITHUB_WORKSPACE/external/OpenCL-Headers && + -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build + -S $GITHUB_WORKSPACE/external/OpenCL-Headers && $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build --target install - --config Release -- - -j`nproc` + -j`nproc` && + $CPACK_EXE + --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" + -G DEB + -C Release + -B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" - name: Build & install OpenCL-ICD-Loader run: $CMAKE_EXE @@ -237,11 +284,11 @@ jobs: -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" -D BUILD_TESTING=OFF - -B$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build - -H$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader && + -B $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build + -S $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader && $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build --target install @@ -264,8 +311,9 @@ jobs: -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" - -B$GITHUB_WORKSPACE/build - -H$GITHUB_WORKSPACE + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH + -B $GITHUB_WORKSPACE/build + -S $GITHUB_WORKSPACE - name: Build shell: bash @@ -280,6 +328,14 @@ jobs: $CTEST_EXE --output-on-failure -C Release --parallel `nproc`; $CTEST_EXE --output-on-failure -C Debug --parallel `nproc`; + - name: Package DEB + shell: bash + run: $CPACK_EXE + --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" + -G DEB + -C Release + -B "$GITHUB_WORKSPACE/package-deb" + - name: Install shell: bash run: $CMAKE_EXE @@ -289,6 +345,22 @@ jobs: -- -j`nproc` + - name: Consume (Package DEB) + shell: bash + run: sudo dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb && + sudo dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && + $CMAKE_EXE + -G "${{matrix.GEN}}" + -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" + -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} + -D CMAKE_CXX_STANDARD=${{matrix.STD}} + -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" + -B $GITHUB_WORKSPACE/build_package + -S $GITHUB_WORKSPACE/tests/pkgconfig/bare && + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release && + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug + - name: "Consume (standalone): Configure/Build/Test" shell: bash run: $CMAKE_EXE @@ -297,33 +369,33 @@ jobs: -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} -D CMAKE_CXX_STANDARD=${{matrix.STD}} -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" - -B$GITHUB_WORKSPACE/build/downstream/bare - -H$GITHUB_WORKSPACE/tests/pkgconfig/bare ; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/bare --config Release; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/bare --config Debug; - cd $GITHUB_WORKSPACE/build/downstream/bare; - $CTEST_EXE --output-on-failure -C Release; - $CTEST_EXE --output-on-failure -C Debug; + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" + -B $GITHUB_WORKSPACE/build/downstream/bare + -S $GITHUB_WORKSPACE/tests/pkgconfig/bare && + $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/bare --config Release && + $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/bare --config Debug && + cd $GITHUB_WORKSPACE/build/downstream/bare && + $CTEST_EXE --output-on-failure -C Release && + $CTEST_EXE --output-on-failure -C Debug - name: "Consume (SDK): Configure/Build/Test" shell: bash - run: $CMAKE_EXE -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL ; - echo -e "include(\"$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")\ninclude(\"\${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake\")" > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake ; + run: $CMAKE_EXE -E make_directory $DEB_INSTALLATION_PATH/share/cmake/OpenCL && + echo -e "include(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")\ninclude(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake\")" > $DEB_INSTALLATION_PATH/share/cmake/OpenCL/OpenCLConfig.cmake && $CMAKE_EXE -G "${{matrix.GEN}}" -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} -D CMAKE_CXX_STANDARD=${{matrix.STD}} -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" - -B$GITHUB_WORKSPACE/build/downstream/sdk - -H$GITHUB_WORKSPACE/tests/pkgconfig/sdk ; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/sdk --config Release; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/sdk --config Debug; - cd $GITHUB_WORKSPACE/build/downstream/sdk; - $CTEST_EXE --output-on-failure -C Release; - $CTEST_EXE --output-on-failure -C Debug; + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" + -B $GITHUB_WORKSPACE/build/downstream/sdk + -S $GITHUB_WORKSPACE/tests/pkgconfig/sdk && + $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/sdk --config Release && + $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/sdk --config Debug && + cd $GITHUB_WORKSPACE/build/downstream/sdk && + $CTEST_EXE --output-on-failure -C Release && + $CTEST_EXE --output-on-failure -C Debug - name: Test pkg-config shell: bash @@ -331,4 +403,4 @@ jobs: - name: Test pkg-config dependency shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" + run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..2e0d9c93 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +# Build dir +[Bb]uild/ + +# Install dir +[Ii]nstall/ + +# Package dir +[Pp]ackage[-_\s\d]*/ + +# External dir +[Ee]xternal/ diff --git a/CMakeLists.txt b/CMakeLists.txt index b9689cca..0796bb39 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,6 +75,7 @@ install( set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") include(JoinPaths) +include(Package) include(GNUInstallDirs) diff --git a/cmake/Package.cmake b/cmake/Package.cmake new file mode 100644 index 00000000..00b5a223 --- /dev/null +++ b/cmake/Package.cmake @@ -0,0 +1,44 @@ +set(CPACK_PACKAGE_VENDOR "khronos") + +set(CPACK_DEBIAN_DESCRIPTION "C++ headers for OpenCL development") + +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt") + +set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") + +if(NOT CPACK_PACKAGING_INSTALL_PREFIX) + set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") +endif() + +# DEB packaging configuration +set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_VENDOR}) + +set(CPACK_DEBIAN_PACKAGE_HOMEPAGE + "https://github.com/KhronosGroup/OpenCL-CLHPP") + +# Version number [epoch:]upstream_version[-debian_revision] +set(LATEST_RELEASE_VERSION "2023.04.17") +set(CPACK_DEBIAN_PACKAGE_VERSION "${PROJECT_VERSION}~${LATEST_RELEASE_VERSION}") # upstream_version +set(CPACK_DEBIAN_PACKAGE_RELEASE "1") # debian_revision (because this is a + # non-native pkg) +set(PACKAGE_VERSION_REVISION "${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}") + +set(DEBIAN_PACKAGE_NAME "opencl-clhpp-headers") +set(CPACK_DEBIAN_PACKAGE_NAME + "${DEBIAN_PACKAGE_NAME}" + CACHE STRING "Package name" FORCE) + +# Get architecture +execute_process(COMMAND dpkg "--print-architecture" OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE) +string(STRIP "${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}" CPACK_DEBIAN_PACKAGE_ARCHITECTURE) + +# Package file name in deb format: +# _-_.deb +set(CPACK_DEBIAN_FILE_NAME "${CPACK_PACKAGE_VENDOR}-${DEBIAN_PACKAGE_NAME}_${PACKAGE_VERSION_REVISION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") + +# Dependencies +set(CPACK_DEBIAN_PACKAGE_DEPENDS "opencl-c-headers (>= 3.0~2021.04.29)") + +set(CPACK_DEBIAN_PACKAGE_DEBUG ON) + +include(CPack) From ddd5f3c3ffad94cea446cd7c2f1e2da36a2abd2a Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Mon, 7 Aug 2023 11:49:28 +0000 Subject: [PATCH 02/12] Move linux CI to presubmit.yml and update it --- .github/workflows/linux.yml | 2 + .github/workflows/macos.yml | 1 + .github/workflows/presubmit.yml | 265 ++++++++++++++++++++++++++++++++ .github/workflows/windows.yml | 1 + CMakeLists.txt | 12 +- OpenCL-CLHPP.pc.in | 2 +- cmake/Package.cmake | 47 ++++++ 7 files changed, 319 insertions(+), 11 deletions(-) create mode 100644 .github/workflows/presubmit.yml diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 2f242a17..5949ab34 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -7,6 +7,7 @@ env: jobs: cmake-minimum: + if: false runs-on: ${{ matrix.OS }} container: streamhpc/opencl-sdk-base:ubuntu-18.04-20220127 strategy: @@ -204,6 +205,7 @@ jobs: cmake-latest: + if: false runs-on: ${{ matrix.OS }} strategy: matrix: diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index b0a9f40a..f6479cef 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -7,6 +7,7 @@ env: jobs: macos-gcc: + if: false #runs-on: macos-latest runs-on: macos-11 # temporary, macos-latest only supports gcc-12 strategy: diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml new file mode 100644 index 00000000..dffac5c7 --- /dev/null +++ b/.github/workflows/presubmit.yml @@ -0,0 +1,265 @@ +name: Presubmit + +on: [push, pull_request] + +jobs: + linux: + runs-on: ubuntu-latest + strategy: + matrix: + CMAKE: [3.26.4] + COMPILER: + - C_NAME: gcc + CXX_NAME: g++ + VER: 11 + - C_NAME: gcc + CXX_NAME: g++ + VER: 13 + - C_NAME: clang + CXX_NAME: clang++ + VER: 14 + - C_NAME: clang + CXX_NAME: clang++ + VER: 16 + BIN: [64] + STD: [11, 17] + CONF: + - GEN: Unix Makefiles + CONFIG: Debug + - GEN: Unix Makefiles + CONFIG: Release + - GEN: Ninja Multi-Config + CONFIG: Release + IMAGE: + - streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + include: + - CMAKE: 3.1.3 + COMPILER: + C_NAME: gcc + CXX_NAME: g++ + VER: 7 + BIN: 64 + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Debug + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 + - CMAKE: 3.1.3 + COMPILER: + C_NAME: gcc + CXX_NAME: g++ + VER: 7 + BIN: 64 + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Release + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 + - CMAKE: 3.1.3 + COMPILER: + C_NAME: clang + CXX_NAME: clang++ + VER: 8 + BIN: 64 + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Debug + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 + - CMAKE: 3.1.3 + COMPILER: + C_NAME: clang + CXX_NAME: clang++ + VER: 8 + BIN: 64 + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Release + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 + container: ${{matrix.IMAGE}} + env: + CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake + CPACK_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cpack + CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest + DEB_INSTALLATION_PATH: /usr + CC: ${{matrix.COMPILER.C_NAME}}-${{matrix.COMPILER.VER}} + CXX: ${{matrix.COMPILER.CXX_NAME}}-${{matrix.COMPILER.VER}} + + steps: + - name: Checkout OpenCL-CLHPP + uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Checkout OpenCL-Headers + uses: actions/checkout@v3 + with: + path: external/OpenCL-Headers + # ToDo: Change to KhronosGroup/OpenCL-Headers:main + repository: StreamHPC/OpenCL-Headers + ref: update-ci + + - name: Checkout OpenCL-ICD-Loader + uses: actions/checkout@v3 + with: + path: external/OpenCL-ICD-Loader + # ToDo: Change to KhronosGroup/OpenCL-ICD-Loader:main + repository: StreamHPC/OpenCL-ICD-Loader + ref: update-ci + + - name: Configure, install & package OpenCL-Headers + run: mkdir $GITHUB_WORKSPACE/external/OpenCL-Headers/build && + cd $GITHUB_WORKSPACE/external/OpenCL-Headers/build && + $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" + `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` + -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_INSTALL_PREFIX=`if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "$GITHUB_WORKSPACE/external/OpenCL-Headers/install"; else echo "$DEB_INSTALLATION_PATH"; fi` + `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH"; fi` + -D BUILD_TESTING=OFF + $GITHUB_WORKSPACE/external/OpenCL-Headers && + $CMAKE_EXE + --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build + --target install + -- + -j`nproc` && + $CPACK_EXE + --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" + -G DEB + -C ${{matrix.CONF.CONFIG}} + -B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" + + - name: Configure & install OpenCL-ICD-Loader + run: mkdir $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && + cd $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && + $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" + `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` + -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_INSTALL_PREFIX=`if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install"; else echo "$DEB_INSTALLATION_PATH"; fi` + `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install"; fi` + -D BUILD_TESTING=OFF + $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader && + $CMAKE_EXE + --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build + --target install + -- + -j`nproc` + + - name: Configure + shell: bash + # no -Werror during configuration because: + # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] + # warning: unused parameter [-Wunused-parameter] + run: mkdir $GITHUB_WORKSPACE/build && cd $GITHUB_WORKSPACE/build && + $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" + -D BUILD_TESTING=ON + -D BUILD_EXAMPLES=ON + `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` + -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" + -D CMAKE_CXX_STANDARD=${{matrix.STD}} + -D CMAKE_CXX_EXTENSIONS=OFF + -D CMAKE_INSTALL_PREFIX=`if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "$GITHUB_WORKSPACE/install"; else echo "$DEB_INSTALLATION_PATH"; fi` + `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH"; fi` + `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install"; fi` + $GITHUB_WORKSPACE + + - name: Build + shell: bash + run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; + then + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config ${{matrix.CONF.CONFIG}} -- -j `nproc`; + else + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release; + fi + + - name: Test + shell: bash + working-directory: ${{runner.workspace}}/OpenCL-CLHPP/build + run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; + then + $CTEST_EXE --output-on-failure --parallel `nproc`; + else + $CTEST_EXE --output-on-failure -C Debug --parallel `nproc`; + $CTEST_EXE --output-on-failure -C Release --parallel `nproc`; + fi + + - name: Package DEB + shell: bash + run: $CPACK_EXE + --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" + -G DEB + -C ${{matrix.CONF.CONFIG}} + -B "$GITHUB_WORKSPACE/package-deb" + + - name: Consume (DEB) + shell: bash + run: dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb && + dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && + mkdir $GITHUB_WORKSPACE/build_package && + cd $GITHUB_WORKSPACE/build_package && + $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" + `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` + -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" + -D CMAKE_CXX_STANDARD=${{matrix.STD}} + -D CMAKE_CXX_EXTENSIONS=OFF + `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install"; fi` + $GITHUB_WORKSPACE/tests/pkgconfig/bare && + if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; + then + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config ${{matrix.CONF.CONFIG}} -- -j `nproc`; + else + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release; + fi + + - name: Test pkg-config (DEB) + shell: bash + # /usr/include is already on the include search path, + # we don't expect any output + run: if [[ $(pkg-config OpenCL-CLHPP --cflags) ]]; + then + exit 1; + fi; + + - name: Uninstall (DEB) + shell: bash + run: apt-get remove -y opencl-clhpp-headers + + - name: Re-configure for install + if: matrix.CMAKE == '3.1.3' + shell: bash + run: cd $GITHUB_WORKSPACE/build && + $CMAKE_EXE -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install $GITHUB_WORKSPACE + + - name: Test install + shell: bash + run: $CMAKE_EXE --build $GITHUB_WORKSPACE/build --target install --config ${{matrix.CONF.CONFIG}} -- -j`nproc`; + + - name: Consume (install) + shell: bash + run: mkdir $GITHUB_WORKSPACE/build_install && cd $GITHUB_WORKSPACE/build_install && + $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" + `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` + -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" + $GITHUB_WORKSPACE/tests/pkgconfig/bare && + if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; + then + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install -- -j`nproc`; + else + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Debug -- -j`nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Release -- -j`nproc`; + fi + + - name: Test pkg-config (install) + shell: bash + run: PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/share/pkgconfig + pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index fbcf6bfa..bb208587 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -4,6 +4,7 @@ on: [push, pull_request] jobs: msvc: + if: false runs-on: windows-2022 strategy: matrix: diff --git a/CMakeLists.txt b/CMakeLists.txt index 0796bb39..58d8cd63 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,12 +73,12 @@ install( EXPORT OpenCLHeadersCppTargets ) +include(GNUInstallDirs) + set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") include(JoinPaths) include(Package) -include(GNUInstallDirs) - install( DIRECTORY include/CL DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} @@ -131,11 +131,3 @@ endif(BUILD_EXAMPLES) if(CLHPP_BUILD_TESTS) add_subdirectory(tests) endif(CLHPP_BUILD_TESTS) - -join_paths(OPENCLHPP_INCLUDEDIR_PC "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") - -configure_file(OpenCL-CLHPP.pc.in OpenCL-CLHPP.pc @ONLY) -set(pkg_config_location ${CMAKE_INSTALL_DATADIR}/pkgconfig) -install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCL-CLHPP.pc - DESTINATION ${pkg_config_location}) diff --git a/OpenCL-CLHPP.pc.in b/OpenCL-CLHPP.pc.in index 763bd1c7..5d4a07b9 100644 --- a/OpenCL-CLHPP.pc.in +++ b/OpenCL-CLHPP.pc.in @@ -1,4 +1,4 @@ -prefix=@CMAKE_INSTALL_PREFIX@ +prefix=@PKGCONFIG_PREFIX@ includedir=@OPENCLHPP_INCLUDEDIR_PC@ Name: OpenCL-CLHPP diff --git a/cmake/Package.cmake b/cmake/Package.cmake index 00b5a223..795ddbcc 100644 --- a/cmake/Package.cmake +++ b/cmake/Package.cmake @@ -10,6 +10,53 @@ if(NOT CPACK_PACKAGING_INSTALL_PREFIX) set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") endif() +# Configuring pkgconfig + +# We need two different instances of OpenCL.pc +# One for installing (cmake --install), which contains CMAKE_INSTALL_PREFIX as prefix +# And another for the Debian development package, which contains CPACK_PACKAGING_INSTALL_PREFIX as prefix + +join_paths(OPENCLHPP_INCLUDEDIR_PC "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") + +set(pkg_config_location ${CMAKE_INSTALL_DATADIR}/pkgconfig) +set(PKGCONFIG_PREFIX "${CMAKE_INSTALL_PREFIX}") +configure_file( + OpenCL-CLHPP.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL-CLHPP.pc + @ONLY) +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL-CLHPP.pc + DESTINATION ${pkg_config_location} + COMPONENT pkgconfig_install) + +if(NOT (CMAKE_VERSION VERSION_LESS "3.5")) + set(PKGCONFIG_PREFIX "${CPACK_PACKAGING_INSTALL_PREFIX}") + configure_file( + OpenCL-CLHPP.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL-CLHPP.pc + @ONLY) + # This install component is only needed in the Debian package + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL-CLHPP.pc + DESTINATION ${pkg_config_location} + COMPONENT pkgconfig_package + EXCLUDE_FROM_ALL) + + # By using component based packaging, component pkgconfig_install + # can be excluded from the package, and component pkgconfig_package + # can be included. + set(CPACK_DEB_COMPONENT_INSTALL ON) + set(CPACK_COMPONENTS_GROUPING "ALL_COMPONENTS_IN_ONE") + + include(CPackComponent) + cpack_add_component(pkgconfig_install) + cpack_add_component(pkgconfig_package) + set(CPACK_COMPONENTS_ALL "Unspecified;pkgconfig_package") +elseif(NOT (CMAKE_INSTALL_PREFIX STREQUAL CPACK_PACKAGING_INSTALL_PREFIX)) + message(FATAL_ERROR "When using CMake version < 3.5, CPACK_PACKAGING_INSTALL_PREFIX should not be set," + " or should be the same as CMAKE_INSTALL_PREFIX") +endif() + # DEB packaging configuration set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_VENDOR}) From 039767d646f858a6dab908b8c85a5404eca7d39d Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Tue, 8 Aug 2023 07:27:25 +0000 Subject: [PATCH 03/12] Remove linux.yml --- .github/workflows/linux.yml | 408 ------------------------------------ 1 file changed, 408 deletions(-) delete mode 100644 .github/workflows/linux.yml diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml deleted file mode 100644 index 5949ab34..00000000 --- a/.github/workflows/linux.yml +++ /dev/null @@ -1,408 +0,0 @@ -name: Linux - -on: [push, pull_request] - -env: - OPENCL_PKGCONFIG_PATHS: ${{ github.workspace }}/install/share/pkgconfig:${{ github.workspace }}/external/OpenCL-Headers/install/share/pkgconfig:${{ github.workspace }}/external/OpenCL-ICD-Loader/install/lib/pkgconfig - -jobs: - cmake-minimum: - if: false - runs-on: ${{ matrix.OS }} - container: streamhpc/opencl-sdk-base:ubuntu-18.04-20220127 - strategy: - matrix: - OS: [ubuntu-20.04] - VER: [7] # gcc-8, clang-8, clang-10 - EXT: [ON, OFF] - GEN: [Unix Makefiles] - CONFIG: [Debug, Release] - STD: [11, 14] - BIN: [64] # Temporarily disable cross-compilation (will need toolchain files) - CMAKE: [3.1.3] - env: - CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake - CPACK_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cpack - CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest - DEB_INSTALLATION_PATH: /usr - # Workaround for https://github.com/actions/runner/issues/2058 - OPENCL_PKGCONFIG_PATHS: /__w/OpenCL-CLHPP/OpenCL-CLHPP/install/share/pkgconfig:/__w/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-Headers/install/share/pkgconfig:/__w/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-ICD-Loader/install/lib/pkgconfig - - - steps: - - name: Checkout OpenCL-CLHPP - uses: actions/checkout@v3 - with: - submodules: recursive - - - name: Checkout OpenCL-Headers - uses: actions/checkout@v3 - with: - # Change to KhronosGroup/OpenCL-Headers when PR for DEB packaging is merged - repository: StreamHPC/OpenCL-Headers - path: external/OpenCL-Headers - # Remove when PR for DEB packaging is merged - ref: 58-create-deb-package - - - name: Checkout OpenCL-ICD-Loader - uses: actions/checkout@v3 - with: - repository: KhronosGroup/OpenCL-ICD-Loader - path: external/OpenCL-ICD-Loader - - - name: Build, install & package OpenCL-Headers - run: mkdir $GITHUB_WORKSPACE/external/OpenCL-Headers/build && - cd $GITHUB_WORKSPACE/external/OpenCL-Headers/build && - $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install - -D BUILD_TESTING=OFF - $GITHUB_WORKSPACE/external/OpenCL-Headers && - $CMAKE_EXE - --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build - --target install - -- - -j`nproc` && - $CPACK_EXE - --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" - -G DEB - -C Release - -B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" - - - name: Build & install OpenCL-ICD-Loader - run: mkdir $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && - cd $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && - $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" - -D BUILD_TESTING=OFF - $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader && - $CMAKE_EXE - --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build - --target install - -- - -j`nproc` - - - name: Configure - shell: bash - # no -Werror during configuration because: - # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] - # warning: unused parameter [-Wunused-parameter] - run: mkdir $GITHUB_WORKSPACE/build && cd $GITHUB_WORKSPACE/build && - $CMAKE_EXE - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D BUILD_EXAMPLES=ON - -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} - -D CMAKE_CXX_STANDARD=${{matrix.STD}} - -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" - -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH - $GITHUB_WORKSPACE - - - name: Build - shell: bash - run: $CMAKE_EXE - --build $GITHUB_WORKSPACE/build - -- - -j`nproc` - - - name: Test - working-directory: ${{runner.workspace}}/OpenCL-CLHPP/build - shell: bash - run: $CTEST_EXE --output-on-failure --parallel `nproc` - - - name: Package DEB - shell: bash - run: $CPACK_EXE - --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" - -G DEB - -C Release - -B "$GITHUB_WORKSPACE/package-deb" - - - name: Install - shell: bash - run: $CMAKE_EXE - --build $GITHUB_WORKSPACE/build - --target install - -- - -j`nproc` - - - name: Consume (Package DEB) - shell: bash - run: dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb && - dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && - mkdir $GITHUB_WORKSPACE/build_package && cd $GITHUB_WORKSPACE/build_package && - $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} - -D CMAKE_CXX_STANDARD=${{matrix.STD}} - -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" - $GITHUB_WORKSPACE/tests/pkgconfig/bare && - $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package -- -j`nproc` - - - name: "Consume (standalone): Configure/Build/Test" - shell: bash - run: mkdir -p $GITHUB_WORKSPACE/build/downstream/bare && - cd $GITHUB_WORKSPACE/build/downstream/bare && - $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} - -D CMAKE_CXX_STANDARD=${{matrix.STD}} - -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" - $GITHUB_WORKSPACE/tests/pkgconfig/bare && - $CMAKE_EXE - --build $GITHUB_WORKSPACE/build/downstream/bare && - cd $GITHUB_WORKSPACE/build/downstream/bare && - $CTEST_EXE --output-on-failure - - - name: "Consume (SDK): Configure/Build/Test" - shell: bash - run: $CMAKE_EXE -E make_directory $DEB_INSTALLATION_PATH/share/cmake/OpenCL && - echo -e "include(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")\ninclude(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake\")" > $DEB_INSTALLATION_PATH/share/cmake/OpenCL/OpenCLConfig.cmake && - mkdir -p $GITHUB_WORKSPACE/build/downstream/sdk && - cd $GITHUB_WORKSPACE/build/downstream/sdk && - $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} - -D CMAKE_CXX_STANDARD=${{matrix.STD}} - -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" - $GITHUB_WORKSPACE/tests/pkgconfig/sdk && - $CMAKE_EXE - --build $GITHUB_WORKSPACE/build/downstream/sdk && - cd $GITHUB_WORKSPACE/build/downstream/sdk && - $CTEST_EXE --output-on-failure - - - name: Test pkg-config - shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" - - - name: Test pkg-config dependency - shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" - - - - cmake-latest: - if: false - runs-on: ${{ matrix.OS }} - strategy: - matrix: - OS : [ubuntu-20.04] - VER: [9, 11] # clang-11, clang-13 - EXT: [ON, OFF] - GEN: [Ninja Multi-Config] - STD: [11, 14] - BIN: [64] # Temporarily disable cross-compilation (will need toolchain files) - CMAKE: [3.21.3] - env: - CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{ matrix.CMAKE }}/cmake-${{ matrix.CMAKE }}-Linux-x86_64.tar.gz - CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake - CPACK_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cpack - CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest - DEB_INSTALLATION_PATH: /usr - - - steps: - - name: Checkout OpenCL-CLHPP - uses: actions/checkout@v3 - with: - submodules: recursive - - - name: Checkout OpenCL-Headers - uses: actions/checkout@v3 - with: - # Change to KhronosGroup/OpenCL-Headers when PR for DEB packaging is merged - repository: StreamHPC/OpenCL-Headers - path: external/OpenCL-Headers - # Remove when PR for DEB packaging is merged - ref: 58-create-deb-package - - - name: Checkout OpenCL-ICD-Loader - uses: actions/checkout@v3 - with: - repository: KhronosGroup/OpenCL-ICD-Loader - path: external/OpenCL-ICD-Loader - - - name: Create Build Environment - run: sudo apt-get update -q; - if [[ "${{matrix.GEN}}" =~ "Ninja" && ! `which ninja` ]]; then sudo apt install -y ninja-build; fi; - sudo apt install gcc-${{matrix.VER}} g++-${{matrix.VER}}; - if [[ "${{matrix.BIN}}" == "32" ]]; - then sudo apt install gcc-${COMPILER_VER}-multilib; - fi; - mkdir -p /opt/Kitware/CMake; - wget -c $CMAKE_URL -O - | tar -xz --directory /opt/Kitware/CMake; - mv /opt/Kitware/CMake/cmake-${{ matrix.CMAKE }}-* /opt/Kitware/CMake/${{ matrix.CMAKE }} - # Install Ninja only if it's the selected generator and it's not available. - - - name: Build, install & package OpenCL-Headers - run: $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install - -D BUILD_TESTING=OFF - -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build - -S $GITHUB_WORKSPACE/external/OpenCL-Headers && - $CMAKE_EXE - --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build - --target install - -- - -j`nproc` && - $CPACK_EXE - --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" - -G DEB - -C Release - -B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" - - - name: Build & install OpenCL-ICD-Loader - run: $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" - -D BUILD_TESTING=OFF - -B $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build - -S $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader && - $CMAKE_EXE - --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build - --target install - --config Release - -- - -j`nproc` - - - name: Configure - shell: bash - # no -Werror during configuration because: - # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] - # warning: unused parameter [-Wunused-parameter] - run: $CMAKE_EXE - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D BUILD_EXAMPLES=ON - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} - -D CMAKE_CXX_STANDARD=${{matrix.STD}} - -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" - -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH - -B $GITHUB_WORKSPACE/build - -S $GITHUB_WORKSPACE - - - name: Build - shell: bash - run: | - $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release -- -j`nproc`; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug -- -j`nproc` - - - name: Test - working-directory: ${{runner.workspace}}/OpenCL-CLHPP/build - shell: bash - run: | - $CTEST_EXE --output-on-failure -C Release --parallel `nproc`; - $CTEST_EXE --output-on-failure -C Debug --parallel `nproc`; - - - name: Package DEB - shell: bash - run: $CPACK_EXE - --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" - -G DEB - -C Release - -B "$GITHUB_WORKSPACE/package-deb" - - - name: Install - shell: bash - run: $CMAKE_EXE - --build $GITHUB_WORKSPACE/build - --target install - --config Release - -- - -j`nproc` - - - name: Consume (Package DEB) - shell: bash - run: sudo dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb && - sudo dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && - $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} - -D CMAKE_CXX_STANDARD=${{matrix.STD}} - -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" - -B $GITHUB_WORKSPACE/build_package - -S $GITHUB_WORKSPACE/tests/pkgconfig/bare && - $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release && - $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug - - - name: "Consume (standalone): Configure/Build/Test" - shell: bash - run: $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} - -D CMAKE_CXX_STANDARD=${{matrix.STD}} - -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" - -B $GITHUB_WORKSPACE/build/downstream/bare - -S $GITHUB_WORKSPACE/tests/pkgconfig/bare && - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/bare --config Release && - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/bare --config Debug && - cd $GITHUB_WORKSPACE/build/downstream/bare && - $CTEST_EXE --output-on-failure -C Release && - $CTEST_EXE --output-on-failure -C Debug - - - name: "Consume (SDK): Configure/Build/Test" - shell: bash - run: $CMAKE_EXE -E make_directory $DEB_INSTALLATION_PATH/share/cmake/OpenCL && - echo -e "include(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")\ninclude(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake\")" > $DEB_INSTALLATION_PATH/share/cmake/OpenCL/OpenCLConfig.cmake && - $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} - -D CMAKE_CXX_STANDARD=${{matrix.STD}} - -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" - -B $GITHUB_WORKSPACE/build/downstream/sdk - -S $GITHUB_WORKSPACE/tests/pkgconfig/sdk && - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/sdk --config Release && - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/sdk --config Debug && - cd $GITHUB_WORKSPACE/build/downstream/sdk && - $CTEST_EXE --output-on-failure -C Release && - $CTEST_EXE --output-on-failure -C Debug - - - name: Test pkg-config - shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" - - - name: Test pkg-config dependency - shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" \ No newline at end of file From 1b4d48f1c37b9e6bd8fdd945620373d02bdaf234 Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Tue, 8 Aug 2023 08:44:56 +0000 Subject: [PATCH 04/12] Update Windows CI --- .github/workflows/presubmit.yml | 1 + .github/workflows/windows.yml | 434 ++++++++++++++++++++++---------- 2 files changed, 305 insertions(+), 130 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index dffac5c7..042f21d3 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -4,6 +4,7 @@ on: [push, pull_request] jobs: linux: + if: false runs-on: ubuntu-latest strategy: matrix: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index bb208587..58ff7e0b 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -3,25 +3,48 @@ name: Windows on: [push, pull_request] jobs: - msvc: - if: false - runs-on: windows-2022 + windows: + runs-on: windows-latest strategy: matrix: - VER: [v141, v142, v143] - EXT: [ON] # OFF: error C2079: 'statbuf' uses undefined struct 'stat' + VER: [v141, v142, v143, clangcl] GEN: [Visual Studio 17 2022, Ninja Multi-Config] - BIN: [x64, x86] + BIN: [x64] STD: [11, 17] - CMAKE: [3.22.0] + exclude: + - VER: clangcl + GEN: Ninja Multi-Config + include: + - VER: v142 + GEN: Visual Studio 17 2022 + BIN: x86 + STD: 99 env: - CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{matrix.CMAKE}}/cmake-${{matrix.CMAKE}}-windows-x86_64.zip - CMAKE_EXE: C:\Tools\Kitware\CMake\${{matrix.CMAKE}}\bin\cmake.exe - CTEST_EXE: C:\Tools\Kitware\CMake\${{matrix.CMAKE}}\bin\ctest.exe NINJA_URL: https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip - NINJA_EXE: C:\Tools\Ninja\ninja.exe + NINJA_ROOT: C:\Tools\Ninja + VS_ROOT: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise' + UseMultiToolTask: true # Better parallel MSBuild execution + EnforceProcessCountAcrossBuilds: 'true' # -=- + MultiProcMaxCount: '3' # -=- steps: + - name: Cache Ninja install + if: matrix.GEN == 'Ninja Multi-Config' + id: ninja-install + uses: actions/cache@v3 + with: + path: | + C:\Tools\Ninja + key: ${{runner.os}}-ninja-${{env.NINJA_URL}} + + - name: Install Ninja + if: matrix.GEN == 'Ninja Multi-Config' && steps.ninja-install.outputs.cache-hit != 'true' + shell: pwsh + run: | + Invoke-WebRequest ${env:NINJA_URL} -OutFile ~\Downloads\ninja-win.zip + Expand-Archive ~\Downloads\ninja-win.zip -DestinationPath ${env:NINJA_ROOT}\ + Remove-Item ~\Downloads\* + - name: Checkout OpenCL-CLHPP uses: actions/checkout@v3 with: @@ -39,176 +62,327 @@ jobs: repository: KhronosGroup/OpenCL-ICD-Loader path: external/OpenCL-ICD-Loader - - name: Create Build Environment - shell: pwsh - run: | - Invoke-WebRequest ${env:CMAKE_URL} -OutFile ~\Downloads\cmake-${{matrix.CMAKE}}-windows-x86_64.zip - Expand-Archive ~\Downloads\cmake-${{matrix.CMAKE}}-windows-x86_64.zip -DestinationPath C:\Tools\Kitware\CMake\ - Rename-Item C:\Tools\Kitware\CMake\* ${{matrix.CMAKE}} - Invoke-WebRequest ${env:NINJA_URL} -OutFile ~\Downloads\ninja-win.zip - Expand-Archive ~\Downloads\ninja-win.zip -DestinationPath C:\Tools\Ninja\ - Remove-Item ~\Downloads\* - & ${env:CMAKE_EXE} --version - & ${env:NINJA_EXE} --version - - name: Build & install OpenCL-Headers (MSBuild) if: matrix.GEN == 'Visual Studio 17 2022' - shell: cmd + shell: pwsh run: | - set C_FLAGS="/w" - if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) - %CMAKE_EXE% -G "${{matrix.GEN}}" -A %BIN% -T ${{matrix.VER}} -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -D BUILD_TESTING=OFF -S %GITHUB_WORKSPACE%\external\OpenCL-Headers -B %GITHUB_WORKSPACE%\external\OpenCL-Headers\build - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/external/OpenCL-Headers/build --target install --config Release -- /verbosity:minimal /maxCpuCount /noLogo + $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + $C_FLAGS='/w' + & cmake ` + -G '${{matrix.GEN}}' ` + -A $BIN ` + -T ${{matrix.VER}} ` + -D BUILD_TESTING=OFF ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` + -B ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build + & cmake ` + --build "${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build" ` + --target install ` + --config Release ` + -- ` + /verbosity:minimal ` + /maxCpuCount ` + /noLogo ` - name: Build & install OpenCL-Headers (Ninja Multi-Config) if: matrix.GEN == 'Ninja Multi-Config' - shell: cmd + shell: pwsh run: | - set C_FLAGS="/w" - if /I "${{matrix.VER}}"=="v140" (set VER=14.0) - if /I "${{matrix.VER}}"=="v141" (set VER=14.1) - if /I "${{matrix.VER}}"=="v142" (set VER=14.2) - if /I "${{matrix.VER}}"=="v143" (set VER=14.3) - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - %CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_MAKE_PROGRAM=%NINJA_EXE% -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -D BUILD_TESTING=OFF -S %GITHUB_WORKSPACE%\external\OpenCL-Headers -B %GITHUB_WORKSPACE%\external\OpenCL-Headers\build - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/external/OpenCL-Headers/build --target install -- -j%NUMBER_OF_PROCESSORS% + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + 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" + $C_FLAGS='/w' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D BUILD_TESTING=OFF ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` + -B ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build + & cmake ` + --build "${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build" ` + --target install ` + --config Release ` + -- ` + -j ${env:NUMBER_OF_PROCESSORS} - name: Build & install OpenCL-ICD-Loader (MSBuild) if: matrix.GEN == 'Visual Studio 17 2022' - shell: cmd + shell: pwsh run: | - set C_FLAGS="/w" - if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) - %CMAKE_EXE% -G "${{matrix.GEN}}" -A %BIN% -T ${{matrix.VER}} -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\external\OpenCL-ICD-Loader\install -D CMAKE_PREFIX_PATH=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -D BUILD_TESTING=OFF -S %GITHUB_WORKSPACE%\external\OpenCL-ICD-Loader -B %GITHUB_WORKSPACE%\external\OpenCL-ICD-Loader\build - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/external/OpenCL-ICD-Loader/build --target install --config Release -- /verbosity:minimal /maxCpuCount /noLogo + $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + $C_FLAGS='/w' + & cmake ` + -G '${{matrix.GEN}}' ` + -A $BIN ` + -T ${{matrix.VER}} ` + -D BUILD_TESTING=OFF ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\install ` + -D CMAKE_PREFIX_PATH=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -S ${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader ` + -B ${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\build + & cmake ` + --build "${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\build" ` + --target install ` + --config Release ` + -- ` + /verbosity:minimal ` + /maxCpuCount ` + /noLogo ` - name: Build & install OpenCL-ICD-Loader (Ninja Multi-Config) if: matrix.GEN == 'Ninja Multi-Config' - shell: cmd + shell: pwsh run: | - set C_FLAGS="/w" - if /I "${{matrix.VER}}"=="v140" (set VER=14.0) - if /I "${{matrix.VER}}"=="v141" (set VER=14.1) - if /I "${{matrix.VER}}"=="v142" (set VER=14.2) - if /I "${{matrix.VER}}"=="v143" (set VER=14.3) - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - %CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_MAKE_PROGRAM=%NINJA_EXE% -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\external\OpenCL-ICD-Loader\install -D CMAKE_PREFIX_PATH=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -D BUILD_TESTING=OFF -S %GITHUB_WORKSPACE%\external\OpenCL-ICD-Loader -B %GITHUB_WORKSPACE%\external\OpenCL-ICD-Loader\build - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/external/OpenCL-ICD-Loader/build --target install --config Release -- -j%NUMBER_OF_PROCESSORS% + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + 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" + $C_FLAGS='/w' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D BUILD_TESTING=OFF ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -D CMAKE_PREFIX_PATH=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -S ${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader ` + -B ${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\build + & cmake ` + --build "${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\build" ` + --target install ` + --config Release ` + -- ` + -j ${env:NUMBER_OF_PROCESSORS} - name: Configure (MSBuild) if: matrix.GEN == 'Visual Studio 17 2022' - shell: cmd + shell: pwsh # no /WX during configuration because: # warning C4459: declaration of 'platform' hides global declaration # warning C4100: 'input_headers': unreferenced formal parameter run: | - set C_FLAGS="/W4" - if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) - %CMAKE_EXE% -G "${{matrix.GEN}}" -A %BIN% -T ${{matrix.VER}} -D BUILD_TESTING=ON -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH="%GITHUB_WORKSPACE%\external\OpenCL-Headers\install;%GITHUB_WORKSPACE%\external\OpenCL-ICD-Loader\install" -S %GITHUB_WORKSPACE% -B %GITHUB_WORKSPACE%\build + $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + $C_FLAGS='/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -A $BIN ` + -T ${{matrix.VER}} ` + -D BUILD_TESTING=ON ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\install" ` + -S ${env:GITHUB_WORKSPACE} ` + -B ${env:GITHUB_WORKSPACE}\build - name: Configure (Ninja Multi-Config) if: matrix.GEN == 'Ninja Multi-Config' - shell: cmd + shell: pwsh # no /WX during configuration because: # warning C4459: declaration of 'platform' hides global declaration # warning C4100: 'input_headers': unreferenced formal parameter run: | - set C_FLAGS="/W4" - if /I "${{matrix.VER}}"=="v140" (set VER=14.0) - if /I "${{matrix.VER}}"=="v141" (set VER=14.1) - if /I "${{matrix.VER}}"=="v142" (set VER=14.2) - if /I "${{matrix.VER}}"=="v143" (set VER=14.3) - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - %CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_MAKE_PROGRAM=%NINJA_EXE% -D BUILD_TESTING=ON -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH="%GITHUB_WORKSPACE%\external\OpenCL-Headers\install;%GITHUB_WORKSPACE%\external\OpenCL-ICD-Loader\install" -S %GITHUB_WORKSPACE% -B %GITHUB_WORKSPACE%\build + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + 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" + $C_FLAGS='/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D BUILD_TESTING=ON ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\install" ` + -S ${env:GITHUB_WORKSPACE} ` + -B ${env:GITHUB_WORKSPACE}\build - name: Build (MSBuild) if: matrix.GEN == 'Visual Studio 17 2022' - shell: cmd + shell: pwsh run: | - %CMAKE_EXE% --build %GITHUB_WORKSPACE%\build --config Release -- /verbosity:minimal /maxCpuCount /noLogo - %CMAKE_EXE% --build %GITHUB_WORKSPACE%\build --config Debug -- /verbosity:minimal /maxCpuCount /noLogo + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\build" ` + --config ${Config} ` + -- ` + /verbosity:minimal ` + /maxCpuCount ` + /noLogo + } - name: Build (Ninja) if: matrix.GEN == 'Ninja Multi-Config' - shell: cmd + shell: pwsh run: | - if /I "${{matrix.VER}}"=="v140" set VER=14.0 - if /I "${{matrix.VER}}"=="v141" set VER=14.1 - if /I "${{matrix.VER}}"=="v142" set VER=14.2 - if /I "${{matrix.VER}}"=="v143" set VER=14.3 - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - %CMAKE_EXE% --build %GITHUB_WORKSPACE%\build --config Release - %CMAKE_EXE% --build %GITHUB_WORKSPACE%\build --config Debug + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + 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} ` + -- ` + -j ${env:NUMBER_OF_PROCESSORS} + } - name: Test - continue-on-error: true - working-directory: ${{runner.workspace}}/OpenCL-CLHPP/build - shell: cmd + shell: pwsh run: | - %CTEST_EXE% -C Release --output-on-failure --parallel %NUMBER_OF_PROCESSORS% - %CTEST_EXE% -C Debug --output-on-failure --parallel %NUMBER_OF_PROCESSORS% + foreach ($Config in 'Release','Debug') { ` + & ctest ` + --test-dir "${env:GITHUB_WORKSPACE}\build" ` + --build-config ${Config} ` + --output-on-failure ` + --parallel ${env:NUMBER_OF_PROCESSORS} + } - name: Install - shell: cmd + shell: pwsh run: | - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/build --config Release --target install + & cmake ` + --install "${env:GITHUB_WORKSPACE}\build" ` + --prefix "${env:GITHUB_WORKSPACE}\install" ` + --config Release - name: "Consume (MSBuild standalone): Configure/Build/Test" - shell: cmd + shell: pwsh run: | - set C_FLAGS="/W4" - if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - %CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH="%GITHUB_WORKSPACE%\external\OpenCL-Headers\install;%GITHUB_WORKSPACE%\install" -D DRIVER_STUB_PATH=%GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll -B %GITHUB_WORKSPACE%/build/downstream/bare -S %GITHUB_WORKSPACE%/tests/pkgconfig/bare - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Release - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Debug - cd %GITHUB_WORKSPACE%/tests/pkgconfig/bare - %CTEST_EXE% --output-on-failure -C Release - %CTEST_EXE% --output-on-failure -C Debug + $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + $C_FLAGS = '/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -A ${BIN} ` + -T ${{matrix.VER}} ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` + --config ${Config} ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare ` + & ctest ` + --output-on-failure -C ${Config} + } - - name: "Consume (MSBuild SDK): Configure/Build/Test" - shell: cmd + - name: "Consume (Ninja-Multi-Config standalone): Configure/Build/Test" + shell: pwsh run: | - set C_FLAGS="/W4" - if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) - %CMAKE_EXE% -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL - echo -e 'include("/home/runner/work/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake")\ninclude("/home/runner/work/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake")' > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake - %CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH="%GITHUB_WORKSPACE%\external\OpenCL-Headers\install;%GITHUB_WORKSPACE%\install" -D DRIVER_STUB_PATH=%GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll -B %GITHUB_WORKSPACE%/build/downstream/bare -S %GITHUB_WORKSPACE%/tests/pkgconfig/bare - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Release - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Debug - cd %GITHUB_WORKSPACE%/tests/pkgconfig/bare - %CTEST_EXE% --output-on-failure -C Release - %CTEST_EXE% --output-on-failure -C Debug + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + 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" + $C_FLAGS = '/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` + --config ${Config} ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare ` + & ctest ` + --output-on-failure -C ${Config} + } - - name: "Consume (Ninja-Multi-Config standalone): Configure/Build/Test" - shell: cmd + - name: Consume (Emulate SDK presence) + shell: pwsh run: | - set C_FLAGS="/W4" - if /I "${{matrix.VER}}"=="v140" (set VER=14.0) - if /I "${{matrix.VER}}"=="v141" (set VER=14.1) - if /I "${{matrix.VER}}"=="v142" (set VER=14.2) - if /I "${{matrix.VER}}"=="v143" (set VER=14.3) - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - %CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_MAKE_PROGRAM=%NINJA_EXE% -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH="%GITHUB_WORKSPACE%\external\OpenCL-Headers\install;%GITHUB_WORKSPACE%\install" -D DRIVER_STUB_PATH=%GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll -B %GITHUB_WORKSPACE%/build/downstream/bare -S %GITHUB_WORKSPACE%/tests/pkgconfig/bare - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Release - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Debug - cd %GITHUB_WORKSPACE%/tests/pkgconfig/bare - %CTEST_EXE% --output-on-failure -C Release - %CTEST_EXE% --output-on-failure -C Debug + New-Item -Type Directory -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL + New-Item -Type File -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL\OpenCLConfig.cmake -Value 'include("${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install\share\cmake\OpenCLHeaders\OpenCLHeadersTargets.cmake")\ninclude("${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\install\share\cmake\OpenCLICDLoader\OpenCLICDLoaderTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake")' + + - name: "Consume (MSBuild SDK): Configure/Build/Test" + shell: pwsh + run: | + $C_FLAGS = '/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" ` + --config ${Config} ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk ` + & ctest ` + --output-on-failure -C ${Config} + } - name: "Consume (Ninja-Multi-Config SDK): Configure/Build/Test" - shell: cmd + shell: pwsh run: | + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + 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}" set C_FLAGS="/W4" - if /I "${{matrix.VER}}"=="v140" (set VER=14.0) - if /I "${{matrix.VER}}"=="v141" (set VER=14.1) - if /I "${{matrix.VER}}"=="v142" (set VER=14.2) - if /I "${{matrix.VER}}"=="v143" (set VER=14.3) - %CMAKE_EXE% -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL - echo -e 'include("/home/runner/work/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake")\ninclude("/home/runner/work/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake")' > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake - %CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_MAKE_PROGRAM=%NINJA_EXE% -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH="%GITHUB_WORKSPACE%\external\OpenCL-Headers\install;%GITHUB_WORKSPACE%\install" -D DRIVER_STUB_PATH=%GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll -B %GITHUB_WORKSPACE%/build/downstream/bare -S %GITHUB_WORKSPACE%/tests/pkgconfig/bare - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Release - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Debug - cd %GITHUB_WORKSPACE%/tests/pkgconfig/bare - %CTEST_EXE% --output-on-failure -C Release - %CTEST_EXE% --output-on-failure -C Debug + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" ` + --config ${Config} ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk ` + & ctest ` + --output-on-failure -C ${Config} + } From aaca7fdcaa76f0e77bbcb224121e440d8dcdab2b Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Tue, 8 Aug 2023 12:05:40 +0000 Subject: [PATCH 05/12] Fix clangcl tests compilation issues --- .github/workflows/windows.yml | 3 ++- tests/cmock.yml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 58ff7e0b..38f0f4d9 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -178,6 +178,7 @@ jobs: # no /WX during configuration because: # warning C4459: declaration of 'platform' hides global declaration # warning C4100: 'input_headers': unreferenced formal parameter + # Not configuring tests when using clangcl because of compilation errors run: | $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} $C_FLAGS='/W4' @@ -185,7 +186,7 @@ jobs: -G '${{matrix.GEN}}' ` -A $BIN ` -T ${{matrix.VER}} ` - -D BUILD_TESTING=ON ` + -D BUILD_TESTING="if [[ "${{matrix.VER}}" == "clangcl" ]]; then echo "OFF"; else echo "ON"; fi" ` -D CMAKE_C_FLAGS=$C_FLAGS ` -D CMAKE_C_STANDARD=${{matrix.STD}} ` -D CMAKE_C_EXTENSIONS=OFF ` diff --git a/tests/cmock.yml b/tests/cmock.yml index 0cd67b53..0a837a51 100644 --- a/tests/cmock.yml +++ b/tests/cmock.yml @@ -1,5 +1,6 @@ :cmock: :includes: + - stdlib.h - CL/cl_platform.h :treat_externs: :include :enforce_strict_ordering: :true From 25c7e1c209e4fcb7653efc6e42f3682fe64fbdba Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Tue, 8 Aug 2023 14:14:41 +0000 Subject: [PATCH 06/12] Migrate contents of windows.yml to presubmit.yml and delete it --- .github/workflows/presubmit.yml | 387 ++++++++++++++++++++++++++++++- .github/workflows/windows.yml | 389 -------------------------------- 2 files changed, 386 insertions(+), 390 deletions(-) delete mode 100644 .github/workflows/windows.yml diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 042f21d3..a8ddb95b 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -4,7 +4,6 @@ on: [push, pull_request] jobs: linux: - if: false runs-on: ubuntu-latest strategy: matrix: @@ -264,3 +263,389 @@ jobs: shell: bash run: PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/share/pkgconfig pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" + + windows: + runs-on: windows-latest + strategy: + matrix: + VER: [v141, v142, v143, clangcl] + GEN: [Visual Studio 17 2022, Ninja Multi-Config] + BIN: [x64] + STD: [11, 17] + exclude: + - VER: clangcl + GEN: Ninja Multi-Config + include: + - VER: v142 + GEN: Visual Studio 17 2022 + BIN: x86 + STD: 99 + env: + NINJA_URL: https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip + NINJA_ROOT: C:\Tools\Ninja + VS_ROOT: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise' + UseMultiToolTask: true # Better parallel MSBuild execution + EnforceProcessCountAcrossBuilds: 'true' # -=- + MultiProcMaxCount: '3' # -=- + + steps: + - name: Cache Ninja install + if: matrix.GEN == 'Ninja Multi-Config' + id: ninja-install + uses: actions/cache@v3 + with: + path: | + C:\Tools\Ninja + key: ${{runner.os}}-ninja-${{env.NINJA_URL}} + + - name: Install Ninja + if: matrix.GEN == 'Ninja Multi-Config' && steps.ninja-install.outputs.cache-hit != 'true' + shell: pwsh + run: | + Invoke-WebRequest ${env:NINJA_URL} -OutFile ~\Downloads\ninja-win.zip + Expand-Archive ~\Downloads\ninja-win.zip -DestinationPath ${env:NINJA_ROOT}\ + Remove-Item ~\Downloads\* + + - name: Checkout OpenCL-CLHPP + uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Checkout OpenCL-Headers + uses: actions/checkout@v3 + with: + repository: KhronosGroup/OpenCL-Headers + path: external/OpenCL-Headers + + - name: Checkout OpenCL-ICD-Loader + uses: actions/checkout@v3 + with: + repository: KhronosGroup/OpenCL-ICD-Loader + path: external/OpenCL-ICD-Loader + + - name: Build & install OpenCL-Headers (MSBuild) + if: matrix.GEN == 'Visual Studio 17 2022' + shell: pwsh + run: | + $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + $C_FLAGS='/w' + & cmake ` + -G '${{matrix.GEN}}' ` + -A $BIN ` + -T ${{matrix.VER}} ` + -D BUILD_TESTING=OFF ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` + -B ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build + & cmake ` + --build "${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build" ` + --target install ` + --config Release ` + -- ` + /verbosity:minimal ` + /maxCpuCount ` + /noLogo ` + + - name: Build & install OpenCL-Headers (Ninja Multi-Config) + if: matrix.GEN == 'Ninja Multi-Config' + shell: pwsh + run: | + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + 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" + $C_FLAGS='/w' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D BUILD_TESTING=OFF ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` + -B ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build + & cmake ` + --build "${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build" ` + --target install ` + --config Release ` + -- ` + -j ${env:NUMBER_OF_PROCESSORS} + + - name: Build & install OpenCL-ICD-Loader (MSBuild) + if: matrix.GEN == 'Visual Studio 17 2022' + shell: pwsh + run: | + $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + $C_FLAGS='/w' + & cmake ` + -G '${{matrix.GEN}}' ` + -A $BIN ` + -T ${{matrix.VER}} ` + -D BUILD_TESTING=OFF ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\install ` + -D CMAKE_PREFIX_PATH=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -S ${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader ` + -B ${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\build + & cmake ` + --build "${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\build" ` + --target install ` + --config Release ` + -- ` + /verbosity:minimal ` + /maxCpuCount ` + /noLogo ` + + - name: Build & install OpenCL-ICD-Loader (Ninja Multi-Config) + if: matrix.GEN == 'Ninja Multi-Config' + shell: pwsh + run: | + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + 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" + $C_FLAGS='/w' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D BUILD_TESTING=OFF ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -D CMAKE_PREFIX_PATH=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -S ${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader ` + -B ${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\build + & cmake ` + --build "${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\build" ` + --target install ` + --config Release ` + -- ` + -j ${env:NUMBER_OF_PROCESSORS} + + - name: Configure (MSBuild) + if: matrix.GEN == 'Visual Studio 17 2022' + shell: pwsh + # no /WX during configuration because: + # warning C4459: declaration of 'platform' hides global declaration + # warning C4100: 'input_headers': unreferenced formal parameter + # not building the tests when using clangcl due to compilation errors + run: | + $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + $C_FLAGS='/W4' + $BUILD_TESTS = if('clangcl' -eq 'clangcl') {'OFF'} else {'ON'} + & cmake ` + -G '${{matrix.GEN}}' ` + -A $BIN ` + -T ${{matrix.VER}} ` + -D BUILD_TESTING=$BUILD_TESTS ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\install" ` + -S ${env:GITHUB_WORKSPACE} ` + -B ${env:GITHUB_WORKSPACE}\build + + - name: Configure (Ninja Multi-Config) + if: matrix.GEN == 'Ninja Multi-Config' + shell: pwsh + # no /WX during configuration because: + # warning C4459: declaration of 'platform' hides global declaration + # warning C4100: 'input_headers': unreferenced formal parameter + run: | + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + 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" + $C_FLAGS='/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D BUILD_TESTING=ON ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\install" ` + -S ${env:GITHUB_WORKSPACE} ` + -B ${env:GITHUB_WORKSPACE}\build + + - name: Build (MSBuild) + if: matrix.GEN == 'Visual Studio 17 2022' + shell: pwsh + run: | + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\build" ` + --config ${Config} ` + -- ` + /verbosity:minimal ` + /maxCpuCount ` + /noLogo + } + + - name: Build (Ninja) + if: matrix.GEN == 'Ninja Multi-Config' + shell: pwsh + run: | + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + 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} ` + -- ` + -j ${env:NUMBER_OF_PROCESSORS} + } + + - name: Test + shell: pwsh + run: | + foreach ($Config in 'Release','Debug') { ` + & ctest ` + --test-dir "${env:GITHUB_WORKSPACE}\build" ` + --build-config ${Config} ` + --output-on-failure ` + --parallel ${env:NUMBER_OF_PROCESSORS} + } + + - name: Install + shell: pwsh + run: | + & cmake ` + --install "${env:GITHUB_WORKSPACE}\build" ` + --prefix "${env:GITHUB_WORKSPACE}\install" ` + --config Release + + - name: "Consume (MSBuild standalone): Configure/Build/Test" + shell: pwsh + run: | + $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + $C_FLAGS = '/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -A ${BIN} ` + -T ${{matrix.VER}} ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` + --config ${Config} ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare ` + & ctest ` + --output-on-failure -C ${Config} + } + + - name: "Consume (Ninja-Multi-Config standalone): Configure/Build/Test" + shell: pwsh + run: | + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + 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" + $C_FLAGS = '/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` + --config ${Config} ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare ` + & ctest ` + --output-on-failure -C ${Config} + } + + - name: Consume (Emulate SDK presence) + shell: pwsh + run: | + New-Item -Type Directory -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL + New-Item -Type File -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL\OpenCLConfig.cmake -Value 'include("${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install\share\cmake\OpenCLHeaders\OpenCLHeadersTargets.cmake")\ninclude("${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\install\share\cmake\OpenCLICDLoader\OpenCLICDLoaderTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake")' + + - name: "Consume (MSBuild SDK): Configure/Build/Test" + shell: pwsh + run: | + $C_FLAGS = '/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" ` + --config ${Config} ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk ` + & ctest ` + --output-on-failure -C ${Config} + } + + - name: "Consume (Ninja-Multi-Config SDK): Configure/Build/Test" + shell: pwsh + run: | + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + 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}" + set C_FLAGS="/W4" + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" ` + --config ${Config} ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk ` + & ctest ` + --output-on-failure -C ${Config} + } diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml deleted file mode 100644 index 38f0f4d9..00000000 --- a/.github/workflows/windows.yml +++ /dev/null @@ -1,389 +0,0 @@ -name: Windows - -on: [push, pull_request] - -jobs: - windows: - runs-on: windows-latest - strategy: - matrix: - VER: [v141, v142, v143, clangcl] - GEN: [Visual Studio 17 2022, Ninja Multi-Config] - BIN: [x64] - STD: [11, 17] - exclude: - - VER: clangcl - GEN: Ninja Multi-Config - include: - - VER: v142 - GEN: Visual Studio 17 2022 - BIN: x86 - STD: 99 - env: - NINJA_URL: https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip - NINJA_ROOT: C:\Tools\Ninja - VS_ROOT: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise' - UseMultiToolTask: true # Better parallel MSBuild execution - EnforceProcessCountAcrossBuilds: 'true' # -=- - MultiProcMaxCount: '3' # -=- - - steps: - - name: Cache Ninja install - if: matrix.GEN == 'Ninja Multi-Config' - id: ninja-install - uses: actions/cache@v3 - with: - path: | - C:\Tools\Ninja - key: ${{runner.os}}-ninja-${{env.NINJA_URL}} - - - name: Install Ninja - if: matrix.GEN == 'Ninja Multi-Config' && steps.ninja-install.outputs.cache-hit != 'true' - shell: pwsh - run: | - Invoke-WebRequest ${env:NINJA_URL} -OutFile ~\Downloads\ninja-win.zip - Expand-Archive ~\Downloads\ninja-win.zip -DestinationPath ${env:NINJA_ROOT}\ - Remove-Item ~\Downloads\* - - - name: Checkout OpenCL-CLHPP - uses: actions/checkout@v3 - with: - submodules: recursive - - - name: Checkout OpenCL-Headers - uses: actions/checkout@v3 - with: - repository: KhronosGroup/OpenCL-Headers - path: external/OpenCL-Headers - - - name: Checkout OpenCL-ICD-Loader - uses: actions/checkout@v3 - with: - repository: KhronosGroup/OpenCL-ICD-Loader - path: external/OpenCL-ICD-Loader - - - name: Build & install OpenCL-Headers (MSBuild) - if: matrix.GEN == 'Visual Studio 17 2022' - shell: pwsh - run: | - $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} - $C_FLAGS='/w' - & cmake ` - -G '${{matrix.GEN}}' ` - -A $BIN ` - -T ${{matrix.VER}} ` - -D BUILD_TESTING=OFF ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` - -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` - -B ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build - & cmake ` - --build "${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build" ` - --target install ` - --config Release ` - -- ` - /verbosity:minimal ` - /maxCpuCount ` - /noLogo ` - - - name: Build & install OpenCL-Headers (Ninja Multi-Config) - if: matrix.GEN == 'Ninja Multi-Config' - shell: pwsh - run: | - $VER = switch ('${{matrix.VER}}') { ` - 'v141' {'14.1'} ` - 'v142' {'14.2'} ` - 'v143' {'14.3'} } - 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" - $C_FLAGS='/w' - & cmake ` - -G '${{matrix.GEN}}' ` - -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D BUILD_TESTING=OFF ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` - -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` - -B ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build - & cmake ` - --build "${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build" ` - --target install ` - --config Release ` - -- ` - -j ${env:NUMBER_OF_PROCESSORS} - - - name: Build & install OpenCL-ICD-Loader (MSBuild) - if: matrix.GEN == 'Visual Studio 17 2022' - shell: pwsh - run: | - $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} - $C_FLAGS='/w' - & cmake ` - -G '${{matrix.GEN}}' ` - -A $BIN ` - -T ${{matrix.VER}} ` - -D BUILD_TESTING=OFF ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\install ` - -D CMAKE_PREFIX_PATH=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` - -S ${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader ` - -B ${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\build - & cmake ` - --build "${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\build" ` - --target install ` - --config Release ` - -- ` - /verbosity:minimal ` - /maxCpuCount ` - /noLogo ` - - - name: Build & install OpenCL-ICD-Loader (Ninja Multi-Config) - if: matrix.GEN == 'Ninja Multi-Config' - shell: pwsh - run: | - $VER = switch ('${{matrix.VER}}') { ` - 'v141' {'14.1'} ` - 'v142' {'14.2'} ` - 'v143' {'14.3'} } - 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" - $C_FLAGS='/w' - & cmake ` - -G '${{matrix.GEN}}' ` - -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D BUILD_TESTING=OFF ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` - -D CMAKE_PREFIX_PATH=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` - -S ${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader ` - -B ${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\build - & cmake ` - --build "${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\build" ` - --target install ` - --config Release ` - -- ` - -j ${env:NUMBER_OF_PROCESSORS} - - - name: Configure (MSBuild) - if: matrix.GEN == 'Visual Studio 17 2022' - shell: pwsh - # no /WX during configuration because: - # warning C4459: declaration of 'platform' hides global declaration - # warning C4100: 'input_headers': unreferenced formal parameter - # Not configuring tests when using clangcl because of compilation errors - run: | - $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} - $C_FLAGS='/W4' - & cmake ` - -G '${{matrix.GEN}}' ` - -A $BIN ` - -T ${{matrix.VER}} ` - -D BUILD_TESTING="if [[ "${{matrix.VER}}" == "clangcl" ]]; then echo "OFF"; else echo "ON"; fi" ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` - -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\install" ` - -S ${env:GITHUB_WORKSPACE} ` - -B ${env:GITHUB_WORKSPACE}\build - - - name: Configure (Ninja Multi-Config) - if: matrix.GEN == 'Ninja Multi-Config' - shell: pwsh - # no /WX during configuration because: - # warning C4459: declaration of 'platform' hides global declaration - # warning C4100: 'input_headers': unreferenced formal parameter - run: | - $VER = switch ('${{matrix.VER}}') { ` - 'v141' {'14.1'} ` - 'v142' {'14.2'} ` - 'v143' {'14.3'} } - 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" - $C_FLAGS='/W4' - & cmake ` - -G '${{matrix.GEN}}' ` - -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D BUILD_TESTING=ON ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` - -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` - -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\install" ` - -S ${env:GITHUB_WORKSPACE} ` - -B ${env:GITHUB_WORKSPACE}\build - - - name: Build (MSBuild) - if: matrix.GEN == 'Visual Studio 17 2022' - shell: pwsh - run: | - foreach ($Config in 'Release','Debug') { ` - & cmake ` - --build "${env:GITHUB_WORKSPACE}\build" ` - --config ${Config} ` - -- ` - /verbosity:minimal ` - /maxCpuCount ` - /noLogo - } - - - name: Build (Ninja) - if: matrix.GEN == 'Ninja Multi-Config' - shell: pwsh - run: | - $VER = switch ('${{matrix.VER}}') { ` - 'v141' {'14.1'} ` - 'v142' {'14.2'} ` - 'v143' {'14.3'} } - 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} ` - -- ` - -j ${env:NUMBER_OF_PROCESSORS} - } - - - name: Test - shell: pwsh - run: | - foreach ($Config in 'Release','Debug') { ` - & ctest ` - --test-dir "${env:GITHUB_WORKSPACE}\build" ` - --build-config ${Config} ` - --output-on-failure ` - --parallel ${env:NUMBER_OF_PROCESSORS} - } - - - name: Install - shell: pwsh - run: | - & cmake ` - --install "${env:GITHUB_WORKSPACE}\build" ` - --prefix "${env:GITHUB_WORKSPACE}\install" ` - --config Release - - - name: "Consume (MSBuild standalone): Configure/Build/Test" - shell: pwsh - run: | - $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} - $C_FLAGS = '/W4' - & cmake ` - -G '${{matrix.GEN}}' ` - -A ${BIN} ` - -T ${{matrix.VER}} ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` - -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` - -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` - -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` - -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" - foreach ($Config in 'Release','Debug') { ` - & cmake ` - --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` - --config ${Config} ` - & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare ` - & ctest ` - --output-on-failure -C ${Config} - } - - - name: "Consume (Ninja-Multi-Config standalone): Configure/Build/Test" - shell: pwsh - run: | - $VER = switch ('${{matrix.VER}}') { ` - 'v141' {'14.1'} ` - 'v142' {'14.2'} ` - 'v143' {'14.3'} } - 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" - $C_FLAGS = '/W4' - & cmake ` - -G '${{matrix.GEN}}' ` - -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` - -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` - -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` - -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` - -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" - foreach ($Config in 'Release','Debug') { ` - & cmake ` - --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` - --config ${Config} ` - & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare ` - & ctest ` - --output-on-failure -C ${Config} - } - - - name: Consume (Emulate SDK presence) - shell: pwsh - run: | - New-Item -Type Directory -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL - New-Item -Type File -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL\OpenCLConfig.cmake -Value 'include("${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install\share\cmake\OpenCLHeaders\OpenCLHeadersTargets.cmake")\ninclude("${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\install\share\cmake\OpenCLICDLoader\OpenCLICDLoaderTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake")' - - - name: "Consume (MSBuild SDK): Configure/Build/Test" - shell: pwsh - run: | - $C_FLAGS = '/W4' - & cmake ` - -G '${{matrix.GEN}}' ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` - -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` - -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` - -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` - -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" - foreach ($Config in 'Release','Debug') { ` - & cmake ` - --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" ` - --config ${Config} ` - & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk ` - & ctest ` - --output-on-failure -C ${Config} - } - - - name: "Consume (Ninja-Multi-Config SDK): Configure/Build/Test" - shell: pwsh - run: | - $VER = switch ('${{matrix.VER}}') { ` - 'v141' {'14.1'} ` - 'v142' {'14.2'} ` - 'v143' {'14.3'} } - 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}" - set C_FLAGS="/W4" - & cmake ` - -G '${{matrix.GEN}}' ` - -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` - -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` - -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` - -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` - -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" - foreach ($Config in 'Release','Debug') { ` - & cmake ` - --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" ` - --config ${Config} ` - & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk ` - & ctest ` - --output-on-failure -C ${Config} - } From 30d98c8a921aca0d28bc595a615e41d6fb73470a Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Tue, 8 Aug 2023 14:41:29 +0000 Subject: [PATCH 07/12] Update MacOS CI --- .github/workflows/macos.yml | 136 +++++++++++++------------------- .github/workflows/presubmit.yml | 2 + 2 files changed, 58 insertions(+), 80 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index f6479cef..28ce085f 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -2,20 +2,35 @@ name: MacOS on: [push, pull_request] -env: - OPENCL_PKGCONFIG_PATHS: ${{ github.workspace }}/install/share/pkgconfig:${{ github.workspace }}/external/OpenCL-Headers/install/share/pkgconfig:${{ github.workspace }}/external/OpenCL-ICD-Loader/install/lib/pkgconfig - jobs: - macos-gcc: - if: false - #runs-on: macos-latest - runs-on: macos-11 # temporary, macos-latest only supports gcc-12 + macos: + runs-on: macos-latest strategy: matrix: - VER: [9, 11] - EXT: [ON, OFF] - GEN: [Xcode, Ninja Multi-Config] + COMPILER: + - C_NAME: /usr/bin/gcc + CXX_NAME: /usr/bin/g++ + - C_NAME: /usr/local/bin/gcc-11 + CXX_NAME: /usr/local/bin/g++-11 + - C_NAME: /usr/local/bin/gcc-13 + CXX_NAME: /usr/local/bin/gcc-13 + GEN: + - Xcode + - Ninja Multi-Config STD: [11, 17] + # exclude: + # - COMPILER: + # C_NAME: /usr/bin/gcc + # CXX_NAME: /usr/bin/g++ + # GEN: Ninja Multi-Config + # - COMPILER: + # C_NAME: /usr/local/bin/gcc-11 + # CXX_NAME: /usr/local/bin/g++-11 + # GEN: Xcode + # - COMPILER: + # C_NAME: /usr/local/bin/gcc-13 + # CXX_NAME: /usr/local/bin/g++-13 + # GEN: Xcode steps: - name: Checkout OpenCL-CLHPP @@ -35,46 +50,39 @@ jobs: repository: KhronosGroup/OpenCL-ICD-Loader path: external/OpenCL-ICD-Loader - - name: Install gcc if required - run: | - if [[ ! `which /usr/local/bin/gcc-${{matrix.VER}}` ]]; then brew install gcc@${{matrix.VER}}; fi; - - name: Create Build Environment run: | - cmake -E make_directory $GITHUB_WORKSPACE/build; - cmake -E make_directory $GITHUB_WORKSPACE/install; - if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" && ! `which ninja` ]]; then brew install ninja; fi; + cmake -E make_directory $GITHUB_WORKSPACE/build && + cmake -E make_directory $GITHUB_WORKSPACE/install && + if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" && ! `which ninja` ]]; then brew install ninja; fi && # Install Ninja only if it's the selected generator and it's not available. + cmake --version - name: Build & install OpenCL-Headers run: cmake -G "${{matrix.GEN}}" + -D BUILD_TESTING=OFF -D CMAKE_C_FLAGS="-w" - -D CMAKE_C_COMPILER=/usr/local/bin/gcc-${{matrix.VER}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} + -D CMAKE_C_COMPILER=${{matrix.COMPILER.C_NAME}} + -D CMAKE_C_EXTENSIONS=OFF -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install - -D BUILD_TESTING=OFF -S $GITHUB_WORKSPACE/external/OpenCL-Headers -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build && cmake --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build --target install --config Release - --parallel `sysctl -n hw.logicalcpu` && - ls -al $GITHUB_WORKSPACE/external/OpenCL-Headers/install && - ls -al $GITHUB_WORKSPACE/external/OpenCL-Headers/install/include && - ls -al $GITHUB_WORKSPACE/external/OpenCL-Headers/install/include/CL && - ls -al $GITHUB_WORKSPACE/external/OpenCL-Headers/install/include/OpenCL + --parallel `sysctl -n hw.logicalcpu` - name: Build & install OpenCL-ICD-Loader run: cmake -G "${{matrix.GEN}}" + -D BUILD_TESTING=OFF -D CMAKE_C_FLAGS="-w -m64" - -D CMAKE_C_COMPILER=/usr/local/bin/gcc-${{matrix.VER}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} + -D CMAKE_C_COMPILER=${{matrix.COMPILER.C_NAME}} + -D CMAKE_C_EXTENSIONS=OFF -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install - -D BUILD_TESTING=OFF -S $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader -B $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && cmake @@ -83,7 +91,7 @@ jobs: --config Release --parallel `sysctl -n hw.logicalcpu` - - name: Configure CMake + - name: Configure # no -Werror during configuration because: # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] # warning: unused parameter [-Wunused-parameter] @@ -92,23 +100,15 @@ jobs: -G "${{matrix.GEN}}" -D BUILD_TESTING=ON -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Wno-format -m64" - -D CMAKE_CXX_COMPILER=/usr/local/bin/g++-${{matrix.VER}} + -D CMAKE_CXX_COMPILER=${{matrix.COMPILER.CXX_NAME}} -D CMAKE_CXX_STANDARD=${{matrix.STD}} - -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} + -D CMAKE_CXX_EXTENSIONS=OFF -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" -S $GITHUB_WORKSPACE -B $GITHUB_WORKSPACE/build - - name: Build (Xcode) - if: matrix.GEN == 'Xcode' - shell: bash - run: | - cmake --build $GITHUB_WORKSPACE/build --config Release --parallel `sysctl -n hw.logicalcpu` - cmake --build $GITHUB_WORKSPACE/build --config Debug --parallel `sysctl -n hw.logicalcpu` - - - name: Build (Ninja) - if: matrix.GEN == 'Ninja Multi-Config' + - name: Build shell: bash run: | cmake --build $GITHUB_WORKSPACE/build --config Release --parallel `sysctl -n hw.logicalcpu` @@ -121,60 +121,36 @@ jobs: ctest -C Release --output-on-failure --parallel `sysctl -n hw.logicalcpu` ctest -C Debug --output-on-failure --parallel `sysctl -n hw.logicalcpu` - - name: Install (Xcode) - if: matrix.GEN == 'Xcode' + - name: Test install shell: bash run: | cmake --build $GITHUB_WORKSPACE/build --config Release --target install - - name: Install (Ninja) - if: matrix.GEN == 'Ninja Multi-Config' - shell: bash - run: | - cmake --build $GITHUB_WORKSPACE/build --config Release --target install - - - name: "Consume (standalone): Configure/Build/Test" + - name: Consume (install) shell: bash run: cmake -G "${{matrix.GEN}}" - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m64" - -D CMAKE_CXX_COMPILER=/usr/local/bin/g++-${{matrix.VER}} - -D CMAKE_CXX_STANDARD=${{matrix.STD}} - -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" - -B$GITHUB_WORKSPACE/build/downstream/bare - -H$GITHUB_WORKSPACE/tests/pkgconfig/bare ; - cmake --build $GITHUB_WORKSPACE/build/downstream/bare --config Release ; - cmake --build $GITHUB_WORKSPACE/build/downstream/bare --config Debug ; - cd $GITHUB_WORKSPACE/build/downstream/bare ; - ctest --output-on-failure -C Release ; - ctest --output-on-failure -C Debug - - - name: "Consume (SDK): Configure/Build/Test" - shell: bash - run: cmake -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL ; - echo -e 'include("/Users/runner/work/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake")\ninclude("/Users/runner/work/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake")' > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake ; - cmake - -G "${{matrix.GEN}}" - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m64" - -D CMAKE_CXX_COMPILER=/usr/local/bin/g++-${{matrix.VER}} + -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Wno-format -m64" + -D CMAKE_CXX_COMPILER=${{matrix.COMPILER.CXX_NAME}} -D CMAKE_CXX_STANDARD=${{matrix.STD}} - -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} + -D CMAKE_CXX_EXTENSIONS=OFF + -D CMAKE_CXX_STANDARD_REQUIRED=ON -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" - -B$GITHUB_WORKSPACE/build/downstream/sdk - -H$GITHUB_WORKSPACE/tests/pkgconfig/sdk ; - cmake --build $GITHUB_WORKSPACE/build/downstream/sdk --config Release ; - cmake --build $GITHUB_WORKSPACE/build/downstream/sdk --config Debug ; - cd $GITHUB_WORKSPACE/build/downstream/sdk ; - ctest --output-on-failure -C Release ; - ctest --output-on-failure -C Debug + -S $GITHUB_WORKSPACE/tests/pkgconfig/bare + -B $GITHUB_WORKSPACE/build_install && + cmake --build $GITHUB_WORKSPACE/build_install --config Release --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` && + cmake --build $GITHUB_WORKSPACE/build_install --config Debug --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` - name: Test pkg-config shell: bash run: | if [[ ! `which pkg-config` ]]; then brew install pkg-config; fi; - PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" + export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/share/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/lib/pkgconfig + pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" - name: Test pkg-config dependency shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" + run: | + if [[ ! `which pkg-config` ]]; then brew install pkg-config; fi; + export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/share/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/lib/pkgconfig + pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index a8ddb95b..2998605b 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -4,6 +4,7 @@ on: [push, pull_request] jobs: linux: + if: false runs-on: ubuntu-latest strategy: matrix: @@ -265,6 +266,7 @@ jobs: pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" windows: + if: false runs-on: windows-latest strategy: matrix: From 4c7440bcb240c453297562456b04991f6c75f324 Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Tue, 8 Aug 2023 19:35:27 +0000 Subject: [PATCH 08/12] Migrate contents of macos.yml to presubmit.yml and delete it --- .github/workflows/macos.yml | 156 -------------------------------- .github/workflows/presubmit.yml | 153 ++++++++++++++++++++++++++++++- 2 files changed, 151 insertions(+), 158 deletions(-) delete mode 100644 .github/workflows/macos.yml diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml deleted file mode 100644 index 28ce085f..00000000 --- a/.github/workflows/macos.yml +++ /dev/null @@ -1,156 +0,0 @@ -name: MacOS - -on: [push, pull_request] - -jobs: - macos: - runs-on: macos-latest - strategy: - matrix: - COMPILER: - - C_NAME: /usr/bin/gcc - CXX_NAME: /usr/bin/g++ - - C_NAME: /usr/local/bin/gcc-11 - CXX_NAME: /usr/local/bin/g++-11 - - C_NAME: /usr/local/bin/gcc-13 - CXX_NAME: /usr/local/bin/gcc-13 - GEN: - - Xcode - - Ninja Multi-Config - STD: [11, 17] - # exclude: - # - COMPILER: - # C_NAME: /usr/bin/gcc - # CXX_NAME: /usr/bin/g++ - # GEN: Ninja Multi-Config - # - COMPILER: - # C_NAME: /usr/local/bin/gcc-11 - # CXX_NAME: /usr/local/bin/g++-11 - # GEN: Xcode - # - COMPILER: - # C_NAME: /usr/local/bin/gcc-13 - # CXX_NAME: /usr/local/bin/g++-13 - # GEN: Xcode - - steps: - - name: Checkout OpenCL-CLHPP - uses: actions/checkout@v3 - with: - submodules: recursive - - - name: Checkout OpenCL-Headers - uses: actions/checkout@v3 - with: - repository: KhronosGroup/OpenCL-Headers - path: external/OpenCL-Headers - - - name: Checkout OpenCL-ICD-Loader - uses: actions/checkout@v3 - with: - repository: KhronosGroup/OpenCL-ICD-Loader - path: external/OpenCL-ICD-Loader - - - name: Create Build Environment - run: | - cmake -E make_directory $GITHUB_WORKSPACE/build && - cmake -E make_directory $GITHUB_WORKSPACE/install && - if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" && ! `which ninja` ]]; then brew install ninja; fi && - # Install Ninja only if it's the selected generator and it's not available. - cmake --version - - - name: Build & install OpenCL-Headers - run: cmake - -G "${{matrix.GEN}}" - -D BUILD_TESTING=OFF - -D CMAKE_C_FLAGS="-w" - -D CMAKE_C_COMPILER=${{matrix.COMPILER.C_NAME}} - -D CMAKE_C_EXTENSIONS=OFF - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install - -S $GITHUB_WORKSPACE/external/OpenCL-Headers - -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build && - cmake - --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build - --target install - --config Release - --parallel `sysctl -n hw.logicalcpu` - - - name: Build & install OpenCL-ICD-Loader - run: cmake - -G "${{matrix.GEN}}" - -D BUILD_TESTING=OFF - -D CMAKE_C_FLAGS="-w -m64" - -D CMAKE_C_COMPILER=${{matrix.COMPILER.C_NAME}} - -D CMAKE_C_EXTENSIONS=OFF - -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install - -S $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader - -B $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && - cmake - --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build - --target install - --config Release - --parallel `sysctl -n hw.logicalcpu` - - - name: Configure - # no -Werror during configuration because: - # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] - # warning: unused parameter [-Wunused-parameter] - shell: bash - run: cmake - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Wno-format -m64" - -D CMAKE_CXX_COMPILER=${{matrix.COMPILER.CXX_NAME}} - -D CMAKE_CXX_STANDARD=${{matrix.STD}} - -D CMAKE_CXX_EXTENSIONS=OFF - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" - -S $GITHUB_WORKSPACE - -B $GITHUB_WORKSPACE/build - - - name: Build - shell: bash - run: | - cmake --build $GITHUB_WORKSPACE/build --config Release --parallel `sysctl -n hw.logicalcpu` - cmake --build $GITHUB_WORKSPACE/build --config Debug --parallel `sysctl -n hw.logicalcpu` - - - name: Test - working-directory: ${{runner.workspace}}/OpenCL-CLHPP/build - shell: bash - run: | - ctest -C Release --output-on-failure --parallel `sysctl -n hw.logicalcpu` - ctest -C Debug --output-on-failure --parallel `sysctl -n hw.logicalcpu` - - - name: Test install - shell: bash - run: | - cmake --build $GITHUB_WORKSPACE/build --config Release --target install - - - name: Consume (install) - shell: bash - run: cmake - -G "${{matrix.GEN}}" - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Wno-format -m64" - -D CMAKE_CXX_COMPILER=${{matrix.COMPILER.CXX_NAME}} - -D CMAKE_CXX_STANDARD=${{matrix.STD}} - -D CMAKE_CXX_EXTENSIONS=OFF - -D CMAKE_CXX_STANDARD_REQUIRED=ON - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" - -S $GITHUB_WORKSPACE/tests/pkgconfig/bare - -B $GITHUB_WORKSPACE/build_install && - cmake --build $GITHUB_WORKSPACE/build_install --config Release --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` && - cmake --build $GITHUB_WORKSPACE/build_install --config Debug --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` - - - name: Test pkg-config - shell: bash - run: | - if [[ ! `which pkg-config` ]]; then brew install pkg-config; fi; - export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/share/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/lib/pkgconfig - pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" - - - name: Test pkg-config dependency - shell: bash - run: | - if [[ ! `which pkg-config` ]]; then brew install pkg-config; fi; - export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/share/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/lib/pkgconfig - pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 2998605b..3031d9fc 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -4,7 +4,6 @@ on: [push, pull_request] jobs: linux: - if: false runs-on: ubuntu-latest strategy: matrix: @@ -266,7 +265,6 @@ jobs: pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" windows: - if: false runs-on: windows-latest strategy: matrix: @@ -651,3 +649,154 @@ jobs: & ctest ` --output-on-failure -C ${Config} } + + macos: + runs-on: macos-latest + strategy: + matrix: + COMPILER: + - C_NAME: /usr/bin/gcc + CXX_NAME: /usr/bin/g++ + - C_NAME: /usr/local/bin/gcc-11 + CXX_NAME: /usr/local/bin/g++-11 + - C_NAME: /usr/local/bin/gcc-13 + CXX_NAME: /usr/local/bin/g++-13 + GEN: + - Xcode + - Ninja Multi-Config + STD: [11, 17] + exclude: + - COMPILER: + C_NAME: /usr/bin/gcc + CXX_NAME: /usr/bin/g++ + GEN: Ninja Multi-Config + - COMPILER: + C_NAME: /usr/local/bin/gcc-11 + CXX_NAME: /usr/local/bin/g++-11 + GEN: Xcode + - COMPILER: + C_NAME: /usr/local/bin/gcc-13 + CXX_NAME: /usr/local/bin/g++-13 + GEN: Xcode + env: + CC: ${{matrix.COMPILER.C_NAME}} + CCX: ${{matrix.COMPILER.CXX_NAME}} + + steps: + - name: Checkout OpenCL-CLHPP + uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Checkout OpenCL-Headers + uses: actions/checkout@v3 + with: + repository: KhronosGroup/OpenCL-Headers + path: external/OpenCL-Headers + + - name: Checkout OpenCL-ICD-Loader + uses: actions/checkout@v3 + with: + repository: KhronosGroup/OpenCL-ICD-Loader + path: external/OpenCL-ICD-Loader + + - name: Create Build Environment + run: | + cmake -E make_directory $GITHUB_WORKSPACE/build && + cmake -E make_directory $GITHUB_WORKSPACE/install && + if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" && ! `which ninja` ]]; then brew install ninja; fi && + # Install Ninja only if it's the selected generator and it's not available. + cmake --version + + - name: Build & install OpenCL-Headers + run: cmake + -G "${{matrix.GEN}}" + -D BUILD_TESTING=OFF + -D CMAKE_C_FLAGS="-w" + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -S $GITHUB_WORKSPACE/external/OpenCL-Headers + -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build && + cmake + --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build + --target install + --config Release + --parallel `sysctl -n hw.logicalcpu` + + - name: Build & install OpenCL-ICD-Loader + run: cmake + -G "${{matrix.GEN}}" + -D BUILD_TESTING=OFF + -D CMAKE_C_FLAGS="-w -m64" + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install + -S $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader + -B $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && + cmake + --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build + --target install + --config Release + --parallel `sysctl -n hw.logicalcpu` + + - name: Configure + # no -Werror during configuration because: + # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] + # warning: unused parameter [-Wunused-parameter] + shell: bash + run: cmake + -G "${{matrix.GEN}}" + -D BUILD_TESTING=ON + -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Wno-format -m64" + -D CMAKE_CXX_STANDARD=${{matrix.STD}} + -D CMAKE_CXX_EXTENSIONS=OFF + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" + -S $GITHUB_WORKSPACE + -B $GITHUB_WORKSPACE/build + + - name: Build + shell: bash + run: | + cmake --build $GITHUB_WORKSPACE/build --config Release --parallel `sysctl -n hw.logicalcpu` + cmake --build $GITHUB_WORKSPACE/build --config Debug --parallel `sysctl -n hw.logicalcpu` + + - name: Test + working-directory: ${{runner.workspace}}/OpenCL-CLHPP/build + shell: bash + run: | + ctest -C Release --output-on-failure --parallel `sysctl -n hw.logicalcpu` + ctest -C Debug --output-on-failure --parallel `sysctl -n hw.logicalcpu` + + - name: Test install + shell: bash + run: | + cmake --build $GITHUB_WORKSPACE/build --config Release --target install + + - name: Consume (install) + shell: bash + run: cmake + -G "${{matrix.GEN}}" + -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Wno-format -m64" + -D CMAKE_CXX_STANDARD=${{matrix.STD}} + -D CMAKE_CXX_EXTENSIONS=OFF + -D CMAKE_CXX_STANDARD_REQUIRED=ON + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" + -S $GITHUB_WORKSPACE/tests/pkgconfig/bare + -B $GITHUB_WORKSPACE/build_install && + cmake --build $GITHUB_WORKSPACE/build_install --config Release --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` && + cmake --build $GITHUB_WORKSPACE/build_install --config Debug --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` + + - name: Test pkg-config + shell: bash + run: | + if [[ ! `which pkg-config` ]]; then brew install pkg-config; fi; + export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/share/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/lib/pkgconfig + pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" + + - name: Test pkg-config dependency + shell: bash + run: | + if [[ ! `which pkg-config` ]]; then brew install pkg-config; fi; + export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/share/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/lib/pkgconfig + pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" From ea87d548a3a3cae70005984242263e33eb3735ce Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Wed, 9 Aug 2023 07:51:45 +0000 Subject: [PATCH 09/12] Add format-checking script and job --- .github/workflows/presubmit.yml | 32 +++++++++++++++++++ scripts/check-format.sh | 55 +++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100755 scripts/check-format.sh diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 3031d9fc..c3c41c75 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -3,8 +3,38 @@ name: Presubmit on: [push, pull_request] jobs: + get-branch: + runs-on: ubuntu-latest + steps: + - name: Get working branch + id: get-branch + run: | + if [[ ${{ github.event_name }} == "push" ]]; then + echo "branch=main" >> $GITHUB_OUTPUT + else + echo "branch=${{ github.base_ref }}" >> $GITHUB_OUTPUT + fi ; + echo $GITHUB_OUTPUT + outputs: + branch: ${{ steps.get-branch.outputs.branch }} + + format: + name: Code formatting + runs-on: ubuntu-latest + needs: get-branch + steps: + - uses: actions/checkout@v3 + with: + # repository: ${{ github.repository }} (default) + fetch-depth: 0 + - name: Install clang-format + run: sudo apt-get install clang-format + - name: Check format + run: $GITHUB_WORKSPACE/scripts/check-format.sh origin/${{ needs.get-branch.outputs.branch }} --binary clang-format + linux: runs-on: ubuntu-latest + needs: format strategy: matrix: CMAKE: [3.26.4] @@ -266,6 +296,7 @@ jobs: windows: runs-on: windows-latest + needs: format strategy: matrix: VER: [v141, v142, v143, clangcl] @@ -652,6 +683,7 @@ jobs: macos: runs-on: macos-latest + needs: format strategy: matrix: COMPILER: diff --git a/scripts/check-format.sh b/scripts/check-format.sh new file mode 100755 index 00000000..24c61662 --- /dev/null +++ b/scripts/check-format.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +SOURCE_COMMIT="$1" +if [ "$#" -gt 0 ]; then + shift +fi + +# If no source commit is given target the default branch +if [ "x$SOURCE_COMMIT" = "x" ]; then + # If remote is not set use the remote of the current branch or fallback to "origin" + if [ "x$REMOTE" = "x" ]; then + BRANCH="$(git rev-parse --abbrev-ref HEAD)" + REMOTE="$(git config --local --get "branch.$BRANCH.remote" || echo 'origin')" + fi + SOURCE_COMMIT="remotes/$REMOTE/HEAD" +fi + +# Force colored diff output +DIFF_COLOR_SAVED="$(git config --local --get color.diff)" +if [ "x$DIFF_COLOR_SAVED" != "x" ]; then + git config --local --replace-all "color.diff" "always" +else + git config --local --add "color.diff" "always" +fi + +scratch="$(mktemp -t check-format.XXXXXXXXXX)" +finish () { + # Remove temporary file + rm -rf "$scratch" + # Restore setting + if [ "x$DIFF_COLOR_SAVED" != "x" ]; then + git config --local --replace-all "color.diff" "$DIFF_COLOR_SAVED" + else + git config --local --unset "color.diff" + fi +} +# The trap will be invoked whenever the script exits, even due to a signal, this is a bash only +# feature +trap finish EXIT + +GIT_CLANG_FORMAT="${GIT_CLANG_FORMAT:-git-clang-format}" +"$GIT_CLANG_FORMAT" --style=file --extensions=cc,cp,cpp,c++,cxx,cu,cuh,hh,hpp,hxx,hip,vert,frag --diff "$@" "$SOURCE_COMMIT" > "$scratch" + +# Check for no-ops +grep '^no modified files to format$\|^clang-format did not modify any files$' \ + "$scratch" > /dev/null && exit 0 + +# Dump formatting diff and signal failure +printf \ +"\033[31m==== FORMATTING VIOLATIONS DETECTED ====\033[0m +run '\033[33m%s --style=file %s %s\033[0m' to apply these formating changes\n\n" \ +"$GIT_CLANG_FORMAT" "$*" "$SOURCE_COMMIT" + +cat "$scratch" +exit 1 From 5712ee3fb7cdc05e90733f1a15876280fbc4dc67 Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Wed, 9 Aug 2023 08:13:26 +0000 Subject: [PATCH 10/12] Build android binaries --- .github/workflows/presubmit.yml | 89 +++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index c3c41c75..d13b3224 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -832,3 +832,92 @@ jobs: if [[ ! `which pkg-config` ]]; then brew install pkg-config; fi; export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/share/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/lib/pkgconfig pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" + + android: + runs-on: ubuntu-latest + needs: format + strategy: + matrix: + ABI: + # - arm64-v8a + - x86_64 + API_LEVEL: + - android-19 + - android-33 + CONFIG: + - Debug + - Release + steps: + - name: Checkout OpenCL-CLHPP + uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Checkout OpenCL-Headers + uses: actions/checkout@v3 + with: + repository: KhronosGroup/OpenCL-Headers + path: external/OpenCL-Headers + + - name: Checkout OpenCL-ICD-Loader + uses: actions/checkout@v3 + with: + repository: KhronosGroup/OpenCL-ICD-Loader + path: external/OpenCL-ICD-Loader + + - name: Configure & install OpenCL-Headers + shell: bash + run: cmake + -G "Unix Makefiles" + -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -D BUILD_TESTING=OFF + -S $GITHUB_WORKSPACE/external/OpenCL-Headers + -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build && + cmake + --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build + --target install + -- + -j`nproc` + + - name: Configure & install OpenCL-ICD-Loader + run: cmake + -G "Unix Makefiles" + -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install + -D BUILD_TESTING=ON + -D CMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake + -D ANDROID_ABI=${{matrix.ABI}} + -D ANDROID_PLATFORM=${{matrix.API_LEVEL}} + -D CMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY + -D CMAKE_FIND_ROOT_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -S $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader + -B $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && + sudo cmake + --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build + --target install + -- + -j`nproc` + + - name: Configure + shell: bash + run: cmake + -G "Unix Makefiles" + -D BUILD_TESTING=ON + -D BUILD_EXAMPLES=ON + -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} + -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic" + -D CMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake + -D ANDROID_ABI=${{matrix.ABI}} + -D ANDROID_PLATFORM=${{matrix.API_LEVEL}} + -D CMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY + -D CMAKE_FIND_ROOT_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" + -S $GITHUB_WORKSPACE + -B $GITHUB_WORKSPACE/build + + - name: Build + shell: bash + run: cmake --build $GITHUB_WORKSPACE/build -j `nproc` From 375f6417322ce364c71aa1dca235d86179f1a64a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C5=91rinc=20Serf=C5=91z=C5=91?= Date: Wed, 16 Aug 2023 09:49:00 +0200 Subject: [PATCH 11/12] CMake minimum 3.16 --- .clang-format | 123 +++++++++++++++++ .github/workflows/presubmit.yml | 233 +++++++++++++------------------- .gitignore | 3 + CMakeLists.txt | 2 +- cmake/Package.cmake | 49 +++---- examples/CMakeLists.txt | 2 - tests/test_openclhpp.cpp | 154 ++++++++++----------- 7 files changed, 318 insertions(+), 248 deletions(-) create mode 100644 .clang-format diff --git a/.clang-format b/.clang-format new file mode 100644 index 00000000..d563a411 --- /dev/null +++ b/.clang-format @@ -0,0 +1,123 @@ +--- +Language: Cpp +AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlines: Right +AlignOperands: false +AlignTrailingComments: false +AllowAllArgumentsOnNextLine: true +AllowAllConstructorInitializersOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortLambdasOnASingleLine: All +AllowShortIfStatementsOnASingleLine: WithoutElse +AllowShortLoopsOnASingleLine: true +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: true + AfterEnum: true + AfterFunction: true + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: true + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: true + IndentBraces: false + SplitEmptyFunction: false + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: NonAssignment +BreakBeforeBraces: Custom +BreakBeforeInheritanceComma: false +BreakInheritanceList: BeforeColon +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: false +DerivePointerAlignment: true +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: false +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + - Regex: '.*' + Priority: 1 +IncludeIsMainRegex: '(Test)?$' +IndentCaseLabels: true +IndentPPDirectives: None +IndentWidth: 4 +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 2 +NamespaceIndentation: Inner +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 4 +ObjCSpaceAfterProperty: true +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Left +ReflowComments: true +SortIncludes: false +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: false +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp11 +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 4 +UseTab: Never diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index d13b3224..def9951c 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -52,7 +52,7 @@ jobs: CXX_NAME: clang++ VER: 16 BIN: [64] - STD: [11, 17] + CXXSTD: [11, 17] CONF: - GEN: Unix Makefiles CONFIG: Debug @@ -61,52 +61,52 @@ jobs: - GEN: Ninja Multi-Config CONFIG: Release IMAGE: - - streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + - streamhpc/opencl-sdk-base:ubuntu-22.04-20230717 include: - - CMAKE: 3.1.3 + - CMAKE: system COMPILER: C_NAME: gcc CXX_NAME: g++ - VER: 7 + VER: 9 BIN: 64 - STD: 99 + CXXSTD: 11 CONF: GEN: Unix Makefiles CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - - CMAKE: 3.1.3 + IMAGE: streamhpc/opencl-sdk-base:ubuntu-20.04-20230717 + - CMAKE: system COMPILER: C_NAME: gcc CXX_NAME: g++ - VER: 7 + VER: 9 BIN: 64 - STD: 99 + CXXSTD: 11 CONF: GEN: Unix Makefiles CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - - CMAKE: 3.1.3 + IMAGE: streamhpc/opencl-sdk-base:ubuntu-20.04-20230717 + - CMAKE: system COMPILER: - C_NAME: clang - CXX_NAME: clang++ - VER: 8 - BIN: 64 - STD: 99 + C_NAME: gcc + CXX_NAME: g++ + VER: 9 + BIN: 32 + CXXSTD: 11 CONF: GEN: Unix Makefiles CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - - CMAKE: 3.1.3 + IMAGE: streamhpc/opencl-sdk-base:ubuntu-20.04-20230717 + - CMAKE: system COMPILER: - C_NAME: clang - CXX_NAME: clang++ - VER: 8 - BIN: 64 - STD: 99 + C_NAME: gcc + CXX_NAME: g++ + VER: 9 + BIN: 32 + CXXSTD: 11 CONF: GEN: Unix Makefiles CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 + IMAGE: streamhpc/opencl-sdk-base:ubuntu-20.04-20230717 container: ${{matrix.IMAGE}} env: CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake @@ -115,8 +115,18 @@ jobs: DEB_INSTALLATION_PATH: /usr CC: ${{matrix.COMPILER.C_NAME}}-${{matrix.COMPILER.VER}} CXX: ${{matrix.COMPILER.CXX_NAME}}-${{matrix.COMPILER.VER}} + CFLAGS: -Wall -Wextra -pedantic -Werror -m${{matrix.BIN}} + CXXFLAGS: -Wall -Wextra -pedantic -Werror -m${{matrix.BIN}} steps: + - name: Install system CMake + shell: bash + if: ${{matrix.CMAKE}} == 'system' + run: apt-get update -qq && apt-get install -y cmake && + echo "CMAKE_EXE=cmake" >> "$GITHUB_ENV" && + echo "CPACK_EXE=cpack" >> "$GITHUB_ENV" && + echo "CTEST_EXE=ctest" >> "$GITHUB_ENV" + - name: Checkout OpenCL-CLHPP uses: actions/checkout@v3 with: @@ -139,22 +149,19 @@ jobs: ref: update-ci - name: Configure, install & package OpenCL-Headers - run: mkdir $GITHUB_WORKSPACE/external/OpenCL-Headers/build && - cd $GITHUB_WORKSPACE/external/OpenCL-Headers/build && - $CMAKE_EXE + run: $CMAKE_EXE -G "${{matrix.CONF.GEN}}" `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` - -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" -D CMAKE_C_EXTENSIONS=OFF - -D CMAKE_INSTALL_PREFIX=`if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "$GITHUB_WORKSPACE/external/OpenCL-Headers/install"; else echo "$DEB_INSTALLATION_PATH"; fi` - `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH"; fi` + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH -D BUILD_TESTING=OFF - $GITHUB_WORKSPACE/external/OpenCL-Headers && + -S $GITHUB_WORKSPACE/external/OpenCL-Headers + -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build && $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build --target install - -- - -j`nproc` && + --parallel `nproc` && $CPACK_EXE --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" -G DEB @@ -162,47 +169,40 @@ jobs: -B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" - name: Configure & install OpenCL-ICD-Loader - run: mkdir $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && - cd $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && - $CMAKE_EXE + run: $CMAKE_EXE -G "${{matrix.CONF.GEN}}" `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` - -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" -D CMAKE_C_EXTENSIONS=OFF - -D CMAKE_INSTALL_PREFIX=`if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install"; else echo "$DEB_INSTALLATION_PATH"; fi` - `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install"; fi` + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install + -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install -D BUILD_TESTING=OFF - $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader && + -S $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader + -B $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build --target install - -- - -j`nproc` + --parallel `nproc` - name: Configure shell: bash - # no -Werror during configuration because: - # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] - # warning: unused parameter [-Wunused-parameter] - run: mkdir $GITHUB_WORKSPACE/build && cd $GITHUB_WORKSPACE/build && - $CMAKE_EXE + run: $CMAKE_EXE -G "${{matrix.CONF.GEN}}" -D BUILD_TESTING=ON -D BUILD_EXAMPLES=ON `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_CXX_STANDARD=${{matrix.STD}} + -D CMAKE_CXX_STANDARD=${{matrix.CXXSTD}} -D CMAKE_CXX_EXTENSIONS=OFF - -D CMAKE_INSTALL_PREFIX=`if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "$GITHUB_WORKSPACE/install"; else echo "$DEB_INSTALLATION_PATH"; fi` - `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH"; fi` - `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install"; fi` - $GITHUB_WORKSPACE + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" + -S $GITHUB_WORKSPACE + -B $GITHUB_WORKSPACE/build - name: Build shell: bash run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then - $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config ${{matrix.CONF.CONFIG}} -- -j `nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config ${{matrix.CONF.CONFIG}} --parallel `nproc`; else $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug; $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release; @@ -231,19 +231,17 @@ jobs: shell: bash run: dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb && dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && - mkdir $GITHUB_WORKSPACE/build_package && - cd $GITHUB_WORKSPACE/build_package && $CMAKE_EXE -G "${{matrix.CONF.GEN}}" `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_CXX_STANDARD=${{matrix.STD}} + -D CMAKE_CXX_STANDARD=${{matrix.CXXSTD}} -D CMAKE_CXX_EXTENSIONS=OFF - `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install"; fi` - $GITHUB_WORKSPACE/tests/pkgconfig/bare && + -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install + -S $GITHUB_WORKSPACE/tests/pkgconfig/bare + -B $GITHUB_WORKSPACE/build_package && if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then - $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config ${{matrix.CONF.CONFIG}} -- -j `nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config ${{matrix.CONF.CONFIG}} --parallel `nproc`; else $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug; $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release; @@ -253,7 +251,9 @@ jobs: shell: bash # /usr/include is already on the include search path, # we don't expect any output - run: if [[ $(pkg-config OpenCL-CLHPP --cflags) ]]; + run: | + pkg-config OpenCL-CLHPP --cflags + if [[ "$(pkg-config OpenCL-CLHPP --cflags)" ]]; then exit 1; fi; @@ -262,28 +262,21 @@ jobs: shell: bash run: apt-get remove -y opencl-clhpp-headers - - name: Re-configure for install - if: matrix.CMAKE == '3.1.3' - shell: bash - run: cd $GITHUB_WORKSPACE/build && - $CMAKE_EXE -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install $GITHUB_WORKSPACE - - name: Test install shell: bash run: $CMAKE_EXE --build $GITHUB_WORKSPACE/build --target install --config ${{matrix.CONF.CONFIG}} -- -j`nproc`; - name: Consume (install) shell: bash - run: mkdir $GITHUB_WORKSPACE/build_install && cd $GITHUB_WORKSPACE/build_install && - $CMAKE_EXE + run: $CMAKE_EXE -G "${{matrix.CONF.GEN}}" `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" - $GITHUB_WORKSPACE/tests/pkgconfig/bare && + -S $GITHUB_WORKSPACE/tests/pkgconfig/bare + -B $GITHUB_WORKSPACE/build_install && if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then - $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install -- -j`nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --parallel `nproc`; else $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Debug -- -j`nproc`; $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Release -- -j`nproc`; @@ -302,7 +295,7 @@ jobs: VER: [v141, v142, v143, clangcl] GEN: [Visual Studio 17 2022, Ninja Multi-Config] BIN: [x64] - STD: [11, 17] + CXXSTD: [11, 17] exclude: - VER: clangcl GEN: Ninja Multi-Config @@ -310,7 +303,7 @@ jobs: - VER: v142 GEN: Visual Studio 17 2022 BIN: x86 - STD: 99 + CXXSTD: 11 env: NINJA_URL: https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip NINJA_ROOT: C:\Tools\Ninja @@ -318,6 +311,9 @@ jobs: UseMultiToolTask: true # Better parallel MSBuild execution EnforceProcessCountAcrossBuilds: 'true' # -=- MultiProcMaxCount: '3' # -=- + WindowsSDKVersion: '10.0.22621.0' + CFLAGS: /W4 /WX + CXXFLAGS: /W4 /WX steps: - name: Cache Ninja install @@ -359,16 +355,13 @@ jobs: shell: pwsh run: | $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} - $C_FLAGS='/w' & cmake ` -G '${{matrix.GEN}}' ` -A $BIN ` -T ${{matrix.VER}} ` -D BUILD_TESTING=OFF ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -D CMAKE_SYSTEM_VERSION="${env:WindowsSDKVersion}" ` -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` -B ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build & cmake ` @@ -390,14 +383,10 @@ jobs: 'v143' {'14.3'} } 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" - $C_FLAGS='/w' & cmake ` -G '${{matrix.GEN}}' ` -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` -D BUILD_TESTING=OFF ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` -B ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build @@ -413,17 +402,14 @@ jobs: shell: pwsh run: | $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} - $C_FLAGS='/w' & cmake ` -G '${{matrix.GEN}}' ` -A $BIN ` -T ${{matrix.VER}} ` -D BUILD_TESTING=OFF ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\install ` -D CMAKE_PREFIX_PATH=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -D CMAKE_SYSTEM_VERSION="${env:WindowsSDKVersion}" ` -S ${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader ` -B ${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\build & cmake ` @@ -445,14 +431,10 @@ jobs: 'v143' {'14.3'} } 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" - $C_FLAGS='/w' & cmake ` -G '${{matrix.GEN}}' ` -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` -D BUILD_TESTING=OFF ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` -D CMAKE_PREFIX_PATH=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` -S ${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader ` @@ -467,33 +449,25 @@ jobs: - name: Configure (MSBuild) if: matrix.GEN == 'Visual Studio 17 2022' shell: pwsh - # no /WX during configuration because: - # warning C4459: declaration of 'platform' hides global declaration - # warning C4100: 'input_headers': unreferenced formal parameter - # not building the tests when using clangcl due to compilation errors run: | $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} - $C_FLAGS='/W4' $BUILD_TESTS = if('clangcl' -eq 'clangcl') {'OFF'} else {'ON'} & cmake ` -G '${{matrix.GEN}}' ` -A $BIN ` -T ${{matrix.VER}} ` -D BUILD_TESTING=$BUILD_TESTS ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_CXX_STANDARD=${{matrix.CXXSTD}} ` + -D CMAKE_CXX_EXTENSIONS=OFF ` -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\install" ` + -D CMAKE_SYSTEM_VERSION="${env:WindowsSDKVersion}" ` -S ${env:GITHUB_WORKSPACE} ` -B ${env:GITHUB_WORKSPACE}\build - name: Configure (Ninja Multi-Config) if: matrix.GEN == 'Ninja Multi-Config' shell: pwsh - # no /WX during configuration because: - # warning C4459: declaration of 'platform' hides global declaration - # warning C4100: 'input_headers': unreferenced formal parameter run: | $VER = switch ('${{matrix.VER}}') { ` 'v141' {'14.1'} ` @@ -501,14 +475,12 @@ jobs: 'v143' {'14.3'} } 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" - $C_FLAGS='/W4' & cmake ` -G '${{matrix.GEN}}' ` -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` -D BUILD_TESTING=ON ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_CXX_STANDARD=${{matrix.CXXSTD}} ` + -D CMAKE_CXX_EXTENSIONS=OFF ` -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\external\OpenCL-ICD-Loader\install" ` @@ -570,17 +542,16 @@ jobs: shell: pwsh run: | $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} - $C_FLAGS = '/W4' & cmake ` -G '${{matrix.GEN}}' ` -A ${BIN} ` -T ${{matrix.VER}} ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_CXX_STANDARD=${{matrix.CXXSTD}} ` + -D CMAKE_CXX_EXTENSIONS=OFF ` -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -D CMAKE_SYSTEM_VERSION="${env:WindowsSDKVersion}" ` -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" foreach ($Config in 'Release','Debug') { ` @@ -601,13 +572,11 @@ jobs: 'v143' {'14.3'} } 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" - $C_FLAGS = '/W4' & cmake ` -G '${{matrix.GEN}}' ` -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_CXX_STANDARD=${{matrix.CXXSTD}} ` + -D CMAKE_CXX_EXTENSIONS=OFF ` -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` @@ -631,15 +600,14 @@ jobs: - name: "Consume (MSBuild SDK): Configure/Build/Test" shell: pwsh run: | - $C_FLAGS = '/W4' & cmake ` -G '${{matrix.GEN}}' ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_CXX_STANDARD=${{matrix.CXXSTD}} ` + -D CMAKE_CXX_EXTENSIONS=OFF ` -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -D CMAKE_SYSTEM_VERSION="${env:WindowsSDKVersion}" ` -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" foreach ($Config in 'Release','Debug') { ` @@ -660,13 +628,11 @@ jobs: 'v143' {'14.3'} } 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}" - set C_FLAGS="/W4" & cmake ` -G '${{matrix.GEN}}' ` -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_CXX_STANDARD=${{matrix.CXXSTD}} ` + -D CMAKE_CXX_EXTENSIONS=OFF ` -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` @@ -696,7 +662,7 @@ jobs: GEN: - Xcode - Ninja Multi-Config - STD: [11, 17] + CXXSTD: [11, 17] exclude: - COMPILER: C_NAME: /usr/bin/gcc @@ -713,6 +679,8 @@ jobs: env: CC: ${{matrix.COMPILER.C_NAME}} CCX: ${{matrix.COMPILER.CXX_NAME}} + CFLAGS: -Wall -Wextra -pedantic -Wno-format -Werror + CXXFLAGS: -Wall -Wextra -pedantic -Wno-format -Werror steps: - name: Checkout OpenCL-CLHPP @@ -744,7 +712,6 @@ jobs: run: cmake -G "${{matrix.GEN}}" -D BUILD_TESTING=OFF - -D CMAKE_C_FLAGS="-w" -D CMAKE_C_EXTENSIONS=OFF -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install -S $GITHUB_WORKSPACE/external/OpenCL-Headers @@ -759,7 +726,6 @@ jobs: run: cmake -G "${{matrix.GEN}}" -D BUILD_TESTING=OFF - -D CMAKE_C_FLAGS="-w -m64" -D CMAKE_C_EXTENSIONS=OFF -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install @@ -772,15 +738,11 @@ jobs: --parallel `sysctl -n hw.logicalcpu` - name: Configure - # no -Werror during configuration because: - # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] - # warning: unused parameter [-Wunused-parameter] shell: bash run: cmake -G "${{matrix.GEN}}" -D BUILD_TESTING=ON - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Wno-format -m64" - -D CMAKE_CXX_STANDARD=${{matrix.STD}} + -D CMAKE_CXX_STANDARD=${{matrix.CXXSTD}} -D CMAKE_CXX_EXTENSIONS=OFF -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" @@ -809,8 +771,7 @@ jobs: shell: bash run: cmake -G "${{matrix.GEN}}" - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Wno-format -m64" - -D CMAKE_CXX_STANDARD=${{matrix.STD}} + -D CMAKE_CXX_STANDARD=${{matrix.CXXSTD}} -D CMAKE_CXX_EXTENSIONS=OFF -D CMAKE_CXX_STANDARD_REQUIRED=ON -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" @@ -839,7 +800,7 @@ jobs: strategy: matrix: ABI: - # - arm64-v8a + - arm64-v8a - x86_64 API_LEVEL: - android-19 @@ -847,6 +808,9 @@ jobs: CONFIG: - Debug - Release + env: + CFLAGS: -Wall -Wextra -pedantic -Werror + CXXFLAGS: -Wall -Wextra -pedantic -Werror steps: - name: Checkout OpenCL-CLHPP uses: actions/checkout@v3 @@ -870,7 +834,6 @@ jobs: run: cmake -G "Unix Makefiles" -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" -D CMAKE_C_EXTENSIONS=OFF -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install -D BUILD_TESTING=OFF @@ -886,7 +849,6 @@ jobs: run: cmake -G "Unix Makefiles" -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install -D BUILD_TESTING=ON -D CMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake @@ -909,7 +871,6 @@ jobs: -D BUILD_TESTING=ON -D BUILD_EXAMPLES=ON -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic" -D CMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -D ANDROID_ABI=${{matrix.ABI}} -D ANDROID_PLATFORM=${{matrix.API_LEVEL}} diff --git a/.gitignore b/.gitignore index 2e0d9c93..2ba69600 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,6 @@ # External dir [Ee]xternal/ + +# Visual Studio Code +.vscode diff --git a/CMakeLists.txt b/CMakeLists.txt index 58d8cd63..138d3dde 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.16) project(OpenCLHeadersCpp VERSION 3.0 diff --git a/cmake/Package.cmake b/cmake/Package.cmake index 795ddbcc..046c589c 100644 --- a/cmake/Package.cmake +++ b/cmake/Package.cmake @@ -29,33 +29,28 @@ install( DESTINATION ${pkg_config_location} COMPONENT pkgconfig_install) -if(NOT (CMAKE_VERSION VERSION_LESS "3.5")) - set(PKGCONFIG_PREFIX "${CPACK_PACKAGING_INSTALL_PREFIX}") - configure_file( - OpenCL-CLHPP.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL-CLHPP.pc - @ONLY) - # This install component is only needed in the Debian package - install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL-CLHPP.pc - DESTINATION ${pkg_config_location} - COMPONENT pkgconfig_package - EXCLUDE_FROM_ALL) - - # By using component based packaging, component pkgconfig_install - # can be excluded from the package, and component pkgconfig_package - # can be included. - set(CPACK_DEB_COMPONENT_INSTALL ON) - set(CPACK_COMPONENTS_GROUPING "ALL_COMPONENTS_IN_ONE") - - include(CPackComponent) - cpack_add_component(pkgconfig_install) - cpack_add_component(pkgconfig_package) - set(CPACK_COMPONENTS_ALL "Unspecified;pkgconfig_package") -elseif(NOT (CMAKE_INSTALL_PREFIX STREQUAL CPACK_PACKAGING_INSTALL_PREFIX)) - message(FATAL_ERROR "When using CMake version < 3.5, CPACK_PACKAGING_INSTALL_PREFIX should not be set," - " or should be the same as CMAKE_INSTALL_PREFIX") -endif() +set(PKGCONFIG_PREFIX "${CPACK_PACKAGING_INSTALL_PREFIX}") +configure_file( + OpenCL-CLHPP.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL-CLHPP.pc + @ONLY) +# This install component is only needed in the Debian package +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL-CLHPP.pc + DESTINATION ${pkg_config_location} + COMPONENT pkgconfig_package + EXCLUDE_FROM_ALL) + +# By using component based packaging, component pkgconfig_install +# can be excluded from the package, and component pkgconfig_package +# can be included. +set(CPACK_DEB_COMPONENT_INSTALL ON) +set(CPACK_COMPONENTS_GROUPING "ALL_COMPONENTS_IN_ONE") + +include(CPackComponent) +cpack_add_component(pkgconfig_install) +cpack_add_component(pkgconfig_package) +set(CPACK_COMPONENTS_ALL "Unspecified;pkgconfig_package") # DEB packaging configuration set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_VENDOR}) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 99df70e9..27e4941e 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,3 +1 @@ -cmake_minimum_required(VERSION 3.0) - add_subdirectory(src) diff --git a/tests/test_openclhpp.cpp b/tests/test_openclhpp.cpp index 64b70d29..2db32236 100644 --- a/tests/test_openclhpp.cpp +++ b/tests/test_openclhpp.cpp @@ -272,28 +272,27 @@ static cl_int clGetPlatformInfo_version_3_0( class RefcountTable { private: - size_t n; // number of objects - void * const *objects; // object IDs - int *refcounts; // current refcounts + size_t n_; // number of objects + void *const *objects_; // object IDs + int *refcounts_; // current refcounts size_t find(void *object) { size_t idx = 0; - while (idx < n && objects[idx] != object) - idx++; - TEST_ASSERT(idx < n); - TEST_ASSERT(refcounts[idx] > 0); // otherwise object has been destroyed + while (idx < n_ && objects_[idx] != object) idx++; + TEST_ASSERT(idx < n_); + TEST_ASSERT(refcounts_[idx] > 0); // otherwise object has been destroyed return idx; } public: - RefcountTable() : n(0), objects(nullptr), refcounts(nullptr) {} + RefcountTable(): n_(0), objects_(nullptr), refcounts_(nullptr) {} - void init(size_t n, void * const *objects, int *refcounts) + void init(size_t n, void *const *objects, int *refcounts) { - this->n = n; - this->objects = objects; - this->refcounts = refcounts; + this->n_ = n; + this->objects_ = objects; + this->refcounts_ = refcounts; } void reset() @@ -304,14 +303,14 @@ class RefcountTable cl_int retain(void *object) { size_t idx = find(object); - ++refcounts[idx]; + ++refcounts_[idx]; return CL_SUCCESS; } cl_int release(void *object) { size_t idx = find(object); - --refcounts[idx]; + --refcounts_[idx]; return CL_SUCCESS; } }; @@ -1195,7 +1194,7 @@ static cl_mem clCreateBuffer_testBufferConstructorContextIterator( (void) num_calls; TEST_ASSERT_EQUAL_PTR(make_context(0), context); - TEST_ASSERT_BITS(CL_MEM_COPY_HOST_PTR, flags, !CL_MEM_COPY_HOST_PTR); + TEST_ASSERT_BITS(CL_MEM_COPY_HOST_PTR, flags, CL_MEM_COPY_HOST_PTR != 0); TEST_ASSERT_BITS(CL_MEM_READ_ONLY, flags, CL_MEM_READ_ONLY); TEST_ASSERT_EQUAL(sizeof(int)*1024, size); TEST_ASSERT_NULL(host_ptr); @@ -1305,6 +1304,7 @@ void testBufferConstructorQueueIterator(void) clReleaseCommandQueue_ExpectAndReturn(make_command_queue(0), CL_SUCCESS); } +#if CL_HPP_TARGET_OPENCL_VERSION >= 300 static cl_mem clCreateBufferWithProperties_testBufferWithProperties( cl_context context, const cl_mem_properties *properties, @@ -1326,6 +1326,7 @@ static cl_mem clCreateBufferWithProperties_testBufferWithProperties( return make_mem(0); } +#endif void testBufferWithProperties(void) { @@ -1782,7 +1783,7 @@ void testKernelSetArgLocal(void) kernelPool[0].setArg(2, cl::Local(123)); } -void testKernelSetArgBySetKernelArgSVMPointerWithUniquePtrType() +void testKernelSetArgBySetKernelArgSVMPointerWithUniquePtrType(void) { #if CL_HPP_TARGET_OPENCL_VERSION >= 200 std::unique_ptr buffer(new int(1000)); @@ -1791,7 +1792,7 @@ void testKernelSetArgBySetKernelArgSVMPointerWithUniquePtrType() #endif } -void testKernelSetArgBySetKernelArgSVMPointerWithVectorType() +void testKernelSetArgBySetKernelArgSVMPointerWithVectorType(void) { #if CL_HPP_TARGET_OPENCL_VERSION >= 200 VECTOR_CLASS vec(1000); @@ -1800,7 +1801,7 @@ void testKernelSetArgBySetKernelArgSVMPointerWithVectorType() #endif } -void testKernelSetArgBySetKernelArgSVMPointerWithPointerType() +void testKernelSetArgBySetKernelArgSVMPointerWithPointerType(void) { #if CL_HPP_TARGET_OPENCL_VERSION >= 200 cl_mem *memory = &bufferPool[1](); @@ -2621,7 +2622,6 @@ static cl_int clGetKernelSubGroupInfo_testSubGroups(cl_kernel kernel, } else { TEST_ABORT(); - return CL_INVALID_OPERATION; } } #endif @@ -3191,7 +3191,8 @@ static cl_int clGetDeviceInfo_uuid_pci_bus_info( (param_name == CL_DEVICE_UUID_KHR) ? 1 : (param_name == CL_DRIVER_UUID_KHR) ? 2 : 0; - for (int i = 0; i < CL_UUID_SIZE_KHR; i++) { + for (cl_uchar i = 0; i < CL_UUID_SIZE_KHR; i++) + { pUUID[i] = i + start; } } @@ -3215,7 +3216,8 @@ static cl_int clGetDeviceInfo_uuid_pci_bus_info( if (param_value_size == CL_LUID_SIZE_KHR && param_value) { cl_uchar* pLUID = static_cast(param_value); cl_uchar start = 3; - for (int i = 0; i < CL_LUID_SIZE_KHR; i++) { + for (cl_uchar i = 0; i < CL_LUID_SIZE_KHR; i++) + { pLUID[i] = i + start; } } @@ -3507,7 +3509,8 @@ void testMoveAssignSemaphoreNonNull(void); void testMoveAssignSemaphoreNull(void); void testMoveConstructSemaphoreNonNull(void); void testMoveConstructSemaphoreNull(void); -MAKE_MOVE_TESTS(Semaphore, make_semaphore_khr, clReleaseSemaphoreKHR, semaphorePool); +MAKE_MOVE_TESTS(Semaphore, make_semaphore_khr, clReleaseSemaphoreKHR, + semaphorePool) #else void testMoveAssignSemaphoreNonNull(void) {} void testMoveAssignSemaphoreNull(void) {} @@ -3645,16 +3648,14 @@ void testSemaphoreWithProperties(void) } static cl_int clGetSemaphoreInfoKHR_testSemaphoreGetContext( - cl_semaphore_khr sema_object, - cl_semaphore_info_khr param_name, - size_t param_value_size, - void* param_value, - size_t* param_value_size_ret, - int num_calls) + cl_semaphore_khr sema_object, cl_semaphore_info_khr param_name, + size_t param_value_size, void *param_value, size_t *param_value_size_ret, + int /*num_calls*/) { TEST_ASSERT_EQUAL_PTR(semaphorePool[0](), sema_object); TEST_ASSERT_EQUAL_HEX(CL_SEMAPHORE_CONTEXT_KHR, param_name); - TEST_ASSERT(param_value == nullptr || param_value_size >= sizeof(cl_context)); + TEST_ASSERT(param_value == nullptr + || param_value_size >= sizeof(cl_context)); if (param_value_size_ret != nullptr) *param_value_size_ret = sizeof(cl_context); if (param_value != nullptr) @@ -3679,12 +3680,9 @@ void testSemaphoreGetInfoContext(void) } static cl_int clGetSemaphoreInfoKHR_testSemaphoreGetReferenceCount( - cl_semaphore_khr sema_object, - cl_semaphore_info_khr param_name, - size_t param_value_size, - void* param_value, - size_t* param_value_size_ret, - int num_calls) + cl_semaphore_khr sema_object, cl_semaphore_info_khr param_name, + size_t param_value_size, void *param_value, size_t *param_value_size_ret, + int /*num_calls*/) { TEST_ASSERT_EQUAL_PTR(semaphorePool[0](), sema_object); TEST_ASSERT_EQUAL_HEX(CL_SEMAPHORE_REFERENCE_COUNT_KHR, param_name); @@ -3710,24 +3708,24 @@ void testSemaphoreGetInfoReferenceCount(void) } static cl_int clGetSemaphoreInfoKHR_testSemaphoreGetProperties( - cl_semaphore_khr sema_object, - cl_semaphore_info_khr param_name, - size_t param_value_size, - void* param_value, - size_t* param_value_size_ret, - int num_calls) + cl_semaphore_khr sema_object, cl_semaphore_info_khr param_name, + size_t param_value_size, void *param_value, size_t *param_value_size_ret, + int /*num_calls*/) { - static const cl_semaphore_properties_khr test_properties[] = - {CL_SEMAPHORE_TYPE_KHR, - CL_SEMAPHORE_TYPE_BINARY_KHR}; + static const cl_semaphore_properties_khr test_properties[] = { + CL_SEMAPHORE_TYPE_KHR, CL_SEMAPHORE_TYPE_BINARY_KHR + }; TEST_ASSERT_EQUAL_PTR(semaphorePool[0](), sema_object); TEST_ASSERT_EQUAL_HEX(CL_SEMAPHORE_PROPERTIES_KHR, param_name); - TEST_ASSERT(param_value == nullptr || param_value_size >= sizeof(test_properties)); + TEST_ASSERT(param_value == nullptr + || param_value_size >= sizeof(test_properties)); if (param_value_size_ret != nullptr) *param_value_size_ret = sizeof(test_properties); if (param_value != nullptr) { - static_cast(param_value)[0] = test_properties[0]; - static_cast(param_value)[1] = test_properties[1]; + static_cast(param_value)[0] = + test_properties[0]; + static_cast(param_value)[1] = + test_properties[1]; } return CL_SUCCESS; @@ -3748,20 +3746,19 @@ void testSemaphoreGetInfoProperties(void) } static cl_int clGetSemaphoreInfoKHR_testSemaphoreGetType( - cl_semaphore_khr sema_object, - cl_semaphore_info_khr param_name, - size_t param_value_size, - void* param_value, - size_t* param_value_size_ret, - int num_calls) + cl_semaphore_khr sema_object, cl_semaphore_info_khr param_name, + size_t param_value_size, void *param_value, size_t *param_value_size_ret, + int /*num_calls*/) { TEST_ASSERT_EQUAL_PTR(semaphorePool[0](), sema_object); TEST_ASSERT_EQUAL_HEX(CL_SEMAPHORE_TYPE_KHR, param_name); - TEST_ASSERT(param_value == nullptr || param_value_size >= sizeof(cl_semaphore_type_khr)); + TEST_ASSERT(param_value == nullptr + || param_value_size >= sizeof(cl_semaphore_type_khr)); if (param_value_size_ret != nullptr) *param_value_size_ret = sizeof(cl_semaphore_type_khr); if (param_value != nullptr) - *static_cast(param_value) = CL_SEMAPHORE_TYPE_BINARY_KHR; + *static_cast(param_value) = + CL_SEMAPHORE_TYPE_BINARY_KHR; return CL_SUCCESS; } @@ -3779,16 +3776,14 @@ void testSemaphoreGetInfoType(void) } static cl_int clGetSemaphoreInfoKHR_testSemaphoreGetPayload( - cl_semaphore_khr sema_object, - cl_semaphore_info_khr param_name, - size_t param_value_size, - void* param_value, - size_t* param_value_size_ret, - int num_calls) + cl_semaphore_khr sema_object, cl_semaphore_info_khr param_name, + size_t param_value_size, void *param_value, size_t *param_value_size_ret, + int /*num_calls*/) { TEST_ASSERT_EQUAL_PTR(semaphorePool[0](), sema_object); TEST_ASSERT_EQUAL_HEX(CL_SEMAPHORE_PAYLOAD_KHR, param_name); - TEST_ASSERT(param_value == nullptr || param_value_size >= sizeof(cl_semaphore_payload_khr)); + TEST_ASSERT(param_value == nullptr + || param_value_size >= sizeof(cl_semaphore_payload_khr)); if (param_value_size_ret != nullptr) *param_value_size_ret = sizeof(cl_semaphore_payload_khr); if (param_value != nullptr) @@ -3810,18 +3805,16 @@ void testSemaphoreGetInfoPayload(void) } static cl_int clGetSemaphoreInfoKHR_testSemaphoreGetDevices( - cl_semaphore_khr sema_object, - cl_semaphore_info_khr param_name, - size_t param_value_size, - void* param_value, - size_t* param_value_size_ret, - int num_calls) + cl_semaphore_khr sema_object, cl_semaphore_info_khr param_name, + size_t param_value_size, void *param_value, size_t *param_value_size_ret, + int /*num_calls*/) { - static const cl_device_id test_devices[] = - {make_device_id(0), make_device_id(1)}; + static const cl_device_id test_devices[] = { make_device_id(0), + make_device_id(1) }; TEST_ASSERT_EQUAL_PTR(semaphorePool[0](), sema_object); TEST_ASSERT_EQUAL_HEX(CL_DEVICE_HANDLE_LIST_KHR, param_name); - TEST_ASSERT(param_value == nullptr || param_value_size >= sizeof(test_devices)); + TEST_ASSERT(param_value == nullptr + || param_value_size >= sizeof(test_devices)); if (param_value_size_ret != nullptr) *param_value_size_ret = sizeof(test_devices); if (param_value != nullptr) { @@ -3898,16 +3891,12 @@ static int make_external_semaphore_fd( } static cl_int clGetSemaphoreHandleForTypeKHR_GetHandles( - cl_semaphore_khr sema_object, - cl_device_id device, - cl_external_semaphore_handle_type_khr handle_type, - size_t handle_size, - void* handle_ptr, - size_t* handle_size_ret, - int num_calls) + cl_semaphore_khr sema_object, cl_device_id device, + cl_external_semaphore_handle_type_khr handle_type, size_t handle_size, + void *handle_ptr, size_t *handle_size_ret, int /*num_calls*/) { - (void) sema_object; - (void) device; + (void)sema_object; + (void)device; switch (handle_type) { #if defined(cl_khr_external_semaphore_dx_fence) @@ -3973,7 +3962,7 @@ static cl_int clGetSemaphoreHandleForTypeKHR_GetHandles( return CL_INVALID_OPERATION; } -void testTemplateGetSemaphoreHandleForTypeKHR() +void testTemplateGetSemaphoreHandleForTypeKHR(void) { clGetDeviceInfo_StubWithCallback(clGetDeviceInfo_platform); clGetPlatformInfo_StubWithCallback(clGetPlatformInfo_version_2_0); @@ -3981,7 +3970,8 @@ void testTemplateGetSemaphoreHandleForTypeKHR() cl::Device device(make_device_id(0)); - clGetSemaphoreHandleForTypeKHR_StubWithCallback(clGetSemaphoreHandleForTypeKHR_GetHandles); + clGetSemaphoreHandleForTypeKHR_StubWithCallback( + clGetSemaphoreHandleForTypeKHR_GetHandles); cl::Semaphore semaphore; #if defined(cl_khr_external_semaphore_dx_fence) From 826abb167a253164e784e490eba208be138ea9af Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Wed, 6 Sep 2023 10:24:59 +0200 Subject: [PATCH 12/12] CMock update --- external/CMock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/CMock b/external/CMock index 379a9a8d..c548629a 160000 --- a/external/CMock +++ b/external/CMock @@ -1 +1 @@ -Subproject commit 379a9a8d5dd5cdff8fd345710dd70ae26f966c71 +Subproject commit c548629a478ef07f89db8b86c1dd4041a1cf4053