Find package - rocdecode-host (#650)
* Find package - rocdecode-host * Cleanup --------- Co-authored-by: Kiriti <kiriti@santiago.amd.com>
This commit is contained in:
+1
-1
@@ -184,7 +184,7 @@ if(HIP_FOUND AND Libva_FOUND AND Libdrm_amdgpu_FOUND)
|
||||
# install rocdecode include files -- {ROCM_PATH}/include/rocdecode
|
||||
install(FILES api/rocdecode/rocdecode.h api/rocdecode/rocparser.h api/rocdecode/roc_bitstream_reader.h
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME} COMPONENT dev)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/rocdecode_version.h api/rocdecode/rocdecode_host.h
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/rocdecode_version.h
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME} COMPONENT dev)
|
||||
# install rocdecode api trace include file -- {ROCM_PATH}/include/rocdecode/amd_detail
|
||||
install(FILES api/amd_detail/rocdecode_api_trace.h
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
Copyright (c) 2024 - 2025 Advanced Micro Devices, Inc. All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _ROCDECODE_HOST_VERSION_H_
|
||||
#define _ROCDECODE_HOST_VERSION_H_
|
||||
|
||||
/*!
|
||||
* \file
|
||||
* \brief rocDecode host version
|
||||
* \defgroup group_rocdecode_host_version rocdecode-host Version
|
||||
* \brief rocdecode-host version
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#define ROCDECODE_HOST_VERSION_MAJOR @PROJECT_VERSION_MAJOR@
|
||||
#define ROCDECODE_HOST_VERSION_MINOR @PROJECT_VERSION_MINOR@
|
||||
#define ROCDECODE_HOST_VERSION_PATCH @PROJECT_VERSION_PATCH@
|
||||
|
||||
/**
|
||||
* ROCDECODE_HOST_CHECK_VERSION:
|
||||
* @major: major version, like 1 in 1.2.3
|
||||
* @minor: minor version, like 2 in 1.2.3
|
||||
* @patch: patch version, like 3 in 1.2.3
|
||||
*
|
||||
* Evaluates to %TRUE if the version of ROCDECODE HOST is greater than
|
||||
* @major, @minor and @patch
|
||||
*/
|
||||
#define ROCDECODE_HOST_CHECK_VERSION(major, minor, patch) \
|
||||
(ROCDECODE_HOST_VERSION_MAJOR > (major) || \
|
||||
(ROCDECODE_HOST_VERSION_MAJOR == (major) && ROCDECODE_HOST_VERSION_MINOR > (minor)) || \
|
||||
(ROCDECODE_HOST_VERSION_MAJOR == (major) && ROCDECODE_HOST_VERSION_MINOR == (minor) && ROCDECODE_HOST_VERSION_PATCH >= (patch)))
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // end extern "C" block
|
||||
#endif
|
||||
|
||||
#endif //_ROCDECODE_HOST_VERSION_H_ header guard
|
||||
@@ -0,0 +1,36 @@
|
||||
# - Config file for the rocdecode-host package
|
||||
# It defines the following variables
|
||||
# use rocdecode-host_INCLUDE_DIR - include directory for rocdecode-host
|
||||
# use rocdecode-host_LIB_DIR - library directory for rocdecode-host
|
||||
# use rocdecode-host_LIBRARY - library to link against
|
||||
# use rocdecode-host_LIBRARIES - library to link against
|
||||
|
||||
# compute paths
|
||||
get_filename_component(@PROJECT_NAME@_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
|
||||
# version
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-config-version.cmake)
|
||||
set(@PROJECT_NAME@_VERSION ${PACKAGE_VERSION})
|
||||
|
||||
# targets
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake)
|
||||
|
||||
@PACKAGE_INIT@
|
||||
|
||||
set_and_check(@PROJECT_NAME@_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
|
||||
set_and_check(@PROJECT_NAME@_LIB_DIR "@PACKAGE_LIB_INSTALL_DIR@")
|
||||
set_and_check(@PROJECT_NAME@_LIBRARY "@PACKAGE_LIB_INSTALL_DIR@/lib@PROJECT_NAME@.so")
|
||||
set_and_check(@PROJECT_NAME@_LIBRARIES "@PACKAGE_LIB_INSTALL_DIR@/lib@PROJECT_NAME@.so")
|
||||
|
||||
if(NOT TARGET rocdecode::@PROJECT_NAME@)
|
||||
add_library(rocdecode::@PROJECT_NAME@ INTERFACE IMPORTED)
|
||||
set_target_properties(rocdecode::@PROJECT_NAME@ PROPERTIES INTERFACE_LINK_LIBRARIES ${@PROJECT_NAME@_LIBRARY})
|
||||
endif ()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(
|
||||
@PROJECT_NAME@
|
||||
FOUND_VAR @PROJECT_NAME@_FOUND
|
||||
REQUIRED_VARS @PROJECT_NAME@_INCLUDE_DIR @PROJECT_NAME@_LIB_DIR @PROJECT_NAME@_LIBRARY @PROJECT_NAME@_LIBRARIES
|
||||
VERSION_VAR @PROJECT_NAME@_VERSION
|
||||
HANDLE_COMPONENTS)
|
||||
@@ -64,22 +64,22 @@ endif()
|
||||
find_package(HIP QUIET)
|
||||
find_package(FFmpeg QUIET)
|
||||
find_package(rocdecode QUIET)
|
||||
find_package(rocdecode-host 1.0.0 QUIET)
|
||||
|
||||
if(HIP_FOUND AND FFMPEG_FOUND AND rocdecode_FOUND)
|
||||
if(HIP_FOUND AND FFMPEG_FOUND AND rocdecode_FOUND AND rocdecode-host_FOUND)
|
||||
# HIP
|
||||
find_library(rocdecode_HOST_LIBRARY rocdecode-host PATHS ${ROCM_PATH}/lib)
|
||||
set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} hip::host)
|
||||
# FFMPEG
|
||||
include_directories(${AVUTIL_INCLUDE_DIR} ${AVCODEC_INCLUDE_DIR}
|
||||
${AVFORMAT_INCLUDE_DIR})
|
||||
set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} ${FFMPEG_LIBRARIES})
|
||||
# rocdecode and utils
|
||||
include_directories (${rocdecode_INCLUDE_DIR} ${ROCM_PATH}/lib)
|
||||
if(rocdecode_HOST_LIBRARY)
|
||||
set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} rocdecode::rocdecode ${rocdecode_HOST_LIBRARY})
|
||||
else()
|
||||
message(FATAL_ERROR "Library rocdecode_HOST_LIBRARY not found!")
|
||||
endif()
|
||||
include_directories(${rocdecode_INCLUDE_DIR} ${ROCM_PATH}/lib)
|
||||
set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} rocdecode::rocdecode)
|
||||
# rocdecode-host
|
||||
include_directories(${rocdecode-host_INCLUDE_DIR})
|
||||
set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} rocdecode::rocdecode-host)
|
||||
|
||||
# rocdecode
|
||||
# sample app exe
|
||||
list(APPEND SOURCES ${PROJECT_SOURCE_DIR} rocdecdecode.cpp)
|
||||
@@ -97,5 +97,8 @@ else()
|
||||
if (NOT rocdecode_FOUND)
|
||||
message(FATAL_ERROR "-- ERROR!: rocdecode Not Found! - please install rocdecode!")
|
||||
endif()
|
||||
if (NOT rocdecode-host_FOUND)
|
||||
message(FATAL_ERROR "-- ERROR!: rocdecode-host Not Found! - please install rocdecode-host!")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -63,6 +63,7 @@ endif()
|
||||
|
||||
find_package(HIP QUIET)
|
||||
find_package(rocdecode QUIET)
|
||||
find_package(rocdecode-host 1.0.0 QUIET)
|
||||
find_package(rocprofiler-register QUIET)
|
||||
find_package(FFmpeg QUIET)
|
||||
find_package(Threads REQUIRED)
|
||||
@@ -83,13 +84,14 @@ if(HIP_FOUND AND FFMPEG_FOUND AND rocdecode_FOUND AND Threads_FOUND AND rocprofi
|
||||
# rocprofiler-register
|
||||
set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} rocprofiler-register::rocprofiler-register)
|
||||
# rocdecode-host
|
||||
find_library(rocdecode_HOST_LIBRARY NAMES rocdecode-host HINTS ${ROCM_PATH}/lib)
|
||||
list(APPEND SOURCES ${PROJECT_SOURCE_DIR} videodecode.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../utils/rocvideodecode/roc_video_dec.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../utils/ffmpegvideodecode/ffmpeg_video_dec.cpp)
|
||||
# sample app exe
|
||||
add_executable(${PROJECT_NAME} ${SOURCES})
|
||||
set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} rocdecode::rocdecode)
|
||||
if(rocdecode_HOST_LIBRARY)
|
||||
set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} ${rocdecode_HOST_LIBRARY})
|
||||
if(rocdecode-host_FOUND)
|
||||
# rocdecode-host
|
||||
include_directories(${rocdecode-host_INCLUDE_DIR})
|
||||
set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} rocdecode::rocdecode-host)
|
||||
target_compile_definitions(${PROJECT_NAME} PUBLIC ENABLE_HOST_DECODE=1)
|
||||
else()
|
||||
target_compile_definitions(${PROJECT_NAME} PUBLIC ENABLE_HOST_DECODE=0)
|
||||
|
||||
@@ -63,6 +63,7 @@ endif()
|
||||
|
||||
find_package(HIP QUIET)
|
||||
find_package(rocdecode QUIET)
|
||||
find_package(rocdecode-host 1.0.0 QUIET)
|
||||
find_package(rocprofiler-register QUIET)
|
||||
find_package(FFmpeg QUIET)
|
||||
find_package(Threads QUIET)
|
||||
@@ -83,13 +84,13 @@ if(HIP_FOUND AND FFMPEG_FOUND AND rocdecode_FOUND AND Threads_FOUND AND rocprofi
|
||||
set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} Threads::Threads)
|
||||
# rocprofiler-register
|
||||
set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} rocprofiler-register::rocprofiler-register)
|
||||
# rocdecode-host
|
||||
find_library(rocdecode_HOST_LIBRARY NAMES rocdecode-host HINTS ${ROCM_PATH}/lib)
|
||||
# sample app exe
|
||||
list(APPEND SOURCES ${PROJECT_SOURCE_DIR} videodecodeperf.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../utils/rocvideodecode/roc_video_dec.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../utils/ffmpegvideodecode/ffmpeg_video_dec.cpp)
|
||||
add_executable(${PROJECT_NAME} ${SOURCES})
|
||||
if(rocdecode_HOST_LIBRARY)
|
||||
set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} ${rocdecode_HOST_LIBRARY})
|
||||
if(rocdecode-host_FOUND)
|
||||
# rocdecode-host
|
||||
include_directories(${rocdecode-host_INCLUDE_DIR})
|
||||
set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} rocdecode::rocdecode-host)
|
||||
target_compile_definitions(${PROJECT_NAME} PUBLIC ENABLE_HOST_DECODE=1)
|
||||
else()
|
||||
target_compile_definitions(${PROJECT_NAME} PUBLIC ENABLE_HOST_DECODE=0)
|
||||
|
||||
@@ -90,6 +90,9 @@ if(HIP_FOUND AND Threads_FOUND AND FFMPEG_FOUND)
|
||||
message("-- ${White}AMD ROCm ${PROJECT_NAME} -- CMAKE_CXX_FLAGS:${CMAKE_CXX_FLAGS}${ColourReset}")
|
||||
message("-- ${White}AMD ROCm ${PROJECT_NAME} -- Link Libraries: ${LINK_LIBRARY_LIST}${ColourReset}")
|
||||
|
||||
# Generate BUILD_INFO
|
||||
configure_file( ${CMAKE_SOURCE_DIR}/api/rocdecode-host_version.h.in ${CMAKE_CURRENT_BINARY_DIR}/rocdecode-host_version.h @ONLY )
|
||||
|
||||
# install rocdecode-host libs -- {ROCM_PATH}/lib
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR})
|
||||
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT runtime NAMELINK_SKIP)
|
||||
@@ -97,7 +100,55 @@ if(HIP_FOUND AND Threads_FOUND AND FFMPEG_FOUND)
|
||||
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT asan)
|
||||
# install rocdecode include files -- {ROCM_PATH}/include/rocdecode
|
||||
install(FILES ${PROJECT_SOURCE_DIR}/../../api/rocdecode/rocdecode_host.h
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME} COMPONENT dev)
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rocdecode COMPONENT dev)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_version.h
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rocdecode COMPONENT dev)
|
||||
|
||||
# Cmake module config file configurations
|
||||
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules/" CACHE INTERNAL "Default module path.")
|
||||
|
||||
# Export the package for use from the build-tree
|
||||
## (this registers the build-tree with a global CMake-registry)
|
||||
export(PACKAGE ${PROJECT_NAME})
|
||||
set(CONF_LIB_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
|
||||
|
||||
# Create the rocdecode-config.cmake and rocdecode-config-version files
|
||||
include(CMakePackageConfigHelpers)
|
||||
set(CONFIG_PACKAGE_INSTALL_DIR ${CONF_LIB_DIR}/cmake/${PROJECT_NAME})
|
||||
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
|
||||
set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
|
||||
set(BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
|
||||
|
||||
# Generate config Version File for rocdecode
|
||||
write_basic_package_version_file(
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake
|
||||
VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}"
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
|
||||
# Generate Config File for rocdecode
|
||||
configure_package_config_file(
|
||||
${CMAKE_MODULE_PATH}/${PROJECT_NAME}-config.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
|
||||
INSTALL_DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR}
|
||||
PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR BIN_INSTALL_DIR
|
||||
)
|
||||
|
||||
# Install the rocdecode-config.cmake and rocdecode-config-version.cmake
|
||||
install(FILES
|
||||
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
|
||||
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
|
||||
COMPONENT dev
|
||||
)
|
||||
|
||||
# Install the export set for use with the install-tree
|
||||
install(EXPORT ${PROJECT_NAME}-targets
|
||||
FILE ${PROJECT_NAME}-targets.cmake
|
||||
NAMESPACE rocdecode::
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
|
||||
COMPONENT dev
|
||||
)
|
||||
|
||||
else()
|
||||
message("-- ERROR!: ${PROJECT_NAME} excluded! please install all the dependencies and try again!")
|
||||
|
||||
@@ -75,6 +75,20 @@ else()
|
||||
else()
|
||||
message("-- ${Yellow}${PROJECT_NAME} requires rocdecode. Install rocdecode before running CTests")
|
||||
endif(rocdecode_FOUND)
|
||||
find_package(rocdecode-host QUIET)
|
||||
if(rocdecode-host_FOUND)
|
||||
message("-- ${White}${PROJECT_NAME}: rocdecode-host found with find_package(rocdecode-host QUIET)${ColourReset}")
|
||||
message("-- \t${White}rocdecode-host_INCLUDE_DIR -- ${rocdecode-host_INCLUDE_DIR}${ColourReset}")
|
||||
message("-- \t${White}rocdecode-host_LIB_DIR -- ${rocdecode-host_LIB_DIR}${ColourReset}")
|
||||
message("-- \t${White}rocdecode-host_LIBRARY -- ${rocdecode-host_LIBRARY}${ColourReset}")
|
||||
message("-- \t${White}rocdecode-host_FOUND -- ${rocdecode-host_FOUND}${ColourReset}")
|
||||
message("-- \t${White}rocdecode-host_VERSION -- ${rocdecode-host_VERSION}${ColourReset}")
|
||||
message("-- \t${White}rocdecode-host_VERSION_MAJOR -- ${rocdecode-host_VERSION_MAJOR}${ColourReset}")
|
||||
message("-- \t${White}rocdecode-host_VERSION_MINOR -- ${rocdecode-host_VERSION_MINOR}${ColourReset}")
|
||||
message("-- \t${White}rocdecode-host_VERSION_PATCH -- ${rocdecode-host_VERSION_PATCH}${ColourReset}")
|
||||
else()
|
||||
message("-- ${Yellow}${PROJECT_NAME} requires rocdecode-host. Install rocdecode-host before running CTests")
|
||||
endif(rocdecode-host_FOUND)
|
||||
endif(BUILD_FROM_SOURCE)
|
||||
|
||||
# 1 - videoDecode HEVC
|
||||
|
||||
Reference in New Issue
Block a user