@@ -180,3 +180,100 @@ install(FILES "${CMAKE_BINARY_DIR}/share/OpenVINOConfig.cmake"
180
180
"${CMAKE_BINARY_DIR} /OpenVINOConfig-version.cmake"
181
181
DESTINATION ${OV_CPACK_OPENVINO_CMAKEDIR}
182
182
COMPONENT ${OV_CPACK_COMP_CORE_DEV} )
183
+
184
+ # Generate and install openvino.pc pkg-config file
185
+
186
+ # TODO: fix apple later
187
+ if (LINUX)
188
+ find_package (PkgConfig QUIET )
189
+ if (PkgConfig_FOUND)
190
+ set (generate_pkgconfig ON )
191
+ endif ()
192
+
193
+ # temporary skip generator of pkg-config file for static libraries
194
+ if (NOT BUILD_SHARED_LIBS )
195
+ set (generate_pkgconfig OFF )
196
+ endif ()
197
+
198
+ # fill in PKGCONFIG_OpenVINO_FRONTENDS
199
+ get_target_property (PKGCONFIG_OpenVINO_FRONTENDS_LIST ov_frontends MANUALLY_ADDED_DEPENDENCIES)
200
+ if (ENABLE_OV_IR_FRONTEND)
201
+ list (REMOVE_ITEM PKGCONFIG_OpenVINO_FRONTENDS_LIST openvino_ir_frontend)
202
+ endif ()
203
+ if (ENABLE_OV_TF_FRONTEND)
204
+ list (REMOVE_ITEM PKGCONFIG_OpenVINO_FRONTENDS_LIST openvino_tensorflow_frontend)
205
+ endif ()
206
+
207
+ foreach (frontend IN LISTS PKGCONFIG_OpenVINO_FRONTENDS_LIST)
208
+ if (PKGCONFIG_OpenVINO_FRONTENDS)
209
+ set (PKGCONFIG_OpenVINO_FRONTENDS "${PKGCONFIG_OpenVINO_FRONTENDS} -l${frontend} " )
210
+ else ()
211
+ set (PKGCONFIG_OpenVINO_FRONTENDS "-l${frontend} " )
212
+ endif ()
213
+ endforeach ()
214
+
215
+ # fill in PKGCONFIG_OpenVINO_REQUIRES_PRIVATE and PKGCONFIG_OpenVINO_PRIVATE_DEPS
216
+
217
+ if (ENABLE_SYSTEM_TBB)
218
+ set (PKGCONFIG_OpenVINO_REQUIRES_PRIVATE "tbb" )
219
+ elseif (TBB_FOUND)
220
+ if (NOT pkg_config_tbb_lib_dir)
221
+ message (FATAL_ERROR "Internal error: variable 'pkg_config_tbb_lib_dir' is not defined" )
222
+ endif ()
223
+
224
+ set (PKGCONFIG_OpenVINO_PRIVATE_DEPS "-L\$ {prefix}/${pkg_config_tbb_lib_dir} -ltbb" )
225
+ endif ()
226
+
227
+ if (ENABLE_SYSTEM_PUGIXML AND PkgConfig_FOUND)
228
+ pkg_check_modules(PKGCONFIG_pugixml QUIET
229
+ NO_CMAKE_PATH
230
+ NO_CMAKE_ENVIRONMENT_PATH
231
+ pugixml)
232
+ set (pugixml_dep "pugixml = ${PKGCONFIG_pugixml_VERSION} " )
233
+
234
+ if (PKGCONFIG_OpenVINO_REQUIRES_PRIVATE)
235
+ set (PKGCONFIG_OpenVINO_REQUIRES_PRIVATE "${PKGCONFIG_OpenVINO_REQUIRES_PRIVATE} , ${pugixml_dep} " )
236
+ else ()
237
+ set (PKGCONFIG_OpenVINO_REQUIRES_PRIVATE "${pugixml_dep} " )
238
+ endif ()
239
+ endif ()
240
+
241
+ # detect <multiarch-triplet>
242
+ if (CPACK_GENERATOR STREQUAL "DEB" AND CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
243
+ # TODO: find a better way to detect <multiarch-triplet>
244
+ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
245
+ # note: clang provides different output like 'x86_64-pc-linux-gnu', so it's not used
246
+ execute_process (COMMAND "${CMAKE_C_COMPILER} " -dumpmachine
247
+ OUTPUT_VARIABLE PKGCONFIG_OpenVINO_TRIPLET
248
+ ERROR_VARIABLE error_message
249
+ RESULT_VARIABLE exit_code
250
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
251
+ if (NOT exit_code EQUAL 0)
252
+ message (WARNING "Internal error: failed to detect library <multiarch-triplet> ${error_message} " )
253
+ set (generate_pkgconfig OFF )
254
+ endif ()
255
+ else ()
256
+ # cannot detect <multiarch-triplet>
257
+ set (generate_pkgconfig OFF )
258
+ endif ()
259
+ endif ()
260
+
261
+ # define relative paths
262
+ file (RELATIVE_PATH PKGCONFIG_OpenVINO_PREFIX "/${OV_CPACK_RUNTIMEDIR} /pkgconfig" "/" )
263
+
264
+ if (generate_pkgconfig)
265
+ set (pkgconfig_in "${OpenVINO_SOURCE_DIR} /cmake/templates/openvino.pc.in" )
266
+ set (pkgconfig_out "${OpenVINO_BINARY_DIR} /share/openvino.pc" )
267
+ configure_file ("${pkgconfig_in} " "${pkgconfig_out} " @ONLY)
268
+
269
+ install (FILES "${pkgconfig_out} "
270
+ DESTINATION "${OV_CPACK_RUNTIMEDIR} /pkgconfig"
271
+ COMPONENT ${OV_CPACK_COMP_CORE_DEV} )
272
+
273
+ add_custom_command (TARGET openvino PRE_BUILD
274
+ COMMAND "${PKG_CONFIG_EXECUTABLE} " --validate "${pkgconfig_out} "
275
+ COMMAND cat "${pkgconfig_out} "
276
+ COMMENT "[pkg-config] validating openvino.pc"
277
+ VERBATIM )
278
+ endif ()
279
+ endif ()
0 commit comments