diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index e1c01db71..89fa946f3 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -76,8 +76,9 @@ def runPackageCommand(platform, project) { cd ${project.paths.project_build_prefix}/build/release sudo make package mkdir -p package - mv *.${packageType} package/ - ${packageInfo} package/*.${packageType} + mv rpp*.${packageType} package/ + ${packageInfo} package/rpp-dev*.${packageType} + ${packageInfo} package/rpp_*.${packageType} """ platform.runCommand(this, command) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb85b11d1..0e7362029 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ #### Added * Updated Unit Tests +* Component based packaging enabled for dev/runtime/asan +* ASAN build install/Package changes added +* License file added to package. +* Jenkins Groovy CI scripts enhanced to support multi component package testing. #### Optimizations * CMakeLists diff --git a/CMakeLists.txt b/CMakeLists.txt index be80eba5d..137896e71 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,11 +22,12 @@ cmake_minimum_required(VERSION 3.5) set(CMAKE_CXX_COMPILER clang++) set(CMAKE_CXX_STANDARD 17) -project(rpp CXX) - # RPP Version set(VERSION "1.4.0") +# Set Project Version and Language +project(rpp VERSION ${VERSION} LANGUAGES CXX) + set(CMAKE_INSTALL_LIBDIR "lib" CACHE STRING "Library install directory") include(GNUInstallDirs) @@ -177,7 +178,8 @@ if("${BACKEND}" STREQUAL "HIP") set(HIP_PATH $ENV{HIP_PATH} CACHE PATH "Path to which HIP has been installed") endif() endif() - list(APPEND CMAKE_PREFIX_PATH ${ROCM_PATH}/hip ${ROCM_PATH}) + + list(APPEND CMAKE_PREFIX_PATH ${ROCM_PATH} ${ROCM_PATH}/hip) set(DEFAULT_AMDGPU_TARGETS "gfx803;gfx900;gfx906;gfx908;gfx90a;gfx940;gfx1030;gfx1100") if (BUILD_WITH_AMD_ADVANCE) set(DEFAULT_AMDGPU_TARGETS ${DEFAULT_AMDGPU_TARGETS} "gfx941") @@ -268,6 +270,9 @@ message("-- ${White}${PROJECT_NAME} -- Link Libraries: ${LINK_LIBRARY_LIST}${Col target_link_libraries(${PROJECT_NAME} ${LINK_LIBRARY_LIST}) set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON) set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX) +set_target_properties(${PROJECT_NAME} PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR}) target_include_directories(${PROJECT_NAME} PUBLIC @@ -296,17 +301,32 @@ add_subdirectory(addkernels) # Installation # install RPP libs -- {ROCM_PATH}/lib -install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) +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 RPP include files -- {ROCM_PATH}/include/rpp/ -install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rpp PATTERN "*.h.in" EXCLUDE) -install(FILES ${PROJECT_BINARY_DIR}/include/rpp_backend.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rpp) +install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rpp + COMPONENT dev + PATTERN "*.h.in" EXCLUDE) +install(FILES ${PROJECT_BINARY_DIR}/include/rpp_backend.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rpp + COMPONENT dev) + +# set license information +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") +install(FILES ${CPACK_RESOURCE_FILE_LICENSE} DESTINATION ${CMAKE_INSTALL_DOCDIR}-asan COMPONENT asan) +install(FILES ${CPACK_RESOURCE_FILE_LICENSE} DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT runtime) enable_testing() include(CTest) add_subdirectory(utilities/rpp-unittests) # Set package information -set(CPACK_PACKAGE_VERSION ${VERSION}) +set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) +set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) +set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) +set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") set(CPACK_PACKAGE_NAME "rpp") set(CPACK_PACKAGE_LICENSE "MIT") set(CPACK_PACKAGE_CONTACT "mivisionx support ") @@ -378,4 +398,57 @@ else() endif() endif() + +set(CPACK_DEB_COMPONENT_INSTALL ON) +set(CPACK_DEBIAN_RUNTIME_PACKAGE_NAME "${PROJECT_NAME}") +set(CPACK_DEBIAN_RUNTIME_PACKAGE_DEPENDS "rocm-core") +set(CPACK_DEBIAN_DEV_PACKAGE_NAME "${PROJECT_NAME}-dev") +set(CPACK_DEBIAN_DEV_PACKAGE_DEPENDS "${PROJECT_NAME}, rocm-core") +# Debian package specific variable for ASAN +set(CPACK_DEBIAN_ASAN_PACKAGE_NAME "${PROJECT_NAME}-asan" ) +set(CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS "${PROJECT_NAME},rocm-core-asan" ) +set(CPACK_RPM_COMPONENT_INSTALL ON) +set(CPACK_RPM_RUNTIME_PACKAGE_NAME "${PROJECT_NAME}") +set(CPACK_RPM_RUNTIME_PACKAGE_REQUIRES "rocm-core") +set(CPACK_RPM_DEV_PACKAGE_NAME "${PROJECT_NAME}-devel") +set(CPACK_RPM_DEV_PACKAGE_REQUIRES "${PROJECT_NAME}, rocm-core") +set(CPACK_RPM_RUNTIME_PACKAGE_PROVIDES "${PROJECT_NAME}") +set(CPACK_RPM_RUNTIME_PACKAGE_OBSOLETES "${PROJECT_NAME}") +set(CPACK_RPM_DEV_PACKAGE_PROVIDES "${PROJECT_NAME}-dev") +set(CPACK_RPM_DEV_PACKAGE_OBSOLETES "${PROJECT_NAME}-dev") +set(CPACK_RPM_PACKAGE_LICENSE "MIT" ) +# RPM package specific variable for ASAN +set(CPACK_RPM_ASAN_PACKAGE_NAME "${PROJECT_NAME}-asan" ) +set(CPACK_RPM_ASAN_PACKAGE_REQUIRES "rocm-core-asan" ) + + +if(NOT ROCM_DEP_ROCMCORE) + string(REGEX REPLACE ",? ?rocm-core" "" CPACK_RPM_RUNTIME_PACKAGE_REQUIRES ${CPACK_RPM_RUNTIME_PACKAGE_REQUIRES}) + string(REGEX REPLACE ",? ?rocm-core-asan" "" CPACK_RPM_ASAN_PACKAGE_REQUIRES ${CPACK_RPM_ASAN_PACKAGE_REQUIRES}) + string(REGEX REPLACE ",? ?rocm-core" "" CPACK_RPM_DEV_PACKAGE_REQUIRES ${CPACK_RPM_DEV_PACKAGE_REQUIRES}) + string(REGEX REPLACE ",? ?rocm-core" "" CPACK_DEBIAN_RUNTIME_PACKAGE_DEPENDS ${CPACK_DEBIAN_RUNTIME_PACKAGE_DEPENDS}) + string(REGEX REPLACE ",? ?rocm-core-asan" "" CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS}) + string(REGEX REPLACE ",? ?rocm-core" "" CPACK_DEBIAN_DEV_PACKAGE_DEPENDS ${CPACK_DEBIAN_DEV_PACKAGE_DEPENDS}) +endif() + +if(ENABLE_ASAN_PACKAGING) + # ASAN Package requires asan component with only libraries and license file + set(CPACK_COMPONENTS_ALL asan) +else() + set(CPACK_COMPONENTS_ALL runtime dev) +endif() + include(CPack) + +cpack_add_component(runtime + DISPLAY_NAME "Runtime" + DESCRIPTION "Library, Header files and documentation for RPP") + +cpack_add_component(dev + DISPLAY_NAME "Devel" + DESCRIPTION "Header files and documentation for RPP") + +cpack_add_component(asan + DISPLAY_NAME "ASAN" + DESCRIPTION "ASAN libraries for the RPP") +