diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 5792620f..2f242a17 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -21,7 +21,9 @@ jobs: CMAKE: [3.1.3] env: CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake + CPACK_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cpack CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest + DEB_INSTALLATION_PATH: /usr # Workaround for https://github.com/actions/runner/issues/2058 OPENCL_PKGCONFIG_PATHS: /__w/OpenCL-CLHPP/OpenCL-CLHPP/install/share/pkgconfig:/__w/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-Headers/install/share/pkgconfig:/__w/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-ICD-Loader/install/lib/pkgconfig @@ -35,8 +37,11 @@ jobs: - name: Checkout OpenCL-Headers uses: actions/checkout@v3 with: - repository: KhronosGroup/OpenCL-Headers + # Change to KhronosGroup/OpenCL-Headers when PR for DEB packaging is merged + repository: StreamHPC/OpenCL-Headers path: external/OpenCL-Headers + # Remove when PR for DEB packaging is merged + ref: 58-create-deb-package - name: Checkout OpenCL-ICD-Loader uses: actions/checkout@v3 @@ -44,35 +49,43 @@ jobs: repository: KhronosGroup/OpenCL-ICD-Loader path: external/OpenCL-ICD-Loader - - name: Build & install OpenCL-Headers - run: $CMAKE_EXE + - name: Build, install & package OpenCL-Headers + run: mkdir $GITHUB_WORKSPACE/external/OpenCL-Headers/build && + cd $GITHUB_WORKSPACE/external/OpenCL-Headers/build && + $CMAKE_EXE -G "${{matrix.GEN}}" -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install -D BUILD_TESTING=OFF - -B$GITHUB_WORKSPACE/external/OpenCL-Headers/build - -H$GITHUB_WORKSPACE/external/OpenCL-Headers && + $GITHUB_WORKSPACE/external/OpenCL-Headers && $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build --target install -- - -j`nproc` + -j`nproc` && + $CPACK_EXE + --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" + -G DEB + -C Release + -B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" - name: Build & install OpenCL-ICD-Loader - run: $CMAKE_EXE + run: mkdir $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && + cd $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && + $CMAKE_EXE -G "${{matrix.GEN}}" -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" -D BUILD_TESTING=OFF - -B$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build - -H$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader && + $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader && $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build --target install @@ -84,7 +97,7 @@ jobs: # no -Werror during configuration because: # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] # warning: unused parameter [-Wunused-parameter] - run: + run: mkdir $GITHUB_WORKSPACE/build && cd $GITHUB_WORKSPACE/build && $CMAKE_EXE -G "${{matrix.GEN}}" -D BUILD_TESTING=ON @@ -96,8 +109,8 @@ jobs: -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" - -B$GITHUB_WORKSPACE/build - -H$GITHUB_WORKSPACE + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH + $GITHUB_WORKSPACE - name: Build shell: bash @@ -111,6 +124,14 @@ jobs: shell: bash run: $CTEST_EXE --output-on-failure --parallel `nproc` + - name: Package DEB + shell: bash + run: $CPACK_EXE + --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" + -G DEB + -C Release + -B "$GITHUB_WORKSPACE/package-deb" + - name: Install shell: bash run: $CMAKE_EXE @@ -119,27 +140,45 @@ jobs: -- -j`nproc` + - name: Consume (Package DEB) + shell: bash + run: dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb && + dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && + mkdir $GITHUB_WORKSPACE/build_package && cd $GITHUB_WORKSPACE/build_package && + $CMAKE_EXE + -G "${{matrix.GEN}}" + -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" + -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} + -D CMAKE_CXX_STANDARD=${{matrix.STD}} + -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" + $GITHUB_WORKSPACE/tests/pkgconfig/bare && + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package -- -j`nproc` + - name: "Consume (standalone): Configure/Build/Test" shell: bash - run: $CMAKE_EXE + run: mkdir -p $GITHUB_WORKSPACE/build/downstream/bare && + cd $GITHUB_WORKSPACE/build/downstream/bare && + $CMAKE_EXE -G "${{matrix.GEN}}" -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} -D CMAKE_CXX_STANDARD=${{matrix.STD}} -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" - -B$GITHUB_WORKSPACE/build/downstream/bare - -H$GITHUB_WORKSPACE/tests/pkgconfig/bare ; + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" + $GITHUB_WORKSPACE/tests/pkgconfig/bare && $CMAKE_EXE - --build $GITHUB_WORKSPACE/build/downstream/bare ; - cd $GITHUB_WORKSPACE/build/downstream/bare ; + --build $GITHUB_WORKSPACE/build/downstream/bare && + cd $GITHUB_WORKSPACE/build/downstream/bare && $CTEST_EXE --output-on-failure - name: "Consume (SDK): Configure/Build/Test" shell: bash - run: $CMAKE_EXE -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL ; - echo -e "include(\"$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")\ninclude(\"\${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake\")" > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake ; + run: $CMAKE_EXE -E make_directory $DEB_INSTALLATION_PATH/share/cmake/OpenCL && + echo -e "include(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")\ninclude(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake\")" > $DEB_INSTALLATION_PATH/share/cmake/OpenCL/OpenCLConfig.cmake && + mkdir -p $GITHUB_WORKSPACE/build/downstream/sdk && + cd $GITHUB_WORKSPACE/build/downstream/sdk && $CMAKE_EXE -G "${{matrix.GEN}}" -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} @@ -147,12 +186,11 @@ jobs: -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} -D CMAKE_CXX_STANDARD=${{matrix.STD}} -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" - -B$GITHUB_WORKSPACE/build/downstream/sdk - -H$GITHUB_WORKSPACE/tests/pkgconfig/sdk ; + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" + $GITHUB_WORKSPACE/tests/pkgconfig/sdk && $CMAKE_EXE - --build $GITHUB_WORKSPACE/build/downstream/sdk ; - cd $GITHUB_WORKSPACE/build/downstream/sdk ; + --build $GITHUB_WORKSPACE/build/downstream/sdk && + cd $GITHUB_WORKSPACE/build/downstream/sdk && $CTEST_EXE --output-on-failure - name: Test pkg-config @@ -165,8 +203,6 @@ jobs: - - cmake-latest: runs-on: ${{ matrix.OS }} strategy: @@ -177,11 +213,13 @@ jobs: GEN: [Ninja Multi-Config] STD: [11, 14] BIN: [64] # Temporarily disable cross-compilation (will need toolchain files) - CMAKE: [3.21.2] + CMAKE: [3.21.3] env: CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{ matrix.CMAKE }}/cmake-${{ matrix.CMAKE }}-Linux-x86_64.tar.gz CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake + CPACK_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cpack CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest + DEB_INSTALLATION_PATH: /usr steps: @@ -193,8 +231,11 @@ jobs: - name: Checkout OpenCL-Headers uses: actions/checkout@v3 with: - repository: KhronosGroup/OpenCL-Headers + # Change to KhronosGroup/OpenCL-Headers when PR for DEB packaging is merged + repository: StreamHPC/OpenCL-Headers path: external/OpenCL-Headers + # Remove when PR for DEB packaging is merged + ref: 58-create-deb-package - name: Checkout OpenCL-ICD-Loader uses: actions/checkout@v3 @@ -205,7 +246,7 @@ jobs: - name: Create Build Environment run: sudo apt-get update -q; if [[ "${{matrix.GEN}}" =~ "Ninja" && ! `which ninja` ]]; then sudo apt install -y ninja-build; fi; - sudo apt install gcc-${{matrix.VER}} g++-${{matrix.VER}}; + sudo apt install gcc-${{matrix.VER}} g++-${{matrix.VER}}; if [[ "${{matrix.BIN}}" == "32" ]]; then sudo apt install gcc-${COMPILER_VER}-multilib; fi; @@ -214,22 +255,28 @@ jobs: mv /opt/Kitware/CMake/cmake-${{ matrix.CMAKE }}-* /opt/Kitware/CMake/${{ matrix.CMAKE }} # Install Ninja only if it's the selected generator and it's not available. - - name: Build & install OpenCL-Headers + - name: Build, install & package OpenCL-Headers run: $CMAKE_EXE -G "${{matrix.GEN}}" + -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install -D BUILD_TESTING=OFF - -B$GITHUB_WORKSPACE/external/OpenCL-Headers/build - -H$GITHUB_WORKSPACE/external/OpenCL-Headers && + -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build + -S $GITHUB_WORKSPACE/external/OpenCL-Headers && $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build --target install - --config Release -- - -j`nproc` + -j`nproc` && + $CPACK_EXE + --config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" + -G DEB + -C Release + -B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" - name: Build & install OpenCL-ICD-Loader run: $CMAKE_EXE @@ -237,11 +284,11 @@ jobs: -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install" -D BUILD_TESTING=OFF - -B$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build - -H$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader && + -B $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build + -S $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader && $CMAKE_EXE --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build --target install @@ -264,8 +311,9 @@ jobs: -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" - -B$GITHUB_WORKSPACE/build - -H$GITHUB_WORKSPACE + -D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH + -B $GITHUB_WORKSPACE/build + -S $GITHUB_WORKSPACE - name: Build shell: bash @@ -280,6 +328,14 @@ jobs: $CTEST_EXE --output-on-failure -C Release --parallel `nproc`; $CTEST_EXE --output-on-failure -C Debug --parallel `nproc`; + - name: Package DEB + shell: bash + run: $CPACK_EXE + --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" + -G DEB + -C Release + -B "$GITHUB_WORKSPACE/package-deb" + - name: Install shell: bash run: $CMAKE_EXE @@ -289,6 +345,22 @@ jobs: -- -j`nproc` + - name: Consume (Package DEB) + shell: bash + run: sudo dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb && + sudo dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && + $CMAKE_EXE + -G "${{matrix.GEN}}" + -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" + -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} + -D CMAKE_CXX_STANDARD=${{matrix.STD}} + -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" + -B $GITHUB_WORKSPACE/build_package + -S $GITHUB_WORKSPACE/tests/pkgconfig/bare && + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release && + $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug + - name: "Consume (standalone): Configure/Build/Test" shell: bash run: $CMAKE_EXE @@ -297,33 +369,33 @@ jobs: -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} -D CMAKE_CXX_STANDARD=${{matrix.STD}} -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" - -B$GITHUB_WORKSPACE/build/downstream/bare - -H$GITHUB_WORKSPACE/tests/pkgconfig/bare ; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/bare --config Release; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/bare --config Debug; - cd $GITHUB_WORKSPACE/build/downstream/bare; - $CTEST_EXE --output-on-failure -C Release; - $CTEST_EXE --output-on-failure -C Debug; + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" + -B $GITHUB_WORKSPACE/build/downstream/bare + -S $GITHUB_WORKSPACE/tests/pkgconfig/bare && + $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/bare --config Release && + $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/bare --config Debug && + cd $GITHUB_WORKSPACE/build/downstream/bare && + $CTEST_EXE --output-on-failure -C Release && + $CTEST_EXE --output-on-failure -C Debug - name: "Consume (SDK): Configure/Build/Test" shell: bash - run: $CMAKE_EXE -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL ; - echo -e "include(\"$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")\ninclude(\"\${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake\")" > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake ; + run: $CMAKE_EXE -E make_directory $DEB_INSTALLATION_PATH/share/cmake/OpenCL && + echo -e "include(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake\")\ninclude(\"$DEB_INSTALLATION_PATH/share/cmake/OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake\")" > $DEB_INSTALLATION_PATH/share/cmake/OpenCL/OpenCLConfig.cmake && $CMAKE_EXE -G "${{matrix.GEN}}" -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}" -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}} -D CMAKE_CXX_STANDARD=${{matrix.STD}} -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" - -B$GITHUB_WORKSPACE/build/downstream/sdk - -H$GITHUB_WORKSPACE/tests/pkgconfig/sdk ; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/sdk --config Release; - $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/sdk --config Debug; - cd $GITHUB_WORKSPACE/build/downstream/sdk; - $CTEST_EXE --output-on-failure -C Release; - $CTEST_EXE --output-on-failure -C Debug; + -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" + -B $GITHUB_WORKSPACE/build/downstream/sdk + -S $GITHUB_WORKSPACE/tests/pkgconfig/sdk && + $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/sdk --config Release && + $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/sdk --config Debug && + cd $GITHUB_WORKSPACE/build/downstream/sdk && + $CTEST_EXE --output-on-failure -C Release && + $CTEST_EXE --output-on-failure -C Debug - name: Test pkg-config shell: bash @@ -331,4 +403,4 @@ jobs: - name: Test pkg-config dependency shell: bash - run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" + run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..2e0d9c93 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +# Build dir +[Bb]uild/ + +# Install dir +[Ii]nstall/ + +# Package dir +[Pp]ackage[-_\s\d]*/ + +# External dir +[Ee]xternal/ diff --git a/CMakeLists.txt b/CMakeLists.txt index b9689cca..0796bb39 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,6 +75,7 @@ install( set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") include(JoinPaths) +include(Package) include(GNUInstallDirs) diff --git a/cmake/Package.cmake b/cmake/Package.cmake new file mode 100644 index 00000000..00b5a223 --- /dev/null +++ b/cmake/Package.cmake @@ -0,0 +1,44 @@ +set(CPACK_PACKAGE_VENDOR "khronos") + +set(CPACK_DEBIAN_DESCRIPTION "C++ headers for OpenCL development") + +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt") + +set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") + +if(NOT CPACK_PACKAGING_INSTALL_PREFIX) + set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") +endif() + +# DEB packaging configuration +set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_VENDOR}) + +set(CPACK_DEBIAN_PACKAGE_HOMEPAGE + "https://github.com/KhronosGroup/OpenCL-CLHPP") + +# Version number [epoch:]upstream_version[-debian_revision] +set(LATEST_RELEASE_VERSION "2023.04.17") +set(CPACK_DEBIAN_PACKAGE_VERSION "${PROJECT_VERSION}~${LATEST_RELEASE_VERSION}") # upstream_version +set(CPACK_DEBIAN_PACKAGE_RELEASE "1") # debian_revision (because this is a + # non-native pkg) +set(PACKAGE_VERSION_REVISION "${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}") + +set(DEBIAN_PACKAGE_NAME "opencl-clhpp-headers") +set(CPACK_DEBIAN_PACKAGE_NAME + "${DEBIAN_PACKAGE_NAME}" + CACHE STRING "Package name" FORCE) + +# Get architecture +execute_process(COMMAND dpkg "--print-architecture" OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE) +string(STRIP "${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}" CPACK_DEBIAN_PACKAGE_ARCHITECTURE) + +# Package file name in deb format: +# _-_.deb +set(CPACK_DEBIAN_FILE_NAME "${CPACK_PACKAGE_VENDOR}-${DEBIAN_PACKAGE_NAME}_${PACKAGE_VERSION_REVISION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") + +# Dependencies +set(CPACK_DEBIAN_PACKAGE_DEPENDS "opencl-c-headers (>= 3.0~2021.04.29)") + +set(CPACK_DEBIAN_PACKAGE_DEBUG ON) + +include(CPack)