2016-04-12 12:42:12 +05:30
cmake_minimum_required ( VERSION 2.8.3 )
2016-04-15 12:13:04 +05:30
project ( hip )
2016-03-23 07:54:01 -05:00
2017-10-24 20:56:55 +01:00
#############################
# Options
#############################
option ( BUILD_HIPIFY_CLANG "Enable building the CUDA->HIP converter" OFF )
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
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
# get date information based on UTC
# use the last two digits of year + week number + day in the week as HIP_VERSION_PATCH
# use the commit date, instead of build date
# add xargs to remove strange trailing newline character
execute_process ( COMMAND git show -s --format=@%ct
2016-10-03 22:52:23 +05:30
COMMAND xargs
COMMAND date -f - --utc +%y%U%w
WORKING_DIRECTORY ${ PROJECT_SOURCE_DIR }
OUTPUT_VARIABLE HIP_VERSION_PATCH
OUTPUT_STRIP_TRAILING_WHITESPACE )
2016-06-14 14:57:56 +05:30
2017-01-19 11:09:33 -06:00
set ( HIP_VERSION ${ HIP_VERSION_MAJOR } . ${ HIP_VERSION_MINOR } . ${ HIP_VERSION_PATCH } )
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
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
2018-08-01 20:37:46 +00:00
# Determine HIP_COMPILER
# Either hcc or clang; default is hcc
if ( NOT DEFINED HIP_COMPILER )
if ( NOT DEFINED ENV{HIP_COMPILER} )
set ( HIP_COMPILER "hcc" CACHE STRING "HIP Compiler" )
else ()
set ( HIP_COMPILER $ENV{ HIP_COMPILER } CACHE STRING "HIP Compiler" )
endif ()
endif ()
if ( NOT ( HIP_COMPILER STREQUAL "hcc" OR HIP_COMPILER STREQUAL "clang" ))
message ( FATAL_ERROR "Must use HIP_COMPILER as hcc or clang" )
endif ()
message ( STATUS "HIP Compiler: " ${ HIP_COMPILER } )
2016-04-12 12:42:12 +05:30
# If HIP_PLATFORM is hcc, we need HCC_HOME and HSA_PATH to be defined
if ( HIP_PLATFORM STREQUAL "hcc" )
# 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 ()
2017-03-21 14:22:49 -05:00
2016-08-14 16:22:25 +05:30
if ( DEFINED ENV{HIP_DEVELOPER} )
2016-08-19 12:17:00 +05:30
add_to_config ( _buildInfo HCC_HOME )
2016-08-14 16:22:25 +05:30
endif ()
2016-04-12 12:42:12 +05:30
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 )
2016-03-24 13:33:07 -05:00
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 ()
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
2016-04-01 13:48:37 +05:30
if ( CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND CMAKE_INSTALL_PREFIX MATCHES "/usr/local" )
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 )
2016-10-03 22:52:23 +05:30
set ( CMAKE_INSTALL_PREFIX "/opt/rocm/hip" 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 ()
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 ()
2016-07-21 16:02:51 +05:30
# Check if we need to enable ATP marker
if ( NOT DEFINED COMPILE_HIP_ATP_MARKER )
if ( NOT DEFINED ENV{COMPILE_HIP_ATP_MARKER} )
set ( COMPILE_HIP_ATP_MARKER 0 )
else ()
set ( COMPILE_HIP_ATP_MARKER $ENV{ COMPILE_HIP_ATP_MARKER } )
endif ()
endif ()
2016-08-19 12:17:00 +05:30
add_to_config ( _buildInfo COMPILE_HIP_ATP_MARKER )
2016-07-21 16:02:51 +05:30
2016-11-09 21:38:43 -06:00
2016-04-12 12:42:12 +05:30
#############################
# Build steps
#############################
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
2017-12-14 13:32:27 +00:00
# Build LPL an CA (fat binary generation / fat binary decomposition tools) if
# platform is hcc; do this before the ugly hijacking of the compiler, since no
# HC code is involved.
if ( HIP_PLATFORM STREQUAL "hcc" )
2018-02-22 13:15:10 +00:00
add_subdirectory ( ${ CMAKE_CURRENT_SOURCE_DIR } /lpl_ca )
2017-12-14 13:32:27 +00:00
endif ()
2016-04-12 12:42:12 +05:30
# Build hip_hcc if platform is hcc
if ( HIP_PLATFORM STREQUAL "hcc" )
include_directories ( ${ PROJECT_SOURCE_DIR } /include )
2016-09-23 10:44:39 +05:30
set ( HIP_HCC_BUILD_FLAGS )
2016-07-21 16:02:51 +05:30
if ( COMPILE_HIP_ATP_MARKER )
include_directories ( /opt/rocm/profiler/CXLActivityLogger/include )
2016-09-23 10:44:39 +05:30
set ( HIP_HCC_BUILD_FLAGS "${HIP_HCC_BUILD_FLAGS} -DCOMPILE_HIP_ATP_MARKER=1" )
2016-07-21 16:02:51 +05:30
endif ()
2016-04-12 12:42:12 +05:30
2016-09-22 12:27:07 +05:30
# Add HIP_VERSION to CMAKE_<LANG>_FLAGS
2016-09-23 10:44:39 +05:30
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_PATCH}" )
2016-09-22 12:27:07 +05:30
2016-09-23 10:44:39 +05:30
# Add remaining flags
2017-02-13 11:50:45 -05:00
execute_process ( COMMAND ${ HCC_HOME } /bin/hcc-config --cxxflags OUTPUT_VARIABLE HCC_CXX_FLAGS )
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
2017-11-10 01:20:50 +00:00
src/code_object_bundle.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
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
2017-11-10 01:20:50 +00:00
src/env.cpp
src/program_state.cpp )
2016-04-12 12:42:12 +05:30
2017-02-13 11:50:45 -05:00
execute_process ( COMMAND ${ HCC_HOME } /bin/hcc-config --ldflags OUTPUT_VARIABLE HCC_LD_FLAGS )
2018-03-01 16:06:09 +00:00
set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${HCC_LD_FLAGS} -Wl,-Bsymbolic" )
2018-04-18 15:27:56 -04:00
set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --amdgpu-target=gfx701 --amdgpu-target=gfx803 --amdgpu-target=gfx900 --amdgpu-target=gfx906" )
2017-06-28 10:26:04 +05:30
if ( COMPILE_HIP_ATP_MARKER )
set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L/opt/rocm/profiler/CXLActivityLogger/bin/x86_64 -lCXLActivityLogger" )
endif ()
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 } )
2018-08-15 21:53:20 +00:00
if ( HIP_COMPILER STREQUAL "hcc" )
target_link_libraries ( hip_hcc PRIVATE hc_am )
target_link_libraries ( hip_hcc_static PRIVATE hc_am )
endif ()
2016-08-03 11:25:59 +05:30
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 ()
2017-02-23 11:18:06 +05:30
2016-10-11 11:13:41 +05:30
# Generate .hipInfo
file ( WRITE "${PROJECT_BINARY_DIR}/.hipInfo" ${ _buildInfo } )
2016-04-01 16:08:49 +05:30
endif ()
2016-03-30 07:54:18 -05:00
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
#############################
# Install hip_hcc if platform is hcc
if ( HIP_PLATFORM STREQUAL "hcc" )
2018-10-19 20:07:08 +00:00
install ( TARGETS hip_hcc_static hip_hcc DESTINATION lib )
2016-10-11 11:13:41 +05:30
# Install .hipInfo
install ( FILES ${ PROJECT_BINARY_DIR } /.hipInfo DESTINATION lib )
2016-04-01 16:08:49 +05:30
endif ()
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 )
2016-04-01 13:48:37 +05:30
install ( DIRECTORY src DESTINATION . )
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
2017-02-13 16:01:50 +05:30
#############################
# hip-config
#############################
set ( LIB_INSTALL_DIR ${ CMAKE_INSTALL_PREFIX } /lib )
set ( INCLUDE_INSTALL_DIR ${ CMAKE_INSTALL_PREFIX } /include )
set ( BIN_INSTALL_DIR ${ CMAKE_INSTALL_PREFIX } /bin )
set ( CONFIG_PACKAGE_INSTALL_DIR ${ LIB_INSTALL_DIR } /cmake/hip )
if ( HIP_PLATFORM 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:: )
include ( CMakePackageConfigHelpers )
2018-09-19 18:29:56 +00:00
if ( HIP_COMPILER STREQUAL "hcc" )
2017-02-13 16:01:50 +05:30
configure_package_config_file (
2018-09-19 18:29:56 +00:00
hip-config-hcc.cmake.in
2017-02-13 16:01:50 +05:30
${ CMAKE_CURRENT_BINARY_DIR } /hip-config.cmake
INSTALL_DESTINATION ${ CONFIG_PACKAGE_INSTALL_DIR }
PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR BIN_INSTALL_DIR
)
2018-09-19 18:29:56 +00:00
elseif ( HIP_COMPILER STREQUAL "clang" )
configure_package_config_file (
hip-config-clang.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
)
endif ()
2017-02-13 16:01:50 +05:30
write_basic_package_version_file (
${ CMAKE_CURRENT_BINARY_DIR } /hip-config-version.cmake
VERSION "${HIP_VERSION}"
COMPATIBILITY SameMajorVersion
)
install (
FILES
${ CMAKE_CURRENT_BINARY_DIR } /hip-config.cmake
${ CMAKE_CURRENT_BINARY_DIR } /hip-config-version.cmake
DESTINATION
${ CONFIG_PACKAGE_INSTALL_DIR }
)
endif ()
2016-04-12 12:42:12 +05:30
#############################
# Packaging steps
#############################
2016-04-15 12:13:04 +05:30
# Package: hip_base
set ( BUILD_DIR ${ CMAKE_CURRENT_BINARY_DIR } /packages/hip_base )
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
# Package: hip_hcc
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 } .
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 }
2018-10-19 20:07:08 +00:00
DEPENDS hip_hcc hip_hcc_static )
2016-04-15 12:13:04 +05:30
# Package: hip_nvcc
set ( BUILD_DIR ${ CMAKE_CURRENT_BINARY_DIR } /packages/hip_nvcc )
configure_file ( packaging/hip_nvcc.txt ${ BUILD_DIR } /CMakeLists.txt @ONLY )
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
set ( BUILD_DIR ${ CMAKE_CURRENT_BINARY_DIR } /packages/hip_doc )
configure_file ( packaging/hip_doc.txt ${ BUILD_DIR } /CMakeLists.txt @ONLY )
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 )
configure_file ( packaging/hip_samples.txt ${ BUILD_DIR } /CMakeLists.txt @ONLY )
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 ()
2016-05-06 14:39:10 +05:30
add_custom_target ( package DEPENDS pkg_hip_base pkg_hip_hcc pkg_hip_nvcc pkg_hip_doc pkg_hip_samples )
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
WORKING_DIRECTORY ${ CMAKE_CURRENT_SOURCE_DIR } )
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
2017-04-13 12:12:04 +05:30
set ( HIP_ROOT_DIR ${ CMAKE_INSTALL_PREFIX } )
2017-02-27 13:14:08 +05:30
set ( HIP_SRC_PATH ${ CMAKE_CURRENT_SOURCE_DIR } )
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 )
hit_add_directory_recursive ( ${ HIP_SRC_PATH } /tests/src "directed_tests" )
2017-02-27 13:14:08 +05:30
2017-03-06 15:32:21 +05:30
# Add top-level tests to build_tests
add_custom_target ( build_tests DEPENDS directed_tests )
2017-02-27 13:14:08 +05:30
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
2016-10-03 22:52:23 +05:30
# vim: ts=4:sw=4:expandtab:smartindent