From 500d55c66200d1c0e223e52565021c02c37766d6 Mon Sep 17 00:00:00 2001 From: Artem Dyomin Date: Mon, 8 Apr 2024 14:13:24 +0200 Subject: [PATCH] Find the version suffix and include directory information in FindVAAPI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The variables are to be used in cmake scripts configuring FFmpeg stubs. Task-number: QTBUG-120990 Pick-to: 6.5 6.7 Change-Id: I5e877e679af1e6275e3db860782db2b4ff071b08 Reviewed-by: Jøger Hansegård Reviewed-by: Artem Dyomin --- cmake/FindVAAPI.cmake | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/cmake/FindVAAPI.cmake b/cmake/FindVAAPI.cmake index a3ea6cd586..b1170dc8ed 100644 --- a/cmake/FindVAAPI.cmake +++ b/cmake/FindVAAPI.cmake @@ -4,13 +4,40 @@ find_package(PkgConfig QUIET) +function(qt_internal_multimedia_set_va_outputs component include_dir lib_path) + if ("${component}" STREQUAL "VA") + set(VAAPI_INCLUDE_DIR "${include_dir}" CACHE INTERNAL "") + get_filename_component(lib_realpath "${lib_path}" REALPATH) + + string(REGEX MATCH "[0-9]+(\\.[0-9]+)*$" VAAPI_SUFFIX "${lib_realpath}") + set(VAAPI_SUFFIX "${VAAPI_SUFFIX}" CACHE INTERNAL "") + + mark_as_advanced(VAAPI_SUFFIX VAAPI_INCLUDE_DIR) + endif() +endfunction() + function(find_component component prefix header library) if(NOT TARGET VAAPI::${component}) string(TOUPPER ${component} upper) - pkg_check_modules(PC_VAAPI_${upper} ${prefix} IMPORTED_TARGET) + pkg_search_module(PC_VAAPI_${upper} ${prefix} IMPORTED_TARGET) if(TARGET PkgConfig::PC_VAAPI_${upper}) add_library(VAAPI::${component} INTERFACE IMPORTED) target_link_libraries(VAAPI::${component} INTERFACE PkgConfig::PC_VAAPI_${upper}) + + if (NOT PC_VAAPI_${upper}_LINK_LIBRARIES) + get_target_property(PC_VAAPI_${upper}_LINK_LIBRARIES PkgConfig::PC_VAAPI_${upper} INTERFACE_LINK_LIBRARIES) + message(STATUS "PC_VAAPI_${upper}_LINK_LIBRARIES is not defined by PkgConfig; " + "Get the value from target properties: ${PC_VAAPI_${upper}_LINK_LIBRARIES}") + endif() + + foreach (lib_path ${PC_VAAPI_${upper}_LINK_LIBRARIES}) + get_filename_component(lib_name "${lib_path}" NAME_WLE) + if (${lib_name} STREQUAL ${prefix}) + qt_internal_multimedia_set_va_outputs(${component} + "${PC_VAAPI_${upper}_INCLUDEDIR}" "${lib_path}") + break() + endif() + endforeach() else() find_path(VAAPI_${component}_INCLUDE_DIR NAMES ${header} @@ -25,6 +52,9 @@ function(find_component component prefix header library) target_link_libraries(VAAPI::${component} INTERFACE ${VAAPI_${component}_LIBRARY}) endif() mark_as_advanced(VAAPI_${component}_INCLUDE_DIR VAAPI_${component}_LIBRARY) + + qt_internal_multimedia_set_va_outputs(${component} + "${VAAPI_${component}_INCLUDE_DIR}" "${VAAPI_${component}_LIBRARY}") endif() endif() @@ -48,6 +78,8 @@ find_package_handle_standard_args(VAAPI REQUIRED_VARS VAAPI_VA_FOUND VAAPI_DRM_FOUND + VAAPI_INCLUDE_DIR + VAAPI_SUFFIX HANDLE_COMPONENTS )