Skip to content

Commit

Permalink
Find the version suffix and include directory information in FindVAAPI
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Artem Dyomin <[email protected]>
  • Loading branch information
Artemiy-d committed May 14, 2024
1 parent 2b4c9cf commit 500d55c
Showing 1 changed file with 33 additions and 1 deletion.
34 changes: 33 additions & 1 deletion cmake/FindVAAPI.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand All @@ -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()

Expand All @@ -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
)

Expand Down

0 comments on commit 500d55c

Please sign in to comment.