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-06-09 15:45:22 -04:00
# sample command for hip-hcc
# cmake -DHIP_RUNTIME=hcc ..
2020-04-29 15:32:13 -04:00
# sample command for hip-rocclr, you'll need to have rocclr installed
2020-06-09 15:45:22 -04:00
# cmake ..
# cmake -DHIP_COMPILER=clang ..
# cmake -DHIP_COMPILER=clang -DHIP_RUNTIME=rocclr ..
# cmake -DHIP_COMPILER=clang -DHIP_RUNTIME=rocclr -DOPENCL_DIR=/path/to/opencl/api/opencl -DCMAKE_PREFIX_PATH=/path/to/rocclr/build/or/install/directory ..
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 )
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 } )
set ( HIP_LIB_VERSION_PATCH ${ ROCM_PATCH_VERSION } )
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-09-05 05:03:04 -05:00
if ( CMAKE_CXX_COMPILER MATCHES ".*hcc" )
set ( HIP_COMPILER "hcc" CACHE STRING "HIP Compiler" )
2020-06-09 15:45:22 -04:00
set ( HIP_PLATFORM "amd" CACHE STRING "HIP Platform" )
set ( HIP_RUNTIME "hcc" CACHE STRING "HIP Runtime" )
2019-09-05 05:03:04 -05:00
get_filename_component ( CXX_PATH ${ CMAKE_CXX_COMPILER } DIRECTORY )
get_filename_component ( CXX_PATH ${ CXX_PATH } DIRECTORY )
2020-06-09 15:45:22 -04:00
set ( HCC_HOME "${CXX_PATH}" CACHE PATH "Path to which hcc has been installed" )
2019-09-05 05:03:04 -05:00
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_COMPILER "nvcc" CACHE STRING "HIP Compiler" )
set ( HIP_RUNTIME "cuda" CACHE STRING "HIP Runtime" )
endif ()
# default runtime is rocclr
if ( NOT DEFINED HIP_RUNTIME )
if ( NOT DEFINED ENV{HIP_RUNTIME} )
set ( HIP_RUNTIME "rocclr" CACHE STRING "HIP Runtime" )
else ()
set ( HIP_RUNTIME $ENV{ HIP_RUNTIME } CACHE STRING "HIP Compiler" )
endif ()
endif ()
message ( STATUS "HIP Runtime: " ${ HIP_RUNTIME } )
add_to_config ( _buildInfo HIP_RUNTIME )
2018-08-01 20:37:46 +00:00
# Determine HIP_COMPILER
2020-06-09 15:45:22 -04:00
# Either hcc or clang; default is clang
2018-08-01 20:37:46 +00:00
if ( NOT DEFINED HIP_COMPILER )
if ( NOT DEFINED ENV{HIP_COMPILER} )
2020-06-09 15:45:22 -04:00
if ( HIP_RUNTIME STREQUAL "hcc" )
set ( HIP_COMPILER "hcc" CACHE STRING "HIP Compiler" )
else ()
set ( HIP_COMPILER "clang" CACHE STRING "HIP Compiler" )
endif ()
2018-08-01 20:37:46 +00:00
else ()
set ( HIP_COMPILER $ENV{ HIP_COMPILER } CACHE STRING "HIP Compiler" )
endif ()
endif ()
2020-06-09 15:45:22 -04:00
2018-08-01 20:37:46 +00:00
message ( STATUS "HIP Compiler: " ${ HIP_COMPILER } )
2019-02-01 16:52:55 +00:00
add_to_config ( _buildInfo HIP_COMPILER )
2018-08-01 20:37:46 +00:00
2020-06-09 15:45:22 -04:00
########### Determine HCC_HOME If compiler is hcc ##################
2018-08-01 20:37:46 +00:00
2020-06-09 15:45:22 -04:00
if ( HIP_COMPILER STREQUAL "hcc" )
2016-04-12 12:42:12 +05:30
# Determine HCC_HOME
if ( NOT DEFINED HCC_HOME )
if ( NOT DEFINED ENV{HCC_HOME} )
2016-04-15 12:56:31 +05:30
set ( HCC_HOME "/opt/rocm/hcc" CACHE PATH "Path to which HCC has been installed" )
2016-04-12 12:42:12 +05:30
else ()
set ( HCC_HOME $ENV{ HCC_HOME } CACHE PATH "Path to which HCC has been installed" )
endif ()
endif ()
if ( IS_ABSOLUTE ${ HCC_HOME } AND EXISTS ${ HCC_HOME } AND IS_DIRECTORY ${ HCC_HOME } )
2016-05-06 16:06:15 +05:30
execute_process ( COMMAND ${ HCC_HOME } /bin/hcc --version
2016-10-03 22:52:23 +05:30
OUTPUT_VARIABLE HCC_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE )
2017-03-03 03:11:41 -05:00
string ( REGEX REPLACE ".*based on HCC " "" HCC_VERSION ${ HCC_VERSION } )
string ( REGEX REPLACE " .*" "" HCC_VERSION ${ HCC_VERSION } )
2016-05-06 16:06:15 +05:30
message ( STATUS "Looking for HCC in: " ${ HCC_HOME } ". Found version: " ${ HCC_VERSION } )
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 HCC. Please specify abolute path using -DHCC_HOME" )
2016-03-30 13:58:38 +05:30
endif ()
2016-08-19 12:17:00 +05:30
add_to_config ( _buildInfo HCC_VERSION )
2016-10-17 12:48:05 +05:30
string ( REPLACE "-" ";" HCC_VERSION_LIST ${ HCC_VERSION } )
list ( GET HCC_VERSION_LIST 0 HCC_PACKAGE_VERSION )
2016-12-22 15:30:38 +05:30
string ( REPLACE "." ";" HCC_VERSION_LIST ${ HCC_PACKAGE_VERSION } )
list ( GET HCC_VERSION_LIST 0 HCC_VERSION_MAJOR )
list ( GET HCC_VERSION_LIST 1 HCC_VERSION_MINOR )
2020-06-09 15:45:22 -04:00
endif ()
############ 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-06-09 15:45:22 -04:00
message ( STATUS "\nHSA 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 )
2016-03-30 13:58:38 +05:30
if ( CMAKE_BUILD_TYPE MATCHES Debug )
2016-10-03 22:52:23 +05:30
set ( CMAKE_INSTALL_PREFIX ${ CMAKE_CURRENT_SOURCE_DIR } CACHE PATH "Installation path for HIP" FORCE )
2016-03-30 13:58:38 +05:30
elseif ( CMAKE_BUILD_TYPE MATCHES Release )
2019-10-28 23:22:27 +03:00
set ( CMAKE_INSTALL_PREFIX ${ HIP_DEFAULT_INSTALL_PREFIX } CACHE PATH "Installation path for HIP" FORCE )
2016-03-30 13:58:38 +05:30
else ()
message ( FATAL_ERROR "Invalid CMAKE_BUILD_TYPE specified. Valid values are Debug and Release" )
endif ()
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 )
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 } )
include_directories ( ${ PROJECT_BINARY_DIR } /include )
2020-06-09 15:45:22 -04:00
if ( HIP_RUNTIME STREQUAL "rocclr" )
2020-01-29 16:03:14 -08:00
include_directories ( ${ PROJECT_SOURCE_DIR } /include )
2020-04-29 23:28:46 -04:00
add_subdirectory ( rocclr )
2020-01-29 16:03:14 -08:00
2020-06-09 15:45:22 -04:00
# set(ROCclr_CXX_FLAGS "-hc -fno-gpu-rdc --amdgpu-target=gfx803 --amdgpu-target=gfx900 --amdgpu-target=gfx906 --amdgpu-target=gfx908 ")
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
set ( HCC_CXX_FLAGS "-hc -fno-gpu-rdc --amdgpu-target=gfx803 --amdgpu-target=gfx900 --amdgpu-target=gfx906 --amdgpu-target=gfx908 " )
set ( HIP_HCC_BUILD_FLAGS "${HIP_HCC_BUILD_FLAGS} -fPIC ${HCC_CXX_FLAGS} -I${HSA_PATH}/include" )
endif ()
2020-06-09 15:45:22 -04:00
# Build hip_hcc if runtime is hcc
if ( HIP_RUNTIME STREQUAL "hcc" )
#############################
# Profiling API support
#############################
# Generate profiling API macros/structures header
if ( USE_PROF_API EQUAL 1 )
set ( PROF_API_STR "${PROJECT_BINARY_DIR}/include/hip/hcc_detail/hip_prof_str.h" )
set ( PROF_API_HDR "${CMAKE_CURRENT_SOURCE_DIR}/include/hip/hcc_detail/hip_runtime_api.h" )
set ( PROF_API_SRC "${CMAKE_CURRENT_SOURCE_DIR}/src" )
set ( PROF_API_GEN "${CMAKE_CURRENT_SOURCE_DIR}/hip_prof_gen.py" )
set ( PROF_API_LOG "${PROJECT_BINARY_DIR}/hip_prof_gen.log.txt" )
set ( PROF_API_CMD "${PROF_API_GEN} -v ${OPT_PROF_API} ${PROF_API_HDR} ${PROF_API_SRC} ${PROF_API_STR} >${PROF_API_LOG}" )
MESSAGE ( STATUS "Generating profiling promitives: ${PROF_API_STR}" )
execute_process ( COMMAND sh -c "rm -f ${PROF_API_STR}; ${PROF_API_CMD}" )
set_property ( DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${ PROF_API_GEN } ${ PROF_API_HDR } ${ PROF_API_STR } )
# Enable profiling API
find_path ( PROF_API_HEADER_DIR prof_protocol.h
HINTS
${ PROF_API_HEADER_PATH }
PATHS
/opt/rocm/roctracer
PATH_SUFFIXES
include/ext
)
if ( NOT PROF_API_HEADER_DIR )
MESSAGE ( WARNING "Profiling API header not found. Disabling roctracer integration. Use -DPROF_API_HEADER_PATH=<path to prof_protocol.h header>" )
else ()
add_definitions ( -DUSE_PROF_API=1 )
include_directories ( ${ PROF_API_HEADER_DIR } )
MESSAGE ( STATUS "Profiling API: ${PROF_API_HEADER_DIR}" )
endif ()
endif ()
2020-05-13 18:53:31 +00:00
include_directories ( ${ PROJECT_BINARY_DIR } /include )
2016-04-12 12:42:12 +05:30
include_directories ( ${ PROJECT_SOURCE_DIR } /include )
2016-09-23 10:44:39 +05:30
set ( HIP_HCC_BUILD_FLAGS )
2016-04-12 12:42:12 +05:30
2016-09-22 12:27:07 +05:30
# Add HIP_VERSION to CMAKE_<LANG>_FLAGS
2019-08-09 12:13:29 +00:00
set ( HIP_HCC_BUILD_FLAGS "${HIP_HCC_BUILD_FLAGS} -DHIP_VERSION_MAJOR=${HIP_VERSION_MAJOR} -DHIP_VERSION_MINOR=${HIP_VERSION_MINOR} -DHIP_VERSION_PATCH=${HIP_VERSION_GITDATE}" )
2016-09-22 12:27:07 +05:30
2016-09-23 10:44:39 +05:30
# Add remaining flags
2020-01-21 00:47:35 -08:00
set ( HCC_CXX_FLAGS "-Xlinker --enable-new-dtags -hc -fno-gpu-rdc --amdgpu-target=gfx803 --amdgpu-target=gfx900 --amdgpu-target=gfx906 --amdgpu-target=gfx908 " )
2017-03-06 22:37:05 +05:30
set ( HIP_HCC_BUILD_FLAGS "${HIP_HCC_BUILD_FLAGS} -fPIC ${HCC_CXX_FLAGS} -I${HSA_PATH}/include" )
2016-09-23 10:44:39 +05:30
# Set compiler and compiler flags
set ( CMAKE_CXX_COMPILER "${HCC_HOME}/bin/hcc" )
set ( CMAKE_C_COMPILER "${HCC_HOME}/bin/hcc" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${HIP_HCC_BUILD_FLAGS}" )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${HIP_HCC_BUILD_FLAGS}" )
2016-04-12 12:42:12 +05:30
2016-12-01 15:33:12 +05:30
set ( SOURCE_FILES_RUNTIME
2019-05-12 09:54:03 -04:00
src/program_state.cpp
2018-04-04 13:32:33 -07:00
src/hip_clang.cpp
2016-10-03 22:52:23 +05:30
src/hip_hcc.cpp
src/hip_context.cpp
src/hip_device.cpp
src/hip_error.cpp
src/hip_event.cpp
2018-11-13 22:28:00 -05:00
src/hip_fatbin.cpp
2016-10-03 22:52:23 +05:30
src/hip_memory.cpp
src/hip_peer.cpp
src/hip_stream.cpp
2017-01-20 21:19:52 -06:00
src/hip_module.cpp
2017-07-03 15:05:30 -05:00
src/hip_db.cpp
2017-04-01 14:50:39 -05:00
src/grid_launch.cpp
2017-07-17 15:16:12 -04:00
src/hip_texture.cpp
2018-02-26 11:59:03 +05:30
src/hip_surface.cpp
2018-08-07 07:32:27 -05:00
src/hip_intercept.cpp
2017-11-10 01:20:50 +00:00
src/env.cpp
2019-02-21 12:48:28 -05:00
src/h2f.cpp )
2016-04-12 12:42:12 +05:30
2016-12-01 15:33:12 +05:30
add_library ( hip_hcc SHARED ${ SOURCE_FILES_RUNTIME } )
add_library ( hip_hcc_static STATIC ${ SOURCE_FILES_RUNTIME } )
2020-01-21 00:47:35 -08:00
## Set the VERSION and SOVERSION values
set_property ( TARGET hip_hcc PROPERTY VERSION "${HIP_LIB_VERSION_STRING}" )
set_property ( TARGET hip_hcc PROPERTY SOVERSION "${HIP_LIB_VERSION_MAJOR}" )
2020-02-21 21:52:19 +05:30
target_link_libraries ( hip_hcc PRIVATE hc_am )
target_link_libraries ( hip_hcc_static PRIVATE hc_am )
2019-05-16 15:58:54 +03:00
2020-04-07 06:57:42 -04:00
add_library ( hiprtc SHARED src/hiprtc.cpp )
2020-03-06 14:10:04 -05:00
target_compile_options ( hiprtc PRIVATE -DDISABLE_REDUCED_GPU_BLOB_COPY )
2020-02-21 21:52:19 +05:30
set_property ( TARGET hiprtc PROPERTY VERSION "${HIP_LIB_VERSION_STRING}" )
set_property ( TARGET hiprtc PROPERTY SOVERSION "${HIP_LIB_VERSION_MAJOR}" )
target_include_directories (
hiprtc SYSTEM
2020-06-09 15:45:22 -04:00
PRIVATE ${ PROJECT_SOURCE_DIR } /include ${ HSA_PATH } /include )
2020-01-21 00:47:35 -08:00
2019-08-08 04:33:04 -04:00
set_target_properties ( hip_hcc PROPERTIES CXX_VISIBILITY_PRESET hidden )
set_target_properties ( hip_hcc PROPERTIES VISIBILITY_INLINES_HIDDEN 1 )
2020-04-07 06:57:42 -04:00
set_target_properties ( hiprtc PROPERTIES CXX_VISIBILITY_PRESET hidden )
set_target_properties ( hiprtc PROPERTIES VISIBILITY_INLINES_HIDDEN 1 )
2020-06-09 15:45:22 -04:00
find_package ( amd_comgr REQUIRED CONFIG
PATHS
/opt/rocm/
PATH_SUFFIXES
cmake/amd_comgr
lib/cmake/amd_comgr
)
MESSAGE ( STATUS "Code Object Manager found at ${amd_comgr_DIR}." )
2019-05-23 18:03:32 -07:00
target_link_libraries ( hip_hcc PRIVATE amd_comgr )
target_link_libraries ( hip_hcc_static PRIVATE amd_comgr )
2017-02-23 11:18:06 +05:30
string ( REPLACE " " ";" HCC_CXX_FLAGS_LIST ${ HCC_CXX_FLAGS } )
2018-10-19 20:07:08 +00:00
foreach ( TARGET hip_hcc hip_hcc_static )
2017-02-23 11:18:06 +05:30
target_include_directories ( ${ TARGET } SYSTEM INTERFACE $< INSTALL_INTERFACE:$<INSTALL_PREFIX > /include>; ${ HSA_PATH } /include )
endforeach ()
2018-04-24 14:04:24 -05:00
add_library ( host INTERFACE )
target_link_libraries ( host INTERFACE hip_hcc )
add_library ( device INTERFACE )
2018-08-01 20:37:46 +00:00
if ( HIP_COMPILER STREQUAL "hcc" )
2018-10-19 20:07:08 +00:00
target_link_libraries ( device INTERFACE host hcc::hccrt hcc::hc_am )
else ()
target_link_libraries ( device INTERFACE host )
2018-08-01 20:37:46 +00:00
endif ()
2016-04-01 16:08:49 +05:30
endif ()
2016-03-30 07:54:18 -05:00
2020-06-09 15:45:22 -04:00
if ( HIP_PLATFORM STREQUAL "amd" )
2020-01-29 16:03:14 -08:00
add_subdirectory ( ${ CMAKE_CURRENT_SOURCE_DIR } /lpl_ca )
2020-04-23 21:42:06 +05:30
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
2020-04-30 17:11:08 -04:00
if ( NOT DEFINED HIP_VERSION_GITDATE )
2020-06-09 15:45:22 -04:00
set ( HIP_VERSION_GITDATE 0 )
2020-04-30 17:11:08 -04:00
endif ()
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
#############################
2020-06-09 15:45:22 -04:00
# Install hip_hcc if runtime is hcc
if ( HIP_RUNTIME STREQUAL "hcc" )
2020-04-23 21:42:06 +05:30
install ( TARGETS hip_hcc_static hip_hcc hiprtc DESTINATION lib )
endif ()
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-06-09 15:45:22 -04:00
if ( HIP_RUNTIME STREQUAL "hcc" )
2020-05-13 18:53:31 +00:00
install ( DIRECTORY src DESTINATION . )
2020-06-09 15:45:22 -04:00
elseif ( 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 )
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.
2020-05-06 17:52:26 -04:00
install ( DIRECTORY ${ CMAKE_CURRENT_BINARY_DIR } /include/hip/hcc_detail
DESTINATION include/hip
FILES_MATCHING PATTERN "*.h*" )
2020-04-30 15:20:20 -04:00
install ( DIRECTORY ${ PROJECT_BINARY_DIR } /include/hip
DESTINATION include
FILES_MATCHING PATTERN "*.h*" )
2020-04-30 15:02:23 -04:00
2020-06-09 15:45:22 -04:00
if ( HIP_RUNTIME STREQUAL "hcc" )
2018-10-19 20:07:08 +00:00
install ( TARGETS hip_hcc_static hip_hcc host device EXPORT hip-targets DESTINATION ${ LIB_INSTALL_DIR } )
2017-02-13 16:01:50 +05:30
install ( EXPORT hip-targets DESTINATION ${ CONFIG_PACKAGE_INSTALL_DIR } NAMESPACE hip:: )
2020-06-09 15:45:22 -04:00
elseif ( HIP_RUNTIME STREQUAL "rocclr" )
2020-04-29 23:28:46 -04:00
# install(TARGETS hip_on_rocclr host device EXPORT hip-targets DESTINATION ${LIB_INSTALL_DIR})
2020-01-29 16:03:14 -08:00
endif ()
2017-02-13 16:01:50 +05:30
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 }
WORKING_DIRECTORY ${ BUILD_DIR }
2018-04-11 15:30:13 +05:30
DEPENDS lpl ca )
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-06-09 15:45:22 -04:00
if ( HIP_RUNTIME STREQUAL "hcc" )
2020-02-16 03:00:08 -05:00
message ( "HCC Package\n" )
# Package: hip_hcc
2020-06-09 15:45:22 -04:00
set ( BUILD_DIR ${ CMAKE_CURRENT_BINARY_DIR } /packages/hip_hcc )
configure_file ( packaging/hip-hcc.txt ${ BUILD_DIR } /CMakeLists.txt @ONLY )
configure_file ( packaging/hip-hcc.postinst ${ BUILD_DIR } /postinst @ONLY )
configure_file ( packaging/hip-hcc.prerm ${ BUILD_DIR } /prerm @ONLY )
add_custom_target ( pkg_hip_hcc 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 }
DEPENDS hip_hcc hip_hcc_static hiprtc )
elseif ( HIP_RUNTIME STREQUAL "rocclr" )
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-06-09 15:45:22 -04:00
if ( HIP_RUNTIME STREQUAL "hcc" )
2020-01-29 16:03:14 -08:00
add_custom_target ( package
2019-08-21 10:01:23 +00:00
WORKING_DIRECTORY ${ PROJECT_BINARY_DIR }
2019-12-01 14:47:43 +05:30
DEPENDS pkg_hip_base pkg_hip_hcc pkg_hip_nvcc pkg_hip_doc pkg_hip_samples )
2020-06-09 15:45:22 -04:00
elseif ( 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
#############################
# Target: test
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-10-05 13:20:58 -04:00
execute_process ( COMMAND "${CMAKE_COMMAND}" -E copy_directory "${HIP_SRC_PATH}/include" "${CMAKE_CURRENT_BINARY_DIR}/include" RESULT_VARIABLE RUN_HIT ERROR_QUIET )
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 )
# Add tests
include_directories ( ${ HIP_SRC_PATH } /tests/src )
2020-05-04 18:06:34 -04:00
hit_add_directory_recursive ( ${ HIP_CTEST_CONFIG_DEFAULT } ${ HIP_SRC_PATH } /tests/src "directed_tests" )
2017-02-27 13:14:08 +05:30
2020-04-17 10:31:47 +05:30
# Add unit tests
include_directories ( ${ HIP_SRC_PATH } /tests/unit )
2020-05-04 18:06:34 -04:00
hit_add_directory_recursive ( ${ HIP_CTEST_CONFIG_DEFAULT } ${ HIP_SRC_PATH } /tests/unit "unit_tests" )
# Add performance tests
include_directories ( ${ HIP_SRC_PATH } /tests/performance )
hit_add_directory_recursive ( ${ HIP_CTEST_CONFIG_PERFORMANCE } ${ HIP_SRC_PATH } /tests/performance "performance_tests" )
2020-04-17 10:31:47 +05:30
2017-03-06 15:32:21 +05:30
# Add top-level tests to build_tests
2020-04-17 10:31:47 +05:30
add_custom_target ( build_tests DEPENDS directed_tests unit_tests )
2017-02-27 13:14:08 +05:30
2020-05-04 18:06:34 -04:00
# Add top-level tests to build performance_tests.
# To build performance tests, just run "make build_perf"
add_custom_target ( build_perf DEPENDS performance_tests )
# Add custom target: perf.
# To run performance tests, just run "make perf"
add_custom_target ( perf COMMAND "${CMAKE_CTEST_COMMAND}" -C "${HIP_CTEST_CONFIG_PERFORMANCE}" -R "performance_tests/" --verbose )
2017-03-06 15:32:21 +05:30
# Add custom target: check
add_custom_target ( check COMMAND "${CMAKE_COMMAND}" --build . --target test DEPENDS build_tests )
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
2019-10-24 17:46:06 +05:30
COMMAND ${ HIP_HIPCC_EXECUTABLE } -fvisibility=hidden -fvisibility-inlines-hidden --analyze --analyzer-outputtext -isystem /opt/rocm/include ${ HIP_HCC_BUILD_FLAGS } -Wno-unused-command-line-argument -I/opt/rocm/include -c src/*.cpp -Iinclude/ -I./
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