diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 0d9888d4..2b2e56d8 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -3,25 +3,12 @@ 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 + defaults: + run: + shell: bash steps: - uses: actions/checkout@v3 with: @@ -30,11 +17,16 @@ jobs: - 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 + run: $GITHUB_WORKSPACE/scripts/check-format.sh + origin/`if [[ "${{ github.event_name }}" == "push" ]]; then echo "main"; else echo "${{ github.base_ref }}"; fi` + --binary clang-format linux: runs-on: ubuntu-latest needs: format + defaults: + run: + shell: bash strategy: matrix: CMAKE: [3.26.4] @@ -43,30 +35,30 @@ jobs: CXX_NAME: g++ VER: 11 EXCLUSIVE_C_FLAGS: -Wno-maybe-uninitialized - - C_NAME: gcc - CXX_NAME: g++ - VER: 13 - EXCLUSIVE_C_FLAGS: -Wno-maybe-uninitialized - - C_NAME: clang - CXX_NAME: clang++ - VER: 14 - EXCLUSIVE_C_FLAGS: "" - - C_NAME: clang - CXX_NAME: clang++ - VER: 16 - EXCLUSIVE_C_FLAGS: "" + # - C_NAME: gcc + # CXX_NAME: g++ + # VER: 13 + # EXCLUSIVE_C_FLAGS: -Wno-maybe-uninitialized + # - C_NAME: clang + # CXX_NAME: clang++ + # VER: 14 + # EXCLUSIVE_C_FLAGS: "" + # - C_NAME: clang + # CXX_NAME: clang++ + # VER: 16 + # EXCLUSIVE_C_FLAGS: "" DEPS: [os, vcpkg] BIN: [64] STD: - C: 11 # Utils C library uses C11 functions (e.g. timespec_get) CXX: 14 # Utils C++ library uses C14 types (e.g. integer_sequence) - - C: 17 - CXX: 17 + # - C: 17 + # CXX: 17 CONF: - GEN: Unix Makefiles CONFIG: Debug - - GEN: Unix Makefiles - CONFIG: Release + # - GEN: Unix Makefiles + # CONFIG: Release - GEN: Ninja Multi-Config CONFIG: Release IMAGE: @@ -87,31 +79,53 @@ jobs: CXXFLAGS: -Wall -Wextra -pedantic -Werror -m${{matrix.BIN}} -Wno-missing-field-initializers steps: - - name: Checkout OpenCL-SDK - uses: actions/checkout@v3 - with: - fetch-depth: 0 - submodules: recursive + - name: Set up vcpkg triplet + if: matrix.DEPS == 'vcpkg' + run: if [[ "${{ matrix.BIN }}" == "64" ]]; then + echo "VCPKG_TRIPLET=x64-linux" >> $GITHUB_ENV; + else + echo "VCPKG_TRIPLET=x86-linux" >> $GITHUB_ENV; + fi + + - name: Cache dependencies (vcpkg) + if: matrix.DEPS == 'vcpkg' + id: vcpkg-install + uses: actions/cache@v3 + with: + path: /opt/Microsoft/vcpkg + key: vcpkg-linux-${{matrix.BIN}} - - name: Configure, package & install OpenCL-Headers - shell: bash - run: $CMAKE_EXE + - name: Install dependencies (vcpkg) + if: matrix.DEPS == 'vcpkg' && steps.vcpkg-install.outputs.cache-hit != 'true' + run: | + cd /opt/Microsoft/vcpkg + git pull + ./bootstrap-vcpkg.sh + ./vcpkg install sfml:$VCPKG_TRIPLET tclap:$VCPKG_TRIPLET glm:$VCPKG_TRIPLET glew:$VCPKG_TRIPLET stb:$VCPKG_TRIPLET + + - name: Checkout OpenCL-SDK + uses: actions/checkout@v3 + with: + fetch-depth: 0 + submodules: recursive + + - name: Configure, package & install OpenCL-Headers + run: $CMAKE_EXE -G "${{matrix.CONF.GEN}}" `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` -D BUILD_TESTING=OFF -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH -S $GITHUB_WORKSPACE/external/OpenCL-Headers -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build && - $CPACK_EXE + $CPACK_EXE --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" -G DEB - `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-C ${{matrix.CONF.CONFIG}}"; fi` + -C ${{matrix.CONF.CONFIG}} -B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" && - dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb + dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb - - name: Configure, package & install OpenCL-ICD-Loader - shell: bash - run: $CMAKE_EXE + - name: Configure, package & install OpenCL-ICD-Loader + run: $CMAKE_EXE -G "${{matrix.CONF.GEN}}" `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` -D BUILD_TESTING=OFF @@ -120,143 +134,126 @@ jobs: -B $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then - $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build -- -j`nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build --parallel `nproc`; else - $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build --config Debug -- -j`nproc`; - $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build --config Release -- -j`nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build --config Debug --parallel `nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build --config Release --parallel `nproc`; fi && - $CPACK_EXE + $CPACK_EXE --config "$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build/CPackConfig.cmake" -G DEB - `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-C ${{matrix.CONF.CONFIG}}"; fi` + -C ${{matrix.CONF.CONFIG}} -B "$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/package-deb" && - dpkg -i $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/package-deb/*.deb && - dpkg -c $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/package-deb/ocl-icd-opencl-dev_3.0-1_amd64.deb + dpkg -i $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/package-deb/*.deb - - name: Configure, package & install OpenCL-CLHPP - shell: bash - run: $CMAKE_EXE + - name: Configure, package & install OpenCL-CLHPP + run: $CMAKE_EXE -G "${{matrix.CONF.GEN}}" `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` -D BUILD_TESTING=OFF -D BUILD_EXAMPLES=OFF + -D BUILD_DOCS=OFF -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH -S $GITHUB_WORKSPACE/external/OpenCL-CLHPP -B $GITHUB_WORKSPACE/external/OpenCL-CLHPP/build && - $CPACK_EXE + $CPACK_EXE --config "$GITHUB_WORKSPACE/external/OpenCL-CLHPP/build/CPackConfig.cmake" -G DEB - `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-C ${{matrix.CONF.CONFIG}}"; fi` + -C ${{matrix.CONF.CONFIG}} -B "$GITHUB_WORKSPACE/external/OpenCL-CLHPP/package-deb" && - dpkg -i $GITHUB_WORKSPACE/external/OpenCL-CLHPP/package-deb/*.deb + dpkg -i $GITHUB_WORKSPACE/external/OpenCL-CLHPP/package-deb/*.deb - - name: Configure - shell: bash - run: if [[ "${{matrix.DEPS}}" == "vcpkg" ]]; - then - git clone https://github.com/Microsoft/vcpkg.git; - ./vcpkg/bootstrap-vcpkg.sh; - ./vcpkg/vcpkg install sfml tclap glm glew stb; - TOOLCHAIN_ARG="-D CMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake"; - else - TOOLCHAIN_ARG=""; - fi && - $CMAKE_EXE - $TOOLCHAIN_ARG - -G "${{matrix.CONF.GEN}}" - `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` - -D BUILD_DOCS=ON - -D BUILD_TESTING=ON - -D BUILD_EXAMPLES=ON - -D OPENCL_SDK_BUILD_SAMPLES=ON - -D OPENCL_ICD_LOADER_BUILD_TESTING=ON - -D CMAKE_C_STANDARD=${{matrix.STD.C}} - -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install - -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH - -S $GITHUB_WORKSPACE - -B $GITHUB_WORKSPACE/build - - - name: Build - shell: bash - run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; - then - $CMAKE_EXE --build $GITHUB_WORKSPACE/build -- -j`nproc`; - else - $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug -- -j`nproc`; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release -- -j`nproc`; - fi; - - - name: Test - shell: bash - working-directory: ${{runner.workspace}}/OpenCL-SDK/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 - `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-C ${{matrix.CONF.CONFIG}}"; fi` - -B "$GITHUB_WORKSPACE/package-deb" && - dpkg -c $GITHUB_WORKSPACE/package-deb/khronos-opencl-sdk_2023.4.17-1_amd64.deb - - - name: Consume (DEB) - shell: bash - run: dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && - $CMAKE_EXE - -G "${{matrix.CONF.GEN}}" - `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` - -D CMAKE_C_STANDARD=${{matrix.STD.C}} - -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} - -S $GITHUB_WORKSPACE/test/cmake/pkgconfig/useutil - -B $GITHUB_WORKSPACE/build_package && - if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; - then - $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package -- -j`nproc`; - else - $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug -- -j`nproc`; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release -- -j`nproc`; - fi; - - - name: Uninstall (DEB) - shell: bash - run: apt-get remove -y ocl-icd-opencl-dev ocl-icd-libopencl1 opencl-c-headers opencl-clhpp-headers opencl-sdk - - - name: Test install - shell: bash - run: $CMAKE_EXE - --build $GITHUB_WORKSPACE/build - --target install - `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "--config ${{matrix.CONF.CONFIG}}"; fi` - -- - -j`nproc` + - name: Configure + run: $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" + `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` + `if [[ "${{matrix.DEPS}}" == "vcpkg" ]]; then echo "-D CMAKE_TOOLCHAIN_FILE=/opt/Microsoft/vcpkg/scripts/buildsystems/vcpkg.cmake"; fi;` + `if [[ "${{matrix.DEPS}}" == "vcpkg" ]]; then echo "-D VCPKG_TARGET_TRIPLET=$VCPKG_TRIPLET"; fi;` + -D BUILD_DOCS=ON + -D BUILD_TESTING=ON + -D BUILD_EXAMPLES=ON + -D OPENCL_SDK_BUILD_SAMPLES=ON + -D OPENCL_ICD_LOADER_BUILD_TESTING=ON + -D CMAKE_C_STANDARD=${{matrix.STD.C}} + -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH + -S $GITHUB_WORKSPACE + -B $GITHUB_WORKSPACE/build - - name: Consume (install) - shell: bash - run: $CMAKE_EXE - -G "${{matrix.CONF.GEN}}" - `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` - -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install - -D CMAKE_C_STANDARD=${{matrix.STD.C}} - -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} - -S $GITHUB_WORKSPACE/test/cmake/pkgconfig/useutil - -B $GITHUB_WORKSPACE/build_install && - if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; - then - $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install -- -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: Build + run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; + then + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --parallel `nproc`; + else + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release; + fi; + + - name: Test + working-directory: ${{runner.workspace}}/OpenCL-SDK/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 + run: $CPACK_EXE + --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" + -G DEB + -C ${{matrix.CONF.CONFIG}} + -B "$GITHUB_WORKSPACE/package-deb" + + - name: Consume (DEB) + run: dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && + $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" + `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` + -D CMAKE_C_STANDARD=${{matrix.STD.C}} + -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} + -S $GITHUB_WORKSPACE/test/cmake/pkgconfig/useutil + -B $GITHUB_WORKSPACE/build_package && + if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; + then + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --parallel `nproc`; + else + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release; + fi; + + - name: Uninstall (DEB) + run: apt-get remove -y "khronos-opencl-loader*" opencl-c-headers opencl-clhpp-headers opencl-sdk + + - name: Test install + run: $CMAKE_EXE + --build $GITHUB_WORKSPACE/build + --target install + --config ${{matrix.CONF.CONFIG}} + --parallel `nproc` + + - name: Consume (install) + shell: bash + run: $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" + `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` + -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install + -D CMAKE_C_STANDARD=${{matrix.STD.C}} + -D CMAKE_CXX_STANDARD=${{matrix.STD.CXX}} + -S $GITHUB_WORKSPACE/test/cmake/pkgconfig/useutil + -B $GITHUB_WORKSPACE/build_install && + if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; + then + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --parallel `nproc`; + else + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Debug; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Release; + fi; windows: + if: false runs-on: windows-latest needs: format strategy: @@ -496,6 +493,7 @@ jobs: } macos: + if: false runs-on: macos-latest needs: format strategy: @@ -625,6 +623,7 @@ jobs: OCL_ICD_VENDORS=/usr/local/etc/OpenCL/vendors ctest -C Release --output-on-failure --parallel `sysctl -n hw.logicalcpu` python: + if: false name: Exercise Python examples on ${{matrix.os}} strategy: matrix: @@ -661,6 +660,7 @@ jobs: done checkruby: + if: false name: Check Ruby Samples ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: @@ -686,6 +686,7 @@ jobs: working-directory: ruby android: + if: false runs-on: ubuntu-latest needs: format strategy: diff --git a/samples/core/copybuffer/main.cpp b/samples/core/copybuffer/main.cpp index c8a9df52..9895d44c 100644 --- a/samples/core/copybuffer/main.cpp +++ b/samples/core/copybuffer/main.cpp @@ -100,7 +100,7 @@ int main(int argc, char** argv) if (!strcmp(argv[i], "-d")) { ++i; - if (i < static_cast(argc)) + if (i < argc) { deviceIndex = static_cast(strtoul(argv[i], NULL, 10)); @@ -109,7 +109,7 @@ int main(int argc, char** argv) else if (!strcmp(argv[i], "-p")) { ++i; - if (i < static_cast(argc)) + if (i < argc) { platformIndex = static_cast(strtoul(argv[i], NULL, 10)); diff --git a/samples/core/copybufferkernel/main.cpp b/samples/core/copybufferkernel/main.cpp index be436bd0..20e31dad 100644 --- a/samples/core/copybufferkernel/main.cpp +++ b/samples/core/copybufferkernel/main.cpp @@ -111,7 +111,7 @@ int main(int argc, char** argv) if (!strcmp(argv[i], "-d")) { ++i; - if (i < static_cast(argc)) + if (i < argc) { deviceIndex = static_cast(strtoul(argv[i], NULL, 10)); @@ -120,7 +120,7 @@ int main(int argc, char** argv) else if (!strcmp(argv[i], "-p")) { ++i; - if (i < static_cast(argc)) + if (i < argc) { platformIndex = static_cast(strtoul(argv[i], NULL, 10));