diff --git a/projects/rocjpeg/.gitignore b/projects/rocjpeg/.gitignore index d04c127eba..6c34b447d8 100644 --- a/projects/rocjpeg/.gitignore +++ b/projects/rocjpeg/.gitignore @@ -2,4 +2,5 @@ build/ samples/*/build .vscode/ doxygen_output* -_doxygen/ \ No newline at end of file +_doxygen/ +api/rocjpeg_version.h \ No newline at end of file diff --git a/projects/rocjpeg/CHANGELOG.md b/projects/rocjpeg/CHANGELOG.md index 4018ad68dd..eb3d539e0a 100644 --- a/projects/rocjpeg/CHANGELOG.md +++ b/projects/rocjpeg/CHANGELOG.md @@ -3,9 +3,10 @@ Documentation for rocJPEG is available at [https://rocm.docs.amd.com/projects/rocJPEG/en/latest/](https://rocm.docs.amd.com/projects/rocJPEG/en/latest/) -## (Unreleased) rocJPEG 0.10.1 +## rocJPEG 0.11.0 for ROCm 6.5 ## Added +* cmake config files * CTEST - New tests were introduced for JPEG batch decoding using various output formats, such as yuv_planar, y, rgb, and rgb_planar, both with and without region-of-interest (ROI). ## Changed diff --git a/projects/rocjpeg/CMakeLists.txt b/projects/rocjpeg/CMakeLists.txt index 15af42ca34..ca1107c16b 100644 --- a/projects/rocjpeg/CMakeLists.txt +++ b/projects/rocjpeg/CMakeLists.txt @@ -39,8 +39,10 @@ endif() set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED On) -# NOTE: Match version with api/rocjpeg_version.h -set(VERSION "0.10.1") +# rocJPEG Version +# NOTE: package version and rocjpeg_version.h is generated with this version +set(VERSION "0.11.0") + # Set Project Version and Language project(rocjpeg VERSION ${VERSION} LANGUAGES CXX) @@ -190,12 +192,18 @@ if(HIP_FOUND AND Libva_FOUND) ROCJPEG_ROCP_REG_VERSION_PATCH=${VERSION_PATCH}) endif() + #Generate BUILD_INFO + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/api/rocjpeg_version.h.in ${CMAKE_CURRENT_BINARY_DIR}/rocjpeg_version.h @ONLY ) + install(TARGETS ${PROJECT_NAME} EXPORT rocjpeg-targets DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT dev) + # install rocJPEG libs -- {ROCM_PATH}/lib install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT runtime NAMELINK_SKIP) install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT dev NAMELINK_ONLY) install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT asan) # install rocJPEG include files -- {ROCM_PATH}/include/rocJPEG - install(FILES api/rocjpeg.h api/rocjpeg_version.h + install(FILES api/rocjpeg.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME} COMPONENT dev) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/rocjpeg_version.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME} COMPONENT dev) # install rocJPEG api trace include file -- {ROCM_PATH}/include/rocjpeg/amd_detail install(FILES api/amd_detail/rocjpeg_api_trace.h @@ -219,6 +227,49 @@ if(HIP_FOUND AND Libva_FOUND) message("-- ${White}AMD ROCm rocJPEG -- CMAKE_CXX_FLAGS:${CMAKE_CXX_FLAGS}${ColourReset}") message("-- ${White}AMD ROCm rocJPEG -- Link Libraries: ${LINK_LIBRARY_LIST}${ColourReset}") + ## Cmake module config file configurations + set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_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 rocjpeg-config.cmake and rocjpeg-config-version files + include(CMakePackageConfigHelpers) + set(CONFIG_PACKAGE_INSTALL_DIR ${CONF_LIB_DIR}/cmake/${PROJECT_NAME}) + set(LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}") + set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}") + set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}") + + ## Generate Config File for rocJPEG + 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 + ) + + ## Generate config Version File for rocJPEG + 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 + ) + + ## Install the rocjpeg-config.cmake and rocjpeg-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 rocjpeg-targets DESTINATION + "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" COMPONENT dev + ) + # make test with CTest enable_testing() include(CTest) diff --git a/projects/rocjpeg/api/rocjpeg.h b/projects/rocjpeg/api/rocjpeg.h index 11a675fd2d..95644db62d 100644 --- a/projects/rocjpeg/api/rocjpeg.h +++ b/projects/rocjpeg/api/rocjpeg.h @@ -26,7 +26,6 @@ THE SOFTWARE. #pragma once #include "hip/hip_runtime.h" -#include "rocjpeg_version.h" /** * @file rocjpeg.h diff --git a/projects/rocjpeg/api/rocjpeg_version.h b/projects/rocjpeg/api/rocjpeg_version.h.in similarity index 85% rename from projects/rocjpeg/api/rocjpeg_version.h rename to projects/rocjpeg/api/rocjpeg_version.h.in index e4b386d233..441ba06709 100644 --- a/projects/rocjpeg/api/rocjpeg_version.h +++ b/projects/rocjpeg/api/rocjpeg_version.h.in @@ -20,8 +20,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#ifndef ROCJPEG_VERSION_H -#define ROCJPEG_VERSION_H +#ifndef _ROCJPEG_VERSION_H_ +#define _ROCJPEG_VERSION_H_ /*! * \file @@ -32,11 +32,11 @@ THE SOFTWARE. #ifdef __cplusplus extern "C" { -#endif -#define ROCJPEG_MAJOR_VERSION 0 -#define ROCJPEG_MINOR_VERSION 10 -#define ROCJPEG_MICRO_VERSION 1 +#endif /* __cplusplus */ +#define ROCJPEG_MAJOR_VERSION @PROJECT_VERSION_MAJOR@ +#define ROCJPEG_MINOR_VERSION @PROJECT_VERSION_MINOR@ +#define ROCJPEG_MICRO_VERSION @PROJECT_VERSION_PATCH@ /** * ROCJPEG_CHECK_VERSION: @@ -53,7 +53,7 @@ extern "C" { (ROCJPEG_MAJOR_VERSION == (major) && ROCJPEG_MINOR_VERSION == (minor) && ROCJPEG_MICRO_VERSION >= (micro))) #ifdef __cplusplus -} +} // end extern "C" block #endif -#endif \ No newline at end of file +#endif //_ROCJPEG_VERSION_H_ header guard diff --git a/projects/rocjpeg/cmake_modules/rocjpeg-config.cmake.in b/projects/rocjpeg/cmake_modules/rocjpeg-config.cmake.in new file mode 100644 index 0000000000..901bad9689 --- /dev/null +++ b/projects/rocjpeg/cmake_modules/rocjpeg-config.cmake.in @@ -0,0 +1,18 @@ +# - Config file for the rocjpeg package +# It defines the following variables +# ROCJPEG_INCLUDE_DIR - include directories for rocjpeg +# ROCJPEG_LIB_DIR - libraries to link against +# ROCM_PATH - Install Base Location for ROCM. + +@PACKAGE_INIT@ + +# Compute paths +set_and_check(rocjpeg_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") +set_and_check(ROCJPEG_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") +set_and_check(rocjpeg_LIB_DIR "@PACKAGE_LIB_INSTALL_DIR@") +set_and_check(ROCJPEG_LIB_DIR "@PACKAGE_LIB_INSTALL_DIR@") +set_and_check(ROCM_PATH "${PACKAGE_PREFIX_DIR}") + +get_filename_component(ROCJPEG_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +include("${ROCJPEG_CMAKE_DIR}/rocjpeg-targets.cmake") + diff --git a/projects/rocjpeg/rocJPEG-setup.py b/projects/rocjpeg/rocJPEG-setup.py index 15358384b8..3e9d0afc1c 100644 --- a/projects/rocjpeg/rocJPEG-setup.py +++ b/projects/rocjpeg/rocJPEG-setup.py @@ -29,7 +29,7 @@ else: import subprocess __copyright__ = "Copyright (c) 2024 - 2025, AMD ROCm rocJPEG" -__version__ = "2.3.0" +__version__ = "2.4.0" __email__ = "mivisionx.support@amd.com" __status__ = "Shipping" @@ -154,7 +154,6 @@ if userName == 'root': # source install - common package dependencies commonPackages = [ 'cmake', - 'pkg-config', 'rocm-hip-runtime' ]