From 5222e1778567b0350c3c816d16c533cd034fa332 Mon Sep 17 00:00:00 2001 From: Maneesh Gupta Date: Wed, 30 Mar 2016 13:58:38 +0530 Subject: [PATCH] Implement more complex HCC, HSA directory selection logic [ROCm/clr commit: 80b176d54091351a1330c58a765ff8793b8d69fe] --- projects/clr/hipamd/CMakeLists.txt | 65 ++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 16 deletions(-) diff --git a/projects/clr/hipamd/CMakeLists.txt b/projects/clr/hipamd/CMakeLists.txt index 0a5e2675dc..a5114e8ee2 100644 --- a/projects/clr/hipamd/CMakeLists.txt +++ b/projects/clr/hipamd/CMakeLists.txt @@ -1,20 +1,52 @@ cmake_minimum_required(VERSION 2.6) project(hip_hcc) -set (HCC_DIR "/opt/hcc" CACHE PATH "Path to which HCC has been installed") -message(STATUS "Looking for HCC in: " ${HCC_DIR}) - -set(HSA_DIR "/opt/hsa" CACHE PATH "Path to which HSA runtime has been installed") -message(STATUS "Looking for HSA runtime in: " ${HSA_DIR}) - -if(CMAKE_BUILD_TYPE MATCHES Debug) - set(HIP_INSTALL_DIR ${CMAKE_SOURCE_DIR} CACHE PATH "Installation path for HIP") -else() - set(HIP_INSTALL_DIR "/opt/hip" CACHE PATH "Installation path for HIP") +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release") endif() -message(STATUS "HIP will be installed in: " ${HIP_INSTALL_DIR}) -set(CMAKE_INSTALL_PREFIX "${HIP_INSTALL_PATH}" CACHE INTERNAL "Installation path for HIP" FORCE) +if(NOT DEFINED HCC_DIR) + if(NOT DEFINED ENV{HCC_DIR}) + set(HCC_DIR "/opt/hcc" CACHE PATH "Path to which HCC has been installed") + else() + set(HCC_DIR $ENV{HCC_DIR} CACHE PATH "Path to which HCC has been installed") + endif() +endif() +if(IS_ABSOLUTE ${HCC_DIR} AND EXISTS ${HCC_DIR} AND IS_DIRECTORY ${HCC_DIR}) + message(STATUS "Looking for HCC in: " ${HCC_DIR}) +else() + message(FATAL_ERROR "Don't know where to find HCC. Please specify abolute path using -DHCC_DIR") +endif() + +if(NOT DEFINED HSA_DIR) + if(NOT DEFINED ENV{HSA_DIR}) + set(HSA_DIR "/opt/hsa" CACHE PATH "Path to which HSA runtime has been installed") + else() + set(HSA_DIR $ENV{HSA_DIR} CACHE PATH "Path to which HSA runtime has been installed") + endif() +endif() +if(IS_ABSOLUTE ${HSA_DIR} AND EXISTS ${HSA_DIR} AND IS_DIRECTORY ${HSA_DIR}) + message(STATUS "Looking for HSA runtime in: " ${HSA_DIR}) +else() + message(FATAL_ERROR "Don't know where to find HSA runtime. Please specify absolute path using -DHSA_DIR") +endif() + +if(NOT DEFINED HIP_INSTALL_DIR) + if(CMAKE_BUILD_TYPE MATCHES Debug) + set(HIP_INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH "Installation path for HIP") + elseif(CMAKE_BUILD_TYPE MATCHES Release) + set(HIP_INSTALL_DIR "/opt/hip" CACHE PATH "Installation path for HIP") + else() + message(FATAL_ERROR "Invalid CMAKE_BUILD_TYPE specified. Valid values are Debug and Release") + endif() +endif() +if(IS_ABSOLUTE ${HIP_INSTALL_DIR}) + message(STATUS "HIP will be installed in: " ${HIP_INSTALL_DIR}) +else() + message(FATAL_ERROR "Don't know where to install HIP. Please specify absolute path using -DHIP_INSTALL_DIR") +endif() + +set(CMAKE_INSTALL_PREFIX "${HIP_INSTALL_DIR}" CACHE INTERNAL "Installation path for HIP" FORCE) include_directories(${PROJECT_SOURCE_DIR}/include) @@ -37,8 +69,9 @@ src/staging_buffer.cpp) add_library(hip_hcc STATIC ${SOURCE_FILES}) install(TARGETS hip_hcc DESTINATION ${HIP_INSTALL_DIR}/lib) -install(DIRECTORY src DESTINATION ${HIP_INSTALL_DIR}) -install(DIRECTORY bin DESTINATION ${HIP_INSTALL_DIR} USE_SOURCE_PERMISSIONS) -install(DIRECTORY include DESTINATION ${HIP_INSTALL_DIR}) - +if(NOT ${HIP_INSTALL_DIR} MATCHES ${CMAKE_CURRENT_SOURCE_DIR}) + install(DIRECTORY src DESTINATION ${HIP_INSTALL_DIR}) + install(DIRECTORY bin DESTINATION ${HIP_INSTALL_DIR} USE_SOURCE_PERMISSIONS) + install(DIRECTORY include DESTINATION ${HIP_INSTALL_DIR}) +endif()