diff --git a/CMakeLists.txt b/CMakeLists.txt index 6ada4b94a3b09549c9eba37295153236858ca0f8..814d42d6eba8be3221c65be08e6e3b8c1859dc85 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,10 +42,10 @@ endif() # ============================ # MPI # ============================ -include(IntelMPI) -find_package(MPI REQUIRED) -include_directories(${MPI_INCLUDE_PATH}) -link_directories(${MPI_LIBRARY_DIRS}) +if (NOT TARGET MPI::MPI_C) + include(IntelMPI) + find_package(MPI REQUIRED) +endif() # ======================== # C @@ -94,26 +94,33 @@ endif() # ======================== # HMAT-OSS # ======================== -find_package(HMAT) -if(HMAT_FOUND) - include_directories(${HMAT_INCLUDE_DIRS}) +if ( NOT TARGET HMAT::hmat ) + find_package(HMAT) + 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" ) + set(HAVE_HMAT TRUE) + endif(HMAT_FOUND) +else() set(HAVE_HMAT TRUE) -endif(HMAT_FOUND) +endif() # ======================== # CHAMELEON # ======================== -find_package(PkgConfig) -pkg_check_modules (CHAMELEON chameleon) -if(CHAMELEON_FOUND) - include_directories(${CHAMELEON_INCLUDE_DIRS}) - link_directories(${CHAMELEON_LIBRARY_DIRS}) +if ( NOT TARGET CHAMELEON::chameleon ) + find_package(CHAMELEON) + if(CHAMELEON_FOUND) + set(HAVE_CHAMELEON TRUE) + endif() +else() set(HAVE_CHAMELEON TRUE) - if (NOT MKL_FOUND) - find_package(LAPACKE REQUIRED) - include_directories(${LAPACKE_INCLUDE_DIRS}) - endif (NOT MKL_FOUND) -endif(CHAMELEON_FOUND) +endif() # ======================== # HLIBPRO @@ -143,14 +150,18 @@ configure_file("${PROJECT_SOURCE_DIR}/CMake/config.h.in" "${CMAKE_CURRENT_BINARY # ============================ file(GLOB_RECURSE TEST_SOURCES RELATIVE ${PROJECT_SOURCE_DIR} src/*.c include/*.h) add_executable(test_FEMBEM ${TEST_SOURCES}) -target_link_libraries(test_FEMBEM ${HMAT_LIBRARIES};${CHAMELEON_LIBRARIES};${LAPACKE_LIBRARIES};${MPI_C_LIBRARIES}) +target_link_libraries(test_FEMBEM PUBLIC + HMAT::hmat + CHAMELEON::chameleon + ${LAPACKE_LIBRARIES} + MPI::MPI_C) if(HLIBPRO_FOUND) - target_link_libraries(test_FEMBEM ${HLIBPRO_LIBRARIES}) + target_link_libraries(test_FEMBEM PUBLIC ${HLIBPRO_LIBRARIES}) endif(HLIBPRO_FOUND) if(MKL_FOUND) # The start-group/end-group flags must be at the end of the # link command line, so we must use target_link_libraries not, CMAKE_SHARED_XXX_FLAGS - target_link_libraries(test_FEMBEM ${_LINK_PRIVATE} ${MKL_LINKER_FLAGS}) + target_link_libraries(test_FEMBEM PUBLIC ${_LINK_PRIVATE} ${MKL_LINKER_FLAGS}) endif() set_target_properties(test_FEMBEM PROPERTIES INSTALL_RPATH_USE_LINK_PATH True )