2021-03-01 17:54:33 -05:00
# Copyright (C) 2016-2021 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.
2019-01-23 23:40:35 -06:00
cmake_minimum_required ( VERSION 3.4.3 )
2016-04-15 12:13:04 +05:30
project ( hip )
2020-11-27 20:13:14 -05:00
# sample command for hip-rocclr runtime, you'll need to have rocclr built
# For shared lib of hip-rocclr runtime
# For release version
# cmake -DCMAKE_PREFIX_PATH="$ROCclr_DIR/build;/opt/rocm/" -DCMAKE_INSTALL_PREFIX=</where/to/install/hip> ..
# For debug version
# cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH="$ROCclr_DIR/build;/opt/rocm/" -DCMAKE_INSTALL_PREFIX=</where/to/install/hip> ..
# For static lib of hip-rocclr runtime
# For release version
# cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_PREFIX_PATH="$ROCclr_DIR/build;/opt/rocm/" -DCMAKE_INSTALL_PREFIX=</where/to/install/hip> ..
# For debug version
# cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH="$ROCclr_DIR/build;/opt/rocm/" -DCMAKE_INSTALL_PREFIX=</where/to/install/hip> ..
# If you don't specify CMAKE_INSTALL_PREFIX, hip-rocclr runtime will be installed to "/opt/rocm/hip".
2020-01-29 16:03:14 -08:00
2020-06-03 23:00:36 +05:30
set ( BUILD_SHARED_LIBS ON CACHE BOOL "Build shared library (.so) or static lib (.a) " )
2020-01-29 16:03:14 -08:00
set ( CMAKE_MODULE_PATH ${ CMAKE_MODULE_PATH } "${CMAKE_CURRENT_SOURCE_DIR}/cmake" )
2016-03-23 07:54:01 -05:00
2020-10-05 15:15:13 -04:00
#############################
# Options
#############################
option ( BUILD_HIPIFY_CLANG "Enable building the CUDA->HIP converter" OFF )
option ( __HIP_ENABLE_PCH "Enable/Disable pre-compiled hip headers" ON )
2020-09-03 04:59:10 -04:00
2020-10-05 15:15:13 -04:00
if ( __HIP_ENABLE_PCH )
2020-10-05 13:20:58 -04:00
set ( _pchStatus 1 )
else ()
set ( _pchStatus 0 )
endif ()
2017-10-24 20:56:55 +01:00
2016-08-19 12:17:00 +05:30
#############################
# Setup config generation
#############################
2016-08-14 16:22:25 +05:30
string ( TIMESTAMP _timestamp UTC )
set ( _versionInfo "# Auto-generated by cmake\n" )
set ( _buildInfo "# Auto-generated by cmake on ${_timestamp} UTC\n" )
2016-08-19 12:17:00 +05:30
macro ( add_to_config _configfile _variable )
set ( ${ _configfile } "${${_configfile}}${_variable}=${${_variable}}\n" )
endmacro ()
2016-08-14 16:22:25 +05:30
2016-04-12 12:42:12 +05:30
#############################
2016-08-12 23:21:37 +05:30
# Setup version information
2016-04-12 12:42:12 +05:30
#############################
2016-08-14 16:22:25 +05:30
# Determine HIP_BASE_VERSION
2020-01-24 13:51:49 +03:00
set ( ENV{HIP_PATH} "" )
2016-08-14 16:22:25 +05:30
execute_process ( COMMAND ${ CMAKE_CURRENT_SOURCE_DIR } /bin/hipconfig --version
2016-10-03 22:52:23 +05:30
OUTPUT_VARIABLE HIP_BASE_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE )
2016-08-14 16:22:25 +05:30
string ( REPLACE "." ";" VERSION_LIST ${ HIP_BASE_VERSION } )
list ( GET VERSION_LIST 0 HIP_VERSION_MAJOR )
list ( GET VERSION_LIST 1 HIP_VERSION_MINOR )
2021-02-03 19:14:35 -05:00
set ( HIP_VERSION_GITDATE 0 )
2016-08-12 23:21:37 +05:30
2020-04-30 17:11:08 -04:00
find_package ( Git )
# FIXME: Two different version strings used.
if ( GIT_FOUND )
# get date information based on UTC
# use the last two digits of year + week number + day in the week as HIP_VERSION_GITDATE
# use the commit date, instead of build date
# add xargs to remove strange trailing newline character
execute_process ( COMMAND ${ GIT_EXECUTABLE } show -s --format=@%ct
2016-10-03 22:52:23 +05:30
COMMAND xargs
COMMAND date -f - --utc +%y%U%w
2020-04-30 17:11:08 -04:00
RESULT_VARIABLE git_result
OUTPUT_VARIABLE git_output
2016-10-03 22:52:23 +05:30
WORKING_DIRECTORY ${ PROJECT_SOURCE_DIR }
OUTPUT_STRIP_TRAILING_WHITESPACE )
2020-04-30 17:11:08 -04:00
if ( git_result EQUAL 0 )
set ( HIP_VERSION_GITDATE ${ git_output } )
endif ()
2016-06-14 14:57:56 +05:30
2020-04-30 17:11:08 -04:00
# get commit short hash
execute_process ( COMMAND ${ GIT_EXECUTABLE } rev-parse --short HEAD
2019-08-09 12:13:29 +00:00
WORKING_DIRECTORY ${ PROJECT_SOURCE_DIR }
2020-04-30 17:11:08 -04:00
RESULT_VARIABLE git_result
OUTPUT_VARIABLE git_output
2019-08-09 12:13:29 +00:00
OUTPUT_STRIP_TRAILING_WHITESPACE )
2020-04-30 17:11:08 -04:00
if ( git_result EQUAL 0 )
set ( HIP_VERSION_GITHASH ${ git_output } )
endif ()
2019-08-09 12:13:29 +00:00
2020-04-30 17:11:08 -04:00
# get commit count
execute_process ( COMMAND ${ GIT_EXECUTABLE } rev-list --count HEAD
2019-08-21 10:01:23 +00:00
WORKING_DIRECTORY ${ PROJECT_SOURCE_DIR }
2020-04-30 17:11:08 -04:00
RESULT_VARIABLE git_result
OUTPUT_VARIABLE git_output
2019-08-21 10:01:23 +00:00
OUTPUT_STRIP_TRAILING_WHITESPACE )
2020-04-30 17:11:08 -04:00
if ( git_result EQUAL 0 )
set ( HIP_VERSION_GITCOUNT ${ git_output } )
endif ()
set ( HIP_VERSION_PATCH ${ HIP_VERSION_GITDATE } - ${ HIP_VERSION_GITHASH } )
2020-10-05 13:20:58 -04:00
if ( DEFINED ENV{ROCM_LIBPATCH_VERSION} )
set ( HIP_PACKAGING_VERSION_PATCH ${ HIP_VERSION_GITDATE } . ${ HIP_VERSION_GITCOUNT } . $ENV{ ROCM_LIBPATCH_VERSION } )
2020-04-30 17:11:08 -04:00
else ()
set ( HIP_PACKAGING_VERSION_PATCH ${ HIP_VERSION_GITDATE } . ${ HIP_VERSION_GITCOUNT } - ${ HIP_VERSION_GITHASH } )
endif ()
else ()
# FIXME: Some parts depend on this being set.
set ( HIP_PACKAGING_VERSION_PATCH "0" )
endif ()
2019-08-21 10:01:23 +00:00
2020-10-05 13:20:58 -04:00
## Debian package specific variables
if ( DEFINED ENV{CPACK_DEBIAN_PACKAGE_RELEASE} )
set ( CPACK_DEBIAN_PACKAGE_RELEASE $ENV{ CPACK_DEBIAN_PACKAGE_RELEASE } )
else ()
set ( CPACK_DEBIAN_PACKAGE_RELEASE "local" )
endif ()
message ( "Using CPACK_DEBIAN_PACKAGE_RELEASE ${CPACK_DEBIAN_PACKAGE_RELEASE}" )
## RPM package specific variables
if ( DEFINED ENV{CPACK_RPM_PACKAGE_RELEASE} )
set ( CPACK_RPM_PACKAGE_RELEASE $ENV{ CPACK_RPM_PACKAGE_RELEASE } )
else ()
set ( CPACK_RPM_PACKAGE_RELEASE "local" )
endif ()
## 'dist' breaks manual builds on debian systems due to empty Provides
execute_process ( COMMAND rpm --eval %{?dist}
RESULT_VARIABLE PROC_RESULT
OUTPUT_VARIABLE EVAL_RESULT
OUTPUT_STRIP_TRAILING_WHITESPACE )
if ( PROC_RESULT EQUAL "0" AND NOT EVAL_RESULT STREQUAL "" )
string ( APPEND CPACK_RPM_PACKAGE_RELEASE "%{?dist}" )
endif ()
message ( "CPACK_RPM_PACKAGE_RELEASE: ${CPACK_RPM_PACKAGE_RELEASE}" )
add_to_config ( _versionInfo HIP_PACKAGING_VERSION_PATCH )
add_to_config ( _versionInfo CPACK_DEBIAN_PACKAGE_RELEASE )
add_to_config ( _versionInfo CPACK_RPM_PACKAGE_RELEASE )
2016-08-19 12:17:00 +05:30
add_to_config ( _versionInfo HIP_VERSION_MAJOR )
add_to_config ( _versionInfo HIP_VERSION_MINOR )
add_to_config ( _versionInfo HIP_VERSION_PATCH )
2016-08-14 16:22:25 +05:30
2020-04-06 21:35:43 -07:00
set ( HIP_LIB_VERSION_MAJOR ${ HIP_VERSION_MAJOR } )
set ( HIP_LIB_VERSION_MINOR ${ HIP_VERSION_MINOR } )
if ( ${ ROCM_PATCH_VERSION } )
2020-11-27 20:13:14 -05:00
set ( HIP_LIB_VERSION_PATCH ${ ROCM_PATCH_VERSION } )
2020-04-06 21:35:43 -07:00
else ()
set ( HIP_LIB_VERSION_PATCH ${ HIP_VERSION_PATCH } )
endif ()
set ( HIP_LIB_VERSION_STRING "${HIP_LIB_VERSION_MAJOR}.${HIP_LIB_VERSION_MINOR}.${HIP_LIB_VERSION_PATCH}" )
if ( DEFINED ENV{ROCM_RPATH} )
set ( CMAKE_INSTALL_RPATH "$ENV{ROCM_RPATH}" )
set ( CMAKE_BUILD_WITH_INSTALL_RPATH TRUE )
set ( CMAKE_SKIP_BUILD_RPATH TRUE )
endif ()
2019-08-21 10:01:23 +00:00
# overwrite HIP_VERSION_PATCH for packaging
2020-04-30 17:11:08 -04:00
set ( HIP_VERSION ${ HIP_VERSION_MAJOR } . ${ HIP_VERSION_MINOR } . ${ HIP_PACKAGING_VERSION_PATCH } )
2019-08-21 10:01:23 +00:00
2020-06-09 15:45:22 -04:00
# Remove when CI is updated
if ( HIP_PLATFORM STREQUAL "rocclr" )
set ( HIP_PLATFORM "amd" )
endif ()
2016-08-12 23:21:37 +05:30
#############################
# Configure variables
#############################
2016-04-12 12:42:12 +05:30
# Determine HIP_PLATFORM
if ( NOT DEFINED HIP_PLATFORM )
if ( NOT DEFINED ENV{HIP_PLATFORM} )
execute_process ( COMMAND ${ CMAKE_CURRENT_SOURCE_DIR } /bin/hipconfig --platform
2016-10-03 22:52:23 +05:30
OUTPUT_VARIABLE HIP_PLATFORM
OUTPUT_STRIP_TRAILING_WHITESPACE )
2016-04-12 12:42:12 +05:30
else ()
set ( HIP_PLATFORM $ENV{ HIP_PLATFORM } CACHE STRING "HIP Platform" )
2016-05-02 10:20:00 -05:00
endif ()
2016-03-30 13:58:38 +05:30
endif ()
2016-04-12 12:42:12 +05:30
message ( STATUS "HIP Platform: " ${ HIP_PLATFORM } )
2016-03-24 10:16:35 -05:00
2020-06-09 15:45:22 -04:00
if ( HIP_PLATFORM STREQUAL "nvidia" )
set ( HIP_RUNTIME "cuda" CACHE STRING "HIP Runtime" )
2020-11-27 20:13:14 -05:00
set ( HIP_COMPILER "nvcc" CACHE STRING "HIP Compiler" )
elseif ( HIP_PLATFORM STREQUAL "amd" )
set ( HIP_RUNTIME "rocclr" CACHE STRING "HIP Runtime" )
set ( HIP_COMPILER "clang" CACHE STRING "HIP Compiler" )
else ()
message ( FATAL_ERROR "Unexpected HIP_PLATFORM: " ${ HIP_PLATFORM } )
2020-06-09 15:45:22 -04:00
endif ()
message ( STATUS "HIP Runtime: " ${ HIP_RUNTIME } )
2018-08-01 20:37:46 +00:00
message ( STATUS "HIP Compiler: " ${ HIP_COMPILER } )
2020-11-27 20:13:14 -05:00
add_to_config ( _buildInfo HIP_RUNTIME )
add_to_config ( _buildInfo HIP_COMPILER )
2020-06-09 15:45:22 -04:00
############ If HIP_PLATFORM is amd, HSA_PATH has to be defined ##################
2016-03-24 13:33:07 -05:00
2020-06-09 15:45:22 -04:00
if ( HIP_PLATFORM STREQUAL "amd" )
2016-04-12 12:42:12 +05:30
# Determine HSA_PATH
if ( NOT DEFINED HSA_PATH )
if ( NOT DEFINED ENV{HSA_PATH} )
2016-04-15 12:56:31 +05:30
set ( HSA_PATH "/opt/rocm/hsa" CACHE PATH "Path to which HSA runtime has been installed" )
2016-04-12 12:42:12 +05:30
else ()
set ( HSA_PATH $ENV{ HSA_PATH } CACHE PATH "Path to which HSA runtime has been installed" )
endif ()
endif ()
if ( IS_ABSOLUTE ${ HSA_PATH } AND EXISTS ${ HSA_PATH } AND IS_DIRECTORY ${ HSA_PATH } )
message ( STATUS "Looking for HSA runtime in: " ${ HSA_PATH } )
2016-03-30 13:58:38 +05:30
else ()
2016-04-12 12:42:12 +05:30
message ( FATAL_ERROR "Don't know where to find HSA runtime. Please specify absolute path using -DHSA_PATH" )
2016-03-30 13:58:38 +05:30
endif ()
endif ()
2020-11-27 20:13:14 -05:00
message ( STATUS "HSA runtime in: " ${ HSA_PATH } )
2016-04-12 12:42:12 +05:30
# Set default build type
if ( NOT CMAKE_BUILD_TYPE )
set ( CMAKE_BUILD_TYPE "Release" )
2016-03-24 13:33:07 -05:00
endif ()
2016-04-12 12:42:12 +05:30
# Determine HIP install path
2019-10-28 23:22:27 +03:00
if ( UNIX )
set ( HIP_DEFAULT_INSTALL_PREFIX "/opt/rocm/hip" )
endif ()
if ( CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT )
2020-11-27 20:13:14 -05:00
set ( CMAKE_INSTALL_PREFIX ${ HIP_DEFAULT_INSTALL_PREFIX } CACHE PATH "Installation path for HIP" FORCE )
2016-03-30 13:58:38 +05:30
endif ()
2020-01-21 00:47:35 -08:00
2020-05-05 09:54:36 -04:00
if ( DEV_LOG_ENABLE MATCHES "yes" )
add_definitions ( -DDEV_LOG_ENABLE )
endif ()
2020-01-21 00:47:35 -08:00
# Set default install path as "/opt/rocm/hip", can override the path from cmake build.
set ( CPACK_INSTALL_PREFIX ${ HIP_DEFAULT_INSTALL_PREFIX } CACHE PATH "Package Installation path for HIP" )
2016-04-01 13:48:37 +05:30
if ( IS_ABSOLUTE ${ CMAKE_INSTALL_PREFIX } )
message ( STATUS "HIP will be installed in: " ${ CMAKE_INSTALL_PREFIX } )
2016-03-30 13:58:38 +05:30
else ()
2016-04-01 13:48:37 +05:30
message ( FATAL_ERROR "Don't know where to install HIP. Please specify absolute path using -DCMAKE_INSTALL_PREFIX" )
2016-03-30 13:58:38 +05:30
endif ()
2020-01-21 00:47:35 -08:00
if ( NOT DEFINED ROCM_PATH )
set ( ROCM_PATH "/opt/rocm" CACHE STRING "Default ROCM installation directory." )
endif ()
message ( STATUS "ROCM Installation path(ROCM_PATH): ${ROCM_PATH}" )
# set the installation path for the installer package
set ( CPACK_SET_DESTDIR ON CACHE BOOL "Installer package will install hip to CMAKE_INSTALL_PREFIX instead of CPACK_PACKAGING_INSTALL_PREFIX" )
if ( NOT CPACK_SET_DESTDIR )
set ( CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm/hip" CACHE PATH "Default installation path of hcc installer package" )
2020-02-16 03:00:08 -05:00
endif ( NOT CPACK_SET_DESTDIR )
2020-01-21 00:47:35 -08:00
2016-04-12 12:42:12 +05:30
#############################
# Build steps
#############################
2019-10-28 21:07:00 +03:00
set ( BIN_INSTALL_DIR ${ CMAKE_INSTALL_PREFIX } /bin )
set ( LIB_INSTALL_DIR ${ CMAKE_INSTALL_PREFIX } /lib )
set ( INCLUDE_INSTALL_DIR ${ CMAKE_INSTALL_PREFIX } /include )
set ( CONFIG_PACKAGE_INSTALL_DIR ${ LIB_INSTALL_DIR } /cmake/hip )
2020-10-28 16:17:33 -04:00
set ( CONFIG_LANG_PACKAGE_INSTALL_DIR ${ LIB_INSTALL_DIR } /cmake/hip-lang )
2019-10-28 21:07:00 +03:00
2016-05-04 14:44:00 +05:30
# Build clang hipify if enabled
2017-10-24 20:56:55 +01:00
if ( BUILD_HIPIFY_CLANG )
add_subdirectory ( hipify-clang )
endif ()
2016-05-04 14:44:00 +05:30
2020-10-22 09:33:30 -04:00
# Generate hip_version.h
set ( _versionInfoHeader
"// Auto-generated by cmake\n
#ifndef HIP_VERSION_H
#define HIP_VERSION_H\n
#define HIP_VERSION_MAJOR ${HIP_VERSION_MAJOR}
#define HIP_VERSION_MINOR ${HIP_VERSION_MINOR}
#define HIP_VERSION_PATCH ${HIP_VERSION_GITDATE}
#define HIP_VERSION (HIP_VERSION_MAJOR * 100 + HIP_VERSION_MINOR)\n
#define __HIP_HAS_GET_PCH ${_pchStatus}\n
#endif\n
" )
file ( WRITE "${PROJECT_BINARY_DIR}/include/hip/hip_version.h" ${ _versionInfoHeader } )
2020-06-09 15:45:22 -04:00
if ( HIP_RUNTIME STREQUAL "rocclr" )
2020-04-29 23:28:46 -04:00
add_subdirectory ( rocclr )
2020-01-29 16:03:14 -08:00
2020-04-29 23:28:46 -04:00
set ( HIP_ROCclr_BUILD_FLAGS "${HIP_ROCclr_BUILD_FLAGS} -fPIC ${ROCclr_CXX_FLAGS} -I${HSA_PATH}/include" )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${HIP_ROCclr_BUILD_FLAGS}" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${HIP_ROCclr_BUILD_FLAGS}" )
2020-01-29 16:03:14 -08:00
endif ()
2020-06-09 15:45:22 -04:00
# Generate .hipInfo
file ( WRITE "${PROJECT_BINARY_DIR}/.hipInfo" ${ _buildInfo } )
2016-10-11 11:13:41 +05:30
# Generate .hipVersion
file ( WRITE "${PROJECT_BINARY_DIR}/.hipVersion" ${ _versionInfo } )
2016-08-14 16:22:25 +05:30
2016-06-21 08:13:19 +05:30
# Build doxygen documentation
2018-02-12 10:21:27 +05:30
find_program ( DOXYGEN_EXE doxygen )
if ( DOXYGEN_EXE )
add_custom_target ( doc COMMAND HIP_PATH= ${ CMAKE_CURRENT_SOURCE_DIR } ${ DOXYGEN_EXE } ${ CMAKE_CURRENT_SOURCE_DIR } /docs/doxygen-input/doxy.cfg
WORKING_DIRECTORY ${ CMAKE_CURRENT_SOURCE_DIR } /docs )
endif ()
2016-06-21 08:13:19 +05:30
2016-04-12 12:42:12 +05:30
#############################
# Install steps
#############################
2016-10-11 11:13:41 +05:30
2020-04-23 21:42:06 +05:30
# Install .hipInfo
2020-06-09 15:45:22 -04:00
install ( FILES ${ PROJECT_BINARY_DIR } /.hipInfo DESTINATION lib )
2016-04-12 12:42:12 +05:30
2016-10-11 11:13:41 +05:30
# Install .hipVersion
install ( FILES ${ PROJECT_BINARY_DIR } /.hipVersion DESTINATION bin )
2016-08-12 23:21:37 +05:30
2016-09-02 15:08:36 +05:30
# Install src, bin, include & cmake if necessary
2016-04-12 12:42:12 +05:30
execute_process ( COMMAND test ${ CMAKE_INSTALL_PREFIX } -ef ${ CMAKE_CURRENT_SOURCE_DIR }
2016-10-03 22:52:23 +05:30
RESULT_VARIABLE INSTALL_SOURCE )
2016-04-01 12:13:22 +05:30
if ( NOT ${ INSTALL_SOURCE } EQUAL 0 )
2020-11-27 20:13:14 -05:00
if ( HIP_RUNTIME STREQUAL "rocclr" )
2020-05-13 18:53:31 +00:00
install ( DIRECTORY rocclr DESTINATION . )
endif ()
2016-04-01 13:48:37 +05:30
install ( DIRECTORY bin DESTINATION . USE_SOURCE_PERMISSIONS )
2020-12-15 17:38:08 -05:00
# The following two lines will be removed after upstream updation
install ( CODE "MESSAGE(\" Removing ${ CMAKE_INSTALL_PREFIX } /include\ ")" )
install ( CODE "file(REMOVE_RECURSE ${CMAKE_INSTALL_PREFIX}/include)" )
2016-04-01 13:48:37 +05:30
install ( DIRECTORY include DESTINATION . )
2016-09-02 15:08:36 +05:30
install ( DIRECTORY cmake DESTINATION . )
2016-03-30 13:58:38 +05:30
endif ()
2016-03-23 07:54:01 -05:00
2020-04-30 15:02:23 -04:00
# Install generated headers
# FIXME: Associate with individual targets.
2021-01-27 01:59:36 -05:00
if ( HIP_PLATFORM STREQUAL "amd" )
2020-12-15 17:38:08 -05:00
install ( FILES ${ PROJECT_BINARY_DIR } /include/hip/amd_detail/hip_prof_str.h
DESTINATION include/hip/amd_detail )
2021-01-27 01:59:36 -05:00
endif ()
2020-12-15 17:38:08 -05:00
install ( FILES ${ PROJECT_BINARY_DIR } /include/hip/hip_version.h
DESTINATION include/hip )
2020-04-30 15:02:23 -04:00
2020-06-09 15:45:22 -04:00
#############################
# hip-config
#############################
include ( CMakePackageConfigHelpers )
2018-09-19 18:29:56 +00:00
2020-06-09 15:45:22 -04:00
configure_package_config_file (
hip-config.cmake.in
${ CMAKE_CURRENT_BINARY_DIR } /hip-config.cmake
INSTALL_DESTINATION ${ CONFIG_PACKAGE_INSTALL_DIR }
PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR BIN_INSTALL_DIR
)
write_basic_package_version_file (
${ CMAKE_CURRENT_BINARY_DIR } /hip-config-version.cmake
VERSION "${HIP_VERSION_MAJOR}.${HIP_VERSION_MINOR}.${HIP_VERSION_GITDATE}"
COMPATIBILITY SameMajorVersion
)
install (
FILES
${ CMAKE_CURRENT_BINARY_DIR } /hip-config.cmake
${ CMAKE_CURRENT_BINARY_DIR } /hip-config-version.cmake
DESTINATION
${ CONFIG_PACKAGE_INSTALL_DIR }
)
2017-02-13 16:01:50 +05:30
2016-04-12 12:42:12 +05:30
#############################
# Packaging steps
#############################
2016-04-15 12:13:04 +05:30
# Package: hip_base
2020-01-29 16:03:14 -08:00
set ( BUILD_DIR ${ CMAKE_CURRENT_BINARY_DIR } /packages/hip-base )
2019-12-04 15:55:37 +05:30
configure_file ( packaging/hip-base.txt ${ BUILD_DIR } /CMakeLists.txt @ONLY )
configure_file ( packaging/hip-base.postinst ${ BUILD_DIR } /postinst @ONLY )
configure_file ( packaging/hip-base.prerm ${ BUILD_DIR } /prerm @ONLY )
2017-10-24 20:59:30 +01:00
add_custom_target ( pkg_hip_base COMMAND ${ CMAKE_COMMAND } .
COMMAND rm -rf *.deb *.rpm *.tar.gz
COMMAND make package
COMMAND cp *.deb ${ PROJECT_BINARY_DIR }
COMMAND cp *.rpm ${ PROJECT_BINARY_DIR }
COMMAND cp *.tar.gz ${ PROJECT_BINARY_DIR }
2021-01-27 02:32:11 -05:00
WORKING_DIRECTORY ${ BUILD_DIR } )
2017-10-24 20:59:30 +01:00
# Packaging needs to wait for hipify-clang to build if it's enabled...
if ( BUILD_HIPIFY_CLANG )
add_dependencies ( pkg_hip_base hipify-clang )
2016-10-05 22:34:42 +05:30
endif ()
2016-04-15 12:13:04 +05:30
2020-11-27 20:13:14 -05:00
if ( HIP_RUNTIME STREQUAL "rocclr" )
2020-06-09 15:45:22 -04:00
set ( BUILD_DIR ${ CMAKE_CURRENT_BINARY_DIR } /rocclr )
configure_file ( packaging/hip-rocclr.txt ${ BUILD_DIR } /CMakeLists.txt @ONLY )
configure_file ( packaging/hip-rocclr.postinst ${ BUILD_DIR } /postinst @ONLY )
configure_file ( packaging/hip-rocclr.prerm ${ BUILD_DIR } /prerm @ONLY )
add_custom_target ( hip_on_rocclr COMMAND ${ CMAKE_COMMAND } .
COMMAND rm -rf *.deb *.rpm *.tar.gz
COMMAND make package
COMMAND cp *.deb ${ PROJECT_BINARY_DIR }
COMMAND cp *.rpm ${ PROJECT_BINARY_DIR }
COMMAND cp *.tar.gz ${ PROJECT_BINARY_DIR }
WORKING_DIRECTORY ${ BUILD_DIR } )
2020-01-29 16:03:14 -08:00
endif ()
2016-04-15 12:13:04 +05:30
# Package: hip_nvcc
2020-01-29 16:03:14 -08:00
set ( BUILD_DIR ${ CMAKE_CURRENT_BINARY_DIR } /packages/hip-nvcc )
2019-12-04 15:55:37 +05:30
configure_file ( packaging/hip-nvcc.txt ${ BUILD_DIR } /CMakeLists.txt @ONLY )
2016-04-15 12:13:04 +05:30
add_custom_target ( pkg_hip_nvcc COMMAND ${ CMAKE_COMMAND } .
2016-10-03 22:52:23 +05:30
COMMAND rm -rf *.deb *.rpm *.tar.gz
COMMAND make package
COMMAND cp *.deb ${ PROJECT_BINARY_DIR }
COMMAND cp *.rpm ${ PROJECT_BINARY_DIR }
COMMAND cp *.tar.gz ${ PROJECT_BINARY_DIR }
WORKING_DIRECTORY ${ BUILD_DIR } )
2016-04-15 12:13:04 +05:30
# Package: hip_doc
2020-01-29 16:03:14 -08:00
set ( BUILD_DIR ${ CMAKE_CURRENT_BINARY_DIR } /packages/hip-doc )
2019-12-04 15:55:37 +05:30
configure_file ( packaging/hip-doc.txt ${ BUILD_DIR } /CMakeLists.txt @ONLY )
2016-04-15 12:13:04 +05:30
add_custom_target ( pkg_hip_doc COMMAND ${ CMAKE_COMMAND } .
2016-10-03 22:52:23 +05:30
COMMAND rm -rf *.deb *.rpm *.tar.gz
COMMAND make package
COMMAND cp *.deb ${ PROJECT_BINARY_DIR }
COMMAND cp *.rpm ${ PROJECT_BINARY_DIR }
COMMAND cp *.tar.gz ${ PROJECT_BINARY_DIR }
WORKING_DIRECTORY ${ BUILD_DIR } )
2016-04-15 12:13:04 +05:30
2016-05-06 14:39:10 +05:30
# Package: hip_samples
set ( BUILD_DIR ${ CMAKE_CURRENT_BINARY_DIR } /packages/hip_samples )
2019-12-04 15:55:37 +05:30
configure_file ( packaging/hip-samples.txt ${ BUILD_DIR } /CMakeLists.txt @ONLY )
2016-05-06 14:39:10 +05:30
add_custom_target ( pkg_hip_samples COMMAND ${ CMAKE_COMMAND } .
2016-10-03 22:52:23 +05:30
COMMAND rm -rf *.deb *.rpm *.tar.gz
COMMAND make package
COMMAND cp *.deb ${ PROJECT_BINARY_DIR }
COMMAND cp *.rpm ${ PROJECT_BINARY_DIR }
COMMAND cp *.tar.gz ${ PROJECT_BINARY_DIR }
WORKING_DIRECTORY ${ BUILD_DIR } )
2016-05-06 14:39:10 +05:30
2016-04-15 12:13:04 +05:30
# Package: all
2016-07-19 06:52:38 +05:30
if ( POLICY CMP0037 )
cmake_policy ( PUSH )
cmake_policy ( SET CMP0037 OLD )
endif ()
2020-06-29 12:27:28 -04:00
2020-11-27 20:13:14 -05:00
if ( HIP_RUNTIME STREQUAL "rocclr" )
2020-01-29 16:03:14 -08:00
add_custom_target ( package
WORKING_DIRECTORY ${ PROJECT_BINARY_DIR }
2020-04-29 15:32:13 -04:00
DEPENDS pkg_hip_base hip_on_rocclr pkg_hip_nvcc pkg_hip_doc pkg_hip_samples )
2020-01-29 16:03:14 -08:00
endif ()
2016-07-19 06:52:38 +05:30
if ( POLICY CMP0037 )
cmake_policy ( POP )
endif ()
2016-04-11 16:33:28 +05:30
2017-12-14 12:16:44 +05:30
#############################
# Code analysis
#############################
2018-02-12 10:21:27 +05:30
# Target: cppcheck
find_program ( CPPCHECK_EXE cppcheck )
if ( CPPCHECK_EXE )
add_custom_target ( cppcheck COMMAND ${ CPPCHECK_EXE } --force --quiet --enable=warning,performance,portability,information,missingInclude src include -I /opt/rocm/include/hcc -I /opt/rocm/include --suppress=*:/opt/rocm/include/hcc/hc.hpp
2019-10-24 17:46:06 +05:30
WORKING_DIRECTORY ${ CMAKE_CURRENT_SOURCE_DIR } )
2018-02-12 10:21:27 +05:30
endif ()
#############################
# Code formatting
#############################
# Target: clangformat
find_program ( CLANGFORMAT_EXE clang-format PATHS ${ HCC_HOME } /bin )
if ( CLANGFORMAT_EXE )
file ( GLOB_RECURSE FORMAT_SOURCE_FILE_LIST *.cpp *.hpp *.h )
add_custom_target ( clangformat COMMAND ${ CLANGFORMAT_EXE } -style=file -i ${ FORMAT_SOURCE_FILE_LIST }
WORKING_DIRECTORY ${ CMAKE_CURRENT_SOURCE_DIR } )
endif ()
2017-12-14 12:16:44 +05:30
2016-09-23 14:46:48 +05:30
#############################
# Testing steps
#############################
2020-10-05 13:20:58 -04:00
set ( HIP_ROOT_DIR ${ CMAKE_CURRENT_BINARY_DIR } )
2017-02-27 13:14:08 +05:30
set ( HIP_SRC_PATH ${ CMAKE_CURRENT_SOURCE_DIR } )
2020-10-23 06:57:01 -04:00
if ( HIP_PLATFORM STREQUAL "nvidia" )
2020-12-04 11:32:28 -05:00
execute_process ( COMMAND "${CMAKE_COMMAND}" -E copy_directory "${HIP_SRC_PATH}/include" "${HIP_ROOT_DIR}/include" RESULT_VARIABLE RUN_HIT ERROR_QUIET )
2020-10-05 13:20:58 -04:00
endif ()
2017-04-13 12:12:04 +05:30
execute_process ( COMMAND "${CMAKE_COMMAND}" -E copy_directory "${HIP_SRC_PATH}/cmake" "${HIP_ROOT_DIR}/cmake" RESULT_VARIABLE RUN_HIT ERROR_QUIET )
2017-03-06 15:32:21 +05:30
if ( ${ RUN_HIT } EQUAL 0 )
2017-04-13 12:12:04 +05:30
execute_process ( COMMAND "${CMAKE_COMMAND}" -E copy_directory "${HIP_SRC_PATH}/bin" "${HIP_ROOT_DIR}/bin" RESULT_VARIABLE RUN_HIT ERROR_QUIET )
2017-03-06 15:32:21 +05:30
endif ()
if ( ${ RUN_HIT } EQUAL 0 )
2017-04-13 12:12:04 +05:30
set ( CMAKE_MODULE_PATH "${HIP_ROOT_DIR}/cmake" ${ CMAKE_MODULE_PATH } )
2017-03-06 15:32:21 +05:30
include ( ${ HIP_SRC_PATH } /tests/hit/HIT.cmake )
2020-12-04 11:32:28 -05:00
include ( ${ HIP_SRC_PATH } /tests/Tests.cmake )
2017-03-06 15:32:21 +05:30
else ()
message ( STATUS "Testing targets will not be available. To enable them please ensure that the HIP installation directory is writeable. Use -DCMAKE_INSTALL_PREFIX to specify a suitable location" )
endif ()
2017-02-27 13:14:08 +05:30
2019-10-24 17:46:06 +05:30
#############################
# Code analysis
#############################
# Target: clang
if ( HIP_HIPCC_EXECUTABLE )
2020-10-05 13:20:58 -04:00
add_custom_target ( analyze
2020-12-04 11:32:28 -05:00
COMMAND ${ HIP_HIPCC_EXECUTABLE } -fvisibility=hidden -fvisibility-inlines-hidden --analyze --analyzer-outputtext -isystem /opt/rocm/include -Wno-unused-command-line-argument -I/opt/rocm/include -c src/*.cpp -Iinclude/ -I./
2019-10-24 17:46:06 +05:30
WORKING_DIRECTORY ${ HIP_SRC_PATH } )
if ( CPPCHECK_EXE )
add_dependencies ( analyze cppcheck )
endif ()
endif ()
2016-10-03 22:52:23 +05:30
# vim: ts=4:sw=4:expandtab:smartindent