diff --git a/CMakeLists.txt b/CMakeLists.txt index 21b0dc0c033ae2ac4c44d1eb95b6958dae8f0de2..85b7d3a702650aa09da5fb57bc1b215b8ce9c0d3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -330,6 +330,7 @@ endif() # Add math library (libm), searched with MORSE module FindM.cmake # it normally exists on all common systems provided with a C compiler find_package(M REQUIRED) +morse_export_imported_target(MORSE M m chameleon) # If simulation we don't enter in kernel functions so that we don't need to link # with concerned libraries @@ -346,10 +347,12 @@ if(NOT CHAMELEON_SIMULATION) # CHAMELEON depends on CBLAS #--------------------------- find_package(CBLAS REQUIRED) + morse_export_imported_target(MORSE CBLAS cblas chameleon) # CHAMELEON depends on LAPACKE #----------------------------- find_package(LAPACKE REQUIRED) + morse_export_imported_target(MORSE LAPACKE lapacke chameleon) # CHAMELEON depends on CUDA/CUBLAS #---------------------------------- @@ -396,6 +399,8 @@ if(NOT CHAMELEON_SIMULATION) "\n CUDA_LIBRARIES to be found. Be sure you have" "\n libcuda with your distribution of CUDA.") endif() + morse_export_imported_target(CUDA CUDA cuda chameleon) + morse_export_imported_target(CUDA CUBLAS cublas chameleon) endif (CUDA_FOUND) endif(CHAMELEON_USE_CUDA) @@ -417,6 +422,8 @@ if(NOT CHAMELEON_SIMULATION) " - Activate MPI in Chameleon${ColourReset}") endif (MPI_C_FOUND) + morse_export_imported_target(MPI MPI_C mpi chameleon) + endif (CHAMELEON_USE_MPI) else (NOT CHAMELEON_SIMULATION) @@ -504,6 +511,8 @@ else (NOT CHAMELEON_SIMULATION) " - Activate MPI in Chameleon${ColourReset}") endif (MPI_C_FOUND) + morse_export_imported_target(MPI MPI_C mpi chameleon) + endif (CHAMELEON_USE_MPI) endif(NOT CHAMELEON_SIMULATION) @@ -651,10 +660,6 @@ write_basic_package_version_file(CHAMELEONConfigVersion.cmake install(FILES ${CMAKE_CURRENT_BINARY_DIR}/CHAMELEONConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/CHAMELEONConfigVersion.cmake DESTINATION ${LIB_INSTALL_DIR}/cmake/chameleon) -# need MORSE Find modules: necessary files must be distributed in the install path -set(morse_dependencies "M;BLASEXT;LAPACKEXT;CBLAS;LAPACKE;HWLOC;PARSEC;QUARK;STARPU") -morse_install_finds(morse_dependencies ${LIB_INSTALL_DIR}/cmake/chameleon/find) - ############################################################################### # Config files (pkg_config) # ############################# diff --git a/cmake_modules/CHAMELEONConfig.cmake.in b/cmake_modules/CHAMELEONConfig.cmake.in index c4b93d79fa716e8e502740306d5572745049f3c0..eda084878196ed0ee9b08ad9ed45b98d35d42103 100644 --- a/cmake_modules/CHAMELEONConfig.cmake.in +++ b/cmake_modules/CHAMELEONConfig.cmake.in @@ -9,51 +9,30 @@ set_and_check(CHAMELEON_LIB_DIR "@PACKAGE_LIB_INSTALL_DIR@") check_required_components(CHAMELEON) -# need MORSE Find modules: necessary files must be distributed in the install path -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/find") - # dependencies of CHAMELEON -include(CMakeFindDependencyMacro) -find_dependency(M) +include("${CMAKE_CURRENT_LIST_DIR}/mTargets.cmake") if (NOT @CHAMELEON_SIMULATION@) - find_dependency(CBLAS REQUIRED) - find_dependency(LAPACKE REQUIRED) + include("${CMAKE_CURRENT_LIST_DIR}/cblasTargets.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/lapackeTargets.cmake") endif() if (@CHAMELEON_SCHED_OPENMP@) - find_dependency(OpenMP REQUIRED) + include("${CMAKE_CURRENT_LIST_DIR}/openmpTargets.cmake") endif() if (@CHAMELEON_SCHED_PARSEC@) - find_dependency(PARSEC REQUIRED) + include("${CMAKE_CURRENT_LIST_DIR}/parsecTargets.cmake") endif() if (@CHAMELEON_SCHED_QUARK@) - find_dependency(QUARK REQUIRED COMPONENTS HWLOC) + include("${CMAKE_CURRENT_LIST_DIR}/quarkTargets.cmake") endif() if (@CHAMELEON_SCHED_STARPU@) - find_package(STARPU @CHAMELEON_STARPU_VERSION@ REQUIRED) + include("${CMAKE_CURRENT_LIST_DIR}/starpuTargets.cmake") endif() if (@CHAMELEON_USE_MPI@) - find_dependency(MPI REQUIRED) + include("${CMAKE_CURRENT_LIST_DIR}/mpiTargets.cmake") endif() if (@CHAMELEON_USE_CUDA@ AND NOT @CHAMELEON_SIMULATION@) - find_dependency(CUDA REQUIRED) - if ( CUDA_FOUND ) - if (NOT TARGET CUDA::CUDA) - add_library(CUDA::CUDA INTERFACE IMPORTED) - if (CUDA_INCLUDE_DIRS) - set_target_properties(CUDA::CUDA PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CUDA_INCLUDE_DIRS}") - endif() - if (CUDA_LIBRARIES) - set_target_properties(CUDA::CUDA PROPERTIES INTERFACE_LINK_LIBRARIES "${CUDA_LIBRARIES}") - endif() - if (NOT TARGET CUDA::CUBLAS) - add_library(CUDA::CUBLAS INTERFACE IMPORTED) - if (CUDA_CUBLAS_LIBRARIES) - set_target_properties(CUDA::CUBLAS PROPERTIES INTERFACE_LINK_LIBRARIES "${CUDA_CUBLAS_LIBRARIES}") - endif() - target_link_libraries(CUDA::CUBLAS INTERFACE CUDA::CUDA) - endif() - endif() - endif() + include("${CMAKE_CURRENT_LIST_DIR}/cudaTargets.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/cublasTargets.cmake") endif() # add the targets file diff --git a/cmake_modules/morse_cmake b/cmake_modules/morse_cmake index 0540e73689762bfb5a3c9e8231de3cc1d14cf4dd..fdd64e56f4d1b3b1a31cb568dec374f9fde84796 160000 --- a/cmake_modules/morse_cmake +++ b/cmake_modules/morse_cmake @@ -1 +1 @@ -Subproject commit 0540e73689762bfb5a3c9e8231de3cc1d14cf4dd +Subproject commit fdd64e56f4d1b3b1a31cb568dec374f9fde84796 diff --git a/runtime/openmp/CMakeLists.txt b/runtime/openmp/CMakeLists.txt index 2bc8716dafc5bda20897bc6ff4f92eaeced7d366..6c2968a30cfd2c6988f0d67f44f1cee1a3452b72 100644 --- a/runtime/openmp/CMakeLists.txt +++ b/runtime/openmp/CMakeLists.txt @@ -29,6 +29,7 @@ cmake_minimum_required(VERSION 3.1) find_package(OpenMP REQUIRED) +morse_export_imported_target(OpenMP OpenMP_C openmp chameleon) if ( OPENMP_FOUND ) message("-- ${Blue}Add definition CHAMELEON_SCHED_OPENMP" diff --git a/runtime/parsec/CMakeLists.txt b/runtime/parsec/CMakeLists.txt index bf9fda273451a885245bdb908b701ce59f3a1d68..cf70959740e463ecab2c9f4f8aeb9f18b576b838 100644 --- a/runtime/parsec/CMakeLists.txt +++ b/runtime/parsec/CMakeLists.txt @@ -29,6 +29,7 @@ cmake_minimum_required(VERSION 3.1) find_package( PARSEC REQUIRED ) +morse_export_imported_target(MORSE PARSEC parsec chameleon) if(PARSEC_FOUND) message("-- ${Blue}Add definition CHAMELEON_SCHED_PARSEC" diff --git a/runtime/quark/CMakeLists.txt b/runtime/quark/CMakeLists.txt index ceccd00b99c2ff4718bb6ce3348a885efe0350fe..3e0caf4fe6ced01023524758d7180f3b8f9448d0 100644 --- a/runtime/quark/CMakeLists.txt +++ b/runtime/quark/CMakeLists.txt @@ -29,6 +29,7 @@ cmake_minimum_required(VERSION 3.1) find_package( QUARK REQUIRED COMPONENTS HWLOC ) +morse_export_imported_target(MORSE QUARK quark chameleon) # Add definition and include_dir if found if(QUARK_FOUND) diff --git a/runtime/starpu/CMakeLists.txt b/runtime/starpu/CMakeLists.txt index 68ea73c4707e0df3c623c7deae889a302a1eca7d..8664a455db69861ff58780f663803c36d26c8248 100644 --- a/runtime/starpu/CMakeLists.txt +++ b/runtime/starpu/CMakeLists.txt @@ -35,6 +35,7 @@ include(CheckStructHasMember) set(CHAMELEON_STARPU_VERSION "1.3" CACHE STRING "necessary STARPU API version") find_package(STARPU ${CHAMELEON_STARPU_VERSION} REQUIRED) +morse_export_imported_target(MORSE STARPU starpu chameleon) # check available functions # note: recall STARPU_VERSION provides the version