From 2db194373ce3cb9b7aa3c8107995145f46c829b6 Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Wed, 14 Jun 2023 15:33:39 +0000 Subject: [PATCH 01/11] Add Package CMake module --- .gitignore | 12 ++++++++++++ CMakeLists.txt | 1 + cmake/Package.cmake | 44 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 .gitignore create mode 100644 cmake/Package.cmake diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..708e035e --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +# Build dir +[Bb]uild/ + +# Package dir +[Pp]ackage[-_\s\d]*/ + +# Test dir +[Tt]esting/ + +# CMake +CMakeCache.txt +CMakeFiles/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 7002c372..b1eba897 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,7 @@ option(OPENCL_HEADERS_BUILD_CXX_TESTS "Enable support for OpenCL C headers testi 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..1c5fd812 --- /dev/null +++ b/cmake/Package.cmake @@ -0,0 +1,44 @@ +set(CPACK_PACKAGE_VENDOR "khronos") + +set(CPACK_PACKAGE_DESCRIPTION "OpenCL API C headers") + +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") + +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() + +if(NOT CPACK_SOURCE_IGNORE_FILES) + set(CPACK_SOURCE_IGNORE_FILES="/.github/") +endif() + +# DEB packaging configuration +set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_VENDOR}) + +set(CPACK_DEBIAN_PACKAGE_HOMEPAGE + "https://github.com/KhronosGroup/OpenCL-Headers") + +# Get Debian package name from project name +string(TOLOWER ${PROJECT_NAME} DEBIAN_PACKAGE_NAME) +string(REPLACE "opencl" "opencl-" DEBIAN_PACKAGE_NAME ${DEBIAN_PACKAGE_NAME}) + +# Version number [epoch:]upstream_version[-debian_revision] +set(CPACK_DEBIAN_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}) # upstream_version +set(CPACK_DEBIAN_PACKAGE_RELEASE "1") # devian_revision (because this is a + # non-native pkg) + +set(CPACK_DEBIAN_PACKAGE_NAME + "${CPACK_PACKAGE_VENDOR}-${DEBIAN_PACKAGE_NAME}" + CACHE STRING "Package name" FORCE) + +set(CPACK_DEBIAN_PACKAGE_FILE_NAME "${CPACK_DEBIAN_PACKAGE_NAME}-${CPACK_DEBIAN_PACKAGE_VERSION}") + +# Package file name in deb format: +# _-_.deb +set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) + +set(CPACK_DEBIAN_PACKAGE_DEBUG ON) + +include(CPack) From 5130a09daa7584c47d8e8640548ca6787ebfc2ab Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Wed, 14 Jun 2023 15:50:11 +0000 Subject: [PATCH 02/11] Add github action for DEB packaging and consuming --- .github/workflows/linux.yml | 37 +++++++++++++++++++++++++++++++++++-- cmake/Package.cmake | 2 +- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 9c1733b0..c8dcf8c3 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -158,12 +158,13 @@ jobs: BIN: 32 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 steps: - name: Checkout OpenCL-Headers uses: actions/checkout@v3 - + - name: Configure shell: bash run: $CMAKE_EXE @@ -190,6 +191,38 @@ jobs: $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release -- -j`nproc`; fi; + - name: Package DEB + shell: bash + run: $CPACK_EXE + --config "$GITHUB_WORKSPACE/build/CPackSourceConfig.cmake" + -G DEB + -C Release + -B "$GITHUB_WORKSPACE/package-deb" + + - name: Consume (Package DEB) + shell: bash + run: | + dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb + rm -rf $GITHUB_WORKSPACE/build + $CMAKE_EXE \ + -G "${{matrix.GEN}}" \ + -D BUILD_TESTING=ON \ + `if [[ "${{matrix.GEN}}" == "Unix Makefiles" ]]; then echo -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}}; fi;` \ + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" \ + -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} \ + -D CMAKE_C_EXTENSIONS=OFF \ + -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" \ + -D CMAKE_CXX_COMPILER=${{matrix.CXX_COMPILER}} \ + -D CMAKE_CXX_EXTENSIONS=OFF \ + -B$GITHUB_WORKSPACE/build \ + -H$GITHUB_WORKSPACE + if [[ "${{matrix.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-Headers/build @@ -212,4 +245,4 @@ jobs: - name: Test pkg-config shell: bash - run: PKG_CONFIG_PATH="$GITHUB_WORKSPACE/install/share/pkgconfig" pkg-config OpenCL-Headers --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" + run: pkg-config OpenCL-Headers --cflags | grep -q "\-I/usr/local/include" diff --git a/cmake/Package.cmake b/cmake/Package.cmake index 1c5fd812..6e97e130 100644 --- a/cmake/Package.cmake +++ b/cmake/Package.cmake @@ -11,7 +11,7 @@ if(NOT CPACK_PACKAGING_INSTALL_PREFIX) endif() if(NOT CPACK_SOURCE_IGNORE_FILES) - set(CPACK_SOURCE_IGNORE_FILES="/.github/") + set(CPACK_SOURCE_IGNORE_FILES="/.github/;/build/") endif() # DEB packaging configuration From 609f82995857e3f29d2434e5b3f0b080e98f26ca Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Thu, 15 Jun 2023 14:41:17 +0000 Subject: [PATCH 03/11] Fixes from review: now packaging the install tree; Debian package name and installation prefix fixed --- .github/workflows/linux.yml | 3 ++- .gitignore | 3 +++ CMakeLists.txt | 2 +- cmake/Package.cmake | 25 +++++++++++-------------- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index c8dcf8c3..95f5d65b 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -178,6 +178,7 @@ jobs: -D CMAKE_CXX_COMPILER=${{matrix.CXX_COMPILER}} -D CMAKE_CXX_EXTENSIONS=OFF -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install + -D CPACK_PACKAGING_INSTALL_PREFIX=/usr -B$GITHUB_WORKSPACE/build -H$GITHUB_WORKSPACE @@ -194,7 +195,7 @@ jobs: - name: Package DEB shell: bash run: $CPACK_EXE - --config "$GITHUB_WORKSPACE/build/CPackSourceConfig.cmake" + --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" -G DEB -C Release -B "$GITHUB_WORKSPACE/package-deb" diff --git a/.gitignore b/.gitignore index 708e035e..78760ca1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,9 @@ # Build dir [Bb]uild/ +# Install dir +[Ii]nstall/ + # Package dir [Pp]ackage[-_\s\d]*/ diff --git a/CMakeLists.txt b/CMakeLists.txt index b1eba897..9339a8c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ if(TARGET Headers) endif() project(OpenCLHeaders - VERSION 2.2 + VERSION 3.0 LANGUAGES C # Ideally should be NONE, but GNUInstallDirs detects platform arch using try_compile # https://stackoverflow.com/questions/43379311/why-does-project-affect-cmakes-opinion-on-cmake-sizeof-void-p ) diff --git a/cmake/Package.cmake b/cmake/Package.cmake index 6e97e130..8ba7d479 100644 --- a/cmake/Package.cmake +++ b/cmake/Package.cmake @@ -1,6 +1,6 @@ set(CPACK_PACKAGE_VENDOR "khronos") -set(CPACK_PACKAGE_DESCRIPTION "OpenCL API C headers") +set(CPACK_PACKAGE_DESCRIPTION "OpenCL (Open Computing Language) C header files") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") @@ -10,34 +10,31 @@ if(NOT CPACK_PACKAGING_INSTALL_PREFIX) set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") endif() -if(NOT CPACK_SOURCE_IGNORE_FILES) - set(CPACK_SOURCE_IGNORE_FILES="/.github/;/build/") -endif() - # DEB packaging configuration set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_VENDOR}) set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/KhronosGroup/OpenCL-Headers") -# Get Debian package name from project name -string(TOLOWER ${PROJECT_NAME} DEBIAN_PACKAGE_NAME) -string(REPLACE "opencl" "opencl-" DEBIAN_PACKAGE_NAME ${DEBIAN_PACKAGE_NAME}) - # Version number [epoch:]upstream_version[-debian_revision] -set(CPACK_DEBIAN_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}) # upstream_version -set(CPACK_DEBIAN_PACKAGE_RELEASE "1") # devian_revision (because this is a +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-c-headers") set(CPACK_DEBIAN_PACKAGE_NAME - "${CPACK_PACKAGE_VENDOR}-${DEBIAN_PACKAGE_NAME}" + "${DEBIAN_PACKAGE_NAME}" CACHE STRING "Package name" FORCE) -set(CPACK_DEBIAN_PACKAGE_FILE_NAME "${CPACK_DEBIAN_PACKAGE_NAME}-${CPACK_DEBIAN_PACKAGE_VERSION}") +# 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 DEB-DEFAULT) +set(CPACK_DEBIAN_FILE_NAME "${CPACK_PACKAGE_VENDOR}-${DEBIAN_PACKAGE_NAME}_${PACKAGE_VERSION_REVISION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") set(CPACK_DEBIAN_PACKAGE_DEBUG ON) From 79f0b43079ec8da9b1b83df54f24d300c30a7c73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C5=91rinc=20Serf=C5=91z=C5=91?= Date: Wed, 26 Jul 2023 16:26:57 +0200 Subject: [PATCH 04/11] Update Windows CI --- .github/workflows/linux.yml | 1 + .github/workflows/macos.yml | 1 + .github/workflows/windows.yml | 35 ++++++++++++++++++++--------------- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 95f5d65b..ce294efd 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -4,6 +4,7 @@ on: [push, pull_request] jobs: compatibility: + if: false runs-on: ubuntu-20.04 container: streamhpc/opencl-sdk-base:ubuntu-18.04-20220127 strategy: diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index fa790349..142d07a2 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -4,6 +4,7 @@ on: [push, pull_request] jobs: compatibility: + if: false runs-on: macos-11 strategy: matrix: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 25be8638..60ae2c85 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -4,29 +4,26 @@ on: [push, pull_request] jobs: compatibility: - runs-on: windows-latest + runs-on: windows-22 strategy: matrix: - VER: [v142, v143] + VER: [v142, v143, clangcl] EXT: [ON, OFF] - GEN: [Visual Studio 17 2022] + GEN: [Visual Studio 17 2022, Ninja Multi-Config] BIN: [x64, x86] STD: [99, 11, 17] - include: - - VER: v141 - EXT: OFF - GEN: Ninja Multi-Config - BIN: x64 - STD: 89 # /Za + exclude: + - VER: clangcl + GEN: Ninja Multi-Config 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: - - uses: actions/checkout@v3 - - name: Cache Ninja install if: matrix.GEN == 'Ninja Multi-Config' id: ninja-install @@ -44,6 +41,8 @@ jobs: Expand-Archive ~\Downloads\ninja-win.zip -DestinationPath ${env:NINJA_ROOT}\ Remove-Item ~\Downloads\* + - uses: actions/checkout@v3 + - name: Configure (MSBuild) if: matrix.GEN == 'Visual Studio 17 2022' shell: pwsh @@ -55,6 +54,7 @@ jobs: -A $BIN ` -T ${{matrix.VER}} ` -D BUILD_TESTING=ON ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` -D CMAKE_C_FLAGS="${C_FLAGS}" ` -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` -S "${env:GITHUB_WORKSPACE}" ` @@ -75,6 +75,7 @@ jobs: -G '${{matrix.GEN}}' ` -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` -D BUILD_TESTING=ON ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` -D CMAKE_C_FLAGS="${C_FLAGS}" ` -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` @@ -95,7 +96,7 @@ jobs: /noLogo } - - name: Build (Ninja) + - name: Build (Ninja Multi-Config) if: matrix.GEN == 'Ninja Multi-Config' shell: pwsh run: | @@ -142,6 +143,7 @@ jobs: -G '${{matrix.GEN}}' ` -A $BIN ` -T ${{matrix.VER}} ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` -D CMAKE_C_FLAGS="${C_FLAGS}" ` -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` @@ -157,7 +159,7 @@ jobs: /noLogo ` } - - name: Consume (PkgConfig - bare Ninja) + - name: Consume (PkgConfig - bare Ninja Multi-Config) if: matrix.GEN == 'Ninja Multi-Config' shell: pwsh run: | @@ -172,6 +174,7 @@ jobs: -G '${{matrix.GEN}}' ` -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` -D BUILD_TESTING=ON ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` -D CMAKE_C_FLAGS="${C_FLAGS}" ` -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` @@ -202,6 +205,7 @@ jobs: -G '${{matrix.GEN}}' ` -A $BIN ` -T ${{matrix.VER}} ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` -D CMAKE_C_FLAGS="${C_FLAGS}" ` -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` @@ -217,7 +221,7 @@ jobs: /noLogo ` } - - name: Consume (PkgConfig - SDK Ninja) + - name: Consume (PkgConfig - SDK Ninja Multi-Config) if: matrix.GEN == 'Ninja Multi-Config' shell: pwsh run: | @@ -232,6 +236,7 @@ jobs: -G '${{matrix.GEN}}' ` -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` -D BUILD_TESTING=ON ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` -D CMAKE_C_FLAGS="${C_FLAGS}" ` -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` @@ -244,4 +249,4 @@ jobs: --config ${Config} ` -- ` -j ${env:NUMBER_OF_PROCESSORS} ` - } \ No newline at end of file + } From d8a691e05fe16d905c6b72015b7935674ebde6bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C5=91rinc=20Serf=C5=91z=C5=91?= Date: Wed, 26 Jul 2023 16:44:29 +0200 Subject: [PATCH 05/11] Update Linux CI --- .github/workflows/linux.yml | 319 ++++++++++++++-------------------- .github/workflows/windows.yml | 14 +- CMakeLists.txt | 11 +- OpenCL-Headers.pc.in | 2 +- cmake/Package.cmake | 47 +++++ tests/pkgconfig/pkgconfig.c | 2 +- tests/test_headers.c | 20 +-- 7 files changed, 201 insertions(+), 214 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index ce294efd..5687e17a 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -4,163 +4,81 @@ on: [push, pull_request] jobs: compatibility: - if: false - runs-on: ubuntu-20.04 - container: streamhpc/opencl-sdk-base:ubuntu-18.04-20220127 + runs-on: ubuntu-latest strategy: matrix: - # TODO: CMake 3.0.2 is Headers minimum (and ubuntu 18.04 canonical apt repo ver), not this repo's min - # Replace once backport to C++14 happened - include: - # Unix Makefiles - # One CMake version - # For all compilers - # For all configurations - # For all target architectures - - C_COMPILER: gcc-7 - CXX_COMPILER: g++-7 - CMAKE: 3.0.2 - GEN: Unix Makefiles - CONFIG: Debug - BIN: 64 - - C_COMPILER: gcc-7 - CXX_COMPILER: g++-7 - CMAKE: 3.0.2 - GEN: Unix Makefiles - CONFIG: Release - BIN: 64 - - C_COMPILER: gcc-7 - CXX_COMPILER: g++-7 - CMAKE: 3.0.2 - GEN: Unix Makefiles - CONFIG: Debug - BIN: 32 - - C_COMPILER: gcc-7 - CXX_COMPILER: g++-7 - CMAKE: 3.0.2 - GEN: Unix Makefiles - CONFIG: Release - BIN: 32 - - C_COMPILER: gcc-11 - CXX_COMPILER: g++-11 - CMAKE: 3.0.2 - GEN: Unix Makefiles - CONFIG: Debug - BIN: 64 - - C_COMPILER: gcc-11 - CXX_COMPILER: g++-11 - CMAKE: 3.0.2 - GEN: Unix Makefiles - CONFIG: Release - BIN: 64 - - C_COMPILER: gcc-11 - CXX_COMPILER: g++-11 - CMAKE: 3.0.2 - GEN: Unix Makefiles - CONFIG: Debug - BIN: 32 - - C_COMPILER: gcc-11 - CXX_COMPILER: g++-11 - CMAKE: 3.0.2 - GEN: Unix Makefiles - CONFIG: Release - BIN: 32 - - C_COMPILER: clang-8 - CXX_COMPILER: clang++-8 - CMAKE: 3.0.2 - GEN: Unix Makefiles - CONFIG: Debug - BIN: 64 - - C_COMPILER: clang-8 - CXX_COMPILER: clang++-8 - CMAKE: 3.0.2 - GEN: Unix Makefiles - CONFIG: Release - BIN: 64 - - C_COMPILER: clang-8 - CXX_COMPILER: clang++-8 - CMAKE: 3.0.2 - GEN: Unix Makefiles + CMAKE: [3.26.4] + C_COMPILER: + - gcc-11 + - gcc-13 + - clang-14 + - clang-16 + BIN: [64] + STD: [99, 11, 17] + CONF: + - GEN: Unix Makefiles CONFIG: Debug - BIN: 32 - - C_COMPILER: clang-8 - CXX_COMPILER: clang++-8 - CMAKE: 3.0.2 - GEN: Unix Makefiles + - GEN: Unix Makefiles CONFIG: Release - BIN: 32 - - C_COMPILER: clang-13 - CXX_COMPILER: clang++-13 - CMAKE: 3.0.2 - GEN: Unix Makefiles - CONFIG: Debug - BIN: 64 - - C_COMPILER: clang-13 - CXX_COMPILER: clang++-13 - CMAKE: 3.0.2 - GEN: Unix Makefiles + - GEN: Ninja Multi-Config CONFIG: Release + IMAGE: + - streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + include: + - CMAKE: 3.0.2 + C_COMPILER: gcc-9 BIN: 64 - - C_COMPILER: clang-13 - CXX_COMPILER: clang++-13 - CMAKE: 3.0.2 - GEN: Unix Makefiles - CONFIG: Debug - BIN: 32 - - C_COMPILER: clang-13 - CXX_COMPILER: clang++-13 - CMAKE: 3.0.2 - GEN: Unix Makefiles - CONFIG: Release - BIN: 32 - # Multi-config generators - # One CMake version - # For all compilers - # For all architectures - - C_COMPILER: gcc-7 - CXX_COMPILER: g++-7 - CMAKE: 3.22.1 - GEN: Ninja Multi-Config + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Debug + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + - CMAKE: 3.0.2 + C_COMPILER: gcc-9 BIN: 64 - - C_COMPILER: gcc-7 - CXX_COMPILER: g++-7 - CMAKE: 3.22.1 - GEN: Ninja Multi-Config + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Release + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + - CMAKE: 3.0.2 + C_COMPILER: gcc-9 BIN: 32 - - C_COMPILER: gcc-11 - CXX_COMPILER: g++-11 - CMAKE: 3.22.1 - GEN: Ninja Multi-Config - BIN: 64 - - C_COMPILER: gcc-11 - CXX_COMPILER: g++-11 - CMAKE: 3.22.1 - GEN: Ninja Multi-Config + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Debug + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + - CMAKE: 3.0.2 + C_COMPILER: gcc-9 BIN: 32 - - C_COMPILER: clang-8 - CXX_COMPILER: clang++-8 - CMAKE: 3.22.1 - GEN: Ninja Multi-Config + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Release + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + - CMAKE: 3.0.2 + C_COMPILER: gcc-11 BIN: 64 - - C_COMPILER: clang-8 - CXX_COMPILER: clang++-8 - CMAKE: 3.22.1 - GEN: Ninja Multi-Config - BIN: 32 - - C_COMPILER: clang-13 - CXX_COMPILER: clang++-13 - CMAKE: 3.22.1 - GEN: Ninja Multi-Config + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Debug + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + - CMAKE: 3.0.2 + C_COMPILER: gcc-11 BIN: 64 - - C_COMPILER: clang-13 - CXX_COMPILER: clang++-13 - CMAKE: 3.22.1 - GEN: Ninja Multi-Config - BIN: 32 + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Release + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + container: ${{matrix.IMAGE}} env: CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake CPACK_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cpack CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest + CC: ${{matrix.C_COMPILER}} steps: - name: Checkout OpenCL-Headers @@ -168,24 +86,21 @@ jobs: - name: Configure shell: bash - run: $CMAKE_EXE - -G "${{matrix.GEN}}" + run: mkdir $GITHUB_WORKSPACE/build && cd $GITHUB_WORKSPACE/build && + $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" -D BUILD_TESTING=ON - `if [[ "${{matrix.GEN}}" == "Unix Makefiles" ]]; then echo -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}}; fi;` + -D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}} + -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} -D CMAKE_C_EXTENSIONS=OFF - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" - -D CMAKE_CXX_COMPILER=${{matrix.CXX_COMPILER}} - -D CMAKE_CXX_EXTENSIONS=OFF - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install - -D CPACK_PACKAGING_INSTALL_PREFIX=/usr - -B$GITHUB_WORKSPACE/build - -H$GITHUB_WORKSPACE + -D CMAKE_INSTALL_PREFIX=`if [[ "${{matrix.CMAKE}}" != "3.0.2" ]]; then echo "$GITHUB_WORKSPACE/install"; else echo "/usr"; fi` + `if [[ "${{matrix.CMAKE}}" != "3.0.2" ]]; then echo "-D CPACK_PACKAGING_INSTALL_PREFIX=/usr"; fi` + $GITHUB_WORKSPACE - name: Build shell: bash - run: if [[ "${{matrix.GEN}}" == "Unix Makefiles" ]]; + run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then $CMAKE_EXE --build $GITHUB_WORKSPACE/build -- -j`nproc`; else @@ -193,6 +108,17 @@ jobs: $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release -- -j`nproc`; fi; + - name: Test + shell: bash + working-directory: ${{runner.workspace}}/OpenCL-Headers/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 @@ -201,50 +127,65 @@ jobs: -C Release -B "$GITHUB_WORKSPACE/package-deb" - - name: Consume (Package DEB) - shell: bash - run: | - dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb - rm -rf $GITHUB_WORKSPACE/build - $CMAKE_EXE \ - -G "${{matrix.GEN}}" \ - -D BUILD_TESTING=ON \ - `if [[ "${{matrix.GEN}}" == "Unix Makefiles" ]]; then echo -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}}; fi;` \ - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" \ - -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} \ - -D CMAKE_C_EXTENSIONS=OFF \ - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" \ - -D CMAKE_CXX_COMPILER=${{matrix.CXX_COMPILER}} \ - -D CMAKE_CXX_EXTENSIONS=OFF \ - -B$GITHUB_WORKSPACE/build \ - -H$GITHUB_WORKSPACE - if [[ "${{matrix.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 + - name: Consume (DEB) shell: bash - working-directory: ${{runner.workspace}}/OpenCL-Headers/build - run: if [[ "${{matrix.GEN}}" == "Unix Makefiles" ]]; + run: dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && + mkdir $GITHUB_WORKSPACE/build_package && cd $GITHUB_WORKSPACE/build_package && + $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" + -D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}} + -D CMAKE_C_STANDARD=${{matrix.STD}} + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" + -D CMAKE_C_EXTENSIONS=OFF + $GITHUB_WORKSPACE/tests/pkgconfig/bare && + if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then - $CTEST_EXE --output-on-failure --parallel `nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package -- -j`nproc`; else - $CTEST_EXE --output-on-failure -C Debug --parallel `nproc`; - $CTEST_EXE --output-on-failure -C Release --parallel `nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug -- -j`nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release -- -j`nproc`; fi; + - name: Test pkg-config (DEB) + shell: bash + # /usr/include is already on the include search path, + # we don't expect any output + run: pkg-config OpenCL-Headers --cflags + + - name: Uninstall (DEB) + shell: bash + run: apt-get remove -y opencl-c-headers + + - name: Re-configure for install + if: matrix.CMAKE == '3.0.2' + shell: bash + run: cd $GITHUB_WORKSPACE/build && + $CMAKE_EXE -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install $GITHUB_WORKSPACE + - name: Test install shell: bash - run: if [[ "${{matrix.GEN}}" == "Unix Makefiles" ]]; + 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}}" + -D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}} + -D CMAKE_C_STANDARD=${{matrix.STD}} + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install + $GITHUB_WORKSPACE/tests/pkgconfig/bare && + if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then - $CMAKE_EXE --build $GITHUB_WORKSPACE/build --target install -- -j`nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install -- -j`nproc`; else - $CMAKE_EXE --build $GITHUB_WORKSPACE/build --target install --config Release -- -j`nproc`; + $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 + - name: Test pkg-config (install) shell: bash - run: pkg-config OpenCL-Headers --cflags | grep -q "\-I/usr/local/include" + run: PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/share/pkgconfig + pkg-config OpenCL-Headers --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 60ae2c85..79ddf694 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -4,17 +4,24 @@ on: [push, pull_request] jobs: compatibility: - runs-on: windows-22 + if: false + runs-on: windows-2022 strategy: matrix: VER: [v142, v143, clangcl] EXT: [ON, OFF] GEN: [Visual Studio 17 2022, Ninja Multi-Config] - BIN: [x64, x86] + BIN: [x64] STD: [99, 11, 17] exclude: - VER: clangcl GEN: Ninja Multi-Config + include: + - VER: v142 + EXT: OFF + 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 @@ -41,7 +48,8 @@ jobs: Expand-Archive ~\Downloads\ninja-win.zip -DestinationPath ${env:NINJA_ROOT}\ Remove-Item ~\Downloads\* - - uses: actions/checkout@v3 + - name: Checkout OpenCL-Headers + uses: actions/checkout@v3 - name: Configure (MSBuild) if: matrix.GEN == 'Visual Studio 17 2022' diff --git a/CMakeLists.txt b/CMakeLists.txt index 9339a8c0..7fb337d6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,11 +16,10 @@ option(OPENCL_HEADERS_BUILD_TESTING "Enable support for OpenCL C headers testing option(OPENCL_HEADERS_BUILD_CXX_TESTS "Enable support for OpenCL C headers testing in C++ mode." ON) set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +include(GNUInstallDirs) include(JoinPaths) include(Package) -include(GNUInstallDirs) - add_library(Headers INTERFACE) add_library(OpenCL::Headers ALIAS Headers) @@ -141,11 +140,3 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) set_target_properties(headers_generate PROPERTIES FOLDER "Generation") set_target_properties(headers_copy PROPERTIES FOLDER "Generation") endif() - -join_paths(OPENCL_INCLUDEDIR_PC "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") - -configure_file(OpenCL-Headers.pc.in OpenCL-Headers.pc @ONLY) -set(pkg_config_location ${CMAKE_INSTALL_DATADIR}/pkgconfig) -install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCL-Headers.pc - DESTINATION ${pkg_config_location}) diff --git a/OpenCL-Headers.pc.in b/OpenCL-Headers.pc.in index 92d241c4..5cc13fba 100644 --- a/OpenCL-Headers.pc.in +++ b/OpenCL-Headers.pc.in @@ -1,4 +1,4 @@ -prefix=@CMAKE_INSTALL_PREFIX@ +prefix=@PKGCONFIG_PREFIX@ includedir=@OPENCL_INCLUDEDIR_PC@ Name: OpenCL-Headers diff --git a/cmake/Package.cmake b/cmake/Package.cmake index 8ba7d479..225b53ad 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-Headers.pc +# One for installing (cmake --install), which contains CMAKE_INSTALL_PREFIX as prefix +# And another for the Debian package, which contains CPACK_PACKAGING_INSTALL_PREFIX as prefix + +join_paths(OPENCL_INCLUDEDIR_PC "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") + +set(pkg_config_location ${CMAKE_INSTALL_DATADIR}/pkgconfig) +set(PKGCONFIG_PREFIX "${CMAKE_INSTALL_PREFIX}") +configure_file( + OpenCL-Headers.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL-Headers.pc + @ONLY) +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL-Headers.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-Headers.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL-Headers.pc + @ONLY) + # This install component is only needed in the Debian package + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL-Headers.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}) diff --git a/tests/pkgconfig/pkgconfig.c b/tests/pkgconfig/pkgconfig.c index d4c1f013..64edf54b 100644 --- a/tests/pkgconfig/pkgconfig.c +++ b/tests/pkgconfig/pkgconfig.c @@ -1,6 +1,6 @@ #include -int main() +int main(void) { return sizeof(cl_platform_id) - sizeof(cl_context); } diff --git a/tests/test_headers.c b/tests/test_headers.c index 460a182d..65e5f5d0 100644 --- a/tests/test_headers.c +++ b/tests/test_headers.c @@ -29,7 +29,7 @@ will use inttypes.h for C compiles and cinttypes for C++ compiles. #include "CL/cl.h" -int test_char() +int test_char(void) { /* char */ /* Constructor */ @@ -89,7 +89,7 @@ int test_char() return 0; } -int test_uchar() +int test_uchar(void) { /* uchar */ /* Constructor */ @@ -149,7 +149,7 @@ int test_uchar() return 0; } -int test_short() +int test_short(void) { /* short */ /* Constructor */ @@ -209,7 +209,7 @@ int test_short() return 0; } -int test_ushort() +int test_ushort(void) { /* ushort */ /* Constructor */ @@ -269,7 +269,7 @@ int test_ushort() return 0; } -int test_int() +int test_int(void) { /* int */ /* Constructor */ @@ -329,7 +329,7 @@ int test_int() return 0; } -int test_uint() +int test_uint(void) { /* uint */ /* Constructor */ @@ -389,7 +389,7 @@ int test_uint() return 0; } -int test_long() +int test_long(void) { /* long */ /* Constructor */ @@ -449,7 +449,7 @@ int test_long() return 0; } -int test_ulong() +int test_ulong(void) { /* ulong */ /* Constructor */ @@ -509,7 +509,7 @@ int test_ulong() return 0; } -int test_float() +int test_float(void) { /* float */ /* Constructor */ @@ -571,7 +571,7 @@ int test_float() return 0; } -int test_double() +int test_double(void) { /* double */ /* Constructor */ From 325511b42617dc61bc68ee1256e1115928652c2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C5=91rinc=20Serf=C5=91z=C5=91?= Date: Fri, 28 Jul 2023 10:28:37 +0200 Subject: [PATCH 06/11] Updated macos CI --- .github/workflows/linux.yml | 1 + .github/workflows/macos.yml | 50 +++++++++++++++++++++++++---------- .github/workflows/windows.yml | 20 ++++++++------ 3 files changed, 49 insertions(+), 22 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 5687e17a..b9bc0626 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -4,6 +4,7 @@ on: [push, pull_request] jobs: compatibility: + if: false runs-on: ubuntu-latest strategy: matrix: diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 142d07a2..186741cc 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -4,13 +4,24 @@ on: [push, pull_request] jobs: compatibility: - if: false - runs-on: macos-11 + runs-on: macos-13 strategy: matrix: - VER: [9, 11] - GEN: [Xcode, Ninja Multi-Config] - STD: [11, 17] + C_COMPILER: + - /usr/bin/gcc # Actually Clang 14 + - /usr/local/bin/gcc-11 + - /usr/local/bin/gcc-13 + GEN: + - Xcode + - Ninja Multi-Config + STD: [99, 11, 17] + exclude: + - C_COMPILER: /usr/bin/gcc + GEN: Ninja Multi-Config + - C_COMPILER: /usr/local/bin/gcc-11 + GEN: Xcode + - C_COMPILER: /usr/local/bin/gcc-13 + GEN: Xcode steps: - name: Checkout OpenCL-Headers @@ -25,21 +36,16 @@ jobs: # Install Ninja only if it's the selected generator and it's not available. cmake --version - - name: Install gcc if required - run: | - if [[ ! `which /usr/local/bin/gcc-${{matrix.VER}}` ]]; then brew install gcc@${{matrix.VER}}; fi; - - - name: Configure CMake + - name: Configure shell: bash run: cmake -G "${{matrix.GEN}}" -D BUILD_TESTING=ON -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" - -D CMAKE_C_COMPILER=/usr/local/bin/gcc-${{matrix.VER}} + -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} + -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=OFF - -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Werror" - -D CMAKE_CXX_COMPILER=/usr/local/bin/g++-${{matrix.VER}} - -D CMAKE_CXX_EXTENSIONS=OFF + -D CMAKE_C_STANDARD_REQUIRED=ON -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -S $GITHUB_WORKSPACE -B $GITHUB_WORKSPACE/build @@ -61,6 +67,22 @@ jobs: shell: bash run: cmake --build $GITHUB_WORKSPACE/build --target install --config Release + - name: Consume (install) + shell: bash + run: cmake + -G "${{matrix.GEN}}" + -D BUILD_TESTING=ON + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" + -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} + -D CMAKE_C_STANDARD=${{matrix.STD}} + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_C_STANDARD_REQUIRED=ON + -D CMAKE_INSTALL_PREFIX=$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: | diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 79ddf694..592c2ff1 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -9,7 +9,6 @@ jobs: strategy: matrix: VER: [v142, v143, clangcl] - EXT: [ON, OFF] GEN: [Visual Studio 17 2022, Ninja Multi-Config] BIN: [x64] STD: [99, 11, 17] @@ -18,7 +17,6 @@ jobs: GEN: Ninja Multi-Config include: - VER: v142 - EXT: OFF GEN: Visual Studio 17 2022 BIN: x86 STD: 99 @@ -64,7 +62,8 @@ jobs: -D BUILD_TESTING=ON ` -D CMAKE_C_STANDARD=${{matrix.STD}} ` -D CMAKE_C_FLAGS="${C_FLAGS}" ` - -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_C_STANDARD_REQUIRED=ON ` -S "${env:GITHUB_WORKSPACE}" ` -B "${env:GITHUB_WORKSPACE}\build" @@ -85,7 +84,8 @@ jobs: -D BUILD_TESTING=ON ` -D CMAKE_C_STANDARD=${{matrix.STD}} ` -D CMAKE_C_FLAGS="${C_FLAGS}" ` - -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_C_STANDARD_REQUIRED=ON ` -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` -S "${env:GITHUB_WORKSPACE}" ` -B "${env:GITHUB_WORKSPACE}\build" @@ -153,7 +153,8 @@ jobs: -T ${{matrix.VER}} ` -D CMAKE_C_STANDARD=${{matrix.STD}} ` -D CMAKE_C_FLAGS="${C_FLAGS}" ` - -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_C_STANDARD_REQUIRED=ON ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" @@ -184,7 +185,8 @@ jobs: -D BUILD_TESTING=ON ` -D CMAKE_C_STANDARD=${{matrix.STD}} ` -D CMAKE_C_FLAGS="${C_FLAGS}" ` - -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_C_STANDARD_REQUIRED=ON ` -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` @@ -215,7 +217,8 @@ jobs: -T ${{matrix.VER}} ` -D CMAKE_C_STANDARD=${{matrix.STD}} ` -D CMAKE_C_FLAGS="${C_FLAGS}" ` - -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_C_STANDARD_REQUIRED=ON ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" @@ -246,7 +249,8 @@ jobs: -D BUILD_TESTING=ON ` -D CMAKE_C_STANDARD=${{matrix.STD}} ` -D CMAKE_C_FLAGS="${C_FLAGS}" ` - -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_C_STANDARD_REQUIRED=ON ` -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` From 6b78441c56efd4c3300c694ae9026c401859a3e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C5=91rinc=20Serf=C5=91z=C5=91?= Date: Fri, 28 Jul 2023 11:11:28 +0200 Subject: [PATCH 07/11] Added formatting and moved CI to presubmit.yml --- .clang-format | 123 +++++++ .github/workflows/linux.yml | 192 ----------- .github/workflows/macos.yml | 90 ------ .github/workflows/presubmit.yml | 550 ++++++++++++++++++++++++++++++++ .github/workflows/windows.yml | 264 --------------- scripts/check-format.sh | 55 ++++ tests/pkgconfig/pkgconfig.c | 5 +- 7 files changed, 729 insertions(+), 550 deletions(-) create mode 100644 .clang-format delete mode 100644 .github/workflows/linux.yml delete mode 100644 .github/workflows/macos.yml create mode 100644 .github/workflows/presubmit.yml delete mode 100644 .github/workflows/windows.yml create mode 100755 scripts/check-format.sh 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/linux.yml b/.github/workflows/linux.yml deleted file mode 100644 index b9bc0626..00000000 --- a/.github/workflows/linux.yml +++ /dev/null @@ -1,192 +0,0 @@ -name: Linux - -on: [push, pull_request] - -jobs: - compatibility: - if: false - runs-on: ubuntu-latest - strategy: - matrix: - CMAKE: [3.26.4] - C_COMPILER: - - gcc-11 - - gcc-13 - - clang-14 - - clang-16 - BIN: [64] - STD: [99, 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.0.2 - C_COMPILER: gcc-9 - BIN: 64 - STD: 99 - CONF: - GEN: Unix Makefiles - CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 - - CMAKE: 3.0.2 - C_COMPILER: gcc-9 - BIN: 64 - STD: 99 - CONF: - GEN: Unix Makefiles - CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 - - CMAKE: 3.0.2 - C_COMPILER: gcc-9 - BIN: 32 - STD: 99 - CONF: - GEN: Unix Makefiles - CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 - - CMAKE: 3.0.2 - C_COMPILER: gcc-9 - BIN: 32 - STD: 99 - CONF: - GEN: Unix Makefiles - CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 - - CMAKE: 3.0.2 - C_COMPILER: gcc-11 - BIN: 64 - STD: 99 - CONF: - GEN: Unix Makefiles - CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 - - CMAKE: 3.0.2 - C_COMPILER: gcc-11 - BIN: 64 - STD: 99 - CONF: - GEN: Unix Makefiles - CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 - container: ${{matrix.IMAGE}} - env: - CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake - CPACK_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cpack - CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest - CC: ${{matrix.C_COMPILER}} - - steps: - - name: Checkout OpenCL-Headers - uses: actions/checkout@v3 - - - name: Configure - shell: bash - run: mkdir $GITHUB_WORKSPACE/build && cd $GITHUB_WORKSPACE/build && - $CMAKE_EXE - -G "${{matrix.CONF.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" - -D CMAKE_C_EXTENSIONS=OFF - -D CMAKE_INSTALL_PREFIX=`if [[ "${{matrix.CMAKE}}" != "3.0.2" ]]; then echo "$GITHUB_WORKSPACE/install"; else echo "/usr"; fi` - `if [[ "${{matrix.CMAKE}}" != "3.0.2" ]]; then echo "-D CPACK_PACKAGING_INSTALL_PREFIX=/usr"; fi` - $GITHUB_WORKSPACE - - - 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-Headers/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 Release - -B "$GITHUB_WORKSPACE/package-deb" - - - name: Consume (DEB) - shell: bash - run: dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && - mkdir $GITHUB_WORKSPACE/build_package && cd $GITHUB_WORKSPACE/build_package && - $CMAKE_EXE - -G "${{matrix.CONF.GEN}}" - -D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" - -D CMAKE_C_EXTENSIONS=OFF - $GITHUB_WORKSPACE/tests/pkgconfig/bare && - 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: Test pkg-config (DEB) - shell: bash - # /usr/include is already on the include search path, - # we don't expect any output - run: pkg-config OpenCL-Headers --cflags - - - name: Uninstall (DEB) - shell: bash - run: apt-get remove -y opencl-c-headers - - - name: Re-configure for install - if: matrix.CMAKE == '3.0.2' - 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}}" - -D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" - -D CMAKE_C_EXTENSIONS=OFF - -D CMAKE_PREFIX_PATH=$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-Headers --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml deleted file mode 100644 index 186741cc..00000000 --- a/.github/workflows/macos.yml +++ /dev/null @@ -1,90 +0,0 @@ -name: MacOS - -on: [push, pull_request] - -jobs: - compatibility: - runs-on: macos-13 - strategy: - matrix: - C_COMPILER: - - /usr/bin/gcc # Actually Clang 14 - - /usr/local/bin/gcc-11 - - /usr/local/bin/gcc-13 - GEN: - - Xcode - - Ninja Multi-Config - STD: [99, 11, 17] - exclude: - - C_COMPILER: /usr/bin/gcc - GEN: Ninja Multi-Config - - C_COMPILER: /usr/local/bin/gcc-11 - GEN: Xcode - - C_COMPILER: /usr/local/bin/gcc-13 - GEN: Xcode - - steps: - - name: Checkout OpenCL-Headers - uses: actions/checkout@v3 - - - name: Create Build Environment - shell: bash - 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: Configure - shell: bash - run: cmake - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" - -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=OFF - -D CMAKE_C_STANDARD_REQUIRED=ON - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/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` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` - cmake --build $GITHUB_WORKSPACE/build --config Debug --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` - - - name: Test - working-directory: ${{runner.workspace}}/OpenCL-Headers/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 --target install --config Release - - - name: Consume (install) - shell: bash - run: cmake - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" - -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=OFF - -D CMAKE_C_STANDARD_REQUIRED=ON - -D CMAKE_INSTALL_PREFIX=$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; - PKG_CONFIG_PATH="$GITHUB_WORKSPACE/install/share/pkgconfig" pkg-config OpenCL-Headers --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml new file mode 100644 index 00000000..ed57fb2c --- /dev/null +++ b/.github/workflows/presubmit.yml @@ -0,0 +1,550 @@ +name: Presubmit + +on: [push, pull_request] + +jobs: + format: + name: Code formatting + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Install clang-format + run: sudo apt-get install clang-format + - name: Check format + run: ./scripts/check-format.sh origin/main --binary clang-format + + linux: + runs-on: ubuntu-latest + needs: format + strategy: + matrix: + CMAKE: [3.26.4] + C_COMPILER: + - gcc-11 + - gcc-13 + - clang-14 + - clang-16 + BIN: [64] + STD: [99, 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.0.2 + C_COMPILER: gcc-9 + BIN: 64 + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Debug + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + - CMAKE: 3.0.2 + C_COMPILER: gcc-9 + BIN: 64 + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Release + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + - CMAKE: 3.0.2 + C_COMPILER: gcc-9 + BIN: 32 + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Debug + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + - CMAKE: 3.0.2 + C_COMPILER: gcc-9 + BIN: 32 + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Release + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + - CMAKE: 3.0.2 + C_COMPILER: gcc-11 + BIN: 64 + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Debug + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + - CMAKE: 3.0.2 + C_COMPILER: gcc-11 + BIN: 64 + STD: 99 + CONF: + GEN: Unix Makefiles + CONFIG: Release + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + container: ${{matrix.IMAGE}} + env: + CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake + CPACK_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cpack + CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest + CC: ${{matrix.C_COMPILER}} + + steps: + - name: Checkout OpenCL-Headers + uses: actions/checkout@v3 + + - name: Configure + shell: bash + run: mkdir $GITHUB_WORKSPACE/build && cd $GITHUB_WORKSPACE/build && + $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" + -D BUILD_TESTING=ON + -D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}} + -D CMAKE_C_STANDARD=${{matrix.STD}} + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_INSTALL_PREFIX=`if [[ "${{matrix.CMAKE}}" != "3.0.2" ]]; then echo "$GITHUB_WORKSPACE/install"; else echo "/usr"; fi` + `if [[ "${{matrix.CMAKE}}" != "3.0.2" ]]; then echo "-D CPACK_PACKAGING_INSTALL_PREFIX=/usr"; fi` + $GITHUB_WORKSPACE + + - 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-Headers/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 Release + -B "$GITHUB_WORKSPACE/package-deb" + + - name: Consume (DEB) + shell: bash + run: dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && + mkdir $GITHUB_WORKSPACE/build_package && cd $GITHUB_WORKSPACE/build_package && + $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" + -D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}} + -D CMAKE_C_STANDARD=${{matrix.STD}} + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" + -D CMAKE_C_EXTENSIONS=OFF + $GITHUB_WORKSPACE/tests/pkgconfig/bare && + 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: Test pkg-config (DEB) + shell: bash + # /usr/include is already on the include search path, + # we don't expect any output + run: pkg-config OpenCL-Headers --cflags + + - name: Uninstall (DEB) + shell: bash + run: apt-get remove -y opencl-c-headers + + - name: Re-configure for install + if: matrix.CMAKE == '3.0.2' + 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}}" + -D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}} + -D CMAKE_C_STANDARD=${{matrix.STD}} + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_PREFIX_PATH=$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-Headers --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" + + windows: + runs-on: windows-2022 + needs: format + strategy: + matrix: + VER: [v142, v143, clangcl] + GEN: [Visual Studio 17 2022, Ninja Multi-Config] + BIN: [x64] + STD: [99, 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-Headers + uses: actions/checkout@v3 + + - name: Configure (MSBuild) + if: matrix.GEN == 'Visual Studio 17 2022' + shell: pwsh + run: | + $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + $C_FLAGS = '/W4 /WX' + & cmake ` + -G '${{matrix.GEN}}' ` + -A $BIN ` + -T ${{matrix.VER}} ` + -D BUILD_TESTING=ON ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_FLAGS="${C_FLAGS}" ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_C_STANDARD_REQUIRED=ON ` + -S "${env:GITHUB_WORKSPACE}" ` + -B "${env:GITHUB_WORKSPACE}\build" + + - name: Configure (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 = '/W4 /WX' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D BUILD_TESTING=ON ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_FLAGS="${C_FLAGS}" ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_C_STANDARD_REQUIRED=ON ` + -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` + -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 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}" + 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 (PkgConfig - bare MSBuild) + if: matrix.GEN == 'Visual Studio 17 2022' + shell: pwsh + run: | + $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + $C_FLAGS = '/W4 /WX' + & cmake ` + -G '${{matrix.GEN}}' ` + -A $BIN ` + -T ${{matrix.VER}} ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_FLAGS="${C_FLAGS}" ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_C_STANDARD_REQUIRED=ON ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` + -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} ` + -- ` + /verbosity:minimal ` + /maxCpuCount ` + /noLogo ` + } + + - name: Consume (PkgConfig - bare 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 = '/W4 /WX' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D BUILD_TESTING=ON ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_FLAGS="${C_FLAGS}" ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_C_STANDARD_REQUIRED=ON ` + -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` + -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} ` + -- ` + -j ${env:NUMBER_OF_PROCESSORS} ` + } + + - 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("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeaders/OpenCLHeadersTargets.cmake")' + + - name: Consume (PkgConfig - SDK MSBuild) + if: matrix.GEN == 'Visual Studio 17 2022' + shell: pwsh + run: | + $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + $C_FLAGS = '/W4 /WX' + & cmake ` + -G '${{matrix.GEN}}' ` + -A $BIN ` + -T ${{matrix.VER}} ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_FLAGS="${C_FLAGS}" ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_C_STANDARD_REQUIRED=ON ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` + -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} ` + -- ` + /verbosity:minimal ` + /maxCpuCount ` + /noLogo ` + } + + - name: Consume (PkgConfig - SDK 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 = '/W4 /WX' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D BUILD_TESTING=ON ` + -D CMAKE_C_STANDARD=${{matrix.STD}} ` + -D CMAKE_C_FLAGS="${C_FLAGS}" ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_C_STANDARD_REQUIRED=ON ` + -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` + -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} ` + -- ` + -j ${env:NUMBER_OF_PROCESSORS} ` + } + + macos: + runs-on: macos-13 + needs: format + strategy: + matrix: + C_COMPILER: + - /usr/bin/gcc # Actually Clang 14 + - /usr/local/bin/gcc-11 + - /usr/local/bin/gcc-13 + GEN: + - Xcode + - Ninja Multi-Config + STD: [99, 11, 17] + exclude: + - C_COMPILER: /usr/bin/gcc + GEN: Ninja Multi-Config + - C_COMPILER: /usr/local/bin/gcc-11 + GEN: Xcode + - C_COMPILER: /usr/local/bin/gcc-13 + GEN: Xcode + + steps: + - name: Checkout OpenCL-Headers + uses: actions/checkout@v3 + + - name: Create Build Environment + shell: bash + 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: Configure + shell: bash + run: cmake + -G "${{matrix.GEN}}" + -D BUILD_TESTING=ON + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" + -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} + -D CMAKE_C_STANDARD=${{matrix.STD}} + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_C_STANDARD_REQUIRED=ON + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/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` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` + cmake --build $GITHUB_WORKSPACE/build --config Debug --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` + + - name: Test + working-directory: ${{runner.workspace}}/OpenCL-Headers/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 --target install --config Release + + - name: Consume (install) + shell: bash + run: cmake + -G "${{matrix.GEN}}" + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" + -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} + -D CMAKE_C_STANDARD=${{matrix.STD}} + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_C_STANDARD_REQUIRED=ON + -D CMAKE_INSTALL_PREFIX=$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; + PKG_CONFIG_PATH="$GITHUB_WORKSPACE/install/share/pkgconfig" pkg-config OpenCL-Headers --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml deleted file mode 100644 index 592c2ff1..00000000 --- a/.github/workflows/windows.yml +++ /dev/null @@ -1,264 +0,0 @@ -name: Windows - -on: [push, pull_request] - -jobs: - compatibility: - if: false - runs-on: windows-2022 - strategy: - matrix: - VER: [v142, v143, clangcl] - GEN: [Visual Studio 17 2022, Ninja Multi-Config] - BIN: [x64] - STD: [99, 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@v2 - 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-Headers - uses: actions/checkout@v3 - - - name: Configure (MSBuild) - if: matrix.GEN == 'Visual Studio 17 2022' - shell: pwsh - run: | - $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} - $C_FLAGS = '/W4 /WX' - & cmake ` - -G '${{matrix.GEN}}' ` - -A $BIN ` - -T ${{matrix.VER}} ` - -D BUILD_TESTING=ON ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_FLAGS="${C_FLAGS}" ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_C_STANDARD_REQUIRED=ON ` - -S "${env:GITHUB_WORKSPACE}" ` - -B "${env:GITHUB_WORKSPACE}\build" - - - name: Configure (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 = '/W4 /WX' - & cmake ` - -G '${{matrix.GEN}}' ` - -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D BUILD_TESTING=ON ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_FLAGS="${C_FLAGS}" ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_C_STANDARD_REQUIRED=ON ` - -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` - -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 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}" - 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 (PkgConfig - bare MSBuild) - if: matrix.GEN == 'Visual Studio 17 2022' - shell: pwsh - run: | - $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} - $C_FLAGS = '/W4 /WX' - & cmake ` - -G '${{matrix.GEN}}' ` - -A $BIN ` - -T ${{matrix.VER}} ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_FLAGS="${C_FLAGS}" ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_C_STANDARD_REQUIRED=ON ` - -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` - -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} ` - -- ` - /verbosity:minimal ` - /maxCpuCount ` - /noLogo ` - } - - - name: Consume (PkgConfig - bare 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 = '/W4 /WX' - & cmake ` - -G '${{matrix.GEN}}' ` - -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D BUILD_TESTING=ON ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_FLAGS="${C_FLAGS}" ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_C_STANDARD_REQUIRED=ON ` - -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` - -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` - -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} ` - -- ` - -j ${env:NUMBER_OF_PROCESSORS} ` - } - - - 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("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeaders/OpenCLHeadersTargets.cmake")' - - - name: Consume (PkgConfig - SDK MSBuild) - if: matrix.GEN == 'Visual Studio 17 2022' - shell: pwsh - run: | - $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} - $C_FLAGS = '/W4 /WX' - & cmake ` - -G '${{matrix.GEN}}' ` - -A $BIN ` - -T ${{matrix.VER}} ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_FLAGS="${C_FLAGS}" ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_C_STANDARD_REQUIRED=ON ` - -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` - -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} ` - -- ` - /verbosity:minimal ` - /maxCpuCount ` - /noLogo ` - } - - - name: Consume (PkgConfig - SDK 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 = '/W4 /WX' - & cmake ` - -G '${{matrix.GEN}}' ` - -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D BUILD_TESTING=ON ` - -D CMAKE_C_STANDARD=${{matrix.STD}} ` - -D CMAKE_C_FLAGS="${C_FLAGS}" ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_C_STANDARD_REQUIRED=ON ` - -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` - -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` - -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} ` - -- ` - -j ${env:NUMBER_OF_PROCESSORS} ` - } 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 diff --git a/tests/pkgconfig/pkgconfig.c b/tests/pkgconfig/pkgconfig.c index 64edf54b..a520a130 100644 --- a/tests/pkgconfig/pkgconfig.c +++ b/tests/pkgconfig/pkgconfig.c @@ -1,6 +1,3 @@ #include -int main(void) -{ - return sizeof(cl_platform_id) - sizeof(cl_context); -} +int main(void) { return sizeof(cl_platform_id) - sizeof(cl_context); } From d1dc77f1b5bea160e7e2cf2a9ab2ba8d4d58acba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C5=91rinc=20Serf=C5=91z=C5=91?= Date: Mon, 31 Jul 2023 09:50:56 +0200 Subject: [PATCH 08/11] Build android binaries --- .github/workflows/presubmit.yml | 36 +++++++++++++++++++++++++++++++++ .gitignore | 3 +++ 2 files changed, 39 insertions(+) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index ed57fb2c..18eca955 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -548,3 +548,39 @@ jobs: run: | if [[ ! `which pkg-config` ]]; then brew install pkg-config; fi; PKG_CONFIG_PATH="$GITHUB_WORKSPACE/install/share/pkgconfig" pkg-config OpenCL-Headers --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" + + android: + runs-on: ubuntu-22.04 + needs: format + strategy: + matrix: + ABI: + - arm64-v8a + - x86_64 + API_LEVEL: + - android-19 + - android-33 + CONFIG: + - Debug + - Release + steps: + - name: Checkout OpenCL-Headers + uses: actions/checkout@v3 + + - name: Configure + shell: bash + run: cmake + -G "Unix Makefiles" + -D BUILD_TESTING=ON + -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" + -D CMAKE_C_STANDARD_REQUIRED=ON + -D CMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake + -D ANDROID_ABI=${{matrix.ABI}} + -D ANDROID_PLATFORM=${{matrix.API_LEVEL}} + -S $GITHUB_WORKSPACE + -B $GITHUB_WORKSPACE/build + + - name: Build + shell: bash + run: cmake --build $GITHUB_WORKSPACE/build -j `nproc` diff --git a/.gitignore b/.gitignore index 78760ca1..19e3e6db 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ # CMake CMakeCache.txt CMakeFiles/ + +# Visual Studio Code +.vscode From aa0a18c43c45d5d74bc5da9aaeaab7f5f2be8cf5 Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Fri, 4 Aug 2023 09:19:58 +0000 Subject: [PATCH 09/11] Fixes for consistency with ICD-Loader CI --- .github/workflows/presubmit.yml | 56 ++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 18eca955..22c88404 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -3,17 +3,34 @@ 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: ./scripts/check-format.sh origin/main --binary clang-format + run: $GITHUB_WORKSPACE/scripts/check-format.sh origin/${{ needs.get-branch.outputs.branch }} --binary clang-format linux: runs-on: ubuntu-latest @@ -163,7 +180,10 @@ jobs: shell: bash # /usr/include is already on the include search path, # we don't expect any output - run: pkg-config OpenCL-Headers --cflags + run: if [[ $(pkg-config OpenCL --cflags) ]]; + then + exit 1; + fi; - name: Uninstall (DEB) shell: bash @@ -204,11 +224,11 @@ jobs: pkg-config OpenCL-Headers --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" windows: - runs-on: windows-2022 + runs-on: windows-latest needs: format strategy: matrix: - VER: [v142, v143, clangcl] + VER: [v141, v142, v143, clangcl] GEN: [Visual Studio 17 2022, Ninja Multi-Config] BIN: [x64] STD: [99, 11, 17] @@ -257,7 +277,7 @@ jobs: $C_FLAGS = '/W4 /WX' & cmake ` -G '${{matrix.GEN}}' ` - -A $BIN ` + -A ${BIN} ` -T ${{matrix.VER}} ` -D BUILD_TESTING=ON ` -D CMAKE_C_STANDARD=${{matrix.STD}} ` @@ -341,7 +361,7 @@ jobs: --prefix "${env:GITHUB_WORKSPACE}\install" ` --config Release - - name: Consume (PkgConfig - bare MSBuild) + - name: "Consume (MSBuild standalone): Configure/Build/Test" if: matrix.GEN == 'Visual Studio 17 2022' shell: pwsh run: | @@ -349,7 +369,7 @@ jobs: $C_FLAGS = '/W4 /WX' & cmake ` -G '${{matrix.GEN}}' ` - -A $BIN ` + -A ${BIN} ` -T ${{matrix.VER}} ` -D CMAKE_C_STANDARD=${{matrix.STD}} ` -D CMAKE_C_FLAGS="${C_FLAGS}" ` @@ -368,7 +388,7 @@ jobs: /noLogo ` } - - name: Consume (PkgConfig - bare Ninja Multi-Config) + - name: "Consume (Ninja Multi-Config standalone): Configure/Build/Test" if: matrix.GEN == 'Ninja Multi-Config' shell: pwsh run: | @@ -405,7 +425,7 @@ jobs: 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("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeaders/OpenCLHeadersTargets.cmake")' - - name: Consume (PkgConfig - SDK MSBuild) + - name: "Consume (MSBuild SDK): Configure/Build/Test" if: matrix.GEN == 'Visual Studio 17 2022' shell: pwsh run: | @@ -413,7 +433,7 @@ jobs: $C_FLAGS = '/W4 /WX' & cmake ` -G '${{matrix.GEN}}' ` - -A $BIN ` + -A ${BIN} ` -T ${{matrix.VER}} ` -D CMAKE_C_STANDARD=${{matrix.STD}} ` -D CMAKE_C_FLAGS="${C_FLAGS}" ` @@ -432,7 +452,7 @@ jobs: /noLogo ` } - - name: Consume (PkgConfig - SDK Ninja Multi-Config) + - name: "Consume (Ninja-Multi-Config SDK): Configure/Build/Test" if: matrix.GEN == 'Ninja Multi-Config' shell: pwsh run: | @@ -464,7 +484,7 @@ jobs: } macos: - runs-on: macos-13 + runs-on: macos-latest needs: format strategy: matrix: @@ -472,7 +492,7 @@ jobs: - /usr/bin/gcc # Actually Clang 14 - /usr/local/bin/gcc-11 - /usr/local/bin/gcc-13 - GEN: + GEN: - Xcode - Ninja Multi-Config STD: [99, 11, 17] @@ -537,7 +557,7 @@ jobs: -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=OFF -D CMAKE_C_STANDARD_REQUIRED=ON - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install + -D CMAKE_PREFIX_PATH="$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;` && @@ -546,11 +566,12 @@ jobs: - name: Test pkg-config shell: bash run: | - if [[ ! `which pkg-config` ]]; then brew install pkg-config; fi; - PKG_CONFIG_PATH="$GITHUB_WORKSPACE/install/share/pkgconfig" pkg-config OpenCL-Headers --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" + if [[ ! `which pkg-config` ]]; then brew install pkg-config; fi && + export PKG_CONFIG_PATH="$GITHUB_WORKSPACE/install/share/pkgconfig" && + pkg-config OpenCL-Headers --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" android: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest needs: format strategy: matrix: @@ -574,7 +595,6 @@ jobs: -D BUILD_TESTING=ON -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" - -D CMAKE_C_STANDARD_REQUIRED=ON -D CMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -D ANDROID_ABI=${{matrix.ABI}} -D ANDROID_PLATFORM=${{matrix.API_LEVEL}} From 736cb479530acfb42d443faef092f4e1911ae86f Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Mon, 14 Aug 2023 12:58:30 +0000 Subject: [PATCH 10/11] Fix macro definition for clangcl --- CL/cl_platform.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CL/cl_platform.h b/CL/cl_platform.h index e7a0d6f4..2d890769 100644 --- a/CL/cl_platform.h +++ b/CL/cl_platform.h @@ -77,7 +77,7 @@ extern "C" { #ifdef __GNUC__ #define CL_API_SUFFIX_DEPRECATED __attribute__((deprecated)) #define CL_API_PREFIX_DEPRECATED -#elif defined(_WIN32) +#elif defined(_MSC_VER) && !defined(__clang__) #define CL_API_SUFFIX_DEPRECATED #define CL_API_PREFIX_DEPRECATED __declspec(deprecated) #else From c1bdf3f20a86169ae1d9b9e267c4013cab65f113 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C5=91rinc=20Serf=C5=91z=C5=91?= Date: Tue, 15 Aug 2023 13:07:28 +0200 Subject: [PATCH 11/11] CMake minimum 3.16 --- .github/workflows/presubmit.yml | 94 +++++++++++++++++---------------- CMakeLists.txt | 4 +- cmake/Package.cmake | 53 ++++++++----------- 3 files changed, 73 insertions(+), 78 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 22c88404..b8c51747 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -53,89 +53,97 @@ 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.0.2 + - CMAKE: system C_COMPILER: gcc-9 BIN: 64 STD: 99 CONF: GEN: Unix Makefiles CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 - - CMAKE: 3.0.2 + IMAGE: streamhpc/opencl-sdk-base:ubuntu-20.04-20230717 + - CMAKE: system C_COMPILER: gcc-9 BIN: 64 STD: 99 CONF: GEN: Unix Makefiles CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 - - CMAKE: 3.0.2 + IMAGE: streamhpc/opencl-sdk-base:ubuntu-20.04-20230717 + - CMAKE: system C_COMPILER: gcc-9 BIN: 32 STD: 99 CONF: GEN: Unix Makefiles CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 - - CMAKE: 3.0.2 + IMAGE: streamhpc/opencl-sdk-base:ubuntu-20.04-20230717 + - CMAKE: system C_COMPILER: gcc-9 BIN: 32 STD: 99 CONF: GEN: Unix Makefiles CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 - - CMAKE: 3.0.2 + IMAGE: streamhpc/opencl-sdk-base:ubuntu-20.04-20230717 + - CMAKE: system C_COMPILER: gcc-11 BIN: 64 STD: 99 CONF: GEN: Unix Makefiles CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 - - CMAKE: 3.0.2 + IMAGE: streamhpc/opencl-sdk-base:ubuntu-22.04-20230717 + - CMAKE: system C_COMPILER: gcc-11 BIN: 64 STD: 99 CONF: GEN: Unix Makefiles CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + IMAGE: streamhpc/opencl-sdk-base:ubuntu-22.04-20230717 container: ${{matrix.IMAGE}} env: CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake CPACK_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cpack CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest CC: ${{matrix.C_COMPILER}} + CFLAGS: -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-Headers uses: actions/checkout@v3 - name: Configure shell: bash - run: mkdir $GITHUB_WORKSPACE/build && cd $GITHUB_WORKSPACE/build && - $CMAKE_EXE + run: $CMAKE_EXE -G "${{matrix.CONF.GEN}}" -D BUILD_TESTING=ON - -D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}} + `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" -D CMAKE_C_EXTENSIONS=OFF - -D CMAKE_INSTALL_PREFIX=`if [[ "${{matrix.CMAKE}}" != "3.0.2" ]]; then echo "$GITHUB_WORKSPACE/install"; else echo "/usr"; fi` - `if [[ "${{matrix.CMAKE}}" != "3.0.2" ]]; then echo "-D CPACK_PACKAGING_INSTALL_PREFIX=/usr"; fi` - $GITHUB_WORKSPACE + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install + -D CPACK_PACKAGING_INSTALL_PREFIX=/usr + -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`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --parallel `nproc`; else - $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug -- -j`nproc`; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release -- -j`nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug --parallel `nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release --parallel `nproc`; fi; - name: Test @@ -160,27 +168,28 @@ jobs: - name: Consume (DEB) shell: bash run: dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && - mkdir $GITHUB_WORKSPACE/build_package && cd $GITHUB_WORKSPACE/build_package && $CMAKE_EXE -G "${{matrix.CONF.GEN}}" - -D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}} + `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" -D CMAKE_C_EXTENSIONS=OFF - $GITHUB_WORKSPACE/tests/pkgconfig/bare && + -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 -- -j`nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --parallel `nproc`; else - $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug -- -j`nproc`; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release -- -j`nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug --parallel `nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release --parallel `nproc`; 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 --cflags) ]]; + run: | + pkg-config OpenCL-Headers --cflags + if [[ "$(pkg-config OpenCL-Headers --cflags)" ]]; then exit 1; fi; @@ -189,33 +198,26 @@ jobs: shell: bash run: apt-get remove -y opencl-c-headers - - name: Re-configure for install - if: matrix.CMAKE == '3.0.2' - 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`; + run: $CMAKE_EXE --build $GITHUB_WORKSPACE/build --target install --config ${{matrix.CONF.CONFIG}} --parallel `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}}" - -D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}} + `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror -m${{matrix.BIN}}" -D CMAKE_C_EXTENSIONS=OFF -D CMAKE_PREFIX_PATH=$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`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Debug --parallel `nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Release --parallel `nproc`; fi; - name: Test pkg-config (install) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7fb337d6..e28aed49 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.0) -cmake_policy(VERSION 3.0...3.22) +cmake_minimum_required(VERSION 3.16) +cmake_policy(VERSION 3.16...3.26) # Include guard for including this project multiple times if(TARGET Headers) diff --git a/cmake/Package.cmake b/cmake/Package.cmake index 225b53ad..6506f290 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-Headers.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL-Headers.pc - @ONLY) - # This install component is only needed in the Debian package - install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL-Headers.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-Headers.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL-Headers.pc + @ONLY) +# This install component is only needed in the Debian package +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL-Headers.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}) @@ -75,9 +70,7 @@ 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) +set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "all") # Package file name in deb format: # _-_.deb