@@ -32,11 +32,32 @@ project( ${CORE_TARGET} CXX )
3232## Define Lib Target Name and Lib Target Install Dir to be available to c++ source
3333add_definitions ( -DTARGET_LIBRARY_NAME= \"${CORE_TARGET} \" -DTARGET_LIBRARY_INSTALL_DIR=\" ${CMAKE_INSTALL_LIBDIR} \" )
3434
35+ ## Build Type Settings
36+ set( CMAKE_BUILD_TYPE Release CACHE STRING " Choose the type of build , options are: None Debug Release RelWithDebInfo MinSizeRel. " )
37+
3538## Verbose output.
3639set( CMAKE_VERBOSE_MAKEFILE on )
40+ include( GNUInstallDirs )
41+
42+ if(ENABLE_ASAN_PACKAGING)
43+ # Only libraries required for ASAN Package
44+ set( CPACK_COMPONENTS_ALL CORE_ASAN )
45+ set( COMP_TYPE " CORE_ASAN " )
46+ set( PKG_DESCRIPTION " ROCm AddressSanitizer Instrumented Runtime software stack " )
47+ set( CMAKE_INSTALL_DOCDIR " ${CMAKE_INSTALL_DOCDIR} -asan " )
48+ else()
49+ if(BUILD_SHARED_LIBS)
50+ set( CPACK_COMPONENTS_ALL CORE_RUNTIME )
51+ set( COMP_TYPE " CORE_RUNTIME " )
52+ set( PKG_DESCRIPTION " ROCm Runtime software stack " )
53+ else()
54+ set( CPACK_COMPONENTS_ALL CORE_STATIC )
55+ set( STATIC_COMP_TYPE " CORE_STATIC " )
56+ set( PKG_DESCRIPTION " ROCm Static software stack " )
57+ endif()
58+ endif()
3759
3860include( utils.cmake )
39- include( GNUInstallDirs )
4061
4162#Parse Version
4263message( STATUS " ROCM_VERSION = ${ROCM_VERSION} " )
@@ -45,12 +66,12 @@ parse_rocm_version( ${ROCM_VERSION} )
4566set( CPACK_PACKAGING_INSTALL_PREFIX " /opt/rocm " CACHE PATH " default cpack directory " )
4667set( BUILD_SHARED_LIBS ON CACHE BOOL " Build shared library (.so ) or not . " )
4768set( CPACK_GENERATOR " TGZ;DEB;RPM " CACHE STRING " package types to be produced " )
48- set( COPYRIGHT_FILE " ${CMAKE_CURRENT_SOURCE_DIR} /copyright " )
69+ set( LICENSE_FILE " ${CMAKE_CURRENT_SOURCE_DIR} /copyright " )
4970set( BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR} )
50-
51- if(NOT ENABLE_ASAN_PACKAGING)
52- option(FILE_REORG_BACKWARD_COMPATIBILITY " Enable File Reorg with backward compatibility " OFF)
53- endif( )
71+ set( EXTENDED_PACKAGE_DESCRIPTION
72+ " ROCM-CORE is a package which can be used to get ROCm release version , get ROCm install path information etc.
73+ It is also important to note that ROCM-CORE takes the role as a base component on which all of ROCm can depend,
74+ to make it easy to remove all of ROCm with a package manager. " CACHE STRING " Debian Package Extended Description " )
5475
5576## Set variables
5677set_variables()
@@ -62,37 +83,25 @@ if( NOT DEFINED BUILD_ID )
6283 set( BUILD_ID " 9999 ")
6384endif()
6485
65- set( PACKAGE_BUILD_INFO " ${VERSION_MAJOR} .${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_COMMIT_COUNT}-${BUILD_ID}-${VERSION_HASH} " )
86+ #Add the libpatch version if available
87+ if( DEFINED VERSION_POINT )
88+ set( PACKAGE_BUILD_INFO " ${VERSION_MAJOR} .${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_POINT}.${VERSION_COMMIT_COUNT}-${BUILD_ID}-${VERSION_HASH} " )
89+ message ( STATUS " PACKAGE_BUILD_INFO ${PACKAGE_BUILD_INFO} " )
90+ else ()
91+ set( PACKAGE_BUILD_INFO " ${VERSION_MAJOR} .${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_COMMIT_COUNT}-${BUILD_ID}-${VERSION_HASH} " )
92+ endif()
6693
6794configure_file( ${CMAKE_CURRENT_SOURCE_DIR} /rocmmod.in ${BUILD_DIR} /rocmmod @ONLY )
68- configure_file( ${CMAKE_CURRENT_SOURCE_DIR} /rocm-core.postinst ${BUILD_DIR} /postinst @ONLY )
69- configure_file( ${CMAKE_CURRENT_SOURCE_DIR} /rocm-core.prerm ${BUILD_DIR} /prerm @ONLY )
95+
96+ # Setting Permission 0755 for pre/post install scripts
97+ configure_file( ${CMAKE_CURRENT_SOURCE_DIR} /rocm-core.postinst ${BUILD_DIR} /postinst
98+ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE @ONLY )
99+ configure_file( ${CMAKE_CURRENT_SOURCE_DIR} /rocm-core.prerm ${BUILD_DIR} /prerm
100+ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE @ONLY )
70101
71102#Generate BUILD_INFO
72103configure_file( ${CMAKE_CURRENT_SOURCE_DIR} /rocm_version.h.in ${BUILD_DIR} /rocm_version.h @ONLY )
73104configure_file( ${CMAKE_CURRENT_SOURCE_DIR} /rocm_getpath.h.in ${BUILD_DIR} /rocm_getpath.h @ONLY )
74- #File reorg Backward compatibility function
75- if(NOT WIN32)
76- if(FILE_REORG_BACKWARD_COMPATIBILITY)
77- # To enabe/disable #error in wrapper header files
78- if(NOT DEFINED ROCM_HEADER_WRAPPER_WERROR)
79- if(DEFINED ENV{ROCM_HEADER_WRAPPER_WERROR})
80- set(ROCM_HEADER_WRAPPER_WERROR " $ENV{ROCM_HEADER_WRAPPER_WERROR} "
81- CACHE STRING " Header wrapper warnings as errors. ")
82- else()
83- set(ROCM_HEADER_WRAPPER_WERROR " OFF " CACHE STRING " Header wrapper warnings as errors. ")
84- endif()
85- endif()
86-
87- if(ROCM_HEADER_WRAPPER_WERROR)
88- set(deprecated_error 1)
89- else()
90- set(deprecated_error 0)
91- endif()
92-
93- include(rocm-core-backward-compat.cmake)
94- endif() #FILE_REORG_BACKWARD_COMPATIBILITY
95- endif()
96105
97106#Make the rocmlib
98107set( SRCS rocm_version.cpp rocm_getpath.cpp)
@@ -110,34 +119,20 @@ set( SO_VERSION_STRING "${SO_MAJOR}.${SO_MINOR}.${ROCM_LIBPATCH_VERSION}" )
110119set_property( TARGET ${CORE_TARGET} PROPERTY VERSION " ${SO_VERSION_STRING} " )
111120set_property( TARGET ${CORE_TARGET} PROPERTY SOVERSION " ${SO_MAJOR} " )
112121
113- if(ENABLE_ASAN_PACKAGING)
114- # Only libraries required for ASAN Package
115- set( CPACK_COMPONENTS_ALL CORE_ASAN )
116- set( COMP_TYPE " CORE_ASAN " )
117- set( PKG_DESCRIPTION " Radeon Open Compute (ROCm ) AddressSanitizer Instrumented Runtime software stack " )
122+ #Add the libpatch version if available to the version file
123+ if( DEFINED VERSION_POINT )
124+ file ( WRITE " ${CMAKE_CURRENT_BINARY_DIR} /version " " ${VERSION_MAJOR} .${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_POINT} \n " )
118125else()
119- if(BUILD_SHARED_LIBS)
120- set( CPACK_COMPONENTS_ALL CORE_RUNTIME )
121- set( COMP_TYPE " CORE_RUNTIME " )
122- set( PKG_DESCRIPTION " Radeon Open Compute (ROCm ) Runtime software stack " )
123- else()
124- set( CPACK_COMPONENTS_ALL CORE_STATIC )
125- set( STATIC_COMP_TYPE " CORE_STATIC " )
126- set( PKG_DESCRIPTION " Radeon Open Compute (ROCm ) Static software stack " )
127- endif()
126+ file ( WRITE " ${CMAKE_CURRENT_BINARY_DIR} /version " " ${VERSION_MAJOR} .${VERSION_MINOR}.${VERSION_PATCH} \n " )
128127endif()
129128
130- #intallation directive
131- file ( WRITE " ${CMAKE_CURRENT_BINARY_DIR} /version " " ${VERSION_MAJOR} .${VERSION_MINOR}.${VERSION_PATCH}-${BUILD_ID} \n " )
132-
133129## Support for Static and Shared Target Packaging
134130if(BUILD_SHARED_LIBS)
135- install ( FILES ${CMAKE_CURRENT_BINARY_DIR } /version DESTINATION .info COMPONENT CORE_RUNTIME )
131+ install ( FILES ${BUILD_DIR } /version DESTINATION .info COMPONENT CORE_RUNTIME )
136132
137133 # Target Library needs to installed/packaged to same destination
138134 # in both ASAN and nonASAN Shared library builds
139- install ( TARGETS ${CORE_TARGET} DESTINATION ${CMAKE_INSTALL_LIBDIR}
140- PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
135+ install ( TARGETS ${CORE_TARGET} EXPORT rocmCoreTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}
141136 COMPONENT ${COMP_TYPE} )
142137 install ( FILES ${BUILD_DIR} /rocm_version.h ${BUILD_DIR} /rocm_getpath.h
143138 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /rocm-core
@@ -146,22 +141,20 @@ if(BUILD_SHARED_LIBS)
146141 install ( FILES ${CMAKE_CURRENT_SOURCE_DIR} /runpath_to_rpath.py
147142 DESTINATION ${CMAKE_INSTALL_LIBEXECDIR} /rocm-core
148143 COMPONENT CORE_RUNTIME )
149- install ( FILES ${CMAKE_CURRENT_BINARY_DIR } /rocmmod
144+ install ( FILES ${BUILD_DIR } /rocmmod
150145 DESTINATION ${CMAKE_INSTALL_LIBDIR}
151146 COMPONENT CORE_RUNTIME )
152147
153148 # License file
154- install ( FILES ${COPYRIGHT_FILE }
149+ install ( FILES ${LICENSE_FILE }
155150 DESTINATION ${CMAKE_INSTALL_DOCDIR} RENAME LICENSE.txt
156151 COMPONENT CORE_RUNTIME)
157- install ( FILES ${COPYRIGHT_FILE} DESTINATION
158- ${CMAKE_INSTALL_DOCDIR} -asan RENAME LICENSE.txt
159- COMPONENT CORE_ASAN)
160152else()
161- install ( FILES ${CMAKE_CURRENT_BINARY_DIR } /version
153+ install ( FILES ${BUILD_DIR } /version
162154 DESTINATION .info
163155 COMPONENT ${STATIC_COMP_TYPE} )
164156 install ( TARGETS ${CORE_TARGET}
157+ EXPORT rocmCoreTargets
165158 DESTINATION ${CMAKE_INSTALL_LIBDIR}
166159 COMPONENT ${STATIC_COMP_TYPE} )
167160
@@ -172,25 +165,66 @@ else()
172165 install ( FILES ${CMAKE_CURRENT_SOURCE_DIR} /runpath_to_rpath.py
173166 DESTINATION ${CMAKE_INSTALL_LIBEXECDIR} /rocm-core
174167 COMPONENT ${STATIC_COMP_TYPE} )
175- install ( FILES ${CMAKE_CURRENT_BINARY_DIR } /rocmmod
168+ install ( FILES ${BUILD_DIR } /rocmmod
176169 DESTINATION ${CMAKE_INSTALL_LIBDIR}
177170 COMPONENT ${STATIC_COMP_TYPE} )
178171 # License file
179- install ( FILES ${COPYRIGHT_FILE }
172+ install ( FILES ${LICENSE_FILE }
180173 DESTINATION ${CMAKE_INSTALL_DOCDIR} RENAME LICENSE.txt
181174 COMPONENT ${STATIC_COMP_TYPE} )
182175endif()
183176
177+ ## Cmake module config file configurations
178+ set(CMAKE_MODULE_PATH " ${CMAKE_CURRENT_SOURCE_DIR} /cmake_modules/ " CACHE INTERNAL " Default module path . ")
179+
180+ ## Export the package for use from the build-tree
181+ ## (this registers the build-tree with a global CMake-registry)
182+ export(PACKAGE ${CORE_TARGET} )
183+ set(CONF_LIB_DIR " ${CMAKE_INSTALL_PREFIX} /${CMAKE_INSTALL_LIBDIR} ")
184+
185+ ## Create the rocm-core-config.cmake and rocm-core-config-version files
186+ include(CMakePackageConfigHelpers)
187+ set(CONFIG_PACKAGE_INSTALL_DIR ${CONF_LIB_DIR} /cmake/${CORE_TARGET} )
188+ set(LIB_INSTALL_DIR " ${CMAKE_INSTALL_LIBDIR} ")
189+ set(INCLUDE_INSTALL_DIR " ${CMAKE_INSTALL_INCLUDEDIR} ")
190+ set(BIN_INSTALL_DIR " ${CMAKE_INSTALL_BINDIR} ")
191+ set(PKG_MAINTAINER_NM " ROCm Dev Support ")
192+ set(PKG_MAINTAINER_EMAIL " rocm-dev.support@amd.com ")
193+
194+ ## Generate Config File for rocm-core
195+ configure_package_config_file(
196+ ${CMAKE_MODULE_PATH} /${CORE_TARGET} -config.cmake.in
197+ ${BUILD_DIR} /${CORE_TARGET} -config.cmake
198+ INSTALL_DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR}
199+ PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR BIN_INSTALL_DIR
200+ )
201+
202+ ## Generate config Version File for rocm-core
203+ write_basic_package_version_file(
204+ ${BUILD_DIR} /${CORE_TARGET} -config-version.cmake
205+ VERSION " ${VERSION_MAJOR} .${VERSION_MINOR}.${VERSION_PATCH} "
206+ COMPATIBILITY SameMajorVersion)
207+
208+ ## Install the rocm-core-config.cmake and rocm-core-config-version.cmake
209+ install(FILES
210+ " ${PROJECT_BINARY_DIR} /${CORE_TARGET}-config.cmake "
211+ " ${PROJECT_BINARY_DIR} /${CORE_TARGET}-config-version.cmake "
212+ DESTINATION " ${CMAKE_INSTALL_LIBDIR} /cmake/${CORE_TARGET} "
213+ COMPONENT ${COMP_TYPE} )
214+
215+ ## Install the export set for use with the install-tree
216+ install(EXPORT rocmCoreTargets DESTINATION
217+ " ${CMAKE_INSTALL_LIBDIR} /cmake/${CORE_TARGET} " COMPONENT ${COMP_TYPE} )
184218
185219## Packaging directives
186220set ( CPACK_PACKAGE_VENDOR " Advanced Micro Devices, Inc. " )
187221set ( CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR} )
188222set ( CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR} )
189223set ( CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH} )
190224set ( CPACK_PACKAGE_VERSION " ${CPACK_PACKAGE_VERSION_MAJOR} .${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH} " )
191- set ( CPACK_PACKAGE_CONTACT " ROCm Dev Support <rocm-dev.support@amd.com >" )
225+ set ( CPACK_PACKAGE_CONTACT " ${PKG_MAINTAINER_NM} <${PKG_MAINTAINER_EMAIL} >" )
192226set ( CPACK_PACKAGE_DESCRIPTION_SUMMARY " ${PKG_DESCRIPTION} " )
193- set ( CPACK_RESOURCE_FILE_LICENSE " ${COPYRIGHT_FILE } " )
227+ set ( CPACK_RESOURCE_FILE_LICENSE " ${LICENSE_FILE } " )
194228## packaging variables
195229if ( DEFINED ROCM_LIBPATCH_VERSION )
196230 set ( CPACK_PACKAGE_VERSION " ${CPACK_PACKAGE_VERSION} .${ROCM_LIBPATCH_VERSION} " )
@@ -207,6 +241,13 @@ set ( CPACK_DEBIAN_CORE_STATIC_PACKAGE_NAME ${CORE_TARGET} )
207241message ( STATUS " Using CPACK_DEBIAN_PACKAGE_RELEASE ${CPACK_DEBIAN_PACKAGE_RELEASE} " )
208242set ( CPACK_DEBIAN_FILE_NAME " DEB-DEFAULT " )
209243
244+ # Debian specific packaging configuration
245+ if(COMP_TYPE)
246+ configure_debian_pkg( ${CORE_TARGET} ${COMP_TYPE} ${CPACK_PACKAGE_VERSION} ${PKG_MAINTAINER_NM} ${PKG_MAINTAINER_EMAIL} )
247+ elseif(STATIC_COMP_TYPE)
248+ configure_debian_pkg( ${CORE_TARGET} ${STATIC_COMP_TYPE} ${CPACK_PACKAGE_VERSION} ${PKG_MAINTAINER_NM} ${PKG_MAINTAINER_EMAIL} )
249+ endif()
250+
210251## RPM package specific variables
211252set ( CPACK_RPM_COMPONENT_INSTALL ON )
212253set ( CPACK_RPM_CORE_RUNTIME_PACKAGE_NAME " ${CORE_TARGET} " )
@@ -215,7 +256,6 @@ set ( CPACK_RPM_CORE_ASAN_PACKAGE_NAME ${CORE_TARGET}-asan )
215256# STATIC package name - For Now, No change for static package Name from default
216257set ( CPACK_RPM_CORE_STATIC_PACKAGE_NAME ${CORE_TARGET} )
217258
218-
219259## 'dist' breaks manual builds on debian systems due to empty Provides
220260execute_process( COMMAND rpm --eval %{?dist}
221261 RESULT_VARIABLE PROC_RESULT
@@ -230,28 +270,32 @@ set ( CPACK_RPM_FILE_NAME "RPM-DEFAULT" )
230270
231271# Debian package specific variables
232272set ( CPACK_DEBIAN_PACKAGE_DEPENDS ${DEB_DEPENDS_STRING} )
233- set ( CPACK_DEBIAN_PACKAGE_HOMEPAGE " https://github.com/RadeonOpenCompute/ROCm " )
273+ set ( CPACK_DEBIAN_PACKAGE_HOMEPAGE " https://github.com/ROCm/rocm-core " )
274+ set ( CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA " ${BUILD_DIR} /postinst;${BUILD_DIR}/prerm " )
234275set ( CPACK_DEBIAN_CORE_ASAN_PACKAGE_DEPENDS ${CORE_TARGET} )
235- set ( CPACK_DEBIAN_CORE_RUNTIME_PACKAGE_CONTROL_EXTRA " ${BUILD_DIR} /postinst;${BUILD_DIR}/prerm " )
236- set ( CPACK_DEBIAN_CORE_STATIC_PACKAGE_CONTROL_EXTRA " ${BUILD_DIR} /postinst;${BUILD_DIR}/prerm " )
276+ set ( CPACK_DEBIAN_CORE_RUNTIME_PACKAGE_CONTROL_EXTRA " ${CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA} " )
277+ set ( CPACK_DEBIAN_CORE_STATIC_PACKAGE_CONTROL_EXTRA " ${CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA} " )
278+ set ( CPACK_DEBIAN_PACKAGE_DESCRIPTION " ${EXTENDED_PACKAGE_DESCRIPTION} " )
237279
238280## RPM package specific variables
239281set ( CPACK_RPM_PACKAGE_REQUIRES ${RPM_DEPENDS_STRING} )
240282set ( CPACK_RPM_PACKAGE_LICENSE " MIT " )
241283set ( CPACK_RPM_CORE_ASAN_PACKAGE_REQUIRES ${CORE_TARGET} )
242- set ( CPACK_RPM_CORE_RUNTIME_POST_INSTALL_SCRIPT_FILE " ${CMAKE_CURRENT_BINARY_DIR} /postinst " )
243- set ( CPACK_RPM_CORE_RUNTIME_POST_UNINSTALL_SCRIPT_FILE " ${CMAKE_CURRENT_BINARY_DIR} /prerm " )
244- set ( CPACK_RPM_CORE_STATIC_POST_INSTALL_SCRIPT_FILE " ${CMAKE_CURRENT_BINARY_DIR} /postinst " )
245- set ( CPACK_RPM_CORE_STATIC_POST_UNINSTALL_SCRIPT_FILE " ${CMAKE_CURRENT_BINARY_DIR} /prerm " )
284+ set ( CPACK_RPM_CORE_RUNTIME_POST_INSTALL_SCRIPT_FILE " ${BUILD_DIR} /postinst " )
285+ set ( CPACK_RPM_CORE_RUNTIME_POST_UNINSTALL_SCRIPT_FILE " ${BUILD_DIR} /prerm " )
286+ set ( CPACK_RPM_CORE_STATIC_POST_INSTALL_SCRIPT_FILE " ${BUILD_DIR} /postinst " )
287+ set ( CPACK_RPM_CORE_STATIC_POST_UNINSTALL_SCRIPT_FILE " ${BUILD_DIR} /prerm " )
288+ set ( CPACK_RPM_PACKAGE_DESCRIPTION " ${EXTENDED_PACKAGE_DESCRIPTION} " )
246289
247290if ( DEFINED CPACK_PACKAGING_INSTALL_PREFIX )
248- set ( CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION " ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX} /.info " )
249- endif ( )
291+ set ( CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION
292+ " ${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX} /.info " )
293+ endif()
294+
250295# Backward compatibility support for deprecated package rocm-clang-ocl
251296# TODO: To be removed after two releases
252297set(CPACK_DEBIAN_RUNTIME_PACKAGE_REPLACES " rocm-clang-ocl ")
253298set(CPACK_DEBIAN_RUNTIME_PACKAGE_CONFLICTS " rocm-clang-ocl ")
254-
255299set(CPACK_RPM_RUNTIME_PACKAGE_OBSOLETES " rocm-clang-ocl ")
256300
257301## Include packaging
0 commit comments