diff --git a/cmake_modules/morse/find/FindCHAMELEON.cmake b/cmake_modules/morse/find/FindCHAMELEON.cmake index e627f8f25e74a021e41cc5e7987188fbad3279f4..86f11b5728768ae2b895a8698681061480003047 100644 --- a/cmake_modules/morse/find/FindCHAMELEON.cmake +++ b/cmake_modules/morse/find/FindCHAMELEON.cmake @@ -115,11 +115,19 @@ if( CHAMELEON_FIND_COMPONENTS ) endforeach() endif() +set(ENV_CHAMELEON_DIR "$ENV{CHAMELEON_DIR}") +set(ENV_CHAMELEON_INCDIR "$ENV{CHAMELEON_INCDIR}") +set(ENV_CHAMELEON_LIBDIR "$ENV{CHAMELEON_LIBDIR}") +set(CHAMELEON_GIVEN_BY_USER "FALSE") +if ( CHAMELEON_DIR OR ( CHAMELEON_INCDIR AND CHAMELEON_LIBDIR) OR ENV_CHAMELEON_DIR OR (ENV_CHAMELEON_INCDIR AND ENV_CHAMELEON_LIBDIR) ) + set(CHAMELEON_GIVEN_BY_USER "TRUE") +endif() + # Optionally use pkg-config to detect include/library dirs (if pkg-config is available) # ------------------------------------------------------------------------------------- include(FindPkgConfig) find_package(PkgConfig QUIET) -if(PKG_CONFIG_EXECUTABLE) +if(PKG_CONFIG_EXECUTABLE AND NOT CHAMELEON_GIVEN_BY_USER) pkg_search_module(CHAMELEON chameleon) if (NOT CHAMELEON_FIND_QUIETLY) @@ -162,9 +170,9 @@ if(PKG_CONFIG_EXECUTABLE) set(CHAMELEON_LIBRARY_DIRS_DEP "${CHAMELEON_LIBRARY_DIRS}") set(CHAMELEON_LIBRARIES_DEP "${CHAMELEON_LIBRARIES}") -endif() +endif(PKG_CONFIG_EXECUTABLE AND NOT CHAMELEON_GIVEN_BY_USER) -if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT CHAMELEON_FOUND) OR (CHAMELEON_DIR) ) +if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT CHAMELEON_FOUND) OR (CHAMELEON_GIVEN_BY_USER) ) if (NOT CHAMELEON_FIND_QUIETLY) message(STATUS "Looking for CHAMELEON - PkgConfig not used") @@ -755,7 +763,7 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT CHAMELEON_FOUN set(CMAKE_REQUIRED_LIBRARIES) endif(CHAMELEON_LIBRARIES) -endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT CHAMELEON_FOUND) OR (CHAMELEON_DIR) ) +endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT CHAMELEON_FOUND) OR (CHAMELEON_GIVEN_BY_USER) ) if (CHAMELEON_LIBRARIES) if (CHAMELEON_LIBRARY_DIRS) diff --git a/cmake_modules/morse/find/FindFXT.cmake b/cmake_modules/morse/find/FindFXT.cmake index 7aa0ef4e930648bb46119184b4b23d4d70acce1e..bfb4c8f79afe49809e2d570d0bfdad5e99cb882f 100644 --- a/cmake_modules/morse/find/FindFXT.cmake +++ b/cmake_modules/morse/find/FindFXT.cmake @@ -52,11 +52,19 @@ if (NOT FXT_FOUND) endif() endif() +set(ENV_FXT_DIR "$ENV{FXT_DIR}") +set(ENV_FXT_INCDIR "$ENV{FXT_INCDIR}") +set(ENV_FXT_LIBDIR "$ENV{FXT_LIBDIR}") +set(FXT_GIVEN_BY_USER "FALSE") +if ( FXT_DIR OR ( FXT_INCDIR AND FXT_LIBDIR) OR ENV_FXT_DIR OR (ENV_FXT_INCDIR AND ENV_FXT_LIBDIR) ) + set(FXT_GIVEN_BY_USER "TRUE") +endif() + # Optionally use pkg-config to detect include/library dirs (if pkg-config is available) # ------------------------------------------------------------------------------------- include(FindPkgConfig) find_package(PkgConfig QUIET) -if(PKG_CONFIG_EXECUTABLE) +if(PKG_CONFIG_EXECUTABLE AND NOT FXT_GIVEN_BY_USER) pkg_search_module(FXT fxt) if (NOT FXT_FIND_QUIETLY) @@ -74,9 +82,9 @@ if(PKG_CONFIG_EXECUTABLE) endif() endif() -endif() +endif(PKG_CONFIG_EXECUTABLE AND NOT FXT_GIVEN_BY_USER) -if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT FXT_FOUND) OR (FXT_DIR) ) +if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT FXT_FOUND) OR (FXT_GIVEN_BY_USER) ) if (NOT FXT_FIND_QUIETLY) message(STATUS "Looking for FXT - PkgConfig not used") @@ -269,7 +277,7 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT FXT_FOUND) OR set(CMAKE_REQUIRED_LIBRARIES) endif(FXT_LIBRARIES) -endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT FXT_FOUND) OR (FXT_DIR) ) +endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT FXT_FOUND) OR (FXT_GIVEN_BY_USER) ) if (FXT_LIBRARIES) if (FXT_LIBRARY_DIRS) diff --git a/cmake_modules/morse/find/FindHWLOC.cmake b/cmake_modules/morse/find/FindHWLOC.cmake index fd69aa4c9881f8f0431aeed186422de62f1b2603..213be5cb173534d1e1f99e21f3d439b694972017 100644 --- a/cmake_modules/morse/find/FindHWLOC.cmake +++ b/cmake_modules/morse/find/FindHWLOC.cmake @@ -45,6 +45,8 @@ # (To distribute this file outside of Morse, substitute the full # License text for the above reference.) +include(CheckStructHasMember) +include(CheckCSourceCompiles) if (NOT HWLOC_FOUND) set(HWLOC_DIR "" CACHE PATH "Installation directory of HWLOC library") @@ -53,11 +55,19 @@ if (NOT HWLOC_FOUND) endif() endif() +set(ENV_HWLOC_DIR "$ENV{HWLOC_DIR}") +set(ENV_HWLOC_INCDIR "$ENV{HWLOC_INCDIR}") +set(ENV_HWLOC_LIBDIR "$ENV{HWLOC_LIBDIR}") +set(HWLOC_GIVEN_BY_USER "FALSE") +if ( HWLOC_DIR OR ( HWLOC_INCDIR AND HWLOC_LIBDIR) OR ENV_HWLOC_DIR OR (ENV_HWLOC_INCDIR AND ENV_HWLOC_LIBDIR) ) + set(HWLOC_GIVEN_BY_USER "TRUE") +endif() + # Optionally use pkg-config to detect include/library dirs (if pkg-config is available) # ------------------------------------------------------------------------------------- include(FindPkgConfig) find_package(PkgConfig QUIET) -if(PKG_CONFIG_EXECUTABLE) +if( PKG_CONFIG_EXECUTABLE AND NOT HWLOC_GIVEN_BY_USER ) pkg_search_module(HWLOC hwloc) if (NOT HWLOC_FIND_QUIETLY) @@ -75,9 +85,9 @@ if(PKG_CONFIG_EXECUTABLE) endif() endif() -endif() +endif( PKG_CONFIG_EXECUTABLE AND NOT HWLOC_GIVEN_BY_USER ) -if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) OR (HWLOC_DIR) ) +if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) OR (HWLOC_GIVEN_BY_USER) ) if (NOT HWLOC_FIND_QUIETLY) message(STATUS "Looking for HWLOC - PkgConfig not used") @@ -89,8 +99,6 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) O # Add system include paths to search include # ------------------------------------------ unset(_inc_env) - set(ENV_HWLOC_DIR "$ENV{HWLOC_DIR}") - set(ENV_HWLOC_INCDIR "$ENV{HWLOC_INCDIR}") if(ENV_HWLOC_INCDIR) list(APPEND _inc_env "${ENV_HWLOC_INCDIR}") elseif(ENV_HWLOC_DIR) @@ -164,7 +172,6 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) O # Add system library paths to search lib # -------------------------------------- unset(_lib_env) - set(ENV_HWLOC_LIBDIR "$ENV{HWLOC_LIBDIR}") if(ENV_HWLOC_LIBDIR) list(APPEND _lib_env "${ENV_HWLOC_LIBDIR}") elseif(ENV_HWLOC_DIR) @@ -263,6 +270,13 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) O check_function_exists(hwloc_topology_init HWLOC_WORKS) mark_as_advanced(HWLOC_WORKS) + # test headers to guess the version + check_struct_has_member( "struct hwloc_obj" parent hwloc.h HAVE_HWLOC_PARENT_MEMBER ) + check_struct_has_member( "struct hwloc_cache_attr_s" size hwloc.h HAVE_HWLOC_CACHE_ATTR ) + check_c_source_compiles( "#include <hwloc.h> + int main(void) { hwloc_obj_t o; o->type = HWLOC_OBJ_PU; return 0;}" HAVE_HWLOC_OBJ_PU) + check_library_exists(${HWLOC_LIBRARIES} hwloc_bitmap_free "" HAVE_HWLOC_BITMAP) + if(NOT HWLOC_WORKS) if(NOT HWLOC_FIND_QUIETLY) message(STATUS "Looking for hwloc : test of hwloc_topology_init with hwloc library fails") @@ -276,7 +290,7 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) O set(CMAKE_REQUIRED_LIBRARIES) endif(HWLOC_LIBRARIES) -endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) OR (HWLOC_DIR) ) +endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) OR (HWLOC_GIVEN_BY_USER) ) if (HWLOC_LIBRARIES) if (HWLOC_LIBRARY_DIRS) diff --git a/cmake_modules/morse/find/FindMAGMA.cmake b/cmake_modules/morse/find/FindMAGMA.cmake index 0302ce5c0d1c7d6b8349e17be763527e5074d3d4..e8bdd072ddf18c8ccf7cd0d2282efe3919278218 100644 --- a/cmake_modules/morse/find/FindMAGMA.cmake +++ b/cmake_modules/morse/find/FindMAGMA.cmake @@ -100,11 +100,19 @@ if (NOT CBLAS_FOUND) endif() endif() +set(ENV_MAGMA_DIR "$ENV{MAGMA_DIR}") +set(ENV_MAGMA_INCDIR "$ENV{MAGMA_INCDIR}") +set(ENV_MAGMA_LIBDIR "$ENV{MAGMA_LIBDIR}") +set(MAGMA_GIVEN_BY_USER "FALSE") +if ( MAGMA_DIR OR ( MAGMA_INCDIR AND MAGMA_LIBDIR) OR ENV_MAGMA_DIR OR (ENV_MAGMA_INCDIR AND ENV_MAGMA_LIBDIR) ) + set(MAGMA_GIVEN_BY_USER "TRUE") +endif() + # Optionally use pkg-config to detect include/library dirs (if pkg-config is available) # ------------------------------------------------------------------------------------- include(FindPkgConfig) find_package(PkgConfig QUIET) -if(PKG_CONFIG_EXECUTABLE) +if(PKG_CONFIG_EXECUTABLE AND NOT MAGMA_GIVEN_BY_USER) pkg_search_module(MAGMA magma) if (NOT MAGMA_FIND_QUIETLY) @@ -155,10 +163,10 @@ if(PKG_CONFIG_EXECUTABLE) set(MAGMA_LIBRARY_DIRS_DEP "${MAGMA_LIBRARY_DIRS}") set(MAGMA_LIBRARIES_DEP "${MAGMA_LIBRARIES}") -endif() +endif(PKG_CONFIG_EXECUTABLE AND NOT MAGMA_GIVEN_BY_USER) # if MAGMA is not found using pkg-config -if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT MAGMA_FOUND) OR (MAGMA_DIR) ) +if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT MAGMA_FOUND) OR (MAGMA_GIVEN_BY_USER) ) if (NOT MAGMA_FIND_QUIETLY) message(STATUS "Looking for MAGMA - PkgConfig not used") @@ -394,7 +402,7 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT MAGMA_FOUND) O set(CMAKE_REQUIRED_LIBRARIES) endif(MAGMA_LIBRARIES) -endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT MAGMA_FOUND) OR (MAGMA_DIR) ) +endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT MAGMA_FOUND) OR (MAGMA_GIVEN_BY_USER) ) if (MAGMA_LIBRARIES) if (MAGMA_LIBRARY_DIRS) diff --git a/cmake_modules/morse/find/FindSTARPU.cmake b/cmake_modules/morse/find/FindSTARPU.cmake index 11f39abc0e0048e2b563faef4e4a39aa9d139cd2..170fbf4fbe077bd91157f04a5a432e625dcccd56 100644 --- a/cmake_modules/morse/find/FindSTARPU.cmake +++ b/cmake_modules/morse/find/FindSTARPU.cmake @@ -165,12 +165,20 @@ if (NOT FXT_FOUND AND STARPU_LOOK_FOR_FXT) endif() endif() +set(ENV_STARPU_DIR "$ENV{STARPU_DIR}") +set(ENV_STARPU_INCDIR "$ENV{STARPU_INCDIR}") +set(ENV_STARPU_LIBDIR "$ENV{STARPU_LIBDIR}") +set(STARPU_GIVEN_BY_USER "FALSE") +if ( STARPU_DIR OR ( STARPU_INCDIR AND STARPU_LIBDIR) OR ENV_STARPU_DIR OR (ENV_STARPU_INCDIR AND ENV_STARPU_LIBDIR) ) + set(STARPU_GIVEN_BY_USER "TRUE") +endif() + # Optionally use pkg-config to detect include/library dirs (if pkg-config is available) # ------------------------------------------------------------------------------------- include(FindPkgConfig) find_package(PkgConfig QUIET) -if(PKG_CONFIG_EXECUTABLE) +if(PKG_CONFIG_EXECUTABLE AND NOT STARPU_GIVEN_BY_USER) pkg_search_module(STARPU_SHM libstarpu) set(STARPU_INCLUDE_DIRS "${STARPU_SHM_INCLUDE_DIRS}") @@ -241,10 +249,10 @@ if(PKG_CONFIG_EXECUTABLE) if (STARPU_LOOK_FOR_MPI AND NOT STARPU_MPI_FOUND) set(STARPU_FOUND "FALSE") endif() -endif() +endif(PKG_CONFIG_EXECUTABLE AND NOT STARPU_GIVEN_BY_USER) -if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) OR (STARPU_DIR) ) +if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) OR (STARPU_GIVEN_BY_USER) ) # Looking for include # ------------------- @@ -793,7 +801,7 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) set(CMAKE_REQUIRED_LIBRARIES) endif(STARPU_LIBRARIES) -endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) OR (STARPU_DIR) ) +endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) OR (STARPU_GIVEN_BY_USER) ) if (STARPU_LIBRARIES) if (STARPU_LIBRARY_DIRS)