Skip to content

Commit b1c5753

Browse files
authored
Add static link libs to OpenCL.pc (#263)
1 parent 71ea2a6 commit b1c5753

3 files changed

Lines changed: 33 additions & 22 deletions

File tree

CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ set_target_properties (OpenCL PROPERTIES VERSION 1\.0\.0 SOVERSION "1")
133133

134134
if (WIN32)
135135
target_link_libraries (OpenCL PRIVATE cfgmgr32.lib runtimeobject.lib)
136+
string(APPEND OPENCL_LIBS_PRIVATE_PC " -lcfgmgr32 -lruntimeobject")
136137

137138
# Generate a DLL without a "lib" prefix for mingw.
138139
if (MINGW OR MSYS OR CYGWIN)
@@ -141,6 +142,7 @@ if (WIN32)
141142
endif()
142143
else()
143144
target_link_libraries (OpenCL PRIVATE ${CMAKE_THREAD_LIBS_INIT})
145+
string(APPEND OPENCL_LIBS_PRIVATE_PC " ${CMAKE_THREAD_LIBS_INIT}")
144146
if (NOT APPLE)
145147
set_target_properties (OpenCL PROPERTIES LINK_FLAGS "-Wl,--version-script -Wl,${CMAKE_CURRENT_SOURCE_DIR}/loader/linux/icd_exports.map")
146148
if (OPENCL_ICD_LOADER_PIC)
@@ -184,6 +186,9 @@ target_include_directories (OpenCL
184186
loader
185187
)
186188
target_link_libraries (OpenCL PUBLIC ${CMAKE_DL_LIBS})
189+
if(CMAKE_DL_LIBS STREQUAL "dl")
190+
string(APPEND OPENCL_LIBS_PRIVATE_PC " -ldl")
191+
endif()
187192

188193
if (ENABLE_OPENCL_LAYERINFO)
189194

@@ -306,3 +311,4 @@ install (TARGETS OpenCL
306311
DESTINATION ${CMAKE_INSTALL_LIBDIR}
307312
COMPONENT dev
308313
NAMELINK_ONLY)
314+
install_opencl_pc()

OpenCL.pc.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ Description: Khronos OpenCL ICD Loader
77
Requires: OpenCL-Headers
88
Version: 3.0
99
Libs: -L${libdir} -lOpenCL
10+
Libs.private:@OPENCL_LIBS_PRIVATE_PC@

cmake/Package.cmake

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,28 +12,32 @@ join_paths(OPENCL_LIBDIR_PC "\${exec_prefix}" "${CMAKE_INSTALL_LIBDIR}")
1212
set(pkg_config_location ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
1313
set(PKGCONFIG_PREFIX "${CMAKE_INSTALL_PREFIX}")
1414

15-
# Configure and install OpenCL.pc for installing the project
16-
configure_file(
17-
OpenCL.pc.in
18-
${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL.pc
19-
@ONLY)
20-
install(
21-
FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL.pc
22-
DESTINATION ${pkg_config_location}
23-
COMPONENT pkgconfig_install)
24-
25-
# Configure and install OpenCL.pc for the Debian package
26-
set(PKGCONFIG_PREFIX "${CPACK_PACKAGING_INSTALL_PREFIX}")
27-
configure_file(
28-
OpenCL.pc.in
29-
${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL.pc
30-
@ONLY)
31-
32-
install(
33-
FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL.pc
34-
DESTINATION ${pkg_config_location}
35-
COMPONENT dev
36-
EXCLUDE_FROM_ALL)
15+
set(OPENCL_LIBS_PRIVATE_PC "")
16+
17+
function(install_opencl_pc)
18+
# Configure and install OpenCL.pc for installing the project
19+
configure_file(
20+
OpenCL.pc.in
21+
${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL.pc
22+
@ONLY)
23+
install(
24+
FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_install/OpenCL.pc
25+
DESTINATION ${pkg_config_location}
26+
COMPONENT pkgconfig_install)
27+
28+
# Configure and install OpenCL.pc for the Debian package
29+
set(PKGCONFIG_PREFIX "${CPACK_PACKAGING_INSTALL_PREFIX}")
30+
configure_file(
31+
OpenCL.pc.in
32+
${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL.pc
33+
@ONLY)
34+
35+
install(
36+
FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig_package/OpenCL.pc
37+
DESTINATION ${pkg_config_location}
38+
COMPONENT dev
39+
EXCLUDE_FROM_ALL)
40+
endfunction()
3741

3842
set(CPACK_DEBIAN_PACKAGE_DEBUG ON)
3943

0 commit comments

Comments
 (0)