[opencl] Use canonical cmake install and fixup (#40042)

This commit is contained in:
Kai Pastor 2024-07-24 19:24:50 +02:00 committed by GitHub
parent aae75b3554
commit 6fb9a26cf4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 82 additions and 69 deletions

View File

@ -1,24 +1,21 @@
# OpenCL headers
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
OUT_SOURCE_PATH OPENCL_HEADERS
REPO KhronosGroup/OpenCL-Headers
REF "${VERSION}"
SHA512 41730e80b267de45db9d7a3bcf9e0f29bfc86b25475a86d50180a7258e1240fc8c8f2ad3e222b03b3ef50c10ef63fb5b1647c056fec615e87965aa3196e8ac60
HEAD_REF main
)
file(INSTALL "${SOURCE_PATH}/CL" DESTINATION ${CURRENT_PACKAGES_DIR}/include)
# OpenCL C++ headers
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
OUT_SOURCE_PATH OPENCL_CLHPP
REPO KhronosGroup/OpenCL-CLHPP
REF "${VERSION}"
SHA512 30252a832287375d550a5e184779881d5b22207a636298c7f52f277c219d3a1ae6983259cfea7bf4f90f0840fec114ee0e7a8c1e6a6fe48c24fd3b5119e7a7f8
HEAD_REF main
)
file(INSTALL "${SOURCE_PATH}/include/CL" DESTINATION ${CURRENT_PACKAGES_DIR}/include)
# OpenCL ICD loader
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
@ -28,56 +25,53 @@ vcpkg_from_github(
HEAD_REF main
)
string(COMPARE EQUAL ${VCPKG_CRT_LINKAGE} dynamic USE_DYNAMIC_VCXX_RUNTIME)
block(SCOPE_FOR VARIABLES)
set(VCPKG_BUILD_TYPE release) # header-only SDK components
message(STATUS "OpenCL headers (${OPENCL_HEADERS})")
vcpkg_cmake_configure(
SOURCE_PATH "${OPENCL_HEADERS}"
OPTIONS
-DOPENCL_HEADERS_BUILD_CXX_TESTS=OFF
-DBUILD_TESTING=OFF
)
vcpkg_cmake_install()
vcpkg_cmake_config_fixup(CONFIG_PATH "share/cmake/OpenCLHeaders" PACKAGE_NAME "openclheaders")
file(RENAME "${CURRENT_PACKAGES_DIR}/lib/pkgconfig" "${CURRENT_PACKAGES_DIR}/share/pkgconfig")
unset(Z_VCPKG_CMAKE_GENERATOR CACHE) # suppress warning
message(STATUS "OpenCL C++ headers (${OPENCL_CLHPP})")
vcpkg_cmake_configure(
SOURCE_PATH "${OPENCL_CLHPP}"
OPTIONS
-DBUILD_DOCS=OFF
-DBUILD_EXAMPLES=OFF
-DBUILD_TESTING=OFF
"-DOpenCLHeaders_DIR=${CURRENT_PACKAGES_DIR}/share/openclheaders"
)
vcpkg_cmake_install()
vcpkg_cmake_config_fixup(CONFIG_PATH "share/cmake/OpenCLHeadersCpp" PACKAGE_NAME "openclheaderscpp")
unset(Z_VCPKG_CMAKE_GENERATOR CACHE) # suppress warning
endblock()
message(STATUS "OpenCL ICD loader (${SOURCE_PATH})")
vcpkg_cmake_configure(
SOURCE_PATH ${SOURCE_PATH}
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
-DOPENCL_ICD_LOADER_HEADERS_DIR=${CURRENT_PACKAGES_DIR}/include
"-DOPENCL_ICD_LOADER_HEADERS_DIR=${CURRENT_PACKAGES_DIR}/include"
-DENABLE_OPENCL_LAYERINFO=OFF
)
vcpkg_cmake_build(TARGET OpenCL)
if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/${VCPKG_TARGET_STATIC_LIBRARY_PREFIX}OpenCL${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}" DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
endif()
if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/${VCPKG_TARGET_STATIC_LIBRARY_PREFIX}OpenCL${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
endif()
else()
if(VCPKG_TARGET_IS_WINDOWS)
if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}OpenCL${VCPKG_TARGET_IMPORT_LIBRARY_SUFFIX}" DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}OpenCL${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}" DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
endif()
if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}OpenCL${VCPKG_TARGET_IMPORT_LIBRARY_SUFFIX}" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}OpenCL${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
endif()
elseif(VCPKG_TARGET_IS_LINUX)
if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}OpenCL${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}" DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}OpenCL${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}.1" DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}OpenCL${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}.1.2" DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
endif()
if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}OpenCL${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}OpenCL${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}.1" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}OpenCL${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}.1.2" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
endif()
elseif(VCPKG_TARGET_IS_OSX)
if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}OpenCL${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}" DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
endif()
if (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}OpenCL${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
endif()
endif()
endif()
vcpkg_cmake_install()
vcpkg_cmake_config_fixup(CONFIG_PATH "share/cmake/OpenCLICDLoader" PACKAGE_NAME "openclicdloader")
vcpkg_fixup_pkgconfig()
vcpkg_copy_pdbs()
file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
configure_file(${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake ${CURRENT_PACKAGES_DIR}/share/${PORT} @ONLY)
file(GLOB files_in_bin "${CURRENT_PACKAGES_DIR}/bin/*")
if(files_in_bin STREQUAL "")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
endif()
configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY)
file(COPY "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")

View File

@ -1,16 +1,28 @@
The package opencl is compatible with built-in CMake targets via CMake v3.6 and prior syntax
opencl provides CMake targets:
find_package(OpenCL REQUIRED)
target_link_libraries(main PRIVATE ${OpenCL_LIBRARIES})
target_include_directories(main PRIVATE ${OpenCL_INCLUDE_DIRS})
# Khronos OpenCL Headers
find_package(OpenCLHeaders CONFIG REQUIRED)
target_link_libraries(main PRIVATE OpenCL::Headers)
and the CMake v3.7 and beyond imported target syntax
# Khronos OpenCL C++ Headers
find_package(OpenCLHeadersCpp CONFIG REQUIRED)
target_link_libraries(main PRIVATE OpenCL::HeadersCpp)
find_package(OpenCL REQUIRED)
target_link_libraries(main PRIVATE OpenCL::OpenCL)
# Khronos OpenCL ICD Loader
find_package(OpenCLICDLoader CONFIG REQUIRED)
target_link_libraries(main PRIVATE OpenCL::OpenCL)
opencl provides pkg-config modules:
# Khronos OpenCL Headers
OpenCL-Headers
# Khronos OpenCL ICD Loader
OpenCL
This package is only an OpenCL SDK. To actually run OpenCL code you also need to install an implementation.
WINDOWS: implementations typically ship with the drivers of you CPU/GPU vendors.
LINUX: implementations may be installed from your distro's repo or manually. There are too many to count.
APPLE: consult your distribution vendor on the state of OpenCL support: https://support.apple.com/en-us/HT202823
Windows: Implementations typically ship with the drivers of you CPU/GPU vendors.
Linux: Implementations may be installed from your distro's repo or manually.
Apple: Consult your distribution vendor on the state of OpenCL support:
https://support.apple.com/en-us/HT202823

View File

@ -1,13 +1,14 @@
string(FIND ";${ARGS};" ";CONFIG;" z_vcpkg_opencl_config)
_find_package(${ARGS})
if("@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static" AND (NOT CMAKE_SYSTEM_NAME MATCHES "Darwin"))
if("@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static" AND (NOT CMAKE_SYSTEM_NAME MATCHES "Darwin") AND z_vcpkg_opencl_config EQUAL "-1")
find_package(Threads REQUIRED)
set(OpenCL_Extra_Libs ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT})
if(CMAKE_SYSTEM_NAME MATCHES "Windows")
list(APPEND OpenCL_Extra_Libs cfgmgr32)
if($ENV{WindowsSDKVersion} MATCHES "^10")
list(APPEND OpenCL_Extra_Libs OneCoreUAP)
if("$ENV{WindowsSDKVersion}" MATCHES "^10")
list(APPEND OpenCL_Extra_Libs OneCoreUAP)
endif()
endif()
endif(CMAKE_SYSTEM_NAME MATCHES "Windows")
if(TARGET OpenCL::OpenCL)
set_property(TARGET OpenCL::OpenCL APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${OpenCL_Extra_Libs})
@ -17,3 +18,4 @@ if("@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static" AND (NOT CMAKE_SYSTEM_NAME MATCHE
endif()
unset(OpenCL_Extra_Libs)
endif()
unset(z_vcpkg_opencl_config)

View File

@ -1,7 +1,7 @@
{
"name": "opencl",
"version-string": "v2023.02.06",
"port-version": 2,
"port-version": 3,
"description": "C/C++ headers and ICD loader (Installable Client Driver) for OpenCL",
"homepage": "https://github.com/KhronosGroup/OpenCL-Headers",
"license": "Apache-2.0",

View File

@ -6494,7 +6494,7 @@
},
"opencl": {
"baseline": "v2023.02.06",
"port-version": 2
"port-version": 3
},
"opencolorio": {
"baseline": "2.2.1",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "4e224177099db3e6f391e33fc250d7a8699d60b9",
"version-string": "v2023.02.06",
"port-version": 3
},
{
"git-tree": "c55e82e4ec70906ec28b692d2625584025de4725",
"version-string": "v2023.02.06",