99432cc12c
1. As in hipModuleLaunchKernel(..., kernelParams, nullptr); works with this commit
2. Added headers AMDGPUPTNote.h, AMDGPURuntimeMetadata.h to do code object meta data parsing
3. Changed CMake to look at llvm link libraries
4. HIP developer should set env variable LLVM_HOME to remove link errors
5. HIP depends on installed LLVM (not source, not build)
6. Added sample to test out the feature
7. Right now HCC does not support embedding metadata in code object. Use clang opencl
8. Changed HIPCC to read LLVM_HOME env var
9. New argument to CMake should be given -DLLVM_HOME=<where llvm 5.0 is installed>
Change-Id: Iba38194aa872d97cc2c90a8e5ff746c48055c868
406 lignes
16 KiB
CMake
406 lignes
16 KiB
CMake
cmake_minimum_required(VERSION 2.8.3)
|
|
project(hip)
|
|
|
|
#############################
|
|
# Setup config generation
|
|
#############################
|
|
string(TIMESTAMP _timestamp UTC)
|
|
set(_versionInfo "# Auto-generated by cmake\n")
|
|
set(_buildInfo "# Auto-generated by cmake on ${_timestamp} UTC\n")
|
|
macro(add_to_config _configfile _variable)
|
|
set(${_configfile} "${${_configfile}}${_variable}=${${_variable}}\n")
|
|
endmacro()
|
|
|
|
#############################
|
|
# Setup version information
|
|
#############################
|
|
# Determine HIP_BASE_VERSION
|
|
execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bin/hipconfig --version
|
|
OUTPUT_VARIABLE HIP_BASE_VERSION
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
string(REPLACE "." ";" VERSION_LIST ${HIP_BASE_VERSION})
|
|
list(GET VERSION_LIST 0 HIP_VERSION_MAJOR)
|
|
list(GET VERSION_LIST 1 HIP_VERSION_MINOR)
|
|
|
|
# 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
|
|
COMMAND xargs
|
|
COMMAND date -f - --utc +%y%U%w
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
OUTPUT_VARIABLE HIP_VERSION_PATCH
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
set(HIP_VERSION ${HIP_VERSION_MAJOR}.${HIP_VERSION_MINOR}.${HIP_VERSION_PATCH})
|
|
add_to_config(_versionInfo HIP_VERSION_MAJOR)
|
|
add_to_config(_versionInfo HIP_VERSION_MINOR)
|
|
add_to_config(_versionInfo HIP_VERSION_PATCH)
|
|
|
|
#############################
|
|
# Configure variables
|
|
#############################
|
|
# Determine HIP_PLATFORM
|
|
if(NOT DEFINED HIP_PLATFORM)
|
|
if(NOT DEFINED ENV{HIP_PLATFORM})
|
|
execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bin/hipconfig --platform
|
|
OUTPUT_VARIABLE HIP_PLATFORM
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
else()
|
|
set(HIP_PLATFORM $ENV{HIP_PLATFORM} CACHE STRING "HIP Platform")
|
|
endif()
|
|
endif()
|
|
message(STATUS "HIP Platform: " ${HIP_PLATFORM})
|
|
|
|
# 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})
|
|
set(HCC_HOME "/opt/rocm/hcc" CACHE PATH "Path to which HCC has been installed")
|
|
else()
|
|
set(HCC_HOME $ENV{HCC_HOME} CACHE PATH "Path to which HCC has been installed")
|
|
endif()
|
|
endif()
|
|
# Determine LLVM_HOME
|
|
if(NOT DEFINED LLVM_HOME)
|
|
if(NOT DEFINED ENV{LLVM_HOME})
|
|
set(LLVM_HOME "/opt/rocm/llvm" CACHE PATH "Path to which LLVM has been installed")
|
|
else()
|
|
set(LLVM_HOME $ENV{LLVM_HOME} CACHE PATH "Path to which LLVM has been installed")
|
|
endif()
|
|
endif()
|
|
if(DEFINED ENV{HIP_DEVELOPER})
|
|
add_to_config(_buildInfo HCC_HOME)
|
|
endif()
|
|
if(IS_ABSOLUTE ${HCC_HOME} AND EXISTS ${HCC_HOME} AND IS_DIRECTORY ${HCC_HOME})
|
|
execute_process(COMMAND ${HCC_HOME}/bin/hcc --version
|
|
OUTPUT_VARIABLE HCC_VERSION
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
string(REGEX REPLACE ".*based on HCC " "" HCC_VERSION ${HCC_VERSION})
|
|
string(REGEX REPLACE " .*" "" HCC_VERSION ${HCC_VERSION})
|
|
message(STATUS "Looking for HCC in: " ${HCC_HOME} ". Found version: " ${HCC_VERSION})
|
|
else()
|
|
message(FATAL_ERROR "Don't know where to find HCC. Please specify abolute path using -DHCC_HOME")
|
|
endif()
|
|
add_to_config(_buildInfo HCC_VERSION)
|
|
string(REPLACE "-" ";" HCC_VERSION_LIST ${HCC_VERSION})
|
|
list(GET HCC_VERSION_LIST 0 HCC_PACKAGE_VERSION)
|
|
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)
|
|
|
|
# Determine HSA_PATH
|
|
if(NOT DEFINED HSA_PATH)
|
|
if(NOT DEFINED ENV{HSA_PATH})
|
|
set(HSA_PATH "/opt/rocm/hsa" CACHE PATH "Path to which HSA runtime has been installed")
|
|
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})
|
|
else()
|
|
message(FATAL_ERROR "Don't know where to find HSA runtime. Please specify absolute path using -DHSA_PATH")
|
|
endif()
|
|
endif()
|
|
|
|
# Set default build type
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE "Release")
|
|
endif()
|
|
|
|
# Determine HIP install path
|
|
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND CMAKE_INSTALL_PREFIX MATCHES "/usr/local")
|
|
if(CMAKE_BUILD_TYPE MATCHES Debug)
|
|
set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH "Installation path for HIP" FORCE)
|
|
elseif(CMAKE_BUILD_TYPE MATCHES Release)
|
|
set(CMAKE_INSTALL_PREFIX "/opt/rocm/hip" CACHE PATH "Installation path for HIP" FORCE)
|
|
else()
|
|
message(FATAL_ERROR "Invalid CMAKE_BUILD_TYPE specified. Valid values are Debug and Release")
|
|
endif()
|
|
endif()
|
|
if(IS_ABSOLUTE ${CMAKE_INSTALL_PREFIX})
|
|
message(STATUS "HIP will be installed in: " ${CMAKE_INSTALL_PREFIX})
|
|
else()
|
|
message(FATAL_ERROR "Don't know where to install HIP. Please specify absolute path using -DCMAKE_INSTALL_PREFIX")
|
|
endif()
|
|
|
|
# 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})
|
|
endif()
|
|
endif()
|
|
|
|
# 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()
|
|
add_to_config(_buildInfo COMPILE_HIP_ATP_MARKER)
|
|
|
|
|
|
#############################
|
|
# Build steps
|
|
#############################
|
|
# Rebuild cmake cache updates .hipInfo and .hipVersion
|
|
add_custom_target(update_build_and_version_info ALL COMMAND make rebuild_cache)
|
|
|
|
# Build clang hipify if enabled
|
|
add_subdirectory(hipify-clang)
|
|
|
|
# Build hip_hcc if platform is hcc
|
|
if(HIP_PLATFORM STREQUAL "hcc")
|
|
include_directories(${PROJECT_SOURCE_DIR}/include)
|
|
set(HIP_HCC_BUILD_FLAGS)
|
|
if(COMPILE_HIP_ATP_MARKER)
|
|
include_directories(/opt/rocm/profiler/CXLActivityLogger/include)
|
|
set(HIP_HCC_BUILD_FLAGS "${HIP_HCC_BUILD_FLAGS} -DCOMPILE_HIP_ATP_MARKER=1")
|
|
endif()
|
|
|
|
# Add HIP_VERSION to CMAKE_<LANG>_FLAGS
|
|
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}")
|
|
|
|
# Add remaining flags
|
|
execute_process(COMMAND ${HCC_HOME}/bin/hcc-config --cxxflags OUTPUT_VARIABLE HCC_CXX_FLAGS)
|
|
set(HIP_HCC_BUILD_FLAGS "${HIP_HCC_BUILD_FLAGS} -fPIC ${HCC_CXX_FLAGS} -I${HSA_PATH}/include")
|
|
|
|
# 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}")
|
|
|
|
set(SOURCE_FILES_RUNTIME
|
|
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
|
|
src/hip_module.cpp
|
|
src/env.cpp)
|
|
|
|
set(SOURCE_FILES_DEVICE
|
|
src/device_util.cpp
|
|
src/hip_ldg.cpp
|
|
src/hip_fp16.cpp
|
|
src/device_functions.cpp
|
|
src/math_functions.cpp)
|
|
|
|
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")
|
|
find_package(LLVM HINTS ${LLVM_HOME})
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --amdgpu-target=gfx701 --amdgpu-target=gfx801 --amdgpu-target=gfx802 --amdgpu-target=gfx803 --amdgpu-target=gfx900")
|
|
add_library(hip_hcc SHARED ${SOURCE_FILES_RUNTIME})
|
|
target_link_libraries(hip_hcc PRIVATE hc_am)
|
|
target_link_libraries(hip_hcc PUBLIC LLVMAMDGPUUtils)
|
|
add_library(hip_hcc_static STATIC ${SOURCE_FILES_RUNTIME})
|
|
target_link_libraries(hip_hcc_static PRIVATE hc_am)
|
|
add_dependencies(hip_hcc_static hip_hcc)
|
|
add_library(hip_device STATIC ${SOURCE_FILES_DEVICE})
|
|
add_dependencies(hip_device hip_hcc)
|
|
|
|
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()
|
|
target_link_libraries(hip_hcc INTERFACE hcc::hccrt;hcc::hc_am)
|
|
|
|
# Generate hcc_version.txt
|
|
add_custom_target(query_hcc_version COMMAND ${HCC_HOME}/bin/hcc --version > ${PROJECT_BINARY_DIR}/hcc_version.tmp)
|
|
add_custom_target(check_hcc_version COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_BINARY_DIR}/hcc_version.tmp ${PROJECT_BINARY_DIR}/hcc_version.txt DEPENDS query_hcc_version)
|
|
set_source_files_properties(${PROJECT_BINARY_DIR}/hcc_version.txt PROPERTIES GENERATED TRUE)
|
|
set_source_files_properties(${SOURCE_FILES_RUNTIME} ${SOURCE_FILES_DEVICE} PROPERTIES OBJECT_DEPENDS ${PROJECT_BINARY_DIR}/hcc_version.txt)
|
|
add_dependencies(hip_hcc check_hcc_version update_build_and_version_info)
|
|
|
|
# Generate .hipInfo
|
|
file(WRITE "${PROJECT_BINARY_DIR}/.hipInfo" ${_buildInfo})
|
|
endif()
|
|
|
|
# Generate .hipVersion
|
|
file(WRITE "${PROJECT_BINARY_DIR}/.hipVersion" ${_versionInfo})
|
|
|
|
# Build doxygen documentation
|
|
add_custom_target(doc COMMAND HIP_PATH=${CMAKE_CURRENT_SOURCE_DIR} doxygen ${CMAKE_CURRENT_SOURCE_DIR}/docs/doxygen-input/doxy.cfg
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/docs)
|
|
|
|
#############################
|
|
# Install steps
|
|
#############################
|
|
# Install hip_hcc if platform is hcc
|
|
if(HIP_PLATFORM STREQUAL "hcc")
|
|
install(TARGETS hip_hcc_static hip_hcc hip_device DESTINATION lib)
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/hip_hc.ll ${CMAKE_CURRENT_SOURCE_DIR}/src/hip_hc_gfx803.ll DESTINATION lib)
|
|
|
|
# Install .hipInfo
|
|
install(FILES ${PROJECT_BINARY_DIR}/.hipInfo DESTINATION lib)
|
|
endif()
|
|
|
|
# Install .hipVersion
|
|
install(FILES ${PROJECT_BINARY_DIR}/.hipVersion DESTINATION bin)
|
|
|
|
# Install src, bin, include & cmake if necessary
|
|
execute_process(COMMAND test ${CMAKE_INSTALL_PREFIX} -ef ${CMAKE_CURRENT_SOURCE_DIR}
|
|
RESULT_VARIABLE INSTALL_SOURCE)
|
|
if(NOT ${INSTALL_SOURCE} EQUAL 0)
|
|
install(DIRECTORY src DESTINATION .)
|
|
install(DIRECTORY bin DESTINATION . USE_SOURCE_PERMISSIONS)
|
|
install(DIRECTORY include DESTINATION .)
|
|
install(DIRECTORY cmake DESTINATION .)
|
|
endif()
|
|
|
|
#############################
|
|
# 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()
|
|
|
|
#############################
|
|
# Packaging steps
|
|
#############################
|
|
# 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)
|
|
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()
|
|
|
|
# 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} .
|
|
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_device hip_hcc_static)
|
|
|
|
# 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} .
|
|
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})
|
|
|
|
# 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} .
|
|
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})
|
|
|
|
# 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} .
|
|
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})
|
|
|
|
# Package: all
|
|
if(POLICY CMP0037)
|
|
cmake_policy(PUSH)
|
|
cmake_policy(SET CMP0037 OLD)
|
|
endif()
|
|
add_custom_target(package DEPENDS pkg_hip_base pkg_hip_hcc pkg_hip_nvcc pkg_hip_doc pkg_hip_samples)
|
|
if(POLICY CMP0037)
|
|
cmake_policy(POP)
|
|
endif()
|
|
|
|
#############################
|
|
# Testing steps
|
|
#############################
|
|
# Target: test
|
|
set(HIP_PATH ${CMAKE_INSTALL_PREFIX})
|
|
set(HIP_SRC_PATH ${CMAKE_CURRENT_SOURCE_DIR})
|
|
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_directory "${HIP_SRC_PATH}/cmake" "${HIP_PATH}/cmake" RESULT_VARIABLE RUN_HIT ERROR_QUIET)
|
|
if(${RUN_HIT} EQUAL 0)
|
|
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_directory "${HIP_SRC_PATH}/bin" "${HIP_PATH}/bin" RESULT_VARIABLE RUN_HIT ERROR_QUIET)
|
|
endif()
|
|
if(${RUN_HIT} EQUAL 0)
|
|
set(CMAKE_MODULE_PATH "${HIP_PATH}/cmake" ${CMAKE_MODULE_PATH})
|
|
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")
|
|
|
|
# Add top-level tests to build_tests
|
|
add_custom_target(build_tests DEPENDS directed_tests)
|
|
|
|
# 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()
|
|
|
|
|
|
# vim: ts=4:sw=4:expandtab:smartindent
|