From 5b7d65ece1ae389aafbd9de9e0525b2d54fec212 Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Thu, 22 Jun 2023 16:46:44 +0000 Subject: [PATCH 01/14] Add DEB packaging --- .github/workflows/linux.yml | 154 +++++++++++++++++++++++++++--------- .gitignore | 20 ++++- CMakeLists.txt | 35 +++++--- cmake/Package.cmake | 67 ++++++++++++++++ 4 files changed, 229 insertions(+), 47 deletions(-) create mode 100644 cmake/Package.cmake diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index f301de65..8a951406 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -3,14 +3,16 @@ name: Linux on: [push, pull_request] env: - OPENCL_PKGCONFIG_PATHS: ${{ github.workspace }}/install/lib/pkgconfig:${{ github.workspace }}/external/OpenCL-Headers/install/share/pkgconfig + DEB_INSTALLATION_PATH: /usr + INSTALL_LIBDIR: lib/x86_64-linux-gnu + OPENCL_PKGCONFIG_PATHS: $DEB_INSTALLATION_PATH/INSTALL_LIBDIR/pkgconfig:${{ github.workspace }}/install/$INSTALL_LIBDIR/pkgconfig:${{ github.workspace }}/external/OpenCL-Headers/install/share/pkgconfig jobs: - tools: - runs-on: ubuntu-20.04 + runs-on: ${{ matrix.OS }} strategy: matrix: + OS : [ubuntu-20.04] CMAKE: [3.21.2] env: CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{ matrix.CMAKE }}/cmake-${{ matrix.CMAKE }}-Linux-x86_64.tar.gz @@ -37,14 +39,15 @@ jobs: COMPILER: [gcc-7, clang-8] #gcc-8 clang-10 EXT: [ON, OFF] GEN: [Unix Makefiles] - CONFIG: [Debug, Release] + CONFIG: [Release, Release] STD: [99, 11] - BIN: [32, 64] - CMAKE: [3.1.3] #3.21.2 + BIN: [64] # Temporarily disable cross-compilation + CMAKE: [3.1.3] env: CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake + CPACK_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cpack CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest - OPENCL_PKGCONFIG_PATHS: /__w/OpenCL-ICD-Loader/OpenCL-ICD-Loader/install/lib/pkgconfig:/__w/OpenCL-ICD-Loader/OpenCL-ICD-Loader/external/OpenCL-Headers/install/share/pkgconfig + OPENCL_PKGCONFIG_PATHS: $DEB_INSTALLATION_PATH/$INSTALL_LIBDIR/pkgconfig:/__w/OpenCL-ICD-Loader/OpenCL-ICD-Loader/install/$INSTALL_LIBDIR/pkgconfig:/__w/OpenCL-ICD-Loader/OpenCL-ICD-Loader/external/OpenCL-Headers/install/share/pkgconfig steps: @@ -54,10 +57,13 @@ jobs: - name: Checkout OpenCL-Headers uses: actions/checkout@v3 with: - repository: KhronosGroup/OpenCL-Headers + # Change to KhronosGroup/OpenCL-Headers when PR for DEB packaging is merged + repository: StreamHPC/OpenCL-Headers path: external/OpenCL-Headers + # Remove when PR for DEB packaging is merged + ref: 58-create-deb-package - - name: Build & install OpenCL-Headers + - name: Build install & package OpenCL-Headers run: $CMAKE_EXE -G "${{matrix.GEN}}" -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} @@ -66,14 +72,20 @@ jobs: -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH -D BUILD_TESTING=OFF -B$GITHUB_WORKSPACE/external/OpenCL-Headers/build - -H$GITHUB_WORKSPACE/external/OpenCL-Headers && + -H$GITHUB_WORKSPACE/external/OpenCL-Headers ; $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build --target install -- - -j`nproc` + -j`nproc` ; + $CPACK_EXE + --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" + -G DEB + -C Release + -B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" - name: Configure shell: bash @@ -86,7 +98,8 @@ jobs: -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install - -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH -B$GITHUB_WORKSPACE/build -H$GITHUB_WORKSPACE @@ -97,6 +110,14 @@ jobs: -- -j`nproc` + - name: Package DEB + shell: bash + run: $CPACK_EXE + --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" + -G DEB + -C Release + -B "$GITHUB_WORKSPACE/package-deb" + - name: Test working-directory: ${{runner.workspace}}/OpenCL-ICD-Loader/build shell: bash @@ -110,16 +131,38 @@ jobs: -- -j`nproc` + - name: Install dependencies (Package DEB) + shell: bash + run: | + dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.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 \ + -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} \ + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" \ + -D CMAKE_C_COMPILER=${{matrix.COMPILER}} \ + -D CMAKE_C_STANDARD=${{matrix.STD}} \ + -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} \ + -B$GITHUB_WORKSPACE/build \ + -H$GITHUB_WORKSPACE + $CMAKE_EXE --build $GITHUB_WORKSPACE/build -- -j`nproc` + - name: "Consume (standalone): Configure/Build/Test" shell: bash run: $CMAKE_EXE -G "${{matrix.GEN}}" + -D BUILD_TESTING=ON -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" + -D CMAKE_C_COMPILER=${{matrix.COMPILER}} -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/install" -D DRIVER_STUB_PATH=$GITHUB_WORKSPACE/build/libOpenCLDriverStub.so -B$GITHUB_WORKSPACE/build/downstream/bare -H$GITHUB_WORKSPACE/test/pkgconfig/bare ; @@ -130,16 +173,16 @@ jobs: - name: "Consume (SDK): Configure/Build/Test" shell: bash - run: $CMAKE_EXE -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL ; - echo -e "include(\"$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"\${CMAKE_CURRENT_LIST_DIR}/../OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")" > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake ; + run: $CMAKE_EXE -E make_directory $DEB_INSTALLATION_PATH/share/cmake/OpenCL ; + echo -e "include(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")" > $DEB_INSTALLATION_PATH/share/cmake/OpenCL/OpenCLConfig.cmake ; $CMAKE_EXE -G "${{matrix.GEN}}" + -D BUILD_TESTING=ON -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" + -D CMAKE_C_COMPILER=${{matrix.COMPILER}} -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/install" -D DRIVER_STUB_PATH=$GITHUB_WORKSPACE/build/libOpenCLDriverStub.so -B$GITHUB_WORKSPACE/build/downstream/sdk -H$GITHUB_WORKSPACE/test/pkgconfig/sdk ; @@ -150,11 +193,11 @@ jobs: - name: Test pkg-config --cflags shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" + run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL --cflags | grep -q "$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" - name: Test pkg-config --libs shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL --libs | grep -q "\-L$GITHUB_WORKSPACE/install/lib -lOpenCL" + run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL --libs | grep -q "\-L$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR -lOpenCL" - name: Consume pkg-config shell: bash @@ -173,8 +216,6 @@ jobs: - - cmake-latest: needs: [tools] runs-on: ${{ matrix.OS }} @@ -185,10 +226,11 @@ jobs: EXT: [ON, OFF] GEN: [Ninja Multi-Config] STD: [99, 11, 17] - BIN: [32, 64] + BIN: [64] # Temporarily disable cross-compilation CMAKE: [3.21.2] 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 @@ -199,8 +241,11 @@ jobs: - name: Checkout OpenCL-Headers uses: actions/checkout@v3 with: - repository: KhronosGroup/OpenCL-Headers + # Change to KhronosGroup/OpenCL-Headers when PR for DEB packaging is merged + repository: StreamHPC/OpenCL-Headers path: external/OpenCL-Headers + # Remove when PR for DEB packaging is merged + ref: 58-create-deb-package - name: Restore CMake uses: actions/cache@v3 @@ -224,7 +269,7 @@ jobs: mv /opt/Kitware/CMake/cmake-${{ matrix.CMAKE }}-* /opt/Kitware/CMake/${{ matrix.CMAKE }} # Install Ninja only if it's the selected generator and it's not available. - - name: Build & install OpenCL-Headers + - name: Build, install & package OpenCL-Headers run: $CMAKE_EXE -G "${{matrix.GEN}}" -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" @@ -232,15 +277,20 @@ jobs: -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH -D BUILD_TESTING=OFF -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build -S $GITHUB_WORKSPACE/external/OpenCL-Headers; - $CMAKE_EXE + sudo $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build --target install - --config Release -- - -j`nproc` + -j`nproc` ; + sudo $CPACK_EXE + --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" + -G DEB + -C Release + -B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" - name: Configure shell: bash @@ -252,7 +302,8 @@ jobs: -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install - -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH -B $GITHUB_WORKSPACE/build -S $GITHUB_WORKSPACE @@ -262,6 +313,14 @@ jobs: $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release -- -j`nproc`; $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug -- -j`nproc` + - name: Package DEB + shell: bash + run: $CPACK_EXE + --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" + -G DEB + -C Release + -B "$GITHUB_WORKSPACE/package-deb" + - name: Test working-directory: ${{runner.workspace}}/OpenCL-ICD-Loader/build shell: bash @@ -278,15 +337,36 @@ jobs: -- -j`nproc` + - name: Install dependencies (Package DEB) + shell: bash + run: | + sudo dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb + + - name: Consume (Package DEB) + shell: bash + run: | + sudo dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb + rm -rf $GITHUB_WORKSPACE/build + $CMAKE_EXE \ + -G "${{matrix.GEN}}" \ + -D BUILD_TESTING=ON \ + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" \ + -D CMAKE_C_COMPILER=${{matrix.COMPILER}} \ + -D CMAKE_C_STANDARD=${{matrix.STD}} \ + -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} \ + -B $GITHUB_WORKSPACE/build \ + -S $GITHUB_WORKSPACE + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug -- -j`nproc` + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release -- -j`nproc` + - name: "Consume (standalone): Configure/Build/Test" shell: bash run: $CMAKE_EXE -G "${{matrix.GEN}}" - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" + -D CMAKE_C_COMPILER=${{matrix.COMPILER}} -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/install" -D DRIVER_STUB_PATH=$GITHUB_WORKSPACE/build/Release/libOpenCLDriverStub.so -B $GITHUB_WORKSPACE/build/downstream/bare -S $GITHUB_WORKSPACE/test/pkgconfig/bare; @@ -298,15 +378,15 @@ jobs: - name: "Consume (SDK): Configure/Build/Test" shell: bash - run: $CMAKE_EXE -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL ; - echo -e "include(\"$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"\${CMAKE_CURRENT_LIST_DIR}/../OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")" > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake ; + run: $CMAKE_EXE -E make_directory $DEB_INSTALLATION_PATH/share/cmake/OpenCL ; + echo -e "include(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")" > $DEB_INSTALLATION_PATH/share/cmake/OpenCL/OpenCLConfig.cmake ; $CMAKE_EXE -G "${{matrix.GEN}}" - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} + -D BUILD_TESTING=ON -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" + -D CMAKE_C_COMPILER=${{matrix.COMPILER}} -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/install" -D DRIVER_STUB_PATH=$GITHUB_WORKSPACE/build/Release/libOpenCLDriverStub.so -B $GITHUB_WORKSPACE/build/downstream/sdk -S $GITHUB_WORKSPACE/test/pkgconfig/sdk; @@ -318,11 +398,11 @@ jobs: - name: Test pkg-config --cflags shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" + run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL --cflags | grep -q "$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" - name: Test pkg-config --libs shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL --libs | grep -q "\-L$GITHUB_WORKSPACE/install/lib -lOpenCL" + run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL --libs | grep -q "\-L$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR -lOpenCL" - name: Consume pkg-config shell: bash diff --git a/.gitignore b/.gitignore index 9bb7c139..3939ee71 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,22 @@ +# Build dir +[Bb]uild/ + +# Install dir +[Ii]nstall/ + +# External dir +[Ee]xternal/ + +# Package dir +[Pp]ackage[-_\s\d]*/ + +# Tackage dir +[T]esting/ + +# inc subdirs inc/CL/ inc/EGL/ inc/KHR/ -build/ + +# CMake +CMakeFiles/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 7cb30797..c0f4942a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ if(TARGET OpenCL) endif() project (OpenCL-ICD-Loader - VERSION 1.2 + VERSION 3.0 LANGUAGES C) find_package (Threads REQUIRED) @@ -57,6 +57,7 @@ cmake_dependent_option(ENABLE_OPENCL_LAYERINFO "Enable building cllayerinfo tool set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") include(JoinPaths) +include(Package) include(CheckFunctionExists) check_function_exists(secure_getenv HAVE_SECURE_GETENV) @@ -118,7 +119,7 @@ endif() add_library (OpenCL::OpenCL ALIAS OpenCL) -set_target_properties (OpenCL PROPERTIES VERSION "1.2" SOVERSION "1") +set_target_properties (OpenCL PROPERTIES VERSION 1\.0\.0 SOVERSION "1") if (WIN32) target_link_libraries (OpenCL PRIVATE cfgmgr32.lib runtimeobject.lib) @@ -221,11 +222,13 @@ endif() include (GNUInstallDirs) +set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}/x86_64-linux-gnu) + install( TARGETS OpenCL EXPORT OpenCLICDLoaderTargets LIBRARY - DESTINATION ${CMAKE_INSTALL_LIBDIR} # obtained from GNUInstallDirs + DESTINATION ${INSTALL_LIBDIR} # obtained from GNUInstallDirs ) install( # FILES $ is cleanest, but is MSVC link.exe specific. LLVM's lld.exe and lld-link.exe don't support it (configure-time error) @@ -241,6 +244,7 @@ if (ENABLE_OPENCL_LAYERINFO) EXPORT OpenCLICDLoaderTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + COMPONENT runtime ) endif() @@ -260,10 +264,12 @@ install( FILE OpenCLICDLoaderTargets.cmake NAMESPACE OpenCL:: DESTINATION ${config_package_location} + COMPONENT runtime ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCLICDLoader/OpenCLICDLoaderConfig.cmake DESTINATION ${config_package_location} + COMPONENT runtime ) unset(CMAKE_SIZEOF_VOID_P) @@ -276,20 +282,31 @@ write_basic_package_version_file( install( FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCLICDLoader/OpenCLICDLoaderConfigVersion.cmake DESTINATION ${config_package_location} + COMPONENT runtime ) +# Separate namelink from shared library and symlink for DEB packaging +install (TARGETS OpenCL + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ARCHIVE DESTINATION ${INSTALL_LIBDIR} + LIBRARY DESTINATION ${INSTALL_LIBDIR} + COMPONENT runtime + NAMELINK_SKIP) + install (TARGETS OpenCL RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + ARCHIVE DESTINATION ${INSTALL_LIBDIR} + LIBRARY DESTINATION ${INSTALL_LIBDIR} + COMPONENT dev + NAMELINK_ONLY) -join_paths(OPENCL_LIBDIR_PC "\${exec_prefix}" "${CMAKE_INSTALL_LIBDIR}") -join_paths(OPENCL_INCLUDEDIR_PC "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") +join_paths(OPENCL_LIBDIR_PC "\${exec_prefix}" "${INSTALL_LIBDIR}") if (NOT MSVC) configure_file(OpenCL.pc.in OpenCL.pc @ONLY) - set(pkg_config_location ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + set(pkg_config_location ${INSTALL_LIBDIR}/pkgconfig) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCL.pc - DESTINATION ${pkg_config_location}) + DESTINATION ${pkg_config_location} + COMPONENT dev) endif() diff --git a/cmake/Package.cmake b/cmake/Package.cmake new file mode 100644 index 00000000..954c7a91 --- /dev/null +++ b/cmake/Package.cmake @@ -0,0 +1,67 @@ +set(CPACK_PACKAGE_VENDOR "khronos") + +set(CPACK_DEBIAN_DESCRIPTION "Khronos OpenCL ICD Loader") + +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() + +# DEB packaging configuration +set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_VENDOR}) + +set(CPACK_DEBIAN_PACKAGE_HOMEPAGE + "https://github.com/KhronosGroup/OpenCL-ICD-Loader") + +# Version number [epoch:]upstream_version[-debian_revision] +set(CPACK_DEBIAN_PACKAGE_VERSION "${PROJECT_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}") + +# Get architecture +execute_process(COMMAND dpkg "--print-architecture" OUTPUT_VARIABLE CPACK_PACKAGE_ARCHITECTURE) + +########################################################## +# Components # +########################################################## + +set(CPACK_DEB_COMPONENT_INSTALL ON) +set(CPACK_COMPONENTS_ALL runtime dev) + +set(DEBIAN_FILE_NAME "ocl-icd") + +## Package runtime component +set(DEBIAN_RUNTIME_PACKAGE_SUFIX "libopencl1") +set(CPACK_DEBIAN_RUNTIME_PACKAGE_NAME + "${DEBIAN_FILE_NAME}-${DEBIAN_RUNTIME_PACKAGE_SUFIX}" + CACHE STRING "Package name" FORCE) + +# Package file name in deb format: +# _-_.deb +set(CPACK_DEBIAN_RUNTIME_FILE_NAME "${CPACK_DEBIAN_RUNTIME_PACKAGE_NAME}_${PACKAGE_VERSION_REVISION}_${CPACK_PACKAGE_ARCHITECTURE}.deb") + +# Dependencies +set(CPACK_DEBIAN_RUNTIME_PACKAGE_DEPENDS "libc6") + + +## Package dev component +set(DEBIAN_DEV_PACKAGE_SUFIX "opencl-dev") +set(CPACK_DEBIAN_DEV_PACKAGE_NAME + "${DEBIAN_FILE_NAME}-${DEBIAN_DEV_PACKAGE_SUFIX}" + CACHE STRING "Package name" FORCE) + +# Package file name in deb format: +# _-_.deb +set(CPACK_DEBIAN_DEV_FILE_NAME "${CPACK_DEBIAN_DEV_PACKAGE_NAME}_${PACKAGE_VERSION_REVISION}_${CPACK_PACKAGE_ARCHITECTURE}.deb") + +# Dependencies +set(CPACK_DEBIAN_DEV_PACKAGE_DEPENDS "opencl-c-headers") +set(CPACK_COMPONENT_DEV_DEPENDS runtime) + +set(CPACK_DEBIAN_PACKAGE_DEBUG ON) + +include(CPack) From 8df4f20de86c0d6ce920fddced88b26f673bbd15 Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Thu, 6 Jul 2023 07:37:06 +0000 Subject: [PATCH 02/14] Fix MacOS workflow --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c0f4942a..98a67f4e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -222,7 +222,11 @@ endif() include (GNUInstallDirs) -set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}/x86_64-linux-gnu) +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}) +else() + set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}/x86_64-linux-gnu) +endif() install( TARGETS OpenCL From 49054ded8125c96699b4db9f7938414ce195b48a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C5=91rinc=20Serf=C5=91z=C5=91?= Date: Mon, 31 Jul 2023 10:25:54 +0200 Subject: [PATCH 03/14] Move linux CI to presubmit and update it --- .github/workflows/linux.yml | 3 + .github/workflows/macos.yml | 1 + .github/workflows/presubmit.yml | 238 ++++++++++++++++++++++++ .github/workflows/windows.yml | 2 + CMakeLists.txt | 35 ++-- OpenCL.pc.in | 2 +- cmake/Package.cmake | 39 ++++ test/loader_test/icd_test_match.c | 2 +- test/loader_test/main.c | 23 ++- test/loader_test/test_buffer_object.c | 2 +- test/loader_test/test_cl_runtime.c | 2 +- test/loader_test/test_clgl.c | 2 +- test/loader_test/test_create_calls.c | 4 +- test/loader_test/test_image_objects.c | 2 +- test/loader_test/test_kernel.c | 2 +- test/loader_test/test_platforms.c | 2 +- test/loader_test/test_program_objects.c | 2 +- test/loader_test/test_sampler_objects.c | 2 +- test/pkgconfig/pkgconfig.c | 2 +- 19 files changed, 319 insertions(+), 48 deletions(-) create mode 100644 .github/workflows/presubmit.yml diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 8a951406..edad25e0 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -9,6 +9,7 @@ env: jobs: tools: + if: false runs-on: ${{ matrix.OS }} strategy: matrix: @@ -31,6 +32,7 @@ jobs: run: wget -c -O ~/cmake-${{matrix.CMAKE}}-Linux-x86_64.tar.gz $CMAKE_URL cmake-minimum: + if: false runs-on: ${{ matrix.OS }} container: streamhpc/opencl-sdk-base:ubuntu-18.04-20220127 strategy: @@ -217,6 +219,7 @@ jobs: cmake-latest: + if: false needs: [tools] runs-on: ${{ matrix.OS }} strategy: diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 53fc5e7d..585a99f8 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -7,6 +7,7 @@ env: jobs: macos-gcc: + if: false #runs-on: macos-latest runs-on: macos-11 # temporary, macos-latest only supports gcc-12 strategy: diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml new file mode 100644 index 00000000..a9459437 --- /dev/null +++ b/.github/workflows/presubmit.yml @@ -0,0 +1,238 @@ +name: Presubmit + +on: [push, pull_request] + +jobs: + linux: + runs-on: ubuntu-latest + strategy: + matrix: + CMAKE: [3.26.4] + C_COMPILER: + - gcc-11 + - gcc-13 + - clang-14 + - clang-16 + BIN: [64] + CONF: + - GEN: Unix Makefiles + CONFIG: Debug + - GEN: Unix Makefiles + CONFIG: Release + - GEN: Ninja Multi-Config + CONFIG: Release + IMAGE: + - streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + include: + - CMAKE: 3.1.3 + C_COMPILER: gcc-7 + BIN: 64 + CONF: + GEN: Unix Makefiles + CONFIG: Debug + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + - CMAKE: 3.1.3 + C_COMPILER: gcc-7 + BIN: 64 + CONF: + GEN: Unix Makefiles + CONFIG: Release + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + - CMAKE: 3.1.3 + C_COMPILER: gcc-7 + BIN: 32 + CONF: + GEN: Unix Makefiles + CONFIG: Debug + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + - CMAKE: 3.1.3 + C_COMPILER: gcc-7 + BIN: 32 + CONF: + GEN: Unix Makefiles + CONFIG: Release + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + - CMAKE: 3.1.3 + C_COMPILER: clang-8 + BIN: 64 + CONF: + GEN: Unix Makefiles + CONFIG: Debug + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + - CMAKE: 3.1.3 + C_COMPILER: clang-8 + BIN: 64 + CONF: + GEN: Unix Makefiles + CONFIG: Release + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + - CMAKE: 3.1.3 + C_COMPILER: clang-8 + BIN: 32 + CONF: + GEN: Unix Makefiles + CONFIG: Debug + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + - CMAKE: 3.1.3 + C_COMPILER: clang-8 + BIN: 32 + 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}} + DEB_INSTALLATION_PATH: /usr + INSTALL_LIBDIR: lib/x86_64-linux-gnu + + steps: + - name: Checkout OpenCL-ICD-Loader + uses: actions/checkout@v3 + + - name: Checkout OpenCL-Headers + uses: actions/checkout@v3 + with: + path: external/OpenCL-Headers + # ToDo: Change to KhronosGroup/OpenCL-Headers:main + repository: StreamHPC/OpenCL-Headers + ref: update-ci + + - name: Configure, install & package OpenCL-Headers + shell: bash + run: mkdir $GITHUB_WORKSPACE/external/OpenCL-Headers/build && + cd $GITHUB_WORKSPACE/external/OpenCL-Headers/build && + $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" + `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` + -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH + -D BUILD_TESTING=OFF + $GITHUB_WORKSPACE/external/OpenCL-Headers && + $CMAKE_EXE + --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build + --target install + -- + -j`nproc` && + $CPACK_EXE + --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" + -G DEB + -C ${{matrix.CONF.CONFIG}} + -B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" + + - name: Configure + shell: bash + run: mkdir $GITHUB_WORKSPACE/build && + cd $GITHUB_WORKSPACE/build && + $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" + -D BUILD_TESTING=ON + `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` + -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -m${{matrix.BIN}}" + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH + $GITHUB_WORKSPACE + + - name: Build + shell: bash + run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; + then + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config ${{matrix.CONF.CONFIG}} -- -j `nproc`; + else + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release; + fi + + - name: Test + shell: bash + working-directory: ${{runner.workspace}}/OpenCL-ICD-Loader/build + run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; + then + $CTEST_EXE --output-on-failure --parallel `nproc`; + else + $CTEST_EXE --output-on-failure -C Debug --parallel `nproc`; + $CTEST_EXE --output-on-failure -C Release --parallel `nproc`; + fi; + + - name: Package DEB + shell: bash + run: $CPACK_EXE + --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" + -G DEB + -C ${{matrix.CONF.CONFIG}} + -B "$GITHUB_WORKSPACE/package-deb" && + dpkg -c $GITHUB_WORKSPACE/package-deb/ocl-icd-opencl-dev_3.0-1_amd64.deb && + dpkg -c $GITHUB_WORKSPACE/package-deb/ocl-icd-libopencl1_3.0-1_amd64.deb + + - name: Consume (DEB) + shell: bash + run: dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb && + dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && + mkdir $GITHUB_WORKSPACE/build_package && + cd $GITHUB_WORKSPACE/build_package && + $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" + `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` + -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -m${{matrix.BIN}}" + $GITHUB_WORKSPACE/test/pkgconfig/bare && + if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; + then + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config ${{matrix.CONF.CONFIG}} -- -j `nproc`; + else + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release; + fi; + + - name: Test pkg-config (DEB) + shell: bash + # We expect no pre-processor and compile flags (--cflags) but we do expect link flags (--libs) + run: if [[ $(pkg-config OpenCL --cflags) ]]; + then + exit 1; + fi && + pkg-config OpenCL --libs | grep -q "\-lOpenCL" + + - name: Uninstall (DEB) + shell: bash + run: apt-get remove -y ocl-icd-opencl-dev ocl-icd-libopencl1 + + # - name: Re-configure for install + # shell: bash + # run: cd $GITHUB_WORKSPACE/build && + # $CMAKE_EXE -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install $GITHUB_WORKSPACE + + - name: Test install + shell: bash + run: $CMAKE_EXE --build $GITHUB_WORKSPACE/build --target install --config ${{matrix.CONF.CONFIG}} -- -j`nproc` + + - name: Consume (install) + shell: bash + run: mkdir $GITHUB_WORKSPACE/build_install && cd $GITHUB_WORKSPACE/build_install && + $CMAKE_EXE + -G "${{matrix.CONF.GEN}}" + `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` + -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -m${{matrix.BIN}}" + -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install + $GITHUB_WORKSPACE/test/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 + # We expect no pre-processor and compile flags (--cflags) but we do expect link flags (--libs) + run: export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR/pkgconfig && + if [[ $(pkg-config OpenCL --cflags) ]]; + then + exit 1; + fi && + pkg-config OpenCL --libs | grep -q "\-L$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR \-lOpenCL" diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 407a7e29..deb9a895 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -5,6 +5,7 @@ on: [push, pull_request] jobs: tools: + if: false runs-on: windows-2022 strategy: matrix: @@ -41,6 +42,7 @@ jobs: run: Invoke-WebRequest ${env:NINJA_URL} -OutFile ~\Downloads\ninja-win.zip msvc: + if: false needs: [tools] runs-on: windows-2022 strategy: diff --git a/CMakeLists.txt b/CMakeLists.txt index 98a67f4e..cac997d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,11 +55,19 @@ option (ENABLE_OPENCL_LAYERS "Enable OpenCL Layers" ON) include(CMakeDependentOption) cmake_dependent_option(ENABLE_OPENCL_LAYERINFO "Enable building cllayerinfo tool" ON ENABLE_OPENCL_LAYERS OFF) +include(GNUInstallDirs) + +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}) +else() + set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}/x86_64-linux-gnu) +endif() + set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +include(CheckFunctionExists) include(JoinPaths) include(Package) -include(CheckFunctionExists) check_function_exists(secure_getenv HAVE_SECURE_GETENV) check_function_exists(__secure_getenv HAVE___SECURE_GETENV) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/loader/icd_cmake_config.h.in @@ -220,14 +228,6 @@ if((CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME OR OPENCL_ICD_LOADER_BUILD_TESTING) add_subdirectory (test) endif() -include (GNUInstallDirs) - -if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}) -else() - set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}/x86_64-linux-gnu) -endif() - install( TARGETS OpenCL EXPORT OpenCLICDLoaderTargets @@ -268,12 +268,12 @@ install( FILE OpenCLICDLoaderTargets.cmake NAMESPACE OpenCL:: DESTINATION ${config_package_location} - COMPONENT runtime + COMPONENT dev ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCLICDLoader/OpenCLICDLoaderConfig.cmake DESTINATION ${config_package_location} - COMPONENT runtime + COMPONENT dev ) unset(CMAKE_SIZEOF_VOID_P) @@ -286,7 +286,7 @@ write_basic_package_version_file( install( FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCLICDLoader/OpenCLICDLoaderConfigVersion.cmake DESTINATION ${config_package_location} - COMPONENT runtime + COMPONENT dev ) # Separate namelink from shared library and symlink for DEB packaging @@ -303,14 +303,3 @@ install (TARGETS OpenCL LIBRARY DESTINATION ${INSTALL_LIBDIR} COMPONENT dev NAMELINK_ONLY) - -join_paths(OPENCL_LIBDIR_PC "\${exec_prefix}" "${INSTALL_LIBDIR}") - -if (NOT MSVC) - configure_file(OpenCL.pc.in OpenCL.pc @ONLY) - set(pkg_config_location ${INSTALL_LIBDIR}/pkgconfig) - install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/OpenCL.pc - DESTINATION ${pkg_config_location} - COMPONENT dev) -endif() diff --git a/OpenCL.pc.in b/OpenCL.pc.in index 1b6730c9..ef353336 100644 --- a/OpenCL.pc.in +++ b/OpenCL.pc.in @@ -1,4 +1,4 @@ -prefix=@CMAKE_INSTALL_PREFIX@ +prefix=@PKGCONFIG_PREFIX@ exec_prefix=${prefix} libdir=@OPENCL_LIBDIR_PC@ diff --git a/cmake/Package.cmake b/cmake/Package.cmake index 954c7a91..5289f946 100644 --- a/cmake/Package.cmake +++ b/cmake/Package.cmake @@ -10,6 +10,43 @@ if(NOT CPACK_PACKAGING_INSTALL_PREFIX) set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") endif() +# Configuring pkgconfig + +# We need two different instances of OpenCL.pc +# One for installing (cmake --install), which contains CMAKE_INSTALL_PREFIX as prefix +# And another for the Debian development package, which contains CPACK_PACKAGING_INSTALL_PREFIX as prefix + +join_paths(OPENCL_INCLUDEDIR_PC "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") +join_paths(OPENCL_LIBDIR_PC "\${exec_prefix}" "${INSTALL_LIBDIR}") + +set(pkg_config_location ${INSTALL_LIBDIR}/pkgconfig) +set(PKGCONFIG_PREFIX "${CMAKE_INSTALL_PREFIX}") +configure_file( + OpenCL.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL.pc + @ONLY) +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL.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.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL.pc + @ONLY) + # This install component is only needed in the Debian package + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL.pc + DESTINATION ${pkg_config_location} + COMPONENT dev + EXCLUDE_FROM_ALL) +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}) @@ -24,6 +61,7 @@ set(PACKAGE_VERSION_REVISION "${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PAC # Get architecture execute_process(COMMAND dpkg "--print-architecture" OUTPUT_VARIABLE CPACK_PACKAGE_ARCHITECTURE) +string(STRIP "${CPACK_PACKAGE_ARCHITECTURE}" CPACK_PACKAGE_ARCHITECTURE) ########################################################## # Components # @@ -59,6 +97,7 @@ set(CPACK_DEBIAN_DEV_PACKAGE_NAME set(CPACK_DEBIAN_DEV_FILE_NAME "${CPACK_DEBIAN_DEV_PACKAGE_NAME}_${PACKAGE_VERSION_REVISION}_${CPACK_PACKAGE_ARCHITECTURE}.deb") # Dependencies +set(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS ON) # Component dependencies are reflected in package relationships set(CPACK_DEBIAN_DEV_PACKAGE_DEPENDS "opencl-c-headers") set(CPACK_COMPONENT_DEV_DEPENDS runtime) diff --git a/test/loader_test/icd_test_match.c b/test/loader_test/icd_test_match.c index b70e741f..cf791814 100644 --- a/test/loader_test/icd_test_match.c +++ b/test/loader_test/icd_test_match.c @@ -6,7 +6,7 @@ #endif #include -int test_icd_match() +int test_icd_match(void) { int error = 0; char *app_log = NULL, *stub_log = NULL; diff --git a/test/loader_test/main.c b/test/loader_test/main.c index b8b73040..e10bee52 100644 --- a/test/loader_test/main.c +++ b/test/loader_test/main.c @@ -3,18 +3,17 @@ #include #include "param_struct.h" -extern int test_create_calls(); -extern int test_platforms(); -extern int test_cl_runtime(); -extern int test_kernel(); -extern int test_buffer_object(); -extern int test_program_objects(); -extern int test_image_objects(); -extern int test_sampler_objects(); -extern int test_OpenGL_share(); -extern int test_release_calls(); - -extern int test_icd_match(); +extern int test_create_calls(void); +extern int test_platforms(void); +extern int test_cl_runtime(void); +extern int test_kernel(void); +extern int test_buffer_object(void); +extern int test_program_objects(void); +extern int test_image_objects(void); +extern int test_sampler_objects(void); +extern int test_OpenGL_share(void); +extern int test_release_calls(void); +extern int test_icd_match(void); int main(int argc, char **argv) { diff --git a/test/loader_test/test_buffer_object.c b/test/loader_test/test_buffer_object.c index 38d5b902..d133875a 100644 --- a/test/loader_test/test_buffer_object.c +++ b/test/loader_test/test_buffer_object.c @@ -408,7 +408,7 @@ int test_clGetMemObjectInfo (const struct clGetMemObjectInfo_st *data) return 0; } -int test_buffer_object() +int test_buffer_object(void) { int i; for (i=0; i Date: Thu, 3 Aug 2023 08:17:40 +0000 Subject: [PATCH 04/14] Fixes for CMake < 3.15 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cac997d8..a3779e07 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,7 +57,7 @@ cmake_dependent_option(ENABLE_OPENCL_LAYERINFO "Enable building cllayerinfo tool include(GNUInstallDirs) -if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR (CMAKE_VERSION VERSION_LESS "3.15")) set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}) else() set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}/x86_64-linux-gnu) From 378dd996493453081dd192c97526f19361ed62d8 Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Wed, 2 Aug 2023 15:12:46 +0000 Subject: [PATCH 05/14] Fixes for CMake < 3.5 --- .github/workflows/presubmit.yml | 48 +++++++++++++++------------------ cmake/Package.cmake | 38 +++++++++++++++++--------- 2 files changed, 47 insertions(+), 39 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index a9459437..9a0d6f08 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -30,56 +30,56 @@ jobs: CONF: GEN: Unix Makefiles CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - CMAKE: 3.1.3 C_COMPILER: gcc-7 BIN: 64 CONF: GEN: Unix Makefiles CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - CMAKE: 3.1.3 C_COMPILER: gcc-7 BIN: 32 CONF: GEN: Unix Makefiles CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - CMAKE: 3.1.3 C_COMPILER: gcc-7 BIN: 32 CONF: GEN: Unix Makefiles CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - CMAKE: 3.1.3 C_COMPILER: clang-8 BIN: 64 CONF: GEN: Unix Makefiles CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - CMAKE: 3.1.3 C_COMPILER: clang-8 BIN: 64 CONF: GEN: Unix Makefiles CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - CMAKE: 3.1.3 C_COMPILER: clang-8 BIN: 32 CONF: GEN: Unix Makefiles CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - CMAKE: 3.1.3 C_COMPILER: clang-8 BIN: 32 CONF: GEN: Unix Makefiles CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 container: ${{matrix.IMAGE}} env: CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake @@ -109,8 +109,8 @@ jobs: -G "${{matrix.CONF.GEN}}" `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install - -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH + -D CMAKE_INSTALL_PREFIX=`if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "$GITHUB_WORKSPACE/external/OpenCL-Headers/install"; else echo "$DEB_INSTALLATION_PATH"; fi` + `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH"; fi` -D BUILD_TESTING=OFF $GITHUB_WORKSPACE/external/OpenCL-Headers && $CMAKE_EXE @@ -133,9 +133,9 @@ jobs: -D BUILD_TESTING=ON `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -m${{matrix.BIN}}" - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" - -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH + -D CMAKE_INSTALL_PREFIX=`if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "$GITHUB_WORKSPACE/install"; else echo "$DEB_INSTALLATION_PATH"; fi` + `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH"; fi` + `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install"; fi` $GITHUB_WORKSPACE - name: Build @@ -157,7 +157,7 @@ jobs: else $CTEST_EXE --output-on-failure -C Debug --parallel `nproc`; $CTEST_EXE --output-on-failure -C Release --parallel `nproc`; - fi; + fi - name: Package DEB shell: bash @@ -165,9 +165,7 @@ jobs: --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" -G DEB -C ${{matrix.CONF.CONFIG}} - -B "$GITHUB_WORKSPACE/package-deb" && - dpkg -c $GITHUB_WORKSPACE/package-deb/ocl-icd-opencl-dev_3.0-1_amd64.deb && - dpkg -c $GITHUB_WORKSPACE/package-deb/ocl-icd-libopencl1_3.0-1_amd64.deb + -B "$GITHUB_WORKSPACE/package-deb" - name: Consume (DEB) shell: bash @@ -186,7 +184,7 @@ jobs: else $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug; $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release; - fi; + fi - name: Test pkg-config (DEB) shell: bash @@ -201,11 +199,6 @@ jobs: shell: bash run: apt-get remove -y ocl-icd-opencl-dev ocl-icd-libopencl1 - # - name: Re-configure for install - # 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` @@ -225,14 +218,17 @@ jobs: else $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Debug -- -j`nproc`; $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Release -- -j`nproc`; - fi; + fi - name: Test pkg-config (install) shell: bash # We expect no pre-processor and compile flags (--cflags) but we do expect link flags (--libs) - run: export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR/pkgconfig && + run: if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; + then + export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR/pkgconfig; + fi && if [[ $(pkg-config OpenCL --cflags) ]]; then exit 1; fi && - pkg-config OpenCL --libs | grep -q "\-L$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR \-lOpenCL" + pkg-config OpenCL --libs | `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then grep -q "\-L$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR \-lOpenCL"; else grep -q "\-lOpenCL"; fi` diff --git a/cmake/Package.cmake b/cmake/Package.cmake index 5289f946..b682a203 100644 --- a/cmake/Package.cmake +++ b/cmake/Package.cmake @@ -21,28 +21,40 @@ join_paths(OPENCL_LIBDIR_PC "\${exec_prefix}" "${INSTALL_LIBDIR}") set(pkg_config_location ${INSTALL_LIBDIR}/pkgconfig) set(PKGCONFIG_PREFIX "${CMAKE_INSTALL_PREFIX}") -configure_file( - OpenCL.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL.pc - @ONLY) -install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL.pc - DESTINATION ${pkg_config_location} - COMPONENT pkgconfig_install) +# Configure and install OpenCL.pc for installing the project if(NOT (CMAKE_VERSION VERSION_LESS "3.5")) - set(PKGCONFIG_PREFIX "${CPACK_PACKAGING_INSTALL_PREFIX}") configure_file( OpenCL.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL.pc + ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL.pc @ONLY) - # This install component is only needed in the Debian package + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL.pc + DESTINATION ${pkg_config_location} + COMPONENT pkgconfig_install) +endif() + +# Configure and install OpenCL.pc for the Debian package +if(NOT (CMAKE_VERSION VERSION_LESS "3.5") OR (CMAKE_INSTALL_PREFIX STREQUAL CPACK_PACKAGING_INSTALL_PREFIX)) +set(PKGCONFIG_PREFIX "${CPACK_PACKAGING_INSTALL_PREFIX}") +configure_file( + OpenCL.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL.pc + @ONLY) + + # We exclude the file from the normal installation when using CMake >= 3.5, because in that + # case we already set a separate file for it + set(EXTRA_ARGS) + if(NOT (CMAKE_VERSION VERSION_LESS "3.5")) + list(APPEND EXTRA_ARGS EXCLUDE_FROM_ALL) + endif() + install( FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL.pc DESTINATION ${pkg_config_location} COMPONENT dev - EXCLUDE_FROM_ALL) -elseif(NOT (CMAKE_INSTALL_PREFIX STREQUAL CPACK_PACKAGING_INSTALL_PREFIX)) + ${EXTRA_ARGS}) +else() 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() From f78ebab7093450eb826e79622d8ff22d17c1494b Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Thu, 3 Aug 2023 15:29:04 +0000 Subject: [PATCH 06/14] Remove linux.yml --- .github/workflows/linux.yml | 425 ------------------------------------ CMakeLists.txt | 10 +- 2 files changed, 4 insertions(+), 431 deletions(-) delete mode 100644 .github/workflows/linux.yml diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml deleted file mode 100644 index edad25e0..00000000 --- a/.github/workflows/linux.yml +++ /dev/null @@ -1,425 +0,0 @@ -name: Linux - -on: [push, pull_request] - -env: - DEB_INSTALLATION_PATH: /usr - INSTALL_LIBDIR: lib/x86_64-linux-gnu - OPENCL_PKGCONFIG_PATHS: $DEB_INSTALLATION_PATH/INSTALL_LIBDIR/pkgconfig:${{ github.workspace }}/install/$INSTALL_LIBDIR/pkgconfig:${{ github.workspace }}/external/OpenCL-Headers/install/share/pkgconfig - -jobs: - tools: - if: false - runs-on: ${{ matrix.OS }} - strategy: - matrix: - OS : [ubuntu-20.04] - CMAKE: [3.21.2] - env: - CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{ matrix.CMAKE }}/cmake-${{ matrix.CMAKE }}-Linux-x86_64.tar.gz - - steps: - - name: Cache CMake - uses: actions/cache@v3 - id: cmake - env: - cache-name: cache-cmake - with: - path: ~/cmake-${{matrix.CMAKE}}-Linux-x86_64.tar.gz - key: ${{ runner.os }}-${{ env.cache-name }}-${{matrix.CMAKE}} - - name: Checkout CMake - if: steps.cmake.outputs.cache-hit != 'true' - run: wget -c -O ~/cmake-${{matrix.CMAKE}}-Linux-x86_64.tar.gz $CMAKE_URL - - cmake-minimum: - if: false - runs-on: ${{ matrix.OS }} - container: streamhpc/opencl-sdk-base:ubuntu-18.04-20220127 - strategy: - matrix: - OS: [ubuntu-20.04] - COMPILER: [gcc-7, clang-8] #gcc-8 clang-10 - EXT: [ON, OFF] - GEN: [Unix Makefiles] - CONFIG: [Release, Release] - STD: [99, 11] - BIN: [64] # Temporarily disable cross-compilation - CMAKE: [3.1.3] - env: - CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake - CPACK_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cpack - CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest - OPENCL_PKGCONFIG_PATHS: $DEB_INSTALLATION_PATH/$INSTALL_LIBDIR/pkgconfig:/__w/OpenCL-ICD-Loader/OpenCL-ICD-Loader/install/$INSTALL_LIBDIR/pkgconfig:/__w/OpenCL-ICD-Loader/OpenCL-ICD-Loader/external/OpenCL-Headers/install/share/pkgconfig - - - steps: - - name: Checkout OpenCL-ICD-Loader - uses: actions/checkout@v3 - - - name: Checkout OpenCL-Headers - uses: actions/checkout@v3 - with: - # Change to KhronosGroup/OpenCL-Headers when PR for DEB packaging is merged - repository: StreamHPC/OpenCL-Headers - path: external/OpenCL-Headers - # Remove when PR for DEB packaging is merged - ref: 58-create-deb-package - - - name: Build install & package OpenCL-Headers - run: $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install - -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH - -D BUILD_TESTING=OFF - -B$GITHUB_WORKSPACE/external/OpenCL-Headers/build - -H$GITHUB_WORKSPACE/external/OpenCL-Headers ; - $CMAKE_EXE - --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build - --target install - -- - -j`nproc` ; - $CPACK_EXE - --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" - -G DEB - -C Release - -B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" - - - name: Configure - shell: bash - run: $CMAKE_EXE - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" - -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH - -B$GITHUB_WORKSPACE/build - -H$GITHUB_WORKSPACE - - - name: Build - shell: bash - run: $CMAKE_EXE - --build $GITHUB_WORKSPACE/build - -- - -j`nproc` - - - name: Package DEB - shell: bash - run: $CPACK_EXE - --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" - -G DEB - -C Release - -B "$GITHUB_WORKSPACE/package-deb" - - - name: Test - working-directory: ${{runner.workspace}}/OpenCL-ICD-Loader/build - shell: bash - run: $CTEST_EXE --output-on-failure --parallel `nproc` - - - name: Install - shell: bash - run: $CMAKE_EXE - --build $GITHUB_WORKSPACE/build - --target install - -- - -j`nproc` - - - name: Install dependencies (Package DEB) - shell: bash - run: | - dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.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 \ - -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} \ - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" \ - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} \ - -D CMAKE_C_STANDARD=${{matrix.STD}} \ - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} \ - -B$GITHUB_WORKSPACE/build \ - -H$GITHUB_WORKSPACE - $CMAKE_EXE --build $GITHUB_WORKSPACE/build -- -j`nproc` - - - name: "Consume (standalone): Configure/Build/Test" - shell: bash - run: $CMAKE_EXE - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D DRIVER_STUB_PATH=$GITHUB_WORKSPACE/build/libOpenCLDriverStub.so - -B$GITHUB_WORKSPACE/build/downstream/bare - -H$GITHUB_WORKSPACE/test/pkgconfig/bare ; - $CMAKE_EXE - --build $GITHUB_WORKSPACE/build/downstream/bare ; - cd $GITHUB_WORKSPACE/build/downstream/bare ; - $CTEST_EXE --output-on-failure - - - name: "Consume (SDK): Configure/Build/Test" - shell: bash - run: $CMAKE_EXE -E make_directory $DEB_INSTALLATION_PATH/share/cmake/OpenCL ; - echo -e "include(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")" > $DEB_INSTALLATION_PATH/share/cmake/OpenCL/OpenCLConfig.cmake ; - $CMAKE_EXE - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D DRIVER_STUB_PATH=$GITHUB_WORKSPACE/build/libOpenCLDriverStub.so - -B$GITHUB_WORKSPACE/build/downstream/sdk - -H$GITHUB_WORKSPACE/test/pkgconfig/sdk ; - $CMAKE_EXE - --build $GITHUB_WORKSPACE/build/downstream/sdk ; - cd $GITHUB_WORKSPACE/build/downstream/sdk ; - $CTEST_EXE --output-on-failure - - - name: Test pkg-config --cflags - shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL --cflags | grep -q "$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" - - - name: Test pkg-config --libs - shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL --libs | grep -q "\-L$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR -lOpenCL" - - - name: Consume pkg-config - shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D DRIVER_STUB_PATH=$GITHUB_WORKSPACE/build/libOpenCLDriverStub.so - -B$GITHUB_WORKSPACE/build/downstream/pkgconfig - -H$GITHUB_WORKSPACE/test/pkgconfig/pkgconfig ; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/pkgconfig ; - cd $GITHUB_WORKSPACE/build/downstream/pkgconfig ; - $CTEST_EXE --output-on-failure - - - - cmake-latest: - if: false - needs: [tools] - runs-on: ${{ matrix.OS }} - strategy: - matrix: - OS : [ubuntu-20.04] - COMPILER: [gcc-9, gcc-11, clang-11, clang-13] - EXT: [ON, OFF] - GEN: [Ninja Multi-Config] - STD: [99, 11, 17] - BIN: [64] # Temporarily disable cross-compilation - CMAKE: [3.21.2] - 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-ICD-Loader - uses: actions/checkout@v3 - - - name: Checkout OpenCL-Headers - uses: actions/checkout@v3 - with: - # Change to KhronosGroup/OpenCL-Headers when PR for DEB packaging is merged - repository: StreamHPC/OpenCL-Headers - path: external/OpenCL-Headers - # Remove when PR for DEB packaging is merged - ref: 58-create-deb-package - - - name: Restore CMake - uses: actions/cache@v3 - id: cmake - env: - cache-name: cache-cmake - with: - path: ~/cmake-${{matrix.CMAKE}}-Linux-x86_64.tar.gz - key: ${{ runner.os }}-${{ env.cache-name }}-${{matrix.CMAKE}} - - - name: Create Build Environment - run: sudo apt-get update -q; - if [[ "${{matrix.GEN}}" =~ "Ninja" && ! `which ninja` ]]; then sudo apt install -y ninja-build; fi; - if [[ "${{matrix.COMPILER}}" =~ "gcc-11" ]]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; fi; - if [[ "${{matrix.COMPILER}}" =~ "clang-13" ]]; then wget -q -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -; sudo apt-add-repository -y 'deb [arch=amd64] https://apt.llvm.org/focal/ llvm-toolchain-focal-13 main'; fi; - sudo apt install -y ${{matrix.COMPILER}}; - if [[ "${{matrix.BIN}}" == "32" && "${{matrix.COMPILER}}" =~ "gcc" ]]; then sudo apt install -y ${{matrix.COMPILER}}-multilib; fi; - if [[ "${{matrix.BIN}}" == "32" && "${{matrix.COMPILER}}" =~ "clang" ]]; then sudo apt install -y gcc-multilib ; fi; - mkdir -p /opt/Kitware/CMake; - tar -xzf ~/cmake-${{matrix.CMAKE}}-Linux-x86_64.tar.gz --directory /opt/Kitware/CMake; - mv /opt/Kitware/CMake/cmake-${{ matrix.CMAKE }}-* /opt/Kitware/CMake/${{ matrix.CMAKE }} - # Install Ninja only if it's the selected generator and it's not available. - - - name: Build, install & package OpenCL-Headers - run: $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install - -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH - -D BUILD_TESTING=OFF - -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build - -S $GITHUB_WORKSPACE/external/OpenCL-Headers; - sudo $CMAKE_EXE - --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build - --target install - -- - -j`nproc` ; - sudo $CPACK_EXE - --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" - -G DEB - -C Release - -B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" - - - name: Configure - shell: bash - run: $CMAKE_EXE - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" - -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH - -B $GITHUB_WORKSPACE/build - -S $GITHUB_WORKSPACE - - - name: Build - shell: bash - run: | - $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release -- -j`nproc`; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug -- -j`nproc` - - - name: Package DEB - shell: bash - run: $CPACK_EXE - --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" - -G DEB - -C Release - -B "$GITHUB_WORKSPACE/package-deb" - - - name: Test - working-directory: ${{runner.workspace}}/OpenCL-ICD-Loader/build - shell: bash - run: | - $CTEST_EXE --output-on-failure -C Release --parallel `nproc`; - $CTEST_EXE --output-on-failure -C Debug --parallel `nproc`; - - - name: Install - shell: bash - run: $CMAKE_EXE - --build $GITHUB_WORKSPACE/build - --target install - --config Release - -- - -j`nproc` - - - name: Install dependencies (Package DEB) - shell: bash - run: | - sudo dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb - - - name: Consume (Package DEB) - shell: bash - run: | - sudo dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb - rm -rf $GITHUB_WORKSPACE/build - $CMAKE_EXE \ - -G "${{matrix.GEN}}" \ - -D BUILD_TESTING=ON \ - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" \ - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} \ - -D CMAKE_C_STANDARD=${{matrix.STD}} \ - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} \ - -B $GITHUB_WORKSPACE/build \ - -S $GITHUB_WORKSPACE - $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug -- -j`nproc` - $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release -- -j`nproc` - - - name: "Consume (standalone): Configure/Build/Test" - shell: bash - run: $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D DRIVER_STUB_PATH=$GITHUB_WORKSPACE/build/Release/libOpenCLDriverStub.so - -B $GITHUB_WORKSPACE/build/downstream/bare - -S $GITHUB_WORKSPACE/test/pkgconfig/bare; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/bare --config Release; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/bare --config Debug; - cd $GITHUB_WORKSPACE/build/downstream/bare; - $CTEST_EXE --output-on-failure -C Release; - $CTEST_EXE --output-on-failure -C Debug; - - - name: "Consume (SDK): Configure/Build/Test" - shell: bash - run: $CMAKE_EXE -E make_directory $DEB_INSTALLATION_PATH/share/cmake/OpenCL ; - echo -e "include(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")" > $DEB_INSTALLATION_PATH/share/cmake/OpenCL/OpenCLConfig.cmake ; - $CMAKE_EXE - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D DRIVER_STUB_PATH=$GITHUB_WORKSPACE/build/Release/libOpenCLDriverStub.so - -B $GITHUB_WORKSPACE/build/downstream/sdk - -S $GITHUB_WORKSPACE/test/pkgconfig/sdk; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/sdk --config Release; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/sdk --config Debug; - cd $GITHUB_WORKSPACE/build/downstream/sdk; - $CTEST_EXE --output-on-failure -C Release; - $CTEST_EXE --output-on-failure -C Debug; - - - name: Test pkg-config --cflags - shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL --cflags | grep -q "$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" - - - name: Test pkg-config --libs - shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL --libs | grep -q "\-L$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR -lOpenCL" - - - name: Consume pkg-config - shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D DRIVER_STUB_PATH=$GITHUB_WORKSPACE/build/Release/libOpenCLDriverStub.so - -B $GITHUB_WORKSPACE/build/downstream/pkgconfig - -S $GITHUB_WORKSPACE/test/pkgconfig/pkgconfig; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/pkgconfig --config Release; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/pkgconfig --config Debug; - cd $GITHUB_WORKSPACE/build/downstream/pkgconfig; - $CTEST_EXE --output-on-failure -C Release; - $CTEST_EXE --output-on-failure -C Debug; diff --git a/CMakeLists.txt b/CMakeLists.txt index a3779e07..dac00ce5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -291,15 +291,13 @@ install( # Separate namelink from shared library and symlink for DEB packaging install (TARGETS OpenCL - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${INSTALL_LIBDIR} - LIBRARY DESTINATION ${INSTALL_LIBDIR} + LIBRARY + DESTINATION ${INSTALL_LIBDIR} COMPONENT runtime NAMELINK_SKIP) install (TARGETS OpenCL - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${INSTALL_LIBDIR} - LIBRARY DESTINATION ${INSTALL_LIBDIR} + LIBRARY + DESTINATION ${INSTALL_LIBDIR} COMPONENT dev NAMELINK_ONLY) From 823455d736994abb5dfdfca773f62860f96c296b Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Thu, 3 Aug 2023 12:57:25 +0000 Subject: [PATCH 07/14] Update Windows CI --- .github/workflows/presubmit.yml | 1 + .github/workflows/windows.yml | 430 ++++++++++++++++++-------------- 2 files changed, 248 insertions(+), 183 deletions(-) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 9a0d6f08..98bf0377 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -4,6 +4,7 @@ on: [push, pull_request] jobs: linux: + if: false runs-on: ubuntu-latest strategy: matrix: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index deb9a895..5be5f9aa 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -3,63 +3,46 @@ name: Windows on: [push, pull_request] jobs: - - tools: - if: false + windows: runs-on: windows-2022 strategy: matrix: - CMAKE: [3.22.0] - NINJA: [1.10.2] + VER: [v141, v142, v143, clangcl] + GEN: [Visual Studio 17 2022, Ninja Multi-Config] + BIN: [x64] + exclude: + - VER: clangcl + GEN: Ninja Multi-Config + include: + - VER: v142 + GEN: Visual Studio 17 2022 + BIN: x86 env: - CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{matrix.CMAKE}}/cmake-${{matrix.CMAKE}}-windows-x86_64.zip - NINJA_URL: https://github.com/ninja-build/ninja/releases/download/v${{matrix.NINJA}}/ninja-win.zip + 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 CMake - uses: actions/cache@v3 - id: cmake - env: - cache-name: cache-cmake - with: - path: ~/Downloads/cmake-${{matrix.CMAKE}}-windows-x86_64.zip - key: ${{ runner.os }}-${{ env.cache-name }}-${{matrix.CMAKE}} - - name: Cache Ninja + - name: Cache Ninja install + if: matrix.GEN == 'Ninja Multi-Config' + id: ninja-install uses: actions/cache@v3 - id: ninja - env: - cache-name: cache-ninja with: - path: ~/Downloads/ninja-win.zip - key: ${{ runner.os }}-${{ env.cache-name }}-${{matrix.NINJA}} - - name: Checkout CMake - if: steps.cmake.outputs.cache-hit != 'true' - shell: pwsh - run: Invoke-WebRequest ${env:CMAKE_URL} -OutFile ~\Downloads\cmake-${{matrix.CMAKE}}-windows-x86_64.zip - - name: Checkout Ninja - if: steps.ninja.outputs.cache-hit != 'true' - shell: pwsh - run: Invoke-WebRequest ${env:NINJA_URL} -OutFile ~\Downloads\ninja-win.zip + path: | + C:\Tools\Ninja + key: ${{runner.os}}-ninja-${{env.NINJA_URL}} - msvc: - if: false - needs: [tools] - runs-on: windows-2022 - strategy: - matrix: - VER: [v141, v142, v143] - EXT: [ON, OFF] - GEN: [Visual Studio 17 2022, Ninja Multi-Config] - BIN: [x64, x86] - STD: [90, 11, 17] - CMAKE: [3.22.0] - NINJA: [1.10.2] - env: - CMAKE_EXE: C:\Tools\Kitware\CMake\${{matrix.CMAKE}}\bin\cmake.exe - CTEST_EXE: C:\Tools\Kitware\CMake\${{matrix.CMAKE}}\bin\ctest.exe - NINJA_EXE: C:\Tools\Ninja\ninja.exe + - 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\* - steps: - name: Checkout OpenCL-ICD-Loader uses: actions/checkout@v3 @@ -69,180 +52,261 @@ jobs: repository: KhronosGroup/OpenCL-Headers path: external/OpenCL-Headers - - name: Restore CMake - uses: actions/cache@v3 - id: cmake - env: - cache-name: cache-cmake - with: - path: ~/Downloads/cmake-${{matrix.CMAKE}}-windows-x86_64.zip - key: ${{ runner.os }}-${{ env.cache-name }}-${{matrix.CMAKE}} - - - name: Restore Ninja - uses: actions/cache@v3 - id: ninja - env: - cache-name: cache-ninja - with: - path: ~/Downloads/ninja-win.zip - key: ${{ runner.os }}-${{ env.cache-name }}-${{matrix.NINJA}} - - - name: Create Build Environment - shell: pwsh - run: | - Expand-Archive ~\Downloads\cmake-${{matrix.CMAKE}}-windows-x86_64.zip -DestinationPath C:\Tools\Kitware\CMake\ - Rename-Item C:\Tools\Kitware\CMake\* ${{matrix.CMAKE}} - Expand-Archive ~\Downloads\ninja-win.zip -DestinationPath C:\Tools\Ninja\ - & ${env:CMAKE_EXE} --version - & ${env:NINJA_EXE} --version - - name: Build & install OpenCL-Headers (MSBuild) if: matrix.GEN == 'Visual Studio 17 2022' - shell: cmd + shell: pwsh run: | - set C_FLAGS="/W4 /WX" - if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) - %CMAKE_EXE% -G "${{matrix.GEN}}" -A %BIN% -T ${{matrix.VER}} -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -D BUILD_TESTING=OFF -S %GITHUB_WORKSPACE%\external\OpenCL-Headers -B %GITHUB_WORKSPACE%\external\OpenCL-Headers\build - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/external/OpenCL-Headers/build --target install --config Release -- /verbosity:minimal /maxCpuCount /noLogo + $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + $C_FLAGS='/W4 /WX' + & cmake ` + -G "${{matrix.GEN}}" ` + -A $BIN ` + -T ${{matrix.VER}} ` + -D BUILD_TESTING=OFF ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` + -B ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build + & cmake ` + --build "${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build" ` + --target install ` + -- ` + /verbosity:minimal ` + /maxCpuCount ` + /noLogo ` - name: Build & install OpenCL-Headers (Ninja Multi-Config) if: matrix.GEN == 'Ninja Multi-Config' - shell: cmd + shell: pwsh run: | - set C_FLAGS="/W4 /WX" - if /I "${{matrix.VER}}"=="v140" (set VER=14.0) - if /I "${{matrix.VER}}"=="v141" (set VER=14.1) - if /I "${{matrix.VER}}"=="v142" (set VER=14.2) - if /I "${{matrix.VER}}"=="v143" (set VER=14.3) - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - %CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_MAKE_PROGRAM=%NINJA_EXE% -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -D BUILD_TESTING=OFF -S %GITHUB_WORKSPACE%\external\OpenCL-Headers -B %GITHUB_WORKSPACE%\external\OpenCL-Headers\build - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/external/OpenCL-Headers/build --target install -- -j%NUMBER_OF_PROCESSORS% + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" + Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=$VER" + $C_FLAGS='/W4 /WX' + & cmake ` + -G "${{matrix.GEN}}" ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D BUILD_TESTING=OFF ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` + -B ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build + & cmake ` + --build "${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build" ` + --target install ` + -- ` + -j ${env:NUMBER_OF_PROCESSORS} - name: Configure (MSBuild) if: matrix.GEN == 'Visual Studio 17 2022' - shell: cmd + shell: pwsh # no /WX during configuration because: - # warning C4459: declaration of 'platform' hides global declaration - # warning C4100: 'input_headers': unreferenced formal parameter + # error C2220: warning treated as error - no 'object' file generated run: | - set C_FLAGS="/W4" - if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) - %CMAKE_EXE% -G "${{matrix.GEN}}" -A %BIN% -T ${{matrix.VER}} -D BUILD_TESTING=ON -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -S %GITHUB_WORKSPACE% -B %GITHUB_WORKSPACE%\build + $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + $C_FLAGS='/W4' + & cmake ` + -G "${{matrix.GEN}}" ` + -A $BIN ` + -T ${{matrix.VER}} ` + -D BUILD_TESTING=ON ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` + -D CMAKE_PREFIX_PATH=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -S ${env:GITHUB_WORKSPACE} ` + -B ${env:GITHUB_WORKSPACE}\build - name: Configure (Ninja Multi-Config) if: matrix.GEN == 'Ninja Multi-Config' - shell: cmd + shell: pwsh # no /WX during configuration because: - # warning C4459: declaration of 'platform' hides global declaration - # warning C4100: 'input_headers': unreferenced formal parameter + # error C2220: warning treated as error - no 'object' file generated run: | - set C_FLAGS="/W4" - if /I "${{matrix.VER}}"=="v140" (set VER=14.0) - if /I "${{matrix.VER}}"=="v141" (set VER=14.1) - if /I "${{matrix.VER}}"=="v142" (set VER=14.2) - if /I "${{matrix.VER}}"=="v143" (set VER=14.3) - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - %CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_MAKE_PROGRAM=%NINJA_EXE% -D BUILD_TESTING=ON -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -S %GITHUB_WORKSPACE% -B %GITHUB_WORKSPACE%\build + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" + Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=$VER" + $C_FLAGS='/W4' + & cmake ` + -G "${{matrix.GEN}}" ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D BUILD_TESTING=ON ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` + -D CMAKE_PREFIX_PATH=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -S ${env:GITHUB_WORKSPACE} ` + -B ${env:GITHUB_WORKSPACE}\build - name: Build (MSBuild) if: matrix.GEN == 'Visual Studio 17 2022' - shell: cmd + shell: pwsh run: | - %CMAKE_EXE% --build %GITHUB_WORKSPACE%\build --config Release -- /verbosity:minimal /maxCpuCount /noLogo - %CMAKE_EXE% --build %GITHUB_WORKSPACE%\build --config Debug -- /verbosity:minimal /maxCpuCount /noLogo + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\build" ` + --config $Config ` + -- ` + /verbosity:minimal ` + /maxCpuCount ` + /noLogo + } - - name: Build (Ninja) + - name: Build (Ninja Multi-Config) if: matrix.GEN == 'Ninja Multi-Config' - shell: cmd + shell: pwsh run: | - if /I "${{matrix.VER}}"=="v140" set VER=14.0 - if /I "${{matrix.VER}}"=="v141" set VER=14.1 - if /I "${{matrix.VER}}"=="v142" set VER=14.2 - if /I "${{matrix.VER}}"=="v143" set VER=14.3 - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - %CMAKE_EXE% --build %GITHUB_WORKSPACE%\build --config Release - %CMAKE_EXE% --build %GITHUB_WORKSPACE%\build --config Debug + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" + Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=$VER" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\build" ` + --config $Config ` + -- ` + -j ${env:NUMBER_OF_PROCESSORS} + } - name: Test working-directory: ${{runner.workspace}}/OpenCL-ICD-Loader/build - shell: cmd + shell: pwsh run: | - if /I "${{matrix.BIN}}"=="x64" set REG=reg - if /I "${{matrix.BIN}}"=="x86" set REG=%systemroot%\Syswow64\reg.exe - %REG% ADD HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors /v %GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll /t REG_DWORD /d 0 - %CTEST_EXE% -C Release --output-on-failure --parallel %NUMBER_OF_PROCESSORS% - if errorlevel 1 ( - exit /b %errorlevel% - ) - %REG% DELETE HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors /v %GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll /f - %REG% ADD HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors /v %GITHUB_WORKSPACE%/build/Debug/OpenCLDriverStub.dll /t REG_DWORD /d 0 - %CTEST_EXE% -C Debug --output-on-failure --parallel %NUMBER_OF_PROCESSORS% - if errorlevel 1 ( - exit /b %errorlevel% - ) - %REG% DELETE HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors /v %GITHUB_WORKSPACE%/build/Debug/OpenCLDriverStub.dll /f + $REG = if('${{matrix.BIN}}' -eq 'x64') {"reg"} else {"${env:SystemRoot}\Syswow64\reg.exe"} + $KEY_NAME = "HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors" + foreach ($Config in 'Release','Debug') { + $VALUE_NAME = "${env:GITHUB_WORKSPACE}/build/$Config/OpenCLDriverStub.dll" + & $REG ADD $KEY_NAME /v $VALUE_NAME /t REG_DWORD /d 0 + ctest -C $Config --output-on-failure --parallel ${env:NUMBER_OF_PROCESSORS} + & $REG DELETE $KEY_NAME /v $VALUE_NAME /f + } - name: Install - shell: cmd + shell: pwsh run: | - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/build --config Release --target install + & cmake ` + --build "${env:GITHUB_WORKSPACE}\build" ` + --config Release ` + --target install - name: "Consume (MSBuild standalone): Configure/Build/Test" - shell: cmd + if: matrix.GEN == 'Visual Studio 17 2022' + shell: pwsh run: | - set C_FLAGS="/W4" - if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - %CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH="%GITHUB_WORKSPACE%\external\OpenCL-Headers\install;%GITHUB_WORKSPACE%\install" -D DRIVER_STUB_PATH=%GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll -B %GITHUB_WORKSPACE%/build/downstream/bare -S %GITHUB_WORKSPACE%/test/pkgconfig/bare - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Release - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Debug - cd %GITHUB_WORKSPACE%/test/pkgconfig/bare - %CTEST_EXE% --output-on-failure -C Release - %CTEST_EXE% --output-on-failure -C Debug + $C_FLAGS = '/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -T ${{matrix.VER}} ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` + --config $Config ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare ` + & ctest ` + --output-on-failure -C $Config + } - - name: "Consume (MSBuild SDK): Configure/Build/Test" - shell: cmd + - name: "Consume (Ninja-Multi-Config standalone): Configure/Build/Test" + if: matrix.GEN == 'Ninja Multi-Config' + shell: pwsh run: | - set C_FLAGS="/W4" - if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) - %CMAKE_EXE% -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL - echo -e 'include("/home/runner/work/OpenCL-ICD-Loader/OpenCL-ICD-Loader/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}/../OpenCLICDLoader/OpenCLICDLoaderTargets.cmake")' > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake - %CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH="%GITHUB_WORKSPACE%\external\OpenCL-Headers\install;%GITHUB_WORKSPACE%\install" -D DRIVER_STUB_PATH=%GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll -B %GITHUB_WORKSPACE%/build/downstream/bare -S %GITHUB_WORKSPACE%/test/pkgconfig/bare - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Release - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Debug - cd %GITHUB_WORKSPACE%/test/pkgconfig/bare - %CTEST_EXE% --output-on-failure -C Release - %CTEST_EXE% --output-on-failure -C Debug + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" + Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=$VER" + $C_FLAGS = '/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` + --config $Config ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare ` + & ctest ` + --output-on-failure -C $Config + } - - name: "Consume (Ninja-Multi-Config standalone): Configure/Build/Test" - shell: cmd + - name: Consume (Emulate SDK presence) + shell: pwsh run: | - set C_FLAGS="/W4" - if /I "${{matrix.VER}}"=="v140" (set VER=14.0) - if /I "${{matrix.VER}}"=="v141" (set VER=14.1) - if /I "${{matrix.VER}}"=="v142" (set VER=14.2) - if /I "${{matrix.VER}}"=="v143" (set VER=14.3) - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - %CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_MAKE_PROGRAM=%NINJA_EXE% -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH="%GITHUB_WORKSPACE%\external\OpenCL-Headers\install;%GITHUB_WORKSPACE%\install" -D DRIVER_STUB_PATH=%GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll -B %GITHUB_WORKSPACE%/build/downstream/bare -S %GITHUB_WORKSPACE%/test/pkgconfig/bare - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Release - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Debug - cd %GITHUB_WORKSPACE%/test/pkgconfig/bare - %CTEST_EXE% --output-on-failure -C Release - %CTEST_EXE% --output-on-failure -C Debug + New-Item -Type Directory -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL + New-Item -Type File -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL\OpenCLConfig.cmake -Value 'include("${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install\share\cmake\OpenCLHeaders\OpenCLHeadersTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}\..\OpenCLICDLoader\OpenCLICDLoaderTargets.cmake")' + + - name: "Consume (MSBuild SDK): Configure/Build/Test" + if: matrix.GEN == 'Visual Studio 17 2022' + shell: pwsh + run: | + $C_FLAGS = '/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" ` + --config $Config ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk ` + & ctest ` + --output-on-failure -C $Config + } - name: "Consume (Ninja-Multi-Config SDK): Configure/Build/Test" - shell: cmd + if: matrix.GEN == 'Ninja Multi-Config' + shell: pwsh run: | - set C_FLAGS="/W4" - if /I "${{matrix.VER}}"=="v140" (set VER=14.0) - if /I "${{matrix.VER}}"=="v141" (set VER=14.1) - if /I "${{matrix.VER}}"=="v142" (set VER=14.2) - if /I "${{matrix.VER}}"=="v143" (set VER=14.3) - %CMAKE_EXE% -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL - echo -e 'include("/home/runner/work/OpenCL-ICD-Loader/OpenCL-ICD-Loader/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}/../OpenCLICDLoader/OpenCLICDLoaderTargets.cmake")' > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake - %CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_MAKE_PROGRAM=%NINJA_EXE% -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH="%GITHUB_WORKSPACE%\external\OpenCL-Headers\install;%GITHUB_WORKSPACE%\install" -D DRIVER_STUB_PATH=%GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll -B %GITHUB_WORKSPACE%/build/downstream/bare -S %GITHUB_WORKSPACE%/test/pkgconfig/bare - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Release - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Debug - cd %GITHUB_WORKSPACE%/test/pkgconfig/bare - %CTEST_EXE% --output-on-failure -C Release - %CTEST_EXE% --output-on-failure -C Debug + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + $C_FLAGS = '/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" ` + --config $Config ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk ` + & ctest ` + --output-on-failure -C $Config + } From 034424e32d77951c7b400301c8df01c1376855da Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Thu, 3 Aug 2023 15:45:23 +0000 Subject: [PATCH 08/14] Migrate contents of windows.yml to presubmit.yml and delete it --- .github/workflows/presubmit.yml | 310 ++++++++++++++++++++++++++++++- .github/workflows/windows.yml | 312 -------------------------------- 2 files changed, 309 insertions(+), 313 deletions(-) delete mode 100644 .github/workflows/windows.yml diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 98bf0377..2a25a358 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -4,7 +4,6 @@ on: [push, pull_request] jobs: linux: - if: false runs-on: ubuntu-latest strategy: matrix: @@ -233,3 +232,312 @@ jobs: exit 1; fi && pkg-config OpenCL --libs | `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then grep -q "\-L$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR \-lOpenCL"; else grep -q "\-lOpenCL"; fi` + + windows: + runs-on: windows-latest + needs: format + strategy: + matrix: + VER: [v141, v142, v143, clangcl] + GEN: [Visual Studio 17 2022, Ninja Multi-Config] + BIN: [x64] + exclude: + - VER: clangcl + GEN: Ninja Multi-Config + include: + - VER: v142 + GEN: Visual Studio 17 2022 + BIN: x86 + 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-ICD-Loader + uses: actions/checkout@v3 + + - name: Checkout OpenCL-Headers + uses: actions/checkout@v3 + with: + repository: KhronosGroup/OpenCL-Headers + path: external/OpenCL-Headers + + - name: Build & install OpenCL-Headers (MSBuild) + if: matrix.GEN == 'Visual Studio 17 2022' + shell: pwsh + run: | + $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + $C_FLAGS='/W4 /WX' + & cmake ` + -G "${{matrix.GEN}}" ` + -A $BIN ` + -T ${{matrix.VER}} ` + -D BUILD_TESTING=OFF ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` + -B ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build + & cmake ` + --build "${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build" ` + --target install ` + -- ` + /verbosity:minimal ` + /maxCpuCount ` + /noLogo ` + + - name: Build & install OpenCL-Headers (Ninja Multi-Config) + if: matrix.GEN == 'Ninja Multi-Config' + shell: pwsh + run: | + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" + Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=$VER" + $C_FLAGS='/W4 /WX' + & cmake ` + -G "${{matrix.GEN}}" ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D BUILD_TESTING=OFF ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` + -B ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build + & cmake ` + --build "${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build" ` + --target install ` + -- ` + -j ${env:NUMBER_OF_PROCESSORS} + + - name: Configure (MSBuild) + if: matrix.GEN == 'Visual Studio 17 2022' + shell: pwsh + # no /WX during configuration because: + # error C2220: warning treated as error - no 'object' file generated + run: | + $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} + $C_FLAGS='/W4' + & cmake ` + -G "${{matrix.GEN}}" ` + -A $BIN ` + -T ${{matrix.VER}} ` + -D BUILD_TESTING=ON ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` + -D CMAKE_PREFIX_PATH=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -S ${env:GITHUB_WORKSPACE} ` + -B ${env:GITHUB_WORKSPACE}\build + + - name: Configure (Ninja Multi-Config) + if: matrix.GEN == 'Ninja Multi-Config' + shell: pwsh + # no /WX during configuration because: + # error C2220: warning treated as error - no 'object' file generated + run: | + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" + Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=$VER" + $C_FLAGS='/W4' + & cmake ` + -G "${{matrix.GEN}}" ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D BUILD_TESTING=ON ` + -D CMAKE_C_FLAGS=$C_FLAGS ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` + -D CMAKE_PREFIX_PATH=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` + -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 + working-directory: ${{runner.workspace}}/OpenCL-ICD-Loader/build + shell: pwsh + run: | + $REG = if('${{matrix.BIN}}' -eq 'x64') {"reg"} else {"${env:SystemRoot}\Syswow64\reg.exe"} + $KEY_NAME = "HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors" + foreach ($Config in 'Release','Debug') { + $VALUE_NAME = "${env:GITHUB_WORKSPACE}/build/$Config/OpenCLDriverStub.dll" + & $REG ADD $KEY_NAME /v $VALUE_NAME /t REG_DWORD /d 0 + ctest -C $Config --output-on-failure --parallel ${env:NUMBER_OF_PROCESSORS} + & $REG DELETE $KEY_NAME /v $VALUE_NAME /f + } + + - name: Install + shell: pwsh + run: | + & cmake ` + --build "${env:GITHUB_WORKSPACE}\build" ` + --config Release ` + --target install + + - name: "Consume (MSBuild standalone): Configure/Build/Test" + if: matrix.GEN == 'Visual Studio 17 2022' + shell: pwsh + run: | + $C_FLAGS = '/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -T ${{matrix.VER}} ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` + --config $Config ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare ` + & ctest ` + --output-on-failure -C $Config + } + + - name: "Consume (Ninja-Multi-Config standalone): Configure/Build/Test" + 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' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` + --config $Config ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare ` + & ctest ` + --output-on-failure -C $Config + } + + - name: Consume (Emulate SDK presence) + shell: pwsh + run: | + New-Item -Type Directory -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL + New-Item -Type File -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL\OpenCLConfig.cmake -Value 'include("${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install\share\cmake\OpenCLHeaders\OpenCLHeadersTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}\..\OpenCLICDLoader\OpenCLICDLoaderTargets.cmake")' + + - name: "Consume (MSBuild SDK): Configure/Build/Test" + if: matrix.GEN == 'Visual Studio 17 2022' + shell: pwsh + run: | + $C_FLAGS = '/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" ` + --config $Config ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk ` + & ctest ` + --output-on-failure -C $Config + } + + - name: "Consume (Ninja-Multi-Config SDK): Configure/Build/Test" + if: matrix.GEN == 'Ninja Multi-Config' + shell: pwsh + run: | + $VER = switch ('${{matrix.VER}}') { ` + 'v141' {'14.1'} ` + 'v142' {'14.2'} ` + 'v143' {'14.3'} } + $C_FLAGS = '/W4' + & cmake ` + -G '${{matrix.GEN}}' ` + -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` + -D CMAKE_C_FLAGS="$C_FLAGS" ` + -D CMAKE_C_EXTENSIONS=OFF ` + -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` + -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` + -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` + -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` + -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" + foreach ($Config in 'Release','Debug') { ` + & cmake ` + --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" ` + --config $Config ` + & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk ` + & ctest ` + --output-on-failure -C $Config + } diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml deleted file mode 100644 index 5be5f9aa..00000000 --- a/.github/workflows/windows.yml +++ /dev/null @@ -1,312 +0,0 @@ -name: Windows - -on: [push, pull_request] - -jobs: - windows: - runs-on: windows-2022 - strategy: - matrix: - VER: [v141, v142, v143, clangcl] - GEN: [Visual Studio 17 2022, Ninja Multi-Config] - BIN: [x64] - exclude: - - VER: clangcl - GEN: Ninja Multi-Config - include: - - VER: v142 - GEN: Visual Studio 17 2022 - BIN: x86 - 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-ICD-Loader - uses: actions/checkout@v3 - - - name: Checkout OpenCL-Headers - uses: actions/checkout@v3 - with: - repository: KhronosGroup/OpenCL-Headers - path: external/OpenCL-Headers - - - name: Build & install OpenCL-Headers (MSBuild) - if: matrix.GEN == 'Visual Studio 17 2022' - shell: pwsh - run: | - $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} - $C_FLAGS='/W4 /WX' - & cmake ` - -G "${{matrix.GEN}}" ` - -A $BIN ` - -T ${{matrix.VER}} ` - -D BUILD_TESTING=OFF ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` - -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` - -B ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build - & cmake ` - --build "${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build" ` - --target install ` - -- ` - /verbosity:minimal ` - /maxCpuCount ` - /noLogo ` - - - name: Build & install OpenCL-Headers (Ninja Multi-Config) - if: matrix.GEN == 'Ninja Multi-Config' - shell: pwsh - run: | - $VER = switch ('${{matrix.VER}}') { ` - 'v141' {'14.1'} ` - 'v142' {'14.2'} ` - 'v143' {'14.3'} } - Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" - Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=$VER" - $C_FLAGS='/W4 /WX' - & cmake ` - -G "${{matrix.GEN}}" ` - -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D BUILD_TESTING=OFF ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` - -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` - -B ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build - & cmake ` - --build "${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\build" ` - --target install ` - -- ` - -j ${env:NUMBER_OF_PROCESSORS} - - - name: Configure (MSBuild) - if: matrix.GEN == 'Visual Studio 17 2022' - shell: pwsh - # no /WX during configuration because: - # error C2220: warning treated as error - no 'object' file generated - run: | - $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} - $C_FLAGS='/W4' - & cmake ` - -G "${{matrix.GEN}}" ` - -A $BIN ` - -T ${{matrix.VER}} ` - -D BUILD_TESTING=ON ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` - -D CMAKE_PREFIX_PATH=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` - -S ${env:GITHUB_WORKSPACE} ` - -B ${env:GITHUB_WORKSPACE}\build - - - name: Configure (Ninja Multi-Config) - if: matrix.GEN == 'Ninja Multi-Config' - shell: pwsh - # no /WX during configuration because: - # error C2220: warning treated as error - no 'object' file generated - run: | - $VER = switch ('${{matrix.VER}}') { ` - 'v141' {'14.1'} ` - 'v142' {'14.2'} ` - 'v143' {'14.3'} } - Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" - Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=$VER" - $C_FLAGS='/W4' - & cmake ` - -G "${{matrix.GEN}}" ` - -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D BUILD_TESTING=ON ` - -D CMAKE_C_FLAGS=$C_FLAGS ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` - -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` - -D CMAKE_PREFIX_PATH=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` - -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 - working-directory: ${{runner.workspace}}/OpenCL-ICD-Loader/build - shell: pwsh - run: | - $REG = if('${{matrix.BIN}}' -eq 'x64') {"reg"} else {"${env:SystemRoot}\Syswow64\reg.exe"} - $KEY_NAME = "HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors" - foreach ($Config in 'Release','Debug') { - $VALUE_NAME = "${env:GITHUB_WORKSPACE}/build/$Config/OpenCLDriverStub.dll" - & $REG ADD $KEY_NAME /v $VALUE_NAME /t REG_DWORD /d 0 - ctest -C $Config --output-on-failure --parallel ${env:NUMBER_OF_PROCESSORS} - & $REG DELETE $KEY_NAME /v $VALUE_NAME /f - } - - - name: Install - shell: pwsh - run: | - & cmake ` - --build "${env:GITHUB_WORKSPACE}\build" ` - --config Release ` - --target install - - - name: "Consume (MSBuild standalone): Configure/Build/Test" - if: matrix.GEN == 'Visual Studio 17 2022' - shell: pwsh - run: | - $C_FLAGS = '/W4' - & cmake ` - -G '${{matrix.GEN}}' ` - -T ${{matrix.VER}} ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` - -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` - -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` - -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` - -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" - foreach ($Config in 'Release','Debug') { ` - & cmake ` - --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` - --config $Config ` - & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare ` - & ctest ` - --output-on-failure -C $Config - } - - - name: "Consume (Ninja-Multi-Config standalone): Configure/Build/Test" - 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' - & cmake ` - -G '${{matrix.GEN}}' ` - -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` - -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` - -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` - -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` - -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" - foreach ($Config in 'Release','Debug') { ` - & cmake ` - --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` - --config $Config ` - & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare ` - & ctest ` - --output-on-failure -C $Config - } - - - name: Consume (Emulate SDK presence) - shell: pwsh - run: | - New-Item -Type Directory -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL - New-Item -Type File -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL\OpenCLConfig.cmake -Value 'include("${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install\share\cmake\OpenCLHeaders\OpenCLHeadersTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}\..\OpenCLICDLoader\OpenCLICDLoaderTargets.cmake")' - - - name: "Consume (MSBuild SDK): Configure/Build/Test" - if: matrix.GEN == 'Visual Studio 17 2022' - shell: pwsh - run: | - $C_FLAGS = '/W4' - & cmake ` - -G '${{matrix.GEN}}' ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` - -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` - -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` - -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` - -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" - foreach ($Config in 'Release','Debug') { ` - & cmake ` - --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" ` - --config $Config ` - & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk ` - & ctest ` - --output-on-failure -C $Config - } - - - name: "Consume (Ninja-Multi-Config SDK): Configure/Build/Test" - if: matrix.GEN == 'Ninja Multi-Config' - shell: pwsh - run: | - $VER = switch ('${{matrix.VER}}') { ` - 'v141' {'14.1'} ` - 'v142' {'14.2'} ` - 'v143' {'14.3'} } - $C_FLAGS = '/W4' - & cmake ` - -G '${{matrix.GEN}}' ` - -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` - -D CMAKE_C_EXTENSIONS=OFF ` - -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` - -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` - -D DRIVER_STUB_PATH="${env:GITHUB_WORKSPACE}\build\Release\OpenCLDriverStub.dll" ` - -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` - -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" - foreach ($Config in 'Release','Debug') { ` - & cmake ` - --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" ` - --config $Config ` - & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk ` - & ctest ` - --output-on-failure -C $Config - } From bb13d6c92c98c38ee18216ea7f8a7216d1075241 Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Thu, 3 Aug 2023 16:15:26 +0000 Subject: [PATCH 09/14] Update MacOS CI --- .github/workflows/macos.yml | 124 ++++++++++++++++---------------- .github/workflows/presubmit.yml | 1 + 2 files changed, 64 insertions(+), 61 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 585a99f8..3810b523 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -2,20 +2,28 @@ name: MacOS on: [push, pull_request] -env: - OPENCL_PKGCONFIG_PATHS: ${{ github.workspace }}/install/lib/pkgconfig:${{ github.workspace }}/external/OpenCL-Headers/install/share/pkgconfig - jobs: - macos-gcc: - if: false - #runs-on: macos-latest - runs-on: macos-11 # temporary, macos-latest only supports gcc-12 + macos: + runs-on: macos-latest strategy: matrix: - VER: [9, 10, 11] - EXT: [ON, OFF] - GEN: [Xcode, Ninja Multi-Config] - STD: [99, 11] # 90 results in errors + 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 + env: + INSTALL_LIBDIR: lib steps: - name: Checkout OpenCL-ICD-Loader @@ -27,26 +35,24 @@ jobs: repository: KhronosGroup/OpenCL-Headers path: external/OpenCL-Headers - - name: Install gcc if required - run: | - if [[ ! `which /usr/local/bin/gcc-${{matrix.VER}}` ]]; then brew install gcc@${{matrix.VER}}; fi; - - name: Create Build Environment + 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; + cmake -E make_directory $GITHUB_WORKSPACE/build && + cmake -E make_directory $GITHUB_WORKSPACE/install && + if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" && ! `which ninja` ]]; then brew install ninja; fi && # Install Ninja only if it's the selected generator and it's not available. + cmake --version - name: Build & install OpenCL-Headers + shell: bash run: cmake -G "${{matrix.GEN}}" + -D BUILD_TESTING=OFF -D CMAKE_C_FLAGS="-w" - -D CMAKE_C_COMPILER=/usr/local/bin/gcc-${{matrix.VER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} + -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} + -D CMAKE_C_EXTENSIONS=OFF -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install - -D BUILD_TESTING=OFF -S $GITHUB_WORKSPACE/external/OpenCL-Headers -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build && cmake @@ -55,32 +61,23 @@ jobs: --config Release --parallel `sysctl -n hw.logicalcpu` - - name: Configure CMake - # no -Werror during configuration because: + - name: Configure + # no -Werror (-Wno-format) during configuration because: # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] # warning: unused parameter [-Wunused-parameter] shell: bash run: cmake -G "${{matrix.GEN}}" -D BUILD_TESTING=ON - -D CMAKE_C_FLAGS="-Wall -Wextra -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_C_FLAGS="-Wall -Wextra -pedantic -Werror" + -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} + -D CMAKE_C_EXTENSIONS=OFF -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install -S $GITHUB_WORKSPACE -B $GITHUB_WORKSPACE/build - - name: Build (Xcode) - if: matrix.GEN == 'Xcode' - shell: bash - run: | - cmake --build $GITHUB_WORKSPACE/build --config Release --parallel `sysctl -n hw.logicalcpu` - cmake --build $GITHUB_WORKSPACE/build --config Debug --parallel `sysctl -n hw.logicalcpu` - - - name: Build (Ninja) - if: matrix.GEN == 'Ninja Multi-Config' + - name: Build shell: bash run: | cmake --build $GITHUB_WORKSPACE/build --config Release --parallel `sysctl -n hw.logicalcpu` @@ -93,41 +90,46 @@ jobs: ctest -C Release --output-on-failure --parallel `sysctl -n hw.logicalcpu` ctest -C Debug --output-on-failure --parallel `sysctl -n hw.logicalcpu` - - name: Install (Xcode) - if: matrix.GEN == 'Xcode' + - name: Test install shell: bash run: | cmake --build $GITHUB_WORKSPACE/build --config Release --target install - - name: Install (Ninja) - if: matrix.GEN == 'Ninja Multi-Config' + - name: Consume (install) shell: bash - run: | - cmake --build $GITHUB_WORKSPACE/build --config Release --target install - - - name: Test pkg-config --cflags + run: cmake + -G "${{matrix.GEN}}" + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" + -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/install" + -S $GITHUB_WORKSPACE/test/pkgconfig/bare + -B $GITHUB_WORKSPACE/build_install && + cmake --build $GITHUB_WORKSPACE/build_install --config Release --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` && + cmake --build $GITHUB_WORKSPACE/build_install --config Debug --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` + + - name: Test pkg-config shell: bash run: | if [[ ! `which pkg-config` ]]; then brew install pkg-config; fi; - PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" - - - name: Test pkg-config --libs - shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL --libs | grep -q "\-L$GITHUB_WORKSPACE/install/lib -lOpenCL" + export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/pkgconfig && + pkg-config OpenCL --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" && + pkg-config OpenCL --libs | grep -q "\-L$GITHUB_WORKSPACE/install/lib -lOpenCL" - name: Consume pkg-config shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" cmake + run: export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/pkgconfig && + cmake -G "${{matrix.GEN}}" - -D CMAKE_C_FLAGS="-Wall -Wextra -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_C_FLAGS="-Wall -Wextra -pedantic -Werror" + -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" -D DRIVER_STUB_PATH=$GITHUB_WORKSPACE/build/Release/libOpenCLDriverStub.dylib -B $GITHUB_WORKSPACE/build/downstream/pkgconfig - -S $GITHUB_WORKSPACE/test/pkgconfig/pkgconfig; - cmake --build $GITHUB_WORKSPACE/build/downstream/pkgconfig --config Release; - cmake --build $GITHUB_WORKSPACE/build/downstream/pkgconfig --config Debug; - cd $GITHUB_WORKSPACE/build/downstream/pkgconfig; - ctest --output-on-failure -C Release - ctest --output-on-failure -C Debug + -S $GITHUB_WORKSPACE/test/pkgconfig/pkgconfig && + cmake --build $GITHUB_WORKSPACE/build/downstream/pkgconfig --config Release --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` && + cmake --build $GITHUB_WORKSPACE/build/downstream/pkgconfig --config Debug --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` && + cd $GITHUB_WORKSPACE/build/downstream/pkgconfig && + ctest -C Release --output-on-failure --parallel `sysctl -n hw.logicalcpu` && + ctest -C Debug --output-on-failure --parallel `sysctl -n hw.logicalcpu` diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 2a25a358..8bd5479e 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -4,6 +4,7 @@ on: [push, pull_request] jobs: linux: + if: false runs-on: ubuntu-latest strategy: matrix: From d2d50add66db14e0dc3ae525540ade5aa83598f7 Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Fri, 4 Aug 2023 08:14:52 +0000 Subject: [PATCH 10/14] Migrate contents of macos.yml to presubmit.yml and delete it --- .github/workflows/macos.yml | 135 -------------------------------- .github/workflows/presubmit.yml | 132 ++++++++++++++++++++++++++++++- 2 files changed, 131 insertions(+), 136 deletions(-) delete mode 100644 .github/workflows/macos.yml diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml deleted file mode 100644 index 3810b523..00000000 --- a/.github/workflows/macos.yml +++ /dev/null @@ -1,135 +0,0 @@ -name: MacOS - -on: [push, pull_request] - -jobs: - macos: - runs-on: macos-latest - 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 - env: - INSTALL_LIBDIR: lib - - steps: - - name: Checkout OpenCL-ICD-Loader - uses: actions/checkout@v3 - - - name: Checkout OpenCL-Headers - uses: actions/checkout@v3 - with: - repository: KhronosGroup/OpenCL-Headers - path: external/OpenCL-Headers - - - 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: Build & install OpenCL-Headers - shell: bash - run: cmake - -G "${{matrix.GEN}}" - -D BUILD_TESTING=OFF - -D CMAKE_C_FLAGS="-w" - -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} - -D CMAKE_C_EXTENSIONS=OFF - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install - -S $GITHUB_WORKSPACE/external/OpenCL-Headers - -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build && - cmake - --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build - --target install - --config Release - --parallel `sysctl -n hw.logicalcpu` - - - name: Configure - # no -Werror (-Wno-format) during configuration because: - # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] - # warning: unused parameter [-Wunused-parameter] - shell: bash - run: cmake - -G "${{matrix.GEN}}" - -D BUILD_TESTING=ON - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" - -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} - -D CMAKE_C_EXTENSIONS=OFF - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install - -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install - -S $GITHUB_WORKSPACE - -B $GITHUB_WORKSPACE/build - - - name: Build - shell: bash - run: | - cmake --build $GITHUB_WORKSPACE/build --config Release --parallel `sysctl -n hw.logicalcpu` - cmake --build $GITHUB_WORKSPACE/build --config Debug --parallel `sysctl -n hw.logicalcpu` - - - name: Test - working-directory: ${{runner.workspace}}/OpenCL-ICD-Loader/build - shell: bash - run: | - ctest -C Release --output-on-failure --parallel `sysctl -n hw.logicalcpu` - ctest -C Debug --output-on-failure --parallel `sysctl -n hw.logicalcpu` - - - name: Test install - shell: bash - run: | - cmake --build $GITHUB_WORKSPACE/build --config Release --target install - - - name: Consume (install) - shell: bash - run: cmake - -G "${{matrix.GEN}}" - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" - -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} - -D CMAKE_C_EXTENSIONS=OFF - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/install" - -S $GITHUB_WORKSPACE/test/pkgconfig/bare - -B $GITHUB_WORKSPACE/build_install && - cmake --build $GITHUB_WORKSPACE/build_install --config Release --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` && - cmake --build $GITHUB_WORKSPACE/build_install --config Debug --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` - - - name: Test pkg-config - shell: bash - run: | - if [[ ! `which pkg-config` ]]; then brew install pkg-config; fi; - export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/pkgconfig && - pkg-config OpenCL --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" && - pkg-config OpenCL --libs | grep -q "\-L$GITHUB_WORKSPACE/install/lib -lOpenCL" - - - name: Consume pkg-config - shell: bash - run: export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/pkgconfig && - cmake - -G "${{matrix.GEN}}" - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" - -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} - -D CMAKE_C_EXTENSIONS=OFF - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" - -D DRIVER_STUB_PATH=$GITHUB_WORKSPACE/build/Release/libOpenCLDriverStub.dylib - -B $GITHUB_WORKSPACE/build/downstream/pkgconfig - -S $GITHUB_WORKSPACE/test/pkgconfig/pkgconfig && - cmake --build $GITHUB_WORKSPACE/build/downstream/pkgconfig --config Release --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` && - cmake --build $GITHUB_WORKSPACE/build/downstream/pkgconfig --config Debug --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` && - cd $GITHUB_WORKSPACE/build/downstream/pkgconfig && - ctest -C Release --output-on-failure --parallel `sysctl -n hw.logicalcpu` && - ctest -C Debug --output-on-failure --parallel `sysctl -n hw.logicalcpu` diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 8bd5479e..5fd2c564 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -4,7 +4,6 @@ on: [push, pull_request] jobs: linux: - if: false runs-on: ubuntu-latest strategy: matrix: @@ -542,3 +541,134 @@ jobs: & ctest ` --output-on-failure -C $Config } + + macos: + runs-on: macos-latest + 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 + env: + INSTALL_LIBDIR: lib + + steps: + - name: Checkout OpenCL-ICD-Loader + uses: actions/checkout@v3 + + - name: Checkout OpenCL-Headers + uses: actions/checkout@v3 + with: + repository: KhronosGroup/OpenCL-Headers + path: external/OpenCL-Headers + + - 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: Build & install OpenCL-Headers + shell: bash + run: cmake + -G "${{matrix.GEN}}" + -D BUILD_TESTING=OFF + -D CMAKE_C_FLAGS="-w" + -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -S $GITHUB_WORKSPACE/external/OpenCL-Headers + -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build && + cmake + --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build + --target install + --config Release + --parallel `sysctl -n hw.logicalcpu` + + - name: Configure + # no -Werror (-Wno-format) during configuration because: + # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] + # warning: unused parameter [-Wunused-parameter] + shell: bash + run: cmake + -G "${{matrix.GEN}}" + -D BUILD_TESTING=ON + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" + -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install + -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -S $GITHUB_WORKSPACE + -B $GITHUB_WORKSPACE/build + + - name: Build + shell: bash + run: | + cmake --build $GITHUB_WORKSPACE/build --config Release --parallel `sysctl -n hw.logicalcpu` + cmake --build $GITHUB_WORKSPACE/build --config Debug --parallel `sysctl -n hw.logicalcpu` + + - name: Test + working-directory: ${{runner.workspace}}/OpenCL-ICD-Loader/build + shell: bash + run: | + ctest -C Release --output-on-failure --parallel `sysctl -n hw.logicalcpu` + ctest -C Debug --output-on-failure --parallel `sysctl -n hw.logicalcpu` + + - name: Test install + shell: bash + run: | + cmake --build $GITHUB_WORKSPACE/build --config Release --target install + + - name: Consume (install) + shell: bash + run: cmake + -G "${{matrix.GEN}}" + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" + -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/install" + -S $GITHUB_WORKSPACE/test/pkgconfig/bare + -B $GITHUB_WORKSPACE/build_install && + cmake --build $GITHUB_WORKSPACE/build_install --config Release --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` && + cmake --build $GITHUB_WORKSPACE/build_install --config Debug --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` + + - name: Test pkg-config + shell: bash + run: | + if [[ ! `which pkg-config` ]]; then brew install pkg-config; fi; + export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/pkgconfig && + pkg-config OpenCL --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" && + pkg-config OpenCL --libs | grep -q "\-L$GITHUB_WORKSPACE/install/lib -lOpenCL" + + - name: Consume pkg-config + shell: bash + run: export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/pkgconfig && + cmake + -G "${{matrix.GEN}}" + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" + -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" + -D DRIVER_STUB_PATH=$GITHUB_WORKSPACE/build/Release/libOpenCLDriverStub.dylib + -B $GITHUB_WORKSPACE/build/downstream/pkgconfig + -S $GITHUB_WORKSPACE/test/pkgconfig/pkgconfig && + cmake --build $GITHUB_WORKSPACE/build/downstream/pkgconfig --config Release --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` && + cmake --build $GITHUB_WORKSPACE/build/downstream/pkgconfig --config Debug --parallel `sysctl -n hw.logicalcpu` `if [[ "${{matrix.GEN}}" == "Xcode" ]]; then echo "-- -quiet"; fi;` && + cd $GITHUB_WORKSPACE/build/downstream/pkgconfig && + ctest -C Release --output-on-failure --parallel `sysctl -n hw.logicalcpu` && + ctest -C Debug --output-on-failure --parallel `sysctl -n hw.logicalcpu` From 7c1978f2f6d72cbc819ffd7a54fd3a718cbfabe0 Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Fri, 4 Aug 2023 08:16:59 +0000 Subject: [PATCH 11/14] Add format-checking script and job --- .github/workflows/presubmit.yml | 31 +++++++++++++++++++ cmake/Package.cmake | 10 +++--- scripts/check-format.sh | 55 +++++++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+), 5 deletions(-) create mode 100755 scripts/check-format.sh diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 5fd2c564..2f439fc8 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -3,8 +3,38 @@ name: Presubmit on: [push, pull_request] jobs: + get-branch: + runs-on: ubuntu-latest + steps: + - name: Get working branch + id: get-branch + run: | + if [[ ${{ github.event_name }} == "push" ]]; then + echo "branch=main" >> $GITHUB_OUTPUT + else + echo "branch=${{ github.base_ref }}" >> $GITHUB_OUTPUT + fi ; + echo $GITHUB_OUTPUT + outputs: + branch: ${{ steps.get-branch.outputs.branch }} + + format: + name: Code formatting + runs-on: ubuntu-latest + needs: get-branch + steps: + - uses: actions/checkout@v3 + with: + # repository: ${{ github.repository }} (default) + fetch-depth: 0 + - name: Install clang-format + run: sudo apt-get install clang-format + - name: Check format + run: $GITHUB_WORKSPACE/scripts/check-format.sh origin/${{ needs.get-branch.outputs.branch }} --binary clang-format + linux: runs-on: ubuntu-latest + needs: format strategy: matrix: CMAKE: [3.26.4] @@ -544,6 +574,7 @@ jobs: macos: runs-on: macos-latest + needs: format strategy: matrix: C_COMPILER: diff --git a/cmake/Package.cmake b/cmake/Package.cmake index b682a203..2e7fe131 100644 --- a/cmake/Package.cmake +++ b/cmake/Package.cmake @@ -36,11 +36,11 @@ endif() # Configure and install OpenCL.pc for the Debian package if(NOT (CMAKE_VERSION VERSION_LESS "3.5") OR (CMAKE_INSTALL_PREFIX STREQUAL CPACK_PACKAGING_INSTALL_PREFIX)) -set(PKGCONFIG_PREFIX "${CPACK_PACKAGING_INSTALL_PREFIX}") -configure_file( - OpenCL.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL.pc - @ONLY) + set(PKGCONFIG_PREFIX "${CPACK_PACKAGING_INSTALL_PREFIX}") + configure_file( + OpenCL.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL.pc + @ONLY) # We exclude the file from the normal installation when using CMake >= 3.5, because in that # case we already set a separate file for it diff --git a/scripts/check-format.sh b/scripts/check-format.sh new file mode 100755 index 00000000..24c61662 --- /dev/null +++ b/scripts/check-format.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +SOURCE_COMMIT="$1" +if [ "$#" -gt 0 ]; then + shift +fi + +# If no source commit is given target the default branch +if [ "x$SOURCE_COMMIT" = "x" ]; then + # If remote is not set use the remote of the current branch or fallback to "origin" + if [ "x$REMOTE" = "x" ]; then + BRANCH="$(git rev-parse --abbrev-ref HEAD)" + REMOTE="$(git config --local --get "branch.$BRANCH.remote" || echo 'origin')" + fi + SOURCE_COMMIT="remotes/$REMOTE/HEAD" +fi + +# Force colored diff output +DIFF_COLOR_SAVED="$(git config --local --get color.diff)" +if [ "x$DIFF_COLOR_SAVED" != "x" ]; then + git config --local --replace-all "color.diff" "always" +else + git config --local --add "color.diff" "always" +fi + +scratch="$(mktemp -t check-format.XXXXXXXXXX)" +finish () { + # Remove temporary file + rm -rf "$scratch" + # Restore setting + if [ "x$DIFF_COLOR_SAVED" != "x" ]; then + git config --local --replace-all "color.diff" "$DIFF_COLOR_SAVED" + else + git config --local --unset "color.diff" + fi +} +# The trap will be invoked whenever the script exits, even due to a signal, this is a bash only +# feature +trap finish EXIT + +GIT_CLANG_FORMAT="${GIT_CLANG_FORMAT:-git-clang-format}" +"$GIT_CLANG_FORMAT" --style=file --extensions=cc,cp,cpp,c++,cxx,cu,cuh,hh,hpp,hxx,hip,vert,frag --diff "$@" "$SOURCE_COMMIT" > "$scratch" + +# Check for no-ops +grep '^no modified files to format$\|^clang-format did not modify any files$' \ + "$scratch" > /dev/null && exit 0 + +# Dump formatting diff and signal failure +printf \ +"\033[31m==== FORMATTING VIOLATIONS DETECTED ====\033[0m +run '\033[33m%s --style=file %s %s\033[0m' to apply these formating changes\n\n" \ +"$GIT_CLANG_FORMAT" "$*" "$SOURCE_COMMIT" + +cat "$scratch" +exit 1 From efd0739e22f8e658cbd86300242c50b1efb26141 Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Fri, 4 Aug 2023 08:41:55 +0000 Subject: [PATCH 12/14] Build android binaries --- .github/workflows/presubmit.yml | 60 +++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 2f439fc8..33a0d195 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -703,3 +703,63 @@ jobs: cd $GITHUB_WORKSPACE/build/downstream/pkgconfig && ctest -C Release --output-on-failure --parallel `sysctl -n hw.logicalcpu` && ctest -C Debug --output-on-failure --parallel `sysctl -n hw.logicalcpu` + + android: + runs-on: ubuntu-latest + needs: format + strategy: + matrix: + ABI: + - arm64-v8a + - x86_64 + API_LEVEL: + - android-19 + - android-33 + CONFIG: + - Debug + - Release + steps: + - name: Checkout OpenCL-ICD-Loader + uses: actions/checkout@v3 + + - name: Checkout OpenCL-Headers + uses: actions/checkout@v3 + with: + repository: KhronosGroup/OpenCL-Headers + path: external/OpenCL-Headers + + - name: Configure & install OpenCL-Headers + shell: bash + run: cmake + -G "Unix Makefiles" + -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} + -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" + -D CMAKE_C_EXTENSIONS=OFF + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -D BUILD_TESTING=OFF + -S $GITHUB_WORKSPACE/external/OpenCL-Headers + -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build && + cmake + --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build + --target install + -- + -j`nproc` + + - name: Configure + 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_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake + -D ANDROID_ABI=${{matrix.ABI}} + -D ANDROID_PLATFORM=${{matrix.API_LEVEL}} + -D CMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY + -D CMAKE_FIND_ROOT_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -S $GITHUB_WORKSPACE + -B $GITHUB_WORKSPACE/build + + - name: Build + shell: bash + run: cmake --build $GITHUB_WORKSPACE/build -j `nproc` From d4df1c6c6837666c3ca1ee1890e2335877ffd228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C5=91rinc=20Serf=C5=91z=C5=91?= Date: Tue, 15 Aug 2023 15:51:18 +0200 Subject: [PATCH 13/14] CMake minimum 3.16 --- .clang-format | 123 +++++++++++++++++++++++++ .github/workflows/presubmit.yml | 156 +++++++++++--------------------- .gitignore | 3 + CMakeLists.txt | 4 +- cmake/Package.cmake | 60 +++++------- 5 files changed, 203 insertions(+), 143 deletions(-) create mode 100644 .clang-format diff --git a/.clang-format b/.clang-format new file mode 100644 index 00000000..d563a411 --- /dev/null +++ b/.clang-format @@ -0,0 +1,123 @@ +--- +Language: Cpp +AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlines: Right +AlignOperands: false +AlignTrailingComments: false +AllowAllArgumentsOnNextLine: true +AllowAllConstructorInitializersOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortLambdasOnASingleLine: All +AllowShortIfStatementsOnASingleLine: WithoutElse +AllowShortLoopsOnASingleLine: true +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: true + AfterEnum: true + AfterFunction: true + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: true + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: true + IndentBraces: false + SplitEmptyFunction: false + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: NonAssignment +BreakBeforeBraces: Custom +BreakBeforeInheritanceComma: false +BreakInheritanceList: BeforeColon +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: false +DerivePointerAlignment: true +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: false +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + - Regex: '.*' + Priority: 1 +IncludeIsMainRegex: '(Test)?$' +IndentCaseLabels: true +IndentPPDirectives: None +IndentWidth: 4 +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 2 +NamespaceIndentation: Inner +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 4 +ObjCSpaceAfterProperty: true +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Left +ReflowComments: true +SortIncludes: false +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: false +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp11 +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 4 +UseTab: Never diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 33a0d195..6a65d426 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -52,74 +52,55 @@ jobs: - GEN: Ninja Multi-Config CONFIG: Release IMAGE: - - streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 + - streamhpc/opencl-sdk-base:ubuntu-22.04-20230717 include: - - CMAKE: 3.1.3 - C_COMPILER: gcc-7 + - CMAKE: system + C_COMPILER: gcc-9 BIN: 64 CONF: GEN: Unix Makefiles CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - - CMAKE: 3.1.3 - C_COMPILER: gcc-7 + IMAGE: streamhpc/opencl-sdk-base:ubuntu-20.04-20230717 + - CMAKE: system + C_COMPILER: gcc-9 BIN: 64 CONF: GEN: Unix Makefiles CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - - CMAKE: 3.1.3 - C_COMPILER: gcc-7 + IMAGE: streamhpc/opencl-sdk-base:ubuntu-20.04-20230717 + - CMAKE: system + C_COMPILER: gcc-9 BIN: 32 CONF: GEN: Unix Makefiles CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - - CMAKE: 3.1.3 - C_COMPILER: gcc-7 + IMAGE: streamhpc/opencl-sdk-base:ubuntu-20.04-20230717 + - CMAKE: system + C_COMPILER: gcc-9 BIN: 32 CONF: GEN: Unix Makefiles CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - - CMAKE: 3.1.3 - C_COMPILER: clang-8 - BIN: 64 - CONF: - GEN: Unix Makefiles - CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - - CMAKE: 3.1.3 - C_COMPILER: clang-8 - BIN: 64 - CONF: - GEN: Unix Makefiles - CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - - CMAKE: 3.1.3 - C_COMPILER: clang-8 - BIN: 32 - CONF: - GEN: Unix Makefiles - CONFIG: Debug - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 - - CMAKE: 3.1.3 - C_COMPILER: clang-8 - BIN: 32 - CONF: - GEN: Unix Makefiles - CONFIG: Release - IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-18.04-20220127 + IMAGE: streamhpc/opencl-sdk-base:ubuntu-20.04-20230717 container: ${{matrix.IMAGE}} env: CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake 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 -Werror -pedantic -m${{matrix.BIN}} DEB_INSTALLATION_PATH: /usr INSTALL_LIBDIR: lib/x86_64-linux-gnu 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-ICD-Loader uses: actions/checkout@v3 @@ -133,21 +114,18 @@ jobs: - name: Configure, install & package OpenCL-Headers shell: bash - run: mkdir $GITHUB_WORKSPACE/external/OpenCL-Headers/build && - cd $GITHUB_WORKSPACE/external/OpenCL-Headers/build && - $CMAKE_EXE + run: $CMAKE_EXE -G "${{matrix.CONF.GEN}}" `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` - -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" - -D CMAKE_INSTALL_PREFIX=`if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "$GITHUB_WORKSPACE/external/OpenCL-Headers/install"; else echo "$DEB_INSTALLATION_PATH"; fi` - `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH"; fi` + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH -D BUILD_TESTING=OFF - $GITHUB_WORKSPACE/external/OpenCL-Headers && + -S $GITHUB_WORKSPACE/external/OpenCL-Headers + -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build && $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build --target install - -- - -j`nproc` && + --parallel `nproc` && $CPACK_EXE --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" -G DEB @@ -156,23 +134,21 @@ jobs: - 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 `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` - -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -m${{matrix.BIN}}" - -D CMAKE_INSTALL_PREFIX=`if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "$GITHUB_WORKSPACE/install"; else echo "$DEB_INSTALLATION_PATH"; fi` - `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH"; fi` - `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then echo "-D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install"; fi` - $GITHUB_WORKSPACE + -D BUILD_TESTING=ON + -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install + -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH + -S $GITHUB_WORKSPACE + -B $GITHUB_WORKSPACE/build - name: Build shell: bash run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then - $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config ${{matrix.CONF.CONFIG}} -- -j `nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config ${{matrix.CONF.CONFIG}} --parallel `nproc`; else $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug; $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release; @@ -201,16 +177,14 @@ jobs: shell: bash run: dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb && dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && - mkdir $GITHUB_WORKSPACE/build_package && - cd $GITHUB_WORKSPACE/build_package && $CMAKE_EXE -G "${{matrix.CONF.GEN}}" `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` - -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -m${{matrix.BIN}}" - $GITHUB_WORKSPACE/test/pkgconfig/bare && + -S $GITHUB_WORKSPACE/test/pkgconfig/bare + -B $GITHUB_WORKSPACE/build_package && if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then - $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config ${{matrix.CONF.CONFIG}} -- -j `nproc`; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config ${{matrix.CONF.CONFIG}} --parallel `nproc`; else $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug; $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release; @@ -231,37 +205,33 @@ jobs: - 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}}" `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` - -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -m${{matrix.BIN}}" -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install - $GITHUB_WORKSPACE/test/pkgconfig/bare && + -S $GITHUB_WORKSPACE/test/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; + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Release; fi - name: Test pkg-config (install) shell: bash # We expect no pre-processor and compile flags (--cflags) but we do expect link flags (--libs) - run: if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; - then - export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR/pkgconfig; - fi && + run: export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR/pkgconfig && if [[ $(pkg-config OpenCL --cflags) ]]; then exit 1; fi && - pkg-config OpenCL --libs | `if [[ "${{matrix.CMAKE}}" != "3.1.3" ]]; then grep -q "\-L$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR \-lOpenCL"; else grep -q "\-lOpenCL"; fi` + pkg-config OpenCL --libs | grep -q "\-L$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR \-lOpenCL" windows: runs-on: windows-latest @@ -318,13 +288,11 @@ jobs: 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=OFF ` - -D CMAKE_C_FLAGS=$C_FLAGS ` -D CMAKE_C_EXTENSIONS=OFF ` -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` @@ -347,12 +315,10 @@ jobs: 'v143' {'14.3'} } Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=$VER" - $C_FLAGS='/W4 /WX' & cmake ` -G "${{matrix.GEN}}" ` -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` -D BUILD_TESTING=OFF ` - -D CMAKE_C_FLAGS=$C_FLAGS ` -D CMAKE_C_EXTENSIONS=OFF ` -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` -S ${env:GITHUB_WORKSPACE}\external\OpenCL-Headers ` @@ -370,13 +336,11 @@ jobs: # error C2220: warning treated as error - no 'object' file generated run: | $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} - $C_FLAGS='/W4' & cmake ` -G "${{matrix.GEN}}" ` -A $BIN ` -T ${{matrix.VER}} ` -D BUILD_TESTING=ON ` - -D CMAKE_C_FLAGS=$C_FLAGS ` -D CMAKE_C_EXTENSIONS=OFF ` -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` -D CMAKE_PREFIX_PATH=${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install ` @@ -395,12 +359,10 @@ jobs: 'v143' {'14.3'} } Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=$VER" - $C_FLAGS='/W4' & cmake ` -G "${{matrix.GEN}}" ` -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` -D BUILD_TESTING=ON ` - -D CMAKE_C_FLAGS=$C_FLAGS ` -D CMAKE_C_EXTENSIONS=OFF ` -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` -D CMAKE_INSTALL_PREFIX=${env:GITHUB_WORKSPACE}\install ` @@ -465,11 +427,9 @@ jobs: if: matrix.GEN == 'Visual Studio 17 2022' shell: pwsh run: | - $C_FLAGS = '/W4' & cmake ` -G '${{matrix.GEN}}' ` -T ${{matrix.VER}} ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` -D CMAKE_C_EXTENSIONS=OFF ` -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` @@ -495,11 +455,9 @@ jobs: 'v143' {'14.3'} } Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=$VER" - $C_FLAGS = '/W4' & cmake ` -G '${{matrix.GEN}}' ` -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` -D CMAKE_C_EXTENSIONS=OFF ` -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` @@ -525,10 +483,8 @@ jobs: if: matrix.GEN == 'Visual Studio 17 2022' shell: pwsh run: | - $C_FLAGS = '/W4' & cmake ` -G '${{matrix.GEN}}' ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` -D CMAKE_C_EXTENSIONS=OFF ` -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` @@ -552,11 +508,9 @@ jobs: 'v141' {'14.1'} ` 'v142' {'14.2'} ` 'v143' {'14.3'} } - $C_FLAGS = '/W4' & cmake ` -G '${{matrix.GEN}}' ` -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` - -D CMAKE_C_FLAGS="$C_FLAGS" ` -D CMAKE_C_EXTENSIONS=OFF ` -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL ` -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\external\OpenCL-Headers\install;${env:GITHUB_WORKSPACE}\install" ` @@ -594,6 +548,7 @@ jobs: GEN: Xcode env: INSTALL_LIBDIR: lib + CFLAGS: -Wall -Wextra -pedantic -Werror steps: - name: Checkout OpenCL-ICD-Loader @@ -619,7 +574,6 @@ jobs: run: cmake -G "${{matrix.GEN}}" -D BUILD_TESTING=OFF - -D CMAKE_C_FLAGS="-w" -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} -D CMAKE_C_EXTENSIONS=OFF -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install @@ -632,14 +586,10 @@ jobs: --parallel `sysctl -n hw.logicalcpu` - name: Configure - # no -Werror (-Wno-format) during configuration because: - # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] - # warning: unused parameter [-Wunused-parameter] shell: bash run: cmake -G "${{matrix.GEN}}" -D BUILD_TESTING=ON - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} -D CMAKE_C_EXTENSIONS=OFF -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install @@ -669,7 +619,6 @@ jobs: 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_EXTENSIONS=OFF -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/install" @@ -691,7 +640,6 @@ jobs: run: export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/$INSTALL_LIBDIR/pkgconfig:$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/pkgconfig && cmake -G "${{matrix.GEN}}" - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" -D CMAKE_C_COMPILER=${{matrix.C_COMPILER}} -D CMAKE_C_EXTENSIONS=OFF -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" @@ -718,6 +666,8 @@ jobs: CONFIG: - Debug - Release + env: + CFLAGS: -Wall -Wextra -pedantic -Werror steps: - name: Checkout OpenCL-ICD-Loader uses: actions/checkout@v3 @@ -733,7 +683,6 @@ jobs: run: cmake -G "Unix Makefiles" -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" -D CMAKE_C_EXTENSIONS=OFF -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install -D BUILD_TESTING=OFF @@ -751,7 +700,6 @@ jobs: -G "Unix Makefiles" -D BUILD_TESTING=ON -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} - -D CMAKE_C_FLAGS="-Wall -Wextra -pedantic -Werror" -D CMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -D ANDROID_ABI=${{matrix.ABI}} -D ANDROID_PLATFORM=${{matrix.API_LEVEL}} @@ -762,4 +710,4 @@ jobs: - name: Build shell: bash - run: cmake --build $GITHUB_WORKSPACE/build -j `nproc` + run: cmake --build $GITHUB_WORKSPACE/build --parallel `nproc` diff --git a/.gitignore b/.gitignore index 3939ee71..5b3b4af9 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,6 @@ inc/KHR/ # CMake CMakeFiles/ + +# Visual Studio Code +.vscode diff --git a/CMakeLists.txt b/CMakeLists.txt index dac00ce5..f65b8a50 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.1) +cmake_minimum_required (VERSION 3.16) # Include guard for including this project multiple times if(TARGET OpenCL) @@ -57,7 +57,7 @@ cmake_dependent_option(ENABLE_OPENCL_LAYERINFO "Enable building cllayerinfo tool include(GNUInstallDirs) -if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR (CMAKE_VERSION VERSION_LESS "3.15")) +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}) else() set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}/x86_64-linux-gnu) diff --git a/cmake/Package.cmake b/cmake/Package.cmake index 2e7fe131..d81d5c79 100644 --- a/cmake/Package.cmake +++ b/cmake/Package.cmake @@ -23,41 +23,27 @@ set(pkg_config_location ${INSTALL_LIBDIR}/pkgconfig) set(PKGCONFIG_PREFIX "${CMAKE_INSTALL_PREFIX}") # Configure and install OpenCL.pc for installing the project -if(NOT (CMAKE_VERSION VERSION_LESS "3.5")) - configure_file( - OpenCL.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL.pc - @ONLY) - install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL.pc - DESTINATION ${pkg_config_location} - COMPONENT pkgconfig_install) -endif() +configure_file( + OpenCL.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL.pc + @ONLY) +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL.pc + DESTINATION ${pkg_config_location} + COMPONENT pkgconfig_install) # Configure and install OpenCL.pc for the Debian package -if(NOT (CMAKE_VERSION VERSION_LESS "3.5") OR (CMAKE_INSTALL_PREFIX STREQUAL CPACK_PACKAGING_INSTALL_PREFIX)) - set(PKGCONFIG_PREFIX "${CPACK_PACKAGING_INSTALL_PREFIX}") - configure_file( - OpenCL.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL.pc - @ONLY) - - # We exclude the file from the normal installation when using CMake >= 3.5, because in that - # case we already set a separate file for it - set(EXTRA_ARGS) - if(NOT (CMAKE_VERSION VERSION_LESS "3.5")) - list(APPEND EXTRA_ARGS EXCLUDE_FROM_ALL) - endif() - - install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL.pc - DESTINATION ${pkg_config_location} - COMPONENT dev - ${EXTRA_ARGS}) -else() - 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.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL.pc + @ONLY) + +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL.pc + DESTINATION ${pkg_config_location} + COMPONENT dev + EXCLUDE_FROM_ALL) # DEB packaging configuration set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_VENDOR}) @@ -72,8 +58,8 @@ set(CPACK_DEBIAN_PACKAGE_RELEASE "1") # debian_revision (because this is a set(PACKAGE_VERSION_REVISION "${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}") # Get architecture -execute_process(COMMAND dpkg "--print-architecture" OUTPUT_VARIABLE CPACK_PACKAGE_ARCHITECTURE) -string(STRIP "${CPACK_PACKAGE_ARCHITECTURE}" CPACK_PACKAGE_ARCHITECTURE) +execute_process(COMMAND dpkg "--print-architecture" OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE) +string(STRIP "${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}" CPACK_DEBIAN_PACKAGE_ARCHITECTURE) ########################################################## # Components # @@ -92,7 +78,7 @@ set(CPACK_DEBIAN_RUNTIME_PACKAGE_NAME # Package file name in deb format: # _-_.deb -set(CPACK_DEBIAN_RUNTIME_FILE_NAME "${CPACK_DEBIAN_RUNTIME_PACKAGE_NAME}_${PACKAGE_VERSION_REVISION}_${CPACK_PACKAGE_ARCHITECTURE}.deb") +set(CPACK_DEBIAN_RUNTIME_FILE_NAME "${CPACK_DEBIAN_RUNTIME_PACKAGE_NAME}_${PACKAGE_VERSION_REVISION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") # Dependencies set(CPACK_DEBIAN_RUNTIME_PACKAGE_DEPENDS "libc6") @@ -106,7 +92,7 @@ set(CPACK_DEBIAN_DEV_PACKAGE_NAME # Package file name in deb format: # _-_.deb -set(CPACK_DEBIAN_DEV_FILE_NAME "${CPACK_DEBIAN_DEV_PACKAGE_NAME}_${PACKAGE_VERSION_REVISION}_${CPACK_PACKAGE_ARCHITECTURE}.deb") +set(CPACK_DEBIAN_DEV_FILE_NAME "${CPACK_DEBIAN_DEV_PACKAGE_NAME}_${PACKAGE_VERSION_REVISION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") # Dependencies set(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS ON) # Component dependencies are reflected in package relationships From f41872f90857dff8c91c2a5245a620fa99bdc276 Mon Sep 17 00:00:00 2001 From: Beatriz Navidad Vilches Date: Wed, 13 Sep 2023 12:37:58 +0000 Subject: [PATCH 14/14] Check entries that are not . or .. when looking for an .icd file --- loader/linux/icd_linux.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/loader/linux/icd_linux.c b/loader/linux/icd_linux.c index 44915fe1..f0c7133e 100644 --- a/loader/linux/icd_linux.c +++ b/loader/linux/icd_linux.c @@ -197,10 +197,19 @@ static inline void khrIcdOsDirEnumerate(const char *path, const char *env, } free(dirElems); } - } else + } + else + { // use system provided ordering for (dirEntry = readdir(dir); dirEntry; dirEntry = readdir(dir) ) - khrIcdOsDirEntryValidateAndAdd(dirEntry->d_name, path, extension, addFunc); + { + // only check entries different from '.' and '..' + if (strcmp(dirEntry->d_name, ".") && strcmp(dirEntry->d_name, "..")) + { + khrIcdOsDirEntryValidateAndAdd(dirEntry->d_name, path, extension, addFunc); + } + } + } closedir(dir); }