diff options
author | Nagy-Egri Máté Ferenc <mate@streamhpc.com> | 2022-05-03 01:35:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-02 16:35:42 -0700 |
commit | 3568763309367bc7d7088a1d3f82f2d32c76a7f8 (patch) | |
tree | b81863ab52f4e00cf28bb869ddadd0ba1f77c125 | |
parent | dcd5bede6859d26833cd85f0d6bbcee7382dc9b3 (diff) | |
download | OpenCL-Headers-3568763309367bc7d7088a1d3f82f2d32c76a7f8.tar.gz |
Fix warnings on anonymous structs for MSVC (#198)
* MSVC allows anon structs even in conforming mode
* Convert Windows CI to PowerShell
* Compile tests in C++ mode
* Optionally enable C++ testing
* Backpropagate CI from Layers/SDK
* Add header to Mac CI
* Change to base image
* Clang on Windows
* Clang using pre-C11 mode
* C++ tests without feeding .c files (Clang warning)
* Guard Clang macro better
* Remove hexadecimal constant
* Fix cwd
* Fix CWD for Mac too
* Clean up MSVC anon struct detection
* Remove unused debug macro
-rw-r--r-- | .github/workflows/cmake.yml | 363 | ||||
-rw-r--r-- | .github/workflows/linux.yml | 202 | ||||
-rw-r--r-- | .github/workflows/macos.yml | 53 | ||||
-rw-r--r-- | .github/workflows/windows.yml | 247 | ||||
-rw-r--r-- | CL/cl.h | 7 | ||||
-rw-r--r-- | CL/cl_d3d10.h | 1 | ||||
-rw-r--r-- | CL/cl_d3d11.h | 1 | ||||
-rw-r--r-- | CL/cl_dx9_media_sharing.h | 12 | ||||
-rw-r--r-- | CL/cl_platform.h | 37 | ||||
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | tests/CMakeLists.txt | 50 | ||||
-rw-r--r-- | tests/lang_c/CMakeLists.txt | 18 | ||||
-rw-r--r-- | tests/lang_cpp/CMakeLists.txt | 18 | ||||
-rw-r--r-- | tests/test_cl_half.h.c | 4 |
14 files changed, 609 insertions, 406 deletions
diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml deleted file mode 100644 index a24ddae..0000000 --- a/.github/workflows/cmake.yml +++ /dev/null @@ -1,363 +0,0 @@ -name: Build - -on: [push, pull_request] - -jobs: - linux-gcc: - runs-on: ubuntu-18.04 - strategy: - matrix: - #VER: [7, 8, 9] - VER: [7, 9] # gcc-8 is not installed on the Ubuntu 18.04 image - EXT: [ON, OFF] - GEN: [Unix Makefiles, Ninja] - VAR: [Debug, Release] - STD: [99, 11] # 90 results in errors - BIN: [32, 64] - - steps: - - uses: actions/checkout@v2 - - - name: Create Build Environment - run: sudo apt-get update -q; - cmake -E make_directory $GITHUB_WORKSPACE/build; - cmake -E make_directory $GITHUB_WORKSPACE/install; - cmake -E make_directory $GITHUB_WORKSPACE/downstream/pkgconfig/bare; - cmake -E make_directory $GITHUB_WORKSPACE/downstream/pkgconfig/sdk; - if [[ "${{matrix.GEN}}" == "Ninja" && ! `which ninja` ]]; then sudo apt install -y ninja-build; fi; - if [[ "${{matrix.BIN}}" == "32" ]]; then sudo apt install -y gcc-multilib gcc-8-multilib gcc-9-multilib; fi - # Install Ninja only if it's the selected generator and it's not available. - - - name: Configure CMake - shell: bash - run: cmake - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_BUILD_TYPE=${{matrix.VAR}} - -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install - -S $GITHUB_WORKSPACE - -B $GITHUB_WORKSPACE/build - - - name: Build - shell: bash - run: cmake - --build $GITHUB_WORKSPACE/build - -- - -j`nproc` - - - name: Test - working-directory: ${{runner.workspace}}/OpenCL-Headers/build - shell: bash - run: ctest --parallel `nproc` - - - name: Install - shell: bash - run: cmake - --build $GITHUB_WORKSPACE/build - --target install - -- - -j`nproc` - - - name: Consume (Configure PkgConfig - bare) - shell: bash - run: cmake - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_BUILD_TYPE=${{matrix.VAR}} - -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install - -S $GITHUB_WORKSPACE/tests/pkgconfig/bare - -B $GITHUB_WORKSPACE/downstream/pkgconfig/bare - - - name: Consume (Build PkgConfig - bare) - shell: bash - run: cmake - --build $GITHUB_WORKSPACE/downstream/pkgconfig/bare - -- - -j`nproc` - - - name: Consume (Emulate SDK presence) - shell: bash - run: cmake -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL; - echo 'include("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeaders/OpenCLHeadersTargets.cmake")' > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake - - - name: Consume (Configure PkgConfig - SDK) - shell: bash - run: cmake - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_BUILD_TYPE=${{matrix.VAR}} - -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install - -S $GITHUB_WORKSPACE/tests/pkgconfig/sdk - -B $GITHUB_WORKSPACE/downstream/pkgconfig/sdk - - - name: Consume (Build PkgConfig - SDK) - shell: bash - run: cmake - --build $GITHUB_WORKSPACE/downstream/pkgconfig/sdk - -- - -j`nproc` - - windows-msvc: - runs-on: windows-latest - strategy: - matrix: - VER: [v140, v141, v142] - EXT: [ON, OFF] - GEN: [Visual Studio 16 2019, Ninja Multi-Config] - BIN: [x64, x86] - #STD Proper 11, 17 incoming: https://devblogs.microsoft.com/cppblog/c11-and-c17-standard-support-arriving-in-msvc/ - - steps: - - uses: actions/checkout@v2 - - - name: Create Build Environment - shell: cmd - run: | - cmake -E make_directory $GITHUB_WORKSPACE/build; - cmake -E make_directory $GITHUB_WORKSPACE/install; - - - name: Configure (MSBuild) - if: matrix.GEN == 'Visual Studio 16 2019' - shell: cmd - run: | - if /I "${{matrix.EXT}}"=="ON" (set C_FLAGS="/W4 /WX") else (set C_FLAGS="/W4 /WX /Za /wd4001") - if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) - cmake -G "${{matrix.GEN}}" -A %BIN% -T ${{matrix.VER}} -D BUILD_TESTING=ON -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%/install -S %GITHUB_WORKSPACE% -B %GITHUB_WORKSPACE%/build - - - name: Configure (Ninja) - if: matrix.GEN == 'Ninja Multi-Config' - shell: cmd - run: | - if /I "${{matrix.VER}}"=="v140" (set VER=14.0) - if /I "${{matrix.VER}}"=="v141" (set VER=14.1) - if /I "${{matrix.VER}}"=="v142" (set VER=14.2) - if /I "${{matrix.EXT}}"=="ON" (set C_FLAGS="/W4 /WX") else (set C_FLAGS="/W4 /WX /Za /wd4001") - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - cmake -G "${{matrix.GEN}}" -D BUILD_TESTING=ON -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%/install -S %GITHUB_WORKSPACE% -B %GITHUB_WORKSPACE%/build - - - name: Build (MSBuild) - if: matrix.GEN == 'Visual Studio 16 2019' - shell: cmd - run: | - cmake --build %GITHUB_WORKSPACE%\build --config Release -- /verbosity:minimal /maxCpuCount /noLogo - cmake --build %GITHUB_WORKSPACE%\build --config Debug -- /verbosity:minimal /maxCpuCount /noLogo - - - name: Build (Ninja) - if: matrix.GEN == 'Ninja Multi-Config' - shell: cmd - run: | - if /I "${{matrix.VER}}"=="v140" set VER=14.0 - if /I "${{matrix.VER}}"=="v141" set VER=14.1 - if /I "${{matrix.VER}}"=="v142" set VER=14.2 - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - cmake --build %GITHUB_WORKSPACE%\build --config Release - cmake --build %GITHUB_WORKSPACE%\build --config Debug - - - name: Test - working-directory: ${{runner.workspace}}/OpenCL-Headers/build - shell: cmd - run: | - ctest -C Release --parallel %NUMBER_OF_PROCESSORS% - - - name: Install - shell: cmd - run: | - cmake --build %GITHUB_WORKSPACE%/build --config Release --target install - - - name: Consume (Configure PkgConfig - bare MSBuild) - if: matrix.GEN == 'Visual Studio 16 2019' - shell: cmd - run: | - if /I "${{matrix.EXT}}"=="ON" (set C_FLAGS="/W4 /WX") else (set C_FLAGS="/W4 /WX /Za /wd4001") - if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) - cmake -G "${{matrix.GEN}}" -A %BIN% -T ${{matrix.VER}} -D BUILD_TESTING=ON -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_PREFIX_PATH=%GITHUB_WORKSPACE%/install -S %GITHUB_WORKSPACE%\tests\pkgconfig\bare -B %GITHUB_WORKSPACE%\downstream\pkgconfig\bare - - - name: Consume (Configure PkgConfig - bare Ninja) - if: matrix.GEN == 'Ninja Multi-Config' - shell: cmd - run: | - if /I "${{matrix.VER}}"=="v140" (set VER=14.0) - if /I "${{matrix.VER}}"=="v141" (set VER=14.1) - if /I "${{matrix.VER}}"=="v142" (set VER=14.2) - if /I "${{matrix.EXT}}"=="ON" (set C_FLAGS="/W4 /WX") else (set C_FLAGS="/W4 /WX /Za /wd4001") - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - cmake -G "${{matrix.GEN}}" -D BUILD_TESTING=ON -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_PREFIX_PATH=%GITHUB_WORKSPACE%/install -S %GITHUB_WORKSPACE%\tests\pkgconfig\bare -B %GITHUB_WORKSPACE%\downstream\pkgconfig\bare - - - name: Consume (Build PkgConfig - bare MSBuild) - if: matrix.GEN == 'Visual Studio 16 2019' - shell: cmd - run: | - cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\bare --config Release -- /verbosity:minimal /maxCpuCount /noLogo - cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\bare --config Debug -- /verbosity:minimal /maxCpuCount /noLogo - - - name: Consume (Build PkgConfig - bare Ninja) - if: matrix.GEN == 'Ninja Multi-Config' - shell: cmd - run: | - if /I "${{matrix.VER}}"=="v140" set VER=14.0 - if /I "${{matrix.VER}}"=="v141" set VER=14.1 - if /I "${{matrix.VER}}"=="v142" set VER=14.2 - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\bare --config Release - cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\bare --config Debug - - - name: Consume (Emulate SDK presence) - shell: bash - run: cmake -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL; - echo 'include("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeaders/OpenCLHeadersTargets.cmake")' > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake - - - name: Consume (Configure PkgConfig - SDK MSBuild) - if: matrix.GEN == 'Visual Studio 16 2019' - shell: cmd - run: | - if /I "${{matrix.EXT}}"=="ON" (set C_FLAGS="/W4 /WX") else (set C_FLAGS="/W4 /WX /Za /wd4001") - if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) - cmake -G "${{matrix.GEN}}" -A %BIN% -T ${{matrix.VER}} -D BUILD_TESTING=ON -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_PREFIX_PATH=%GITHUB_WORKSPACE%/install -S %GITHUB_WORKSPACE%\tests\pkgconfig\sdk -B %GITHUB_WORKSPACE%\downstream\pkgconfig\sdk - - - name: Consume (Configure PkgConfig - SDK Ninja) - if: matrix.GEN == 'Ninja Multi-Config' - shell: cmd - run: | - if /I "${{matrix.VER}}"=="v140" (set VER=14.0) - if /I "${{matrix.VER}}"=="v141" (set VER=14.1) - if /I "${{matrix.VER}}"=="v142" (set VER=14.2) - if /I "${{matrix.EXT}}"=="ON" (set C_FLAGS="/W4 /WX") else (set C_FLAGS="/W4 /WX /Za /wd4001") - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - cmake -G "${{matrix.GEN}}" -D BUILD_TESTING=ON -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_PREFIX_PATH=%GITHUB_WORKSPACE%/install -S %GITHUB_WORKSPACE%\tests\pkgconfig\sdk -B %GITHUB_WORKSPACE%\downstream\pkgconfig\sdk - - - name: Consume (Build PkgConfig - SDK MSBuild) - if: matrix.GEN == 'Visual Studio 16 2019' - shell: cmd - run: | - cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\sdk --config Release -- /verbosity:minimal /maxCpuCount /noLogo - cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\sdk --config Debug -- /verbosity:minimal /maxCpuCount /noLogo - - - name: Consume (Build PkgConfig - SDK Ninja) - if: matrix.GEN == 'Ninja Multi-Config' - shell: cmd - run: | - if /I "${{matrix.VER}}"=="v140" set VER=14.0 - if /I "${{matrix.VER}}"=="v141" set VER=14.1 - if /I "${{matrix.VER}}"=="v142" set VER=14.2 - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\sdk --config Release - cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\sdk --config Debug - - macos-gcc: - runs-on: macos-latest - strategy: - matrix: - VER: [8, 9] - EXT: [ON, OFF] - #GEN: [Xcode, Ninja Multi-Config] - GEN: [Xcode] # Disabling Ninja - need to investigate setup-ninja? - STD: [99, 11] # 90 results in errors - - steps: - - uses: actions/checkout@v2 - - - name: Create Build Environment - run: | - cmake -E make_directory $GITHUB_WORKSPACE/build; - cmake -E make_directory $GITHUB_WORKSPACE/install; - if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" && ! `which ninja` ]]; then brew install ninja; fi; - # Install Ninja only if it's the selected generator and it's not available. - - - name: Configure CMake - shell: bash - run: cmake - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -Wno-format" - -D CMAKE_C_COMPILER=/usr/local/bin/gcc-${{matrix.VER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install - -S $GITHUB_WORKSPACE - -B $GITHUB_WORKSPACE/build - - - name: Build (Xcode) - if: matrix.GEN == 'Xcode' - shell: bash - run: | - cmake --build $GITHUB_WORKSPACE/build --config Release - cmake --build $GITHUB_WORKSPACE/build --config Debug - - - name: Build (Ninja) - if: matrix.GEN == 'Ninja Multi-Config' - shell: bash - run: | - cmake --build $GITHUB_WORKSPACE/build --config Release - cmake --build $GITHUB_WORKSPACE/build --config Debug - - - name: Test - working-directory: ${{runner.workspace}}/OpenCL-Headers/build - shell: bash - run: ctest -C Release --parallel `sysctl -n hw.logicalcpu` - - - name: Install (Xcode) - if: matrix.GEN == 'Xcode' - shell: bash - run: | - cmake --build $GITHUB_WORKSPACE/build --config Release --target install - - - name: Install (Ninja) - if: matrix.GEN == 'Ninja Multi-Config' - shell: bash - run: | - cmake --build $GITHUB_WORKSPACE/build --config Release --target install - - - name: Consume (Configure PkgConfig - bare) - shell: bash - run: cmake - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -Wno-format" - -D CMAKE_C_COMPILER=/usr/local/bin/gcc-${{matrix.VER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install - -S $GITHUB_WORKSPACE/tests/pkgconfig/bare - -B $GITHUB_WORKSPACE/downstream/pkgconfig/bare - - - name: Consume (Build PkgConfig - bare) - shell: bash - run: | - cmake --build $GITHUB_WORKSPACE/downstream/pkgconfig/bare --config Release - cmake --build $GITHUB_WORKSPACE/downstream/pkgconfig/bare --config Debug - - - name: Consume (Emulate SDK presence) - shell: bash - run: cmake -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL; - echo 'include("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeaders/OpenCLHeadersTargets.cmake")' > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake - - - name: Consume (Configure PkgConfig - SDK) - shell: bash - run: cmake - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -Wno-format" - -D CMAKE_C_COMPILER=/usr/local/bin/gcc-${{matrix.VER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install - -S $GITHUB_WORKSPACE/tests/pkgconfig/sdk - -B $GITHUB_WORKSPACE/downstream/pkgconfig/sdk - - - name: Consume (Build PkgConfig - SDK) - shell: bash - run: | - cmake --build $GITHUB_WORKSPACE/downstream/pkgconfig/sdk --config Release - cmake --build $GITHUB_WORKSPACE/downstream/pkgconfig/sdk --config Debug diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml new file mode 100644 index 0000000..1dfeebf --- /dev/null +++ b/.github/workflows/linux.yml @@ -0,0 +1,202 @@ +name: Linux + +on: [push, pull_request] + +jobs: + compatibility: + runs-on: ubuntu-18.04 + container: streamhpc/opencl-sdk-base:ubuntu-18.04-20220127 + 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 + CONFIG: Debug + BIN: 32 + - C_COMPILER: clang-8 + CXX_COMPILER: clang++-8 + CMAKE: 3.0.2 + 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 + CONFIG: Release + 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 + BIN: 64 + - C_COMPILER: gcc-7 + CXX_COMPILER: g++-7 + CMAKE: 3.22.1 + GEN: Ninja Multi-Config + 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 + BIN: 32 + - C_COMPILER: clang-8 + CXX_COMPILER: clang++-8 + CMAKE: 3.22.1 + GEN: Ninja Multi-Config + 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 + BIN: 64 + - C_COMPILER: clang-13 + CXX_COMPILER: clang++-13 + CMAKE: 3.22.1 + GEN: Ninja Multi-Config + BIN: 32 + env: + CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake + CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest + + steps: + - name: Checkout OpenCL-Headers + uses: actions/checkout@v2 + + - name: Configure + shell: bash + run: $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 + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install + -B$GITHUB_WORKSPACE/build + -H$GITHUB_WORKSPACE + + - name: Build + shell: bash + run: 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 + run: if [[ "${{matrix.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;
\ No newline at end of file diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml new file mode 100644 index 0000000..eae6a54 --- /dev/null +++ b/.github/workflows/macos.yml @@ -0,0 +1,53 @@ +name: MacOS + +on: [push, pull_request] + +jobs: + compatibility: + runs-on: macos-latest + strategy: + matrix: + VER: [9, 11] + GEN: [Xcode, Ninja Multi-Config] + STD: [11, 17] + + steps: + - name: Checkout OpenCL-Headers + uses: actions/checkout@v2 + + - 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 CMake + 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_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_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`
\ No newline at end of file diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 0000000..7fd79c9 --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,247 @@ +name: Windows + +on: [push, pull_request] + +jobs: + compatibility: + runs-on: windows-latest + strategy: + matrix: + VER: [v142, v143] + EXT: [ON, OFF] + GEN: [Visual Studio 17 2022] + BIN: [x64, x86] + STD: [99, 11, 17] + include: + - VER: v141 + EXT: OFF + GEN: Ninja Multi-Config + BIN: x64 + STD: 89 # /Za + 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 + + steps: + - uses: actions/checkout@v2 + + - 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: 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_FLAGS="${C_FLAGS}" ` + -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` + -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_FLAGS="${C_FLAGS}" ` + -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` + -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) + 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_FLAGS="${C_FLAGS}" ` + -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` + -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) + 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_FLAGS="${C_FLAGS}" ` + -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` + -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_FLAGS="${C_FLAGS}" ` + -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` + -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) + 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_FLAGS="${C_FLAGS}" ` + -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` + -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} ` + }
\ No newline at end of file @@ -141,6 +141,10 @@ typedef struct _cl_image_desc { #pragma warning( push ) #pragma warning( disable : 4201 ) /* Prevents warning about nameless struct/union in /W4 builds */ #endif +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc11-extensions" /* Prevents warning about nameless union being C11 extension*/ +#endif #if defined(_MSC_VER) && defined(__STDC__) /* Anonymous unions are not supported in /Za builds */ #else @@ -158,6 +162,9 @@ typedef struct _cl_image_desc { #if defined(_MSC_VER) && !defined(__STDC__) #pragma warning( pop ) #endif +#ifdef __clang__ +#pragma clang diagnostic pop +#endif #endif } cl_image_desc; diff --git a/CL/cl_d3d10.h b/CL/cl_d3d10.h index 9f68770..0d9950b 100644 --- a/CL/cl_d3d10.h +++ b/CL/cl_d3d10.h @@ -21,6 +21,7 @@ #if _MSC_VER >=1500 #pragma warning( push ) #pragma warning( disable : 4201 ) +#pragma warning( disable : 5105 ) #endif #endif #include <d3d10.h> diff --git a/CL/cl_d3d11.h b/CL/cl_d3d11.h index 1de91ac..9393e5c 100644 --- a/CL/cl_d3d11.h +++ b/CL/cl_d3d11.h @@ -21,6 +21,7 @@ #if _MSC_VER >=1500 #pragma warning( push ) #pragma warning( disable : 4201 ) +#pragma warning( disable : 5105 ) #endif #endif #include <d3d11.h> diff --git a/CL/cl_dx9_media_sharing.h b/CL/cl_dx9_media_sharing.h index 0588d00..fd03bbd 100644 --- a/CL/cl_dx9_media_sharing.h +++ b/CL/cl_dx9_media_sharing.h @@ -32,7 +32,19 @@ typedef cl_uint cl_dx9_media_adapter_type_khr; typedef cl_uint cl_dx9_media_adapter_set_khr; #if defined(_WIN32) +#if defined(_MSC_VER) +#if _MSC_VER >=1500 +#pragma warning( push ) +#pragma warning( disable : 4201 ) +#pragma warning( disable : 5105 ) +#endif +#endif #include <d3d9.h> +#if defined(_MSC_VER) +#if _MSC_VER >=1500 +#pragma warning( pop ) +#endif +#endif typedef struct _cl_dx9_surface_info_khr { IDirect3DSurface9 *resource; diff --git a/CL/cl_platform.h b/CL/cl_platform.h index 68544bb..4f6444e 100644 --- a/CL/cl_platform.h +++ b/CL/cl_platform.h @@ -135,6 +135,11 @@ extern "C" { #if (defined (_WIN32) && defined(_MSC_VER)) +#if defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wlanguage-extension-token" +#endif + /* intptr_t is used in cl.h and provided by stddef.h in Visual C++, but not in clang */ /* stdint.h was missing before Visual Studio 2010, include it for later versions and for clang */ #if defined(__clang__) || _MSC_VER >= 1600 @@ -155,6 +160,10 @@ typedef unsigned __int16 cl_half; typedef float cl_float; typedef double cl_double; +#if defined(__clang__) +#pragma clang diagnostic pop +#endif + /* Macro names and corresponding values defined by OpenCL */ #define CL_CHAR_BIT 8 #define CL_SCHAR_MAX 127 @@ -501,25 +510,23 @@ typedef unsigned int cl_GLenum; #if !defined(__cplusplus) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L #define __CL_HAS_ANON_STRUCT__ 1 #define __CL_ANON_STRUCT__ -#elif defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) +#elif defined(_WIN32) && defined(_MSC_VER) && !defined(__STDC__) +#define __CL_HAS_ANON_STRUCT__ 1 +#define __CL_ANON_STRUCT__ +#elif defined(__GNUC__) && ! defined(__STRICT_ANSI__) #define __CL_HAS_ANON_STRUCT__ 1 #define __CL_ANON_STRUCT__ __extension__ -#elif defined( _WIN32) && defined(_MSC_VER) && ! defined(__STDC__) - #if _MSC_VER >= 1500 - /* Microsoft Developer Studio 2008 supports anonymous structs, but - * complains by default. */ - #define __CL_HAS_ANON_STRUCT__ 1 - #define __CL_ANON_STRUCT__ - /* Disable warning C4201: nonstandard extension used : nameless - * struct/union */ - #pragma warning( push ) - #pragma warning( disable : 4201 ) - #endif #else #define __CL_HAS_ANON_STRUCT__ 0 #define __CL_ANON_STRUCT__ #endif +#if defined(_WIN32) && defined(_MSC_VER) && __CL_HAS_ANON_STRUCT__ + /* Disable warning C4201: nonstandard extension used : nameless struct/union */ + #pragma warning( push ) + #pragma warning( disable : 4201 ) +#endif + /* Define alignment keys */ #if defined( __GNUC__ ) || defined(__INTEGRITY) #define CL_ALIGNED(_x) __attribute__ ((aligned(_x))) @@ -1395,12 +1402,8 @@ typedef union } #endif -#if !defined(__cplusplus) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L -#elif defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) -#elif defined( _WIN32) && defined(_MSC_VER) && ! defined(__STDC__) - #if _MSC_VER >=1500 +#if defined(_WIN32) && defined(_MSC_VER) && __CL_HAS_ANON_STRUCT__ #pragma warning( pop ) - #endif #endif #endif /* __CL_PLATFORM_H */ diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f66bac..e6ea8b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,5 @@ cmake_minimum_required(VERSION 3.0) +cmake_policy(VERSION 3.0...3.22) # Include guard for including this project multiple times if(TARGET Headers) @@ -12,6 +13,7 @@ project(OpenCLHeaders ) option(OPENCL_HEADERS_BUILD_TESTING "Enable support for OpenCL C headers testing." OFF) +option(OPENCL_HEADERS_BUILD_CXX_TESTS "Enable support for OpenCL C headers testing in C++ mode." ON) include(GNUInstallDirs) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 6c0059a..a2a205a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,14 +1,29 @@ # Add a test for a given source file for each version of OpenCL function(add_header_test NAME SOURCE) + # Some headers include system files which require anonymous structs + # so we cannot test them with /Za: + set(TEST_SKIP_ANSI_TESTING + cl_d3d10_h cl_d3d11_h cl_dx9_media_sharing_h cl_dx9_media_sharing_intel_h cl_icd_h cl_layer_h) + get_filename_component(LANG_DIR "${CMAKE_CURRENT_SOURCE_DIR}" NAME) + if(LANG_DIR MATCHES cpp) + set(CPP_SOURCE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${SOURCE}pp") + file(RELATIVE_PATH REL_SOURCE_PATH "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/../${SOURCE}") + file(TO_NATIVE_PATH "${REL_SOURCE_PATH}" NATIVE_SOURCE_PATH) + file(WRITE + "${CPP_SOURCE_PATH}" + "#include \"${NATIVE_SOURCE_PATH}\"\n" + ) + set(SOURCE_PATH "${CPP_SOURCE_PATH}") + set(LANG cpp) + else() + set(SOURCE_PATH "../${SOURCE}") + set(LANG c) + endif() foreach(VERSION 100 110 120 200 210 220 300) - set(TEST_EXE ${NAME}_${VERSION}) - # Some headers include system files which require anonymous structs - # so we cannot test them with /Za: - list(APPEND TEST_SKIP_ANSI_TESTING - cl_d3d10_h cl_d3d11_h cl_dx9_media_sharing_h cl_dx9_media_sharing_intel_h cl_icd_h cl_layer_h) + set(TEST_EXE ${NAME}_${LANG}_${VERSION}) list(FIND TEST_SKIP_ANSI_TESTING ${NAME} TEST_SKIP_INDEX) if(NOT (${TEST_SKIP_INDEX} GREATER -1 AND MSVC AND CMAKE_C_FLAGS MATCHES "/Za")) - add_executable(${TEST_EXE} ${SOURCE}) + add_executable(${TEST_EXE} "${SOURCE_PATH}") target_compile_definitions(${TEST_EXE} PUBLIC -DCL_TARGET_OPENCL_VERSION=${VERSION} ) @@ -20,21 +35,8 @@ function(add_header_test NAME SOURCE) endforeach(VERSION) endfunction(add_header_test) -# Tests -add_header_test(cl_h test_cl.h.c) -add_header_test(cl_d3d10_h test_cl_d3d10.h.c) -add_header_test(cl_d3d11_h test_cl_d3d11.h.c) -add_header_test(cl_dx9_media_sharing_h test_cl_dx9_media_sharing.h.c) -add_header_test(cl_dx9_media_sharing_intel_h test_cl_dx9_media_sharing.h.c) -add_header_test(cl_egl_h test_cl_egl.h.c) -add_header_test(cl_ext_h test_cl_ext.h.c) -add_header_test(cl_ext_intel_h test_cl_ext_intel.h.c) -add_header_test(cl_gl_h test_cl_gl.h.c) -add_header_test(cl_gl_ext_h test_cl_gl_ext.h.c) -add_header_test(cl_half_h test_cl_half.h.c) -add_header_test(cl_icd_h test_cl_icd.h.c) -add_header_test(cl_layer_h test_cl_layer.h.c) -add_header_test(cl_platform_h test_cl_platform.h.c) -add_header_test(cl_opencl_h test_opencl.h.c) -add_header_test(cl_version_h test_cl_version.h.c) -add_header_test(headers test_headers.c) +add_subdirectory(lang_c) +if(OPENCL_HEADERS_BUILD_CXX_TESTS) + enable_language(CXX) + add_subdirectory(lang_cpp) +endif() diff --git a/tests/lang_c/CMakeLists.txt b/tests/lang_c/CMakeLists.txt new file mode 100644 index 0000000..0678dde --- /dev/null +++ b/tests/lang_c/CMakeLists.txt @@ -0,0 +1,18 @@ +# Tests +add_header_test(cl_h test_cl.h.c) +add_header_test(cl_d3d10_h test_cl_d3d10.h.c) +add_header_test(cl_d3d11_h test_cl_d3d11.h.c) +add_header_test(cl_dx9_media_sharing_h test_cl_dx9_media_sharing.h.c) +add_header_test(cl_dx9_media_sharing_intel_h test_cl_dx9_media_sharing.h.c) +add_header_test(cl_egl_h test_cl_egl.h.c) +add_header_test(cl_ext_h test_cl_ext.h.c) +add_header_test(cl_ext_intel_h test_cl_ext_intel.h.c) +add_header_test(cl_gl_h test_cl_gl.h.c) +add_header_test(cl_gl_ext_h test_cl_gl_ext.h.c) +add_header_test(cl_half_h test_cl_half.h.c) +add_header_test(cl_icd_h test_cl_icd.h.c) +add_header_test(cl_layer_h test_cl_layer.h.c) +add_header_test(cl_platform_h test_cl_platform.h.c) +add_header_test(cl_opencl_h test_opencl.h.c) +add_header_test(cl_version_h test_cl_version.h.c) +add_header_test(headers test_headers.c) diff --git a/tests/lang_cpp/CMakeLists.txt b/tests/lang_cpp/CMakeLists.txt new file mode 100644 index 0000000..0678dde --- /dev/null +++ b/tests/lang_cpp/CMakeLists.txt @@ -0,0 +1,18 @@ +# Tests +add_header_test(cl_h test_cl.h.c) +add_header_test(cl_d3d10_h test_cl_d3d10.h.c) +add_header_test(cl_d3d11_h test_cl_d3d11.h.c) +add_header_test(cl_dx9_media_sharing_h test_cl_dx9_media_sharing.h.c) +add_header_test(cl_dx9_media_sharing_intel_h test_cl_dx9_media_sharing.h.c) +add_header_test(cl_egl_h test_cl_egl.h.c) +add_header_test(cl_ext_h test_cl_ext.h.c) +add_header_test(cl_ext_intel_h test_cl_ext_intel.h.c) +add_header_test(cl_gl_h test_cl_gl.h.c) +add_header_test(cl_gl_ext_h test_cl_gl_ext.h.c) +add_header_test(cl_half_h test_cl_half.h.c) +add_header_test(cl_icd_h test_cl_icd.h.c) +add_header_test(cl_layer_h test_cl_layer.h.c) +add_header_test(cl_platform_h test_cl_platform.h.c) +add_header_test(cl_opencl_h test_opencl.h.c) +add_header_test(cl_version_h test_cl_version.h.c) +add_header_test(headers test_headers.c) diff --git a/tests/test_cl_half.h.c b/tests/test_cl_half.h.c index ddb9550..49745e0 100644 --- a/tests/test_cl_half.h.c +++ b/tests/test_cl_half.h.c @@ -95,7 +95,7 @@ int main(void) CHECK_FROM_FLOAT(-(CL_HALF_MAX + 1000.f), 0xfbff, RTP); CHECK_FROM_FLOAT(-(CL_HALF_MAX + 1000.f), 0xfc00, RTN); CHECK_FROM_FLOAT(-(CL_HALF_MAX + 1000.f), 0xfbff, RTZ); -#ifndef _MSC_VER +#if 0 // Hexadecimal float constant is C++17 // Check tiny positive values round properly CHECK_FROM_FLOAT(0x1.000000p-25, 0x0000, RTE); CHECK_FROM_FLOAT(0x1.000000p-25, 0x0001, RTP); @@ -108,7 +108,7 @@ int main(void) CHECK_FROM_FLOAT(-0x1.000000p-25, 0x8001, RTN); CHECK_FROM_FLOAT(-0x1.000000p-25, 0x8000, RTZ); #else -// Check tiny positive values round properly + // Check tiny positive values round properly CHECK_FROM_FLOAT(2.98023223876953125e-08, 0x0000, RTE); CHECK_FROM_FLOAT(2.98023223876953125e-08, 0x0001, RTP); CHECK_FROM_FLOAT(2.98023223876953125e-08, 0x0000, RTN); |