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
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
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-10-05 13:06:22 +05:30
# Check if we need to build hipify-clang
if ( NOT DEFINED HIPIFY_CLANG_LLVM_DIR )
if ( DEFINED ENV{HIPIFY_CLANG_LLVM_DIR} )
set ( HIPIFY_CLANG_LLVM_DIR $ENV{ HIPIFY_CLANG_LLVM_DIR } )
2016-05-04 14:44:00 +05:30
endif ()
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
2016-10-05 13:06:22 +05:30
add_subdirectory ( hipify-clang )
2016-05-04 14:44:00 +05:30
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
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
2017-01-20 21:19:52 -06:00
src/env.cpp )
2016-04-12 12:42:12 +05:30
2016-12-01 15:33:12 +05:30
set ( SOURCE_FILES_DEVICE
2016-11-18 14:33:20 +05:30
src/device_util.cpp
src/hip_ldg.cpp
2016-12-13 14:41:36 -06:00
src/hip_fp16.cpp
2017-01-17 14:57:51 -06:00
src/device_functions.cpp
src/math_functions.cpp )
2016-11-18 14:33:20 +05:30
2017-02-13 11:50:45 -05:00
execute_process ( COMMAND ${ HCC_HOME } /bin/hcc-config --ldflags OUTPUT_VARIABLE HCC_LD_FLAGS )
set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${HCC_LD_FLAGS} -Wl,-Bsymbolic" )
2017-04-01 15:01:00 -05:00
#find_package(LLVM HINTS ${HCC_HOME}/compiler/lib/cmake)
2017-03-14 13:51:38 +05:30
set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --amdgpu-target=gfx701 --amdgpu-target=gfx801 --amdgpu-target=gfx802 --amdgpu-target=gfx803 --amdgpu-target=gfx900" )
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 } )
2017-02-23 11:18:06 +05:30
target_link_libraries ( hip_hcc PRIVATE hc_am )
2017-04-01 15:01:00 -05:00
#target_link_libraries(hip_hcc PUBLIC LLVMAMDGPUUtils)
2016-12-01 15:33:12 +05:30
add_library ( hip_hcc_static STATIC ${ SOURCE_FILES_RUNTIME } )
2017-02-23 11:18:06 +05:30
target_link_libraries ( hip_hcc_static PRIVATE hc_am )
2016-12-01 15:33:12 +05:30
add_dependencies ( hip_hcc_static hip_hcc )
add_library ( hip_device STATIC ${ SOURCE_FILES_DEVICE } )
add_dependencies ( hip_device hip_hcc )
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 } )
foreach ( TARGET hip_hcc hip_hcc_static hip_device )
target_include_directories ( ${ TARGET } SYSTEM INTERFACE $< INSTALL_INTERFACE:$<INSTALL_PREFIX > /include>; ${ HSA_PATH } /include )
endforeach ()
2017-03-23 22:02:52 +05:30
target_link_libraries ( hip_hcc INTERFACE hcc::hccrt;hcc::hc_am )
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
add_custom_target ( doc COMMAND HIP_PATH= ${ CMAKE_CURRENT_SOURCE_DIR } doxygen ${ CMAKE_CURRENT_SOURCE_DIR } /docs/doxygen-input/doxy.cfg
2016-10-03 22:52:23 +05:30
WORKING_DIRECTORY ${ CMAKE_CURRENT_SOURCE_DIR } /docs )
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" )
2016-12-01 15:33:12 +05:30
install ( TARGETS hip_hcc_static hip_hcc hip_device DESTINATION lib )
2017-02-08 12:04:05 -06:00
install ( FILES ${ CMAKE_CURRENT_SOURCE_DIR } /src/hip_hc.ll ${ CMAKE_CURRENT_SOURCE_DIR } /src/hip_hc_gfx803.ll 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" )
install ( TARGETS hip_hcc_static hip_hcc hip_device EXPORT hip-targets DESTINATION ${ LIB_INSTALL_DIR } )
install ( EXPORT hip-targets DESTINATION ${ CONFIG_PACKAGE_INSTALL_DIR } NAMESPACE hip:: )
include ( CMakePackageConfigHelpers )
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}"
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 )
2016-10-05 22:34:42 +05:30
if ( NOT BUILD_HIPIFY_CLANG )
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 } )
else ()
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 }
DEPENDS hipify-clang )
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 }
2016-12-22 15:30:38 +05:30
DEPENDS hip_hcc hip_device 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
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-09-23 14:46:48 +05:30
2016-10-03 22:52:23 +05:30
# vim: ts=4:sw=4:expandtab:smartindent