From 7facb78e174141d67cc74215d5e013093651b08d Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Fri, 23 Apr 2021 15:50:44 +0200 Subject: [PATCH] Add hmat-oss to the cmake configuration --- CMakeLists.txt | 29 +++++++++++++++++--------- cmake_modules/CHAMELEONConfig.cmake.in | 9 ++++++++ coreblas/CMakeLists.txt | 3 +++ 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f1f938142..770b404d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -199,6 +199,9 @@ endif() # Enable Hmat-OSS kernels option(CHAMELEON_USE_HMAT "Enable hmat kernels" OFF) +cmake_dependent_option(CHAMELEON_HMAT_EXTERNAL + "Use external hmat-oss library" OFF + "CHAMELEON_USE_HMAT" OFF) option(CHAMELEON_RUNTIME_SYNC "Enable synchronous task submission when available to debug the code without parallelism" OFF) if (CHAMELEON_RUNTIME_SYNC) @@ -269,17 +272,23 @@ add_subdirectory(hqr) # Build dependency HMAT-OSS library # ##################################### if ( CHAMELEON_USE_HMAT ) - find_package(HMAT REQUIRED) - if(HMAT_FOUND) - set_target_properties(HMAT::hmat PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${HMAT_INCLUDE_DIRS}" - INTERFACE_COMPILE_DEFINITIONS "${HMAT_DEFINITIONS}" - INTERFACE_LINK_DIRECTORIES "${HMAT_LIBRARY_DIRS}" - INTERFACE_LINK_LIBRARIES "hmat" - ) - message( STATUS "HMAT: Found" ) + if ( CHAMELEON_HMAT_EXTERNAL ) + find_package(HMAT REQUIRED) + if(HMAT_FOUND) + if( NOT TARGET HMAT::hmat ) + set_target_properties(HMAT::hmat PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${HMAT_INCLUDE_DIRS}" + INTERFACE_COMPILE_DEFINITIONS "${HMAT_DEFINITIONS}" + INTERFACE_LINK_DIRECTORIES "${HMAT_LIBRARY_DIRS}" + INTERFACE_LINK_LIBRARIES "hmat" + ) + endif() + message( STATUS "HMAT: Found" ) + else() + message( ERROR "HMAT: Not found" ) + endif() else() - message( ERROR "HMAT: Not found" ) + message( STATUS "HMAT: Use internal HMat-OSS" ) endif() endif() diff --git a/cmake_modules/CHAMELEONConfig.cmake.in b/cmake_modules/CHAMELEONConfig.cmake.in index 89ae753b1..4817a7aa0 100644 --- a/cmake_modules/CHAMELEONConfig.cmake.in +++ b/cmake_modules/CHAMELEONConfig.cmake.in @@ -57,6 +57,15 @@ if (@CHAMELEON_USE_CUDA@ AND NOT @CHAMELEON_SIMULATION@) endif() # add the targets file +if (@CHAMELEON_USE_HMAT@) + if ( @CHAMELEON_HMAT_EXTERNAL@ ) + # Should be a find_dependency() but we fix it to make sure we use + # the correct path in higher level projects. + include("@HMAT_DIR@/HMATTargets.cmake") + else() + include("${CMAKE_CURRENT_LIST_DIR}/../hmat/HMATTargets.cmake") + endif() +endif() include("${CMAKE_CURRENT_LIST_DIR}/../hqr/hqrTargets.cmake") if (NOT @CHAMELEON_SIMULATION@) include("${CMAKE_CURRENT_LIST_DIR}/coreblasTargets.cmake") diff --git a/coreblas/CMakeLists.txt b/coreblas/CMakeLists.txt index 91eeb09f4..9b6602939 100644 --- a/coreblas/CMakeLists.txt +++ b/coreblas/CMakeLists.txt @@ -26,6 +26,9 @@ # ### +if (CHAMELEON_USE_HMAT AND NOT CHAMELEON_HMAT_EXTERNAL) + add_subdirectory(hmat-oss) +endif() add_subdirectory(include) add_subdirectory(compute) add_subdirectory(eztrace_module) -- GitLab