diff --git a/CMakeLists.txt b/CMakeLists.txt index 293f445440313e5ce6352fbb3ec584534f7f0682..705387cbcf18951e12954afec33f8533b25e1ac5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -544,7 +544,7 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/") list(APPEND STARPU_COMPONENT_LIST "FXT") endif() - find_package(STARPU ${CHAMELEON_STARPU_VERSION} + find_package(STARPU ${CHAMELEON_STARPU_VERSION} REQUIRED COMPONENTS ${STARPU_COMPONENT_LIST}) # Add definition and include_dir if found diff --git a/cmake_modules/morse/find/FindBLAS.cmake b/cmake_modules/morse/find/FindBLAS.cmake index 82b7dd4cfe55308d458dcff1ec231420bdf547f0..c1ff6586c76534196157157a8dd2abcc8b85b1e8 100644 --- a/cmake_modules/morse/find/FindBLAS.cmake +++ b/cmake_modules/morse/find/FindBLAS.cmake @@ -35,6 +35,10 @@ # BLAS_DIR - Where to find the base directory of blas # BLAS_INCDIR - Where to find the header files # BLAS_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: BLAS_DIR, BLAS_INCDIR, BLAS_LIBDIR +# For MKL case and if no paths are given as hints, we will try to use the MKLROOT +# environment variable ########## ### List of vendors (BLA_VENDOR) valid in this module ########## List of vendors (BLA_VENDOR) valid in this module @@ -180,8 +184,13 @@ macro(Check_Fortran_Libraries LIBRARIES _prefix _name _flags _list _thread) set(_libraries_work TRUE) set(${LIBRARIES}) set(_combined_name) + set(ENV_MKLROOT "$ENV{MKLROOT}") + set(ENV_BLAS_DIR "$ENV{BLAS_DIR}") + set(ENV_BLAS_LIBDIR "$ENV{BLAS_LIBDIR}") if (NOT _libdir) - if (BLAS_DIR) + if (BLAS_LIBDIR) + list(APPEND _libdir "${BLAS_LIBDIR}") + elseif (BLAS_DIR) list(APPEND _libdir "${BLAS_DIR}") list(APPEND _libdir "${BLAS_DIR}/lib") if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") @@ -191,9 +200,28 @@ macro(Check_Fortran_Libraries LIBRARIES _prefix _name _flags _list _thread) list(APPEND _libdir "${BLAS_DIR}/lib32") list(APPEND _libdir "${BLAS_DIR}/lib/ia32") endif() - elseif (BLAS_LIBDIR) - list(APPEND _libdir "${BLAS_LIBDIR}") + elseif(ENV_BLAS_LIBDIR) + list(APPEND _libdir "${ENV_BLAS_LIBDIR}") + elseif(ENV_BLAS_DIR) + list(APPEND _libdir "${ENV_BLAS_DIR}") + list(APPEND _libdir "${ENV_BLAS_DIR}/lib") + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + list(APPEND _libdir "${ENV_BLAS_DIR}/lib64") + list(APPEND _libdir "${ENV_BLAS_DIR}/lib/intel64") + else() + list(APPEND _libdir "${ENV_BLAS_DIR}/lib32") + list(APPEND _libdir "${ENV_BLAS_DIR}/lib/ia32") + endif() else() + if (ENV_MKLROOT) + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + list(APPEND _libdir "${ENV_MKLROOT}/lib64") + list(APPEND _libdir "${ENV_MKLROOT}/lib/intel64") + else() + list(APPEND _libdir "${ENV_MKLROOT}/lib32") + list(APPEND _libdir "${ENV_MKLROOT}/lib/ia32") + endif() + endif() if (WIN32) string(REPLACE ":" ";" _libdir2 "$ENV{LIB}") elseif (APPLE) @@ -370,10 +398,12 @@ if (BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All") if (CMAKE_C_COMPILER_NAME STREQUAL "gcc" OR CMAKE_C_COMPILER_NAME STREQUAL "cc") list(APPEND BLAS_SEARCH_LIBS - "mkl_blas95_lp64 mkl_intel_lp64 mkl_gnu_thread mkl_core gomp") + "mkl_blas95_lp64 mkl_intel_lp64 mkl_gnu_thread mkl_core") + set(OMP_LIB "-lgomp") else () list(APPEND BLAS_SEARCH_LIBS - "mkl_blas95_lp64 mkl_intel_lp64 mkl_intel_thread mkl_core iomp5") + "mkl_blas95_lp64 mkl_intel_lp64 mkl_intel_thread mkl_core") + set(OMP_LIB "-liomp5") endif () endif () if (BLA_VENDOR STREQUAL "Intel10_64lp_seq" OR BLA_VENDOR STREQUAL "All") @@ -442,10 +472,12 @@ if (BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All") if (CMAKE_C_COMPILER_NAME STREQUAL "gcc" OR CMAKE_C_COMPILER_NAME STREQUAL "cc") list(APPEND BLAS_SEARCH_LIBS - "mkl_intel_lp64 mkl_gnu_thread mkl_core gomp") + "mkl_intel_lp64 mkl_gnu_thread mkl_core") + set(OMP_LIB "-lgomp") else () list(APPEND BLAS_SEARCH_LIBS - "mkl_intel_lp64 mkl_intel_thread mkl_core iomp5") + "mkl_intel_lp64 mkl_intel_thread mkl_core") + set(OMP_LIB "-liomp5") endif () endif () if (BLA_VENDOR STREQUAL "Intel10_64lp_seq" OR BLA_VENDOR STREQUAL "All") @@ -476,7 +508,7 @@ if (BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All") ${BLAS_mkl_SEARCH_SYMBOL} "${additional_flags}" "${SEARCH_LIBS}" - "${CMAKE_THREAD_LIBS_INIT};${LM}" + "${OMP_LIB};${CMAKE_THREAD_LIBS_INIT};${LM}" ) if(_LIBRARIES) set(BLAS_LINKER_FLAGS "${additional_flags}") @@ -936,12 +968,14 @@ endif(BLA_F95) set(CMAKE_FIND_LIBRARY_SUFFIXES ${_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) -if (BLAS_FOUND AND NOT BLAS_DIR) +if (BLAS_FOUND) list(GET BLAS_LIBRARIES 0 first_lib) get_filename_component(first_lib_path "${first_lib}" PATH) if (${first_lib_path} MATCHES "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)") string(REGEX REPLACE "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)" "" not_cached_dir "${first_lib_path}") - set(BLAS_DIR "${not_cached_dir}" CACHE PATH "Installation directory of BLAS library" FORCE) + set(BLAS_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of BLAS library" FORCE) + else() + set(BLAS_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of BLAS library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindCBLAS.cmake b/cmake_modules/morse/find/FindCBLAS.cmake index 28651763d71d443935068e7dd4200abbf1bdc0fe..d04995b2b7c169639b3eaa4534a694ea5c3cc6d4 100644 --- a/cmake_modules/morse/find/FindCBLAS.cmake +++ b/cmake_modules/morse/find/FindCBLAS.cmake @@ -39,6 +39,8 @@ # CBLAS_DIR - Where to find the base directory of cblas # CBLAS_INCDIR - Where to find the header files # CBLAS_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: CBLAS_DIR, CBLAS_INCDIR, CBLAS_LIBDIR # # CBLAS could be directly embedded in BLAS library (ex: Intel MKL) so that # we test a cblas function with the blas libraries found and set CBLAS @@ -148,17 +150,28 @@ if (BLAS_FOUND) # Add system include paths to search include # ------------------------------------------ unset(_inc_env) - if(WIN32) - string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + set(ENV_CBLAS_DIR "$ENV{CBLAS_DIR}") + set(ENV_CBLAS_INCDIR "$ENV{CBLAS_INCDIR}") + if(ENV_CBLAS_INCDIR) + list(APPEND _inc_env "${ENV_CBLAS_INCDIR}") + elseif(ENV_CBLAS_DIR) + list(APPEND _inc_env "${ENV_CBLAS_DIR}") + list(APPEND _inc_env "${ENV_CBLAS_DIR}/include") + list(APPEND _inc_env "${ENV_CBLAS_DIR}/include/cblas") else() - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{CPATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") + if(WIN32) + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") + else() + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{CPATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + endif() endif() list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") @@ -179,7 +192,7 @@ if (BLAS_FOUND) find_path(CBLAS_cblas.h_DIRS NAMES cblas.h HINTS ${CBLAS_DIR} - PATH_SUFFIXES include) + PATH_SUFFIXES "include" "include/cblas") else() set(CBLAS_cblas.h_DIRS "CBLAS_cblas.h_DIRS-NOTFOUND") find_path(CBLAS_cblas.h_DIRS @@ -207,16 +220,24 @@ if (BLAS_FOUND) # Add system library paths to search lib # -------------------------------------- unset(_lib_env) - if(WIN32) - string(REPLACE ":" ";" _lib_env "$ENV{LIB}") + set(ENV_CBLAS_LIBDIR "$ENV{CBLAS_LIBDIR}") + if(ENV_CBLAS_LIBDIR) + list(APPEND _lib_env "${ENV_CBLAS_LIBDIR}") + elseif(ENV_CBLAS_DIR) + list(APPEND _lib_env "${ENV_CBLAS_DIR}") + list(APPEND _lib_env "${ENV_CBLAS_DIR}/lib") else() - if(APPLE) - string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + if(WIN32) + string(REPLACE ":" ";" _lib_env "$ENV{LIB}") else() - string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + if(APPLE) + string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + else() + string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + endif() + list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") + list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() - list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") - list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() list(REMOVE_DUPLICATES _lib_env) @@ -337,12 +358,14 @@ else(BLAS_FOUND) endif(BLAS_FOUND) -if (CBLAS_LIBRARIES AND NOT CBLAS_DIR) +if (CBLAS_LIBRARIES) list(GET CBLAS_LIBRARIES 0 first_lib) get_filename_component(first_lib_path "${first_lib}" PATH) if (${first_lib_path} MATCHES "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)") string(REGEX REPLACE "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)" "" not_cached_dir "${first_lib_path}") - set(CBLAS_DIR "${not_cached_dir}" CACHE PATH "Installation directory of CBLAS library" FORCE) + set(CBLAS_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of CBLAS library" FORCE) + else() + set(CBLAS_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of CBLAS library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindCHAMELEON.cmake b/cmake_modules/morse/find/FindCHAMELEON.cmake index 011e3de3c868f2452a3f614ce39b1a69b7f64fdf..e627f8f25e74a021e41cc5e7987188fbad3279f4 100644 --- a/cmake_modules/morse/find/FindCHAMELEON.cmake +++ b/cmake_modules/morse/find/FindCHAMELEON.cmake @@ -48,6 +48,8 @@ # CHAMELEON_DIR - Where to find the base directory of chameleon # CHAMELEON_INCDIR - Where to find the header files # CHAMELEON_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: CHAMELEON_DIR, CHAMELEON_INCDIR, CHAMELEON_LIBDIR #============================================================================= # Copyright 2012-2013 Inria @@ -162,7 +164,7 @@ if(PKG_CONFIG_EXECUTABLE) endif() -if( (NOT PKG_CONFIG_EXECUTABLE AND NOT CHAMELEON_FOUND) OR NOT CHAMELEON_FOUND OR CHAMELEON_DIR ) +if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT CHAMELEON_FOUND) OR (CHAMELEON_DIR) ) if (NOT CHAMELEON_FIND_QUIETLY) message(STATUS "Looking for CHAMELEON - PkgConfig not used") @@ -370,17 +372,27 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT CHAMELEON_FOUND) OR NOT CHAMELEON_FOUND O # Add system include paths to search include # ------------------------------------------ unset(_inc_env) - if(WIN32) - string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + set(ENV_CHAMELEON_DIR "$ENV{CHAMELEON_DIR}") + set(ENV_CHAMELEON_INCDIR "$ENV{CHAMELEON_INCDIR}") + if(ENV_CHAMELEON_INCDIR) + list(APPEND _inc_env "${ENV_CHAMELEON_INCDIR}") + elseif(ENV_CHAMELEON_DIR) + list(APPEND _inc_env "${ENV_CHAMELEON_DIR}") + list(APPEND _inc_env "${ENV_CHAMELEON_DIR}/include") + list(APPEND _inc_env "${ENV_CHAMELEON_DIR}/include/chameleon") else() - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{CPATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") + if(WIN32) + string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + else() + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{CPATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + endif() endif() list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") @@ -429,16 +441,24 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT CHAMELEON_FOUND) OR NOT CHAMELEON_FOUND O # Add system library paths to search lib # -------------------------------------- unset(_lib_env) - if(WIN32) - string(REPLACE ":" ";" _lib_env "$ENV{LIB}") + set(ENV_CHAMELEON_LIBDIR "$ENV{CHAMELEON_LIBDIR}") + if(ENV_CHAMELEON_LIBDIR) + list(APPEND _lib_env "${ENV_CHAMELEON_LIBDIR}") + elseif(ENV_CHAMELEON_DIR) + list(APPEND _lib_env "${ENV_CHAMELEON_DIR}") + list(APPEND _lib_env "${ENV_CHAMELEON_DIR}/lib") else() - if(APPLE) - string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + if(WIN32) + string(REPLACE ":" ";" _lib_env "$ENV{LIB}") else() - string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + if(APPLE) + string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + else() + string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + endif() + list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") + list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() - list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") - list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() list(REMOVE_DUPLICATES _lib_env) @@ -735,9 +755,9 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT CHAMELEON_FOUND) OR NOT CHAMELEON_FOUND O set(CMAKE_REQUIRED_LIBRARIES) endif(CHAMELEON_LIBRARIES) -endif( (NOT PKG_CONFIG_EXECUTABLE AND NOT CHAMELEON_FOUND) OR NOT CHAMELEON_FOUND OR CHAMELEON_DIR) +endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT CHAMELEON_FOUND) OR (CHAMELEON_DIR) ) -if (CHAMELEON_LIBRARIES AND NOT CHAMELEON_DIR) +if (CHAMELEON_LIBRARIES) if (CHAMELEON_LIBRARY_DIRS) foreach(dir ${CHAMELEON_LIBRARY_DIRS}) if ("${dir}" MATCHES "chameleon") @@ -750,7 +770,9 @@ if (CHAMELEON_LIBRARIES AND NOT CHAMELEON_DIR) endif() if (${first_lib_path} MATCHES "/lib(32|64)?$") string(REGEX REPLACE "/lib(32|64)?$" "" not_cached_dir "${first_lib_path}") - set(CHAMELEON_DIR "${not_cached_dir}" CACHE PATH "Installation directory of CHAMELEON library" FORCE) + set(CHAMELEON_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of CHAMELEON library" FORCE) + else() + set(CHAMELEON_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of CHAMELEON library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindFFTW.cmake b/cmake_modules/morse/find/FindFFTW.cmake index 801c85207a3379156d667e5e29d06e17fb63f5e5..bf096c03d3abf8916fc7b2073d3eff34a828cebd 100644 --- a/cmake_modules/morse/find/FindFFTW.cmake +++ b/cmake_modules/morse/find/FindFFTW.cmake @@ -40,6 +40,10 @@ # FFTW_DIR - Where to find the base directory of fftw # FFTW_INCDIR - Where to find the header files # FFTW_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: FFTW_DIR, FFTW_INCDIR, FFTW_LIBDIR +# For MKL case and if no paths are given as hints, we will try to use the MKLROOT +# environment variable #============================================================================= # Copyright 2012-2013 Inria @@ -60,7 +64,7 @@ if (NOT FFTW_FOUND) - set(FFTW_DIR "" CACHE PATH "Installation directory of FFTW library") + set(FFTW_DIR "" CACHE PATH "Installation directory of FFTW library given by user") if (NOT FFTW_FIND_QUIETLY) message(STATUS "A cache variable, namely FFTW_DIR, has been set to specify the install directory of FFTW") endif() @@ -136,6 +140,14 @@ if (FFTW_LOOK_FOR_THREADS) endif() endif() +if (FFTW_LOOK_FOR_MKL) + if (FFTW_FIND_REQUIRED AND FFTW_FIND_REQUIRED_MKL) + find_package(Threads REQUIRED) + else() + find_package(Threads) + endif() +endif() + if (FFTW_LOOK_FOR_OMP) if (FFTW_FIND_REQUIRED AND FFTW_FIND_REQUIRED_OMP) find_package(OpenMP REQUIRED) @@ -144,16 +156,29 @@ if (FFTW_LOOK_FOR_OMP) endif() endif() -if( NOT FFTW_FOUND ) - - # Looking for include - # ------------------- - - # Add system include paths to search include - # ------------------------------------------ - unset(_inc_env) +# Looking for include +# ------------------- + +# Add system include paths to search include +# ------------------------------------------ +unset(_inc_env) +set(ENV_MKLROOT "$ENV{MKLROOT}") +set(ENV_FFTW_DIR "$ENV{FFTW_DIR}") +set(ENV_FFTW_INCDIR "$ENV{FFTW_INCDIR}") +if(ENV_FFTW_INCDIR) + list(APPEND _inc_env "${ENV_FFTW_INCDIR}") +elseif(ENV_FFTW_DIR) + list(APPEND _inc_env "${ENV_FFTW_DIR}") + list(APPEND _inc_env "${ENV_FFTW_DIR}/include") + list(APPEND _inc_env "${ENV_FFTW_DIR}/include/fftw") +else() + if (ENV_MKLROOT) + list(APPEND _inc_env "${ENV_MKLROOT}/include/fftw") + endif() + # system variables if(WIN32) - string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") else() string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") list(APPEND _inc_env "${_path_env}") @@ -164,271 +189,297 @@ if( NOT FFTW_FOUND ) string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") list(APPEND _inc_env "${_path_env}") endif() - list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") - list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") - list(REMOVE_DUPLICATES _inc_env) - - # set paths where to look for - set(PATH_TO_LOOK_FOR "${_inc_env}") - - # Try to find the fftw header in the given paths - # ------------------------------------------------- - # call cmake macro to find the header path - if(FFTW_INCDIR) +endif() +list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") +list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") +list(REMOVE_DUPLICATES _inc_env) + +# set paths where to look for +set(PATH_TO_LOOK_FOR "${_inc_env}") + +# Try to find the fftw header in the given paths +# ------------------------------------------------- +# call cmake macro to find the header path +if(FFTW_INCDIR) + set(FFTW_fftw3.h_DIRS "FFTW_fftw3.h_DIRS-NOTFOUND") + find_path(FFTW_fftw3.h_DIRS + NAMES fftw3.h + HINTS ${FFTW_INCDIR}) +else() + if(FFTW_DIR) set(FFTW_fftw3.h_DIRS "FFTW_fftw3.h_DIRS-NOTFOUND") find_path(FFTW_fftw3.h_DIRS NAMES fftw3.h - HINTS ${FFTW_INCDIR}) + HINTS ${FFTW_DIR} + PATH_SUFFIXES "include" "include/fftw") else() - if(FFTW_DIR) - set(FFTW_fftw3.h_DIRS "FFTW_fftw3.h_DIRS-NOTFOUND") - find_path(FFTW_fftw3.h_DIRS - NAMES fftw3.h - HINTS ${FFTW_DIR} - PATH_SUFFIXES include) + set(FFTW_fftw3.h_DIRS "FFTW_fftw3.h_DIRS-NOTFOUND") + find_path(FFTW_fftw3.h_DIRS + NAMES fftw3.h + HINTS ${PATH_TO_LOOK_FOR}) + endif() +endif() +mark_as_advanced(FFTW_fftw3.h_DIRS) + +# Add path to cmake variable +# ------------------------------------ +if (FFTW_fftw3.h_DIRS) + set(FFTW_INCLUDE_DIRS "${FFTW_fftw3.h_DIRS}") +else () + set(FFTW_INCLUDE_DIRS "FFTW_INCLUDE_DIRS-NOTFOUND") + if(NOT FFTW_FIND_QUIETLY) + message(STATUS "Looking for FFTW -- fftw3.h not found") + endif() +endif () + + +# Looking for lib +# --------------- + +# Add system library paths to search lib +# -------------------------------------- +unset(_lib_env) +set(ENV_FFTW_LIBDIR "$ENV{FFTW_LIBDIR}") +if(ENV_FFTW_LIBDIR) + list(APPEND _lib_env "${ENV_FFTW_LIBDIR}") +elseif(ENV_FFTW_DIR) + list(APPEND _lib_env "${ENV_FFTW_DIR}") + list(APPEND _lib_env "${ENV_FFTW_DIR}/lib") + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + list(APPEND _lib_env "${ENV_FFTW_DIR}/lib64") + list(APPEND _lib_env "${ENV_FFTW_DIR}/lib/intel64") + else() + list(APPEND _lib_env "${ENV_FFTW_DIR}/lib32") + list(APPEND _lib_env "${ENV_FFTW_DIR}/lib/ia32") + endif() +else() + if (ENV_MKLROOT) + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + list(APPEND _lib_env "${ENV_MKLROOT}/lib64") + list(APPEND _lib_env "${ENV_MKLROOT}/lib/intel64") else() - set(FFTW_fftw3.h_DIRS "FFTW_fftw3.h_DIRS-NOTFOUND") - find_path(FFTW_fftw3.h_DIRS - NAMES fftw3.h - HINTS ${PATH_TO_LOOK_FOR}) + list(APPEND _lib_env "${ENV_MKLROOT}/lib32") + list(APPEND _lib_env "${ENV_MKLROOT}/lib/ia32") endif() endif() - mark_as_advanced(FFTW_fftw3.h_DIRS) - - # Add path to cmake variable - # ------------------------------------ - if (FFTW_fftw3.h_DIRS) - set(FFTW_INCLUDE_DIRS "${FFTW_fftw3.h_DIRS}") - else () - set(FFTW_INCLUDE_DIRS "FFTW_INCLUDE_DIRS-NOTFOUND") - if(NOT FFTW_FIND_QUIETLY) - message(STATUS "Looking for FFTW -- fftw3.h not found") - endif() - endif () - - - # Looking for lib - # --------------- - - # Add system library paths to search lib - # -------------------------------------- - unset(_lib_env) if(WIN32) - string(REPLACE ":" ";" _lib_env "$ENV{LIB}") + string(REPLACE ":" ";" _lib_env2 "$ENV{LIB}") else() if(APPLE) - string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + string(REPLACE ":" ";" _lib_env2 "$ENV{DYLD_LIBRARY_PATH}") else() - string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + string(REPLACE ":" ";" _lib_env2 "$ENV{LD_LIBRARY_PATH}") endif() + list(APPEND _lib_env "${_lib_env2}") list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() - list(REMOVE_DUPLICATES _lib_env) - - # set paths where to look for - set(PATH_TO_LOOK_FOR "${_lib_env}") - - if(FFTW_LOOK_FOR_FFTW_SIMPLE) - set(FFTW_PREC "f") - set(FFTW_PREC_TESTFUNC "s") - elseif(FFTW_LOOK_FOR_FFTW_DOUBLE) - set(FFTW_PREC "") - set(FFTW_PREC_TESTFUNC "d") - elseif(FFTW_LOOK_FOR_FFTW_LONG) - set(FFTW_PREC "l") - set(FFTW_PREC_TESTFUNC "l") - elseif(FFTW_LOOK_FOR_FFTW_QUAD) - set(FFTW_PREC "q") - set(FFTW_PREC_TESTFUNC "q") - endif() +endif() +list(REMOVE_DUPLICATES _lib_env) + +# set paths where to look for +set(PATH_TO_LOOK_FOR "${_lib_env}") + +if(FFTW_LOOK_FOR_FFTW_SIMPLE) + set(FFTW_PREC "f") + set(FFTW_PREC_TESTFUNC "s") +elseif(FFTW_LOOK_FOR_FFTW_DOUBLE) + set(FFTW_PREC "") + set(FFTW_PREC_TESTFUNC "d") +elseif(FFTW_LOOK_FOR_FFTW_LONG) + set(FFTW_PREC "l") + set(FFTW_PREC_TESTFUNC "l") +elseif(FFTW_LOOK_FOR_FFTW_QUAD) + set(FFTW_PREC "q") + set(FFTW_PREC_TESTFUNC "q") +endif() - if (FFTW_LOOK_FOR_MKL) +if (FFTW_LOOK_FOR_MKL) - set(FFTW_libs_to_find "mkl_intel_lp64;mkl_sequential;mkl_core") + set(FFTW_libs_to_find "mkl_intel_lp64;mkl_sequential;mkl_core") - # Try to find the MKL fftw lib in the given paths - # ----------------------------------------------- + # Try to find the MKL fftw lib in the given paths + # ----------------------------------------------- - # call cmake macro to find the lib path - if(FFTW_LIBDIR) + # call cmake macro to find the lib path + if(FFTW_LIBDIR) + foreach(fftw_lib ${FFTW_libs_to_find}) + set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") + find_library(FFTW_${fftw_lib}_LIBRARY + NAMES ${fftw_lib} + HINTS ${FFTW_LIBDIR}) + endforeach() + else() + if(FFTW_DIR) foreach(fftw_lib ${FFTW_libs_to_find}) set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") find_library(FFTW_${fftw_lib}_LIBRARY NAMES ${fftw_lib} - HINTS ${FFTW_LIBDIR}) + HINTS ${FFTW_DIR} + PATH_SUFFIXES lib lib32 lib64) endforeach() else() - if(FFTW_DIR) - foreach(fftw_lib ${FFTW_libs_to_find}) - set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") - find_library(FFTW_${fftw_lib}_LIBRARY - NAMES ${fftw_lib} - HINTS ${FFTW_DIR} - PATH_SUFFIXES lib lib32 lib64) - endforeach() - else() - foreach(fftw_lib ${FFTW_libs_to_find}) - set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") - find_library(FFTW_${fftw_lib}_LIBRARY - NAMES ${fftw_lib} - HINTS ${PATH_TO_LOOK_FOR}) - endforeach() - endif() + foreach(fftw_lib ${FFTW_libs_to_find}) + set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") + find_library(FFTW_${fftw_lib}_LIBRARY + NAMES ${fftw_lib} + HINTS ${PATH_TO_LOOK_FOR}) + endforeach() endif() + endif() - else(FFTW_LOOK_FOR_MKL) +else(FFTW_LOOK_FOR_MKL) - if (FFTW_LOOK_FOR_THREADS) - set(FFTW_libs_to_find "fftw3${FFTW_PREC}_threads;fftw3${FFTW_PREC}") - elseif (FFTW_LOOK_FOR_OMP) - set(FFTW_libs_to_find "fftw3${FFTW_PREC}_omp;fftw3${FFTW_PREC}") - else() - set(FFTW_libs_to_find "fftw3${FFTW_PREC}") - endif() + if (FFTW_LOOK_FOR_THREADS) + set(FFTW_libs_to_find "fftw3${FFTW_PREC}_threads;fftw3${FFTW_PREC}") + elseif (FFTW_LOOK_FOR_OMP) + set(FFTW_libs_to_find "fftw3${FFTW_PREC}_omp;fftw3${FFTW_PREC}") + else() + set(FFTW_libs_to_find "fftw3${FFTW_PREC}") + endif() - # Try to find the fftw lib in the given paths - # ---------------------------------------------- + # Try to find the fftw lib in the given paths + # ---------------------------------------------- - # call cmake macro to find the lib path - if(FFTW_LIBDIR) + # call cmake macro to find the lib path + if(FFTW_LIBDIR) + foreach(fftw_lib ${FFTW_libs_to_find}) + set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") + find_library(FFTW_${fftw_lib}_LIBRARY + NAMES ${fftw_lib} + HINTS ${FFTW_LIBDIR}) + endforeach() + else() + if(FFTW_DIR) foreach(fftw_lib ${FFTW_libs_to_find}) set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") find_library(FFTW_${fftw_lib}_LIBRARY NAMES ${fftw_lib} - HINTS ${FFTW_LIBDIR}) + HINTS ${FFTW_DIR} + PATH_SUFFIXES lib lib32 lib64) endforeach() else() - if(FFTW_DIR) - foreach(fftw_lib ${FFTW_libs_to_find}) - set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") - find_library(FFTW_${fftw_lib}_LIBRARY - NAMES ${fftw_lib} - HINTS ${FFTW_DIR} - PATH_SUFFIXES lib lib32 lib64) - endforeach() - else() - foreach(fftw_lib ${FFTW_libs_to_find}) - set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") - find_library(FFTW_${fftw_lib}_LIBRARY - NAMES ${fftw_lib} - HINTS ${PATH_TO_LOOK_FOR}) - endforeach() - endif() + foreach(fftw_lib ${FFTW_libs_to_find}) + set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") + find_library(FFTW_${fftw_lib}_LIBRARY + NAMES ${fftw_lib} + HINTS ${PATH_TO_LOOK_FOR}) + endforeach() endif() + endif() - endif(FFTW_LOOK_FOR_MKL) - - # If found, add path to cmake variable - # ------------------------------------ - set(FFTW_LIBRARIES "") - set(FFTW_LIBRARY_DIRS "") - foreach(fftw_lib ${FFTW_libs_to_find}) - - if (FFTW_${fftw_lib}_LIBRARY) - get_filename_component(${fftw_lib}_lib_path "${FFTW_${fftw_lib}_LIBRARY}" PATH) - # set cmake variables - list(APPEND FFTW_LIBRARIES "${FFTW_${fftw_lib}_LIBRARY}") - list(APPEND FFTW_LIBRARY_DIRS "${${fftw_lib}_lib_path}") - else () - list(APPEND FFTW_LIBRARIES "${FFTW_${fftw_lib}_LIBRARY}") - if (NOT FFTW_FIND_QUIETLY) - message(STATUS "Looking for FFTW -- lib ${fftw_lib} not found") - endif() - endif () - mark_as_advanced(FFTW_${fftw_lib}_LIBRARY) +endif(FFTW_LOOK_FOR_MKL) - endforeach() +# If found, add path to cmake variable +# ------------------------------------ +set(FFTW_LIBRARIES "") +set(FFTW_LIBRARY_DIRS "") +foreach(fftw_lib ${FFTW_libs_to_find}) - list(REMOVE_DUPLICATES FFTW_INCLUDE_DIRS) - list(REMOVE_DUPLICATES FFTW_LIBRARY_DIRS) + if (FFTW_${fftw_lib}_LIBRARY) + get_filename_component(${fftw_lib}_lib_path "${FFTW_${fftw_lib}_LIBRARY}" PATH) + # set cmake variables + list(APPEND FFTW_LIBRARIES "${FFTW_${fftw_lib}_LIBRARY}") + list(APPEND FFTW_LIBRARY_DIRS "${${fftw_lib}_lib_path}") + else () + list(APPEND FFTW_LIBRARIES "${FFTW_${fftw_lib}_LIBRARY}") + if (NOT FFTW_FIND_QUIETLY) + message(STATUS "Looking for FFTW -- lib ${fftw_lib} not found") + endif() + endif () + mark_as_advanced(FFTW_${fftw_lib}_LIBRARY) - # check a function to validate the find - if(FFTW_LIBRARIES) +endforeach() - set(REQUIRED_FLAGS) - set(REQUIRED_LDFLAGS) - set(REQUIRED_INCDIRS) - set(REQUIRED_LIBDIRS) - set(REQUIRED_LIBS) +list(REMOVE_DUPLICATES FFTW_INCLUDE_DIRS) +list(REMOVE_DUPLICATES FFTW_LIBRARY_DIRS) - # FFTW - if (FFTW_INCLUDE_DIRS) - set(REQUIRED_INCDIRS "${FFTW_INCLUDE_DIRS}") - endif() - if (FFTW_LIBRARY_DIRS) - set(REQUIRED_LIBDIRS "${FFTW_LIBRARY_DIRS}") - endif() - set(REQUIRED_LIBS "${FFTW_LIBRARIES}") - # THREADS - if (FFTW_LOOK_FOR_THREADS) - list(APPEND REQUIRED_LIBS "${CMAKE_THREAD_LIBS_INIT}") - endif() - # OMP - if(FFTW_LOOK_FOR_OMP) - if (CMAKE_C_COMPILER MATCHES ".+gcc.*") - set(REQUIRED_FLAGS "-fopenmp") - endif() +# check a function to validate the find +if(FFTW_LIBRARIES) + + set(REQUIRED_FLAGS) + set(REQUIRED_LDFLAGS) + set(REQUIRED_INCDIRS) + set(REQUIRED_LIBDIRS) + set(REQUIRED_LIBS) + + # FFTW + if (FFTW_INCLUDE_DIRS) + set(REQUIRED_INCDIRS "${FFTW_INCLUDE_DIRS}") + endif() + if (FFTW_LIBRARY_DIRS) + set(REQUIRED_LIBDIRS "${FFTW_LIBRARY_DIRS}") + endif() + set(REQUIRED_LIBS "${FFTW_LIBRARIES}") + # THREADS + if (FFTW_LOOK_FOR_THREADS) + list(APPEND REQUIRED_LIBS "${CMAKE_THREAD_LIBS_INIT}") + endif() + # OMP + if(FFTW_LOOK_FOR_OMP) + if (CMAKE_C_COMPILER MATCHES ".+gcc.*") + set(REQUIRED_FLAGS "-fopenmp") endif() - # MKL - if(FFTW_LOOK_FOR_MKL) - list(APPEND REQUIRED_LIBS "${CMAKE_THREAD_LIBS_INIT};-lm") - if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_SYSTEM_NAME STREQUAL "Linux") - list(APPEND REQUIRED_LDFLAGS "-Wl,--no-as-needed") - endif() + endif() + # MKL + if(FFTW_LOOK_FOR_MKL) + list(APPEND REQUIRED_LIBS "${CMAKE_THREAD_LIBS_INIT};-lm") + if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_SYSTEM_NAME STREQUAL "Linux") + list(APPEND REQUIRED_LDFLAGS "-Wl,--no-as-needed") endif() + endif() - # set required libraries for link - set(CMAKE_REQUIRED_INCLUDES "${REQUIRED_INCDIRS}") - set(CMAKE_REQUIRED_LIBRARIES) - list(APPEND CMAKE_REQUIRED_LIBRARIES "${REQUIRED_LDFLAGS}") - foreach(lib_dir ${REQUIRED_LIBDIRS}) - list(APPEND CMAKE_REQUIRED_LIBRARIES "-L${lib_dir}") - endforeach() - list(APPEND CMAKE_REQUIRED_LIBRARIES "${REQUIRED_LIBS}") - list(APPEND CMAKE_REQUIRED_FLAGS "${REQUIRED_FLAGS}") - string(REGEX REPLACE "^ -" "-" CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}") - - # test link - unset(FFTW_WORKS CACHE) - include(CheckFunctionExists) - check_function_exists(${FFTW_PREC_TESTFUNC}fftw_execute_ FFTW_WORKS) - mark_as_advanced(FFTW_WORKS) - - if(FFTW_WORKS) - # save link with dependencies - set(FFTW_LIBRARIES_DEP "${REQUIRED_LIBS}") - set(FFTW_LIBRARY_DIRS_DEP "${REQUIRED_LIBDIRS}") - set(FFTW_INCLUDE_DIRS_DEP "${REQUIRED_INCDIRS}") - set(FFTW_C_FLAGS "${REQUIRED_FLAGS}") - set(FFTW_LINKER_FLAGS "${REQUIRED_LDFLAGS}") - list(REMOVE_DUPLICATES FFTW_LIBRARY_DIRS_DEP) - list(REMOVE_DUPLICATES FFTW_INCLUDE_DIRS_DEP) - list(REMOVE_DUPLICATES FFTW_LINKER_FLAGS) - else() - if(NOT FFTW_FIND_QUIETLY) - message(STATUS "Looking for FFTW : test of ${FFTW_PREC_TESTFUNC}fftw_execute_ with fftw library fails") - message(STATUS "CMAKE_REQUIRED_LIBRARIES: ${CMAKE_REQUIRED_LIBRARIES}") - message(STATUS "CMAKE_REQUIRED_INCLUDES: ${CMAKE_REQUIRED_INCLUDES}") - message(STATUS "CMAKE_REQUIRED_FLAGS: ${CMAKE_REQUIRED_FLAGS}") - message(STATUS "Check in CMakeFiles/CMakeError.log to figure out why it fails") - endif() - else() - set(FFTW_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) + # set required libraries for link + set(CMAKE_REQUIRED_INCLUDES "${REQUIRED_INCDIRS}") + set(CMAKE_REQUIRED_LIBRARIES) + list(APPEND CMAKE_REQUIRED_LIBRARIES "${REQUIRED_LDFLAGS}") + foreach(lib_dir ${REQUIRED_LIBDIRS}) + list(APPEND CMAKE_REQUIRED_LIBRARIES "-L${lib_dir}") + endforeach() + list(APPEND CMAKE_REQUIRED_LIBRARIES "${REQUIRED_LIBS}") + list(APPEND CMAKE_REQUIRED_FLAGS "${REQUIRED_FLAGS}") + string(REGEX REPLACE "^ -" "-" CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}") + + # test link + unset(FFTW_WORKS CACHE) + include(CheckFunctionExists) + check_function_exists(${FFTW_PREC_TESTFUNC}fftw_execute_ FFTW_WORKS) + mark_as_advanced(FFTW_WORKS) + + if(FFTW_WORKS) + # save link with dependencies + set(FFTW_LIBRARIES_DEP "${REQUIRED_LIBS}") + set(FFTW_LIBRARY_DIRS_DEP "${REQUIRED_LIBDIRS}") + set(FFTW_INCLUDE_DIRS_DEP "${REQUIRED_INCDIRS}") + set(FFTW_C_FLAGS "${REQUIRED_FLAGS}") + set(FFTW_LINKER_FLAGS "${REQUIRED_LDFLAGS}") + list(REMOVE_DUPLICATES FFTW_LIBRARY_DIRS_DEP) + list(REMOVE_DUPLICATES FFTW_INCLUDE_DIRS_DEP) + list(REMOVE_DUPLICATES FFTW_LINKER_FLAGS) + else() + if(NOT FFTW_FIND_QUIETLY) + message(STATUS "Looking for FFTW : test of ${FFTW_PREC_TESTFUNC}fftw_execute_ with fftw library fails") + message(STATUS "CMAKE_REQUIRED_LIBRARIES: ${CMAKE_REQUIRED_LIBRARIES}") + message(STATUS "CMAKE_REQUIRED_INCLUDES: ${CMAKE_REQUIRED_INCLUDES}") + message(STATUS "CMAKE_REQUIRED_FLAGS: ${CMAKE_REQUIRED_FLAGS}") + message(STATUS "Check in CMakeFiles/CMakeError.log to figure out why it fails") endif() - set(CMAKE_REQUIRED_INCLUDES) - set(CMAKE_REQUIRED_FLAGS) - set(CMAKE_REQUIRED_LIBRARIES) - endif(FFTW_LIBRARIES) - -endif( NOT FFTW_FOUND ) + else() + set(FFTW_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) + endif() + set(CMAKE_REQUIRED_INCLUDES) + set(CMAKE_REQUIRED_FLAGS) + set(CMAKE_REQUIRED_LIBRARIES) +endif(FFTW_LIBRARIES) -if (FFTW_LIBRARIES AND NOT FFTW_DIR) +if (FFTW_LIBRARIES) list(GET FFTW_LIBRARIES 0 first_lib) get_filename_component(first_lib_path "${first_lib}" PATH) if (${first_lib_path} MATCHES "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)") string(REGEX REPLACE "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)" "" not_cached_dir "${first_lib_path}") - set(FFTW_DIR "${not_cached_dir}" CACHE PATH "Installation directory of FFTW library" FORCE) + set(FFTW_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of FFTW library" FORCE) + else() + set(FFTW_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of FFTW library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindFXT.cmake b/cmake_modules/morse/find/FindFXT.cmake index cb664cf29c49bdaa88860234768f414d1bb624da..7aa0ef4e930648bb46119184b4b23d4d70acce1e 100644 --- a/cmake_modules/morse/find/FindFXT.cmake +++ b/cmake_modules/morse/find/FindFXT.cmake @@ -25,6 +25,8 @@ # FXT_DIR - Where to find the base directory of fxt # FXT_INCDIR - Where to find the header files # FXT_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: FXT_DIR, FXT_INCDIR, FXT_LIBDIR #============================================================================= # Copyright 2012-2013 Inria @@ -74,7 +76,7 @@ if(PKG_CONFIG_EXECUTABLE) endif() -if( (NOT PKG_CONFIG_EXECUTABLE AND NOT FXT_FOUND) OR NOT FXT_FOUND OR FXT_DIR) +if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT FXT_FOUND) OR (FXT_DIR) ) if (NOT FXT_FIND_QUIETLY) message(STATUS "Looking for FXT - PkgConfig not used") @@ -86,17 +88,27 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT FXT_FOUND) OR NOT FXT_FOUND OR FXT_DIR) # Add system include paths to search include # ------------------------------------------ unset(_inc_env) - if(WIN32) - string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + set(ENV_FXT_DIR "$ENV{FXT_DIR}") + set(ENV_FXT_INCDIR "$ENV{FXT_INCDIR}") + if(ENV_FXT_INCDIR) + list(APPEND _inc_env "${ENV_FXT_INCDIR}") + elseif(ENV_FXT_DIR) + list(APPEND _inc_env "${ENV_FXT_DIR}") + list(APPEND _inc_env "${ENV_FXT_DIR}/include") + list(APPEND _inc_env "${ENV_FXT_DIR}/include/fxt") else() - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{CPATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") + if(WIN32) + string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + else() + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{CPATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + endif() endif() list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") @@ -116,7 +128,7 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT FXT_FOUND) OR NOT FXT_FOUND OR FXT_DIR) find_path(FXT_fxt.h_DIRS NAMES fxt.h HINTS ${FXT_DIR} - PATH_SUFFIXES include) + PATH_SUFFIXES "include" "include/fxt") else() set(FXT_fxt.h_DIRS "FXT_fxt.h_DIRS-NOTFOUND") find_path(FXT_fxt.h_DIRS @@ -148,16 +160,24 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT FXT_FOUND) OR NOT FXT_FOUND OR FXT_DIR) # Add system library paths to search lib # -------------------------------------- unset(_lib_env) - if(WIN32) - string(REPLACE ":" ";" _lib_env "$ENV{LIB}") + set(ENV_FXT_LIBDIR "$ENV{FXT_LIBDIR}") + if(ENV_FXT_LIBDIR) + list(APPEND _lib_env "${ENV_FXT_LIBDIR}") + elseif(ENV_FXT_DIR) + list(APPEND _lib_env "${ENV_FXT_DIR}") + list(APPEND _lib_env "${ENV_FXT_DIR}/lib") else() - if(APPLE) - string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + if(WIN32) + string(REPLACE ":" ";" _lib_env "$ENV{LIB}") else() - string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + if(APPLE) + string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + else() + string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + endif() + list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") + list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() - list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") - list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() list(REMOVE_DUPLICATES _lib_env) @@ -249,9 +269,9 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT FXT_FOUND) OR NOT FXT_FOUND OR FXT_DIR) set(CMAKE_REQUIRED_LIBRARIES) endif(FXT_LIBRARIES) -endif( (NOT PKG_CONFIG_EXECUTABLE AND NOT FXT_FOUND) OR NOT FXT_FOUND OR FXT_DIR) +endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT FXT_FOUND) OR (FXT_DIR) ) -if (FXT_LIBRARIES AND NOT FXT_DIR) +if (FXT_LIBRARIES) if (FXT_LIBRARY_DIRS) list(GET FXT_LIBRARY_DIRS 0 first_lib_path) else() @@ -260,7 +280,9 @@ if (FXT_LIBRARIES AND NOT FXT_DIR) endif() if (${first_lib_path} MATCHES "/lib(32|64)?$") string(REGEX REPLACE "/lib(32|64)?$" "" not_cached_dir "${first_lib_path}") - set(FXT_DIR "${not_cached_dir}" CACHE PATH "Installation directory of FXT library" FORCE) + set(FXT_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of FXT library" FORCE) + else() + set(FXT_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of FXT library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindHWLOC.cmake b/cmake_modules/morse/find/FindHWLOC.cmake index ebdaac40722abee4d86a3a787e6c5a2ff2968160..fd69aa4c9881f8f0431aeed186422de62f1b2603 100644 --- a/cmake_modules/morse/find/FindHWLOC.cmake +++ b/cmake_modules/morse/find/FindHWLOC.cmake @@ -25,6 +25,8 @@ # HWLOC_DIR - Where to find the base directory of hwloc # HWLOC_INCDIR - Where to find the header files # HWLOC_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: HWLOC_DIR, HWLOC_INCDIR, HWLOC_LIBDIR #============================================================================= # Copyright 2012-2013 Inria @@ -75,7 +77,7 @@ if(PKG_CONFIG_EXECUTABLE) endif() -if( (NOT PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) OR NOT HWLOC_FOUND OR HWLOC_DIR) +if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) OR (HWLOC_DIR) ) if (NOT HWLOC_FIND_QUIETLY) message(STATUS "Looking for HWLOC - PkgConfig not used") @@ -87,17 +89,27 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) OR NOT HWLOC_FOUND OR HWLOC_ # Add system include paths to search include # ------------------------------------------ unset(_inc_env) - if(WIN32) - string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + 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) + list(APPEND _inc_env "${ENV_HWLOC_DIR}") + list(APPEND _inc_env "${ENV_HWLOC_DIR}/include") + list(APPEND _inc_env "${ENV_HWLOC_DIR}/include/hwloc") else() - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{CPATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") + if(WIN32) + string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + else() + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{CPATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + endif() endif() list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") @@ -120,7 +132,7 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) OR NOT HWLOC_FOUND OR HWLOC_ find_path(HWLOC_hwloc.h_DIRS NAMES hwloc.h HINTS ${HWLOC_DIR} - PATH_SUFFIXES include) + PATH_SUFFIXES "include" "include/hwloc") else() set(HWLOC_hwloc.h_DIRS "HWLOC_hwloc.h_DIRS-NOTFOUND") find_path(HWLOC_hwloc.h_DIRS @@ -152,16 +164,24 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) OR NOT HWLOC_FOUND OR HWLOC_ # Add system library paths to search lib # -------------------------------------- unset(_lib_env) - if(WIN32) - string(REPLACE ":" ";" _lib_env "$ENV{LIB}") + set(ENV_HWLOC_LIBDIR "$ENV{HWLOC_LIBDIR}") + if(ENV_HWLOC_LIBDIR) + list(APPEND _lib_env "${ENV_HWLOC_LIBDIR}") + elseif(ENV_HWLOC_DIR) + list(APPEND _lib_env "${ENV_HWLOC_DIR}") + list(APPEND _lib_env "${ENV_HWLOC_DIR}/lib") else() - if(APPLE) - string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + if(WIN32) + string(REPLACE ":" ";" _lib_env "$ENV{LIB}") else() - string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + if(APPLE) + string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + else() + string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + endif() + list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") + list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() - list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") - list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() list(REMOVE_DUPLICATES _lib_env) @@ -256,9 +276,9 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) OR NOT HWLOC_FOUND OR HWLOC_ set(CMAKE_REQUIRED_LIBRARIES) endif(HWLOC_LIBRARIES) -endif( (NOT PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) OR NOT HWLOC_FOUND OR HWLOC_DIR) +endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT HWLOC_FOUND) OR (HWLOC_DIR) ) -if (HWLOC_LIBRARIES AND NOT HWLOC_DIR) +if (HWLOC_LIBRARIES) if (HWLOC_LIBRARY_DIRS) list(GET HWLOC_LIBRARY_DIRS 0 first_lib_path) else() @@ -267,7 +287,9 @@ if (HWLOC_LIBRARIES AND NOT HWLOC_DIR) endif() if (${first_lib_path} MATCHES "/lib(32|64)?$") string(REGEX REPLACE "/lib(32|64)?$" "" not_cached_dir "${first_lib_path}") - set(HWLOC_DIR "${not_cached_dir}" CACHE PATH "Installation directory of HWLOC library" FORCE) + set(HWLOC_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of HWLOC library" FORCE) + else() + set(HWLOC_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of HWLOC library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindLAPACK.cmake b/cmake_modules/morse/find/FindLAPACK.cmake index 66070b08473d9d4af4ef9050a5ce0c3d84b259d5..fce00b50684ce8ff4a932b71f1f68353d7f08793 100644 --- a/cmake_modules/morse/find/FindLAPACK.cmake +++ b/cmake_modules/morse/find/FindLAPACK.cmake @@ -35,6 +35,10 @@ # LAPACK_DIR - Where to find the base directory of lapack # LAPACK_INCDIR - Where to find the header files # LAPACK_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: LAPACK_DIR, LAPACK_INCDIR, LAPACK_LIBDIR +# For MKL case and if no paths are given as hints, we will try to use the MKLROOT +# environment variable # Note that if BLAS_DIR is set, it will also look for lapack in it ### List of vendors (BLA_VENDOR) valid in this module ## Intel(mkl), ACML,Apple, NAS, Generic @@ -154,21 +158,40 @@ macro(Check_Lapack_Libraries LIBRARIES _prefix _name _flags _list _blas _threads set(_libraries_work TRUE) set(${LIBRARIES}) set(_combined_name) +set(ENV_MKLROOT "$ENV{MKLROOT}") +set(ENV_BLAS_DIR "$ENV{BLAS_DIR}") +set(ENV_BLAS_LIBDIR "$ENV{BLAS_LIBDIR}") +set(ENV_LAPACK_DIR "$ENV{LAPACK_DIR}") +set(ENV_LAPACK_LIBDIR "$ENV{LAPACK_LIBDIR}") if (NOT _libdir) - if (BLAS_DIR) - list(APPEND _libdir "${BLAS_DIR}") - list(APPEND _libdir "${BLAS_DIR}/lib") - if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") - list(APPEND _libdir "${BLAS_DIR}/lib64") - list(APPEND _libdir "${BLAS_DIR}/lib/intel64") - else() - list(APPEND _libdir "${BLAS_DIR}/lib32") - list(APPEND _libdir "${BLAS_DIR}/lib/ia32") - endif() - elseif (BLAS_LIBDIR) - list(APPEND _libdir "${BLAS_LIBDIR}") - endif () - if (LAPACK_DIR) + if (BLAS_LIBDIR) + list(APPEND _libdir "${BLAS_LIBDIR}") + elseif (BLAS_DIR) + list(APPEND _libdir "${BLAS_DIR}") + list(APPEND _libdir "${BLAS_DIR}/lib") + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + list(APPEND _libdir "${BLAS_DIR}/lib64") + list(APPEND _libdir "${BLAS_DIR}/lib/intel64") + else() + list(APPEND _libdir "${BLAS_DIR}/lib32") + list(APPEND _libdir "${BLAS_DIR}/lib/ia32") + endif() + elseif(ENV_BLAS_LIBDIR) + list(APPEND _libdir "${ENV_BLAS_LIBDIR}") + elseif(ENV_BLAS_DIR) + list(APPEND _libdir "${ENV_BLAS_DIR}") + list(APPEND _libdir "${ENV_BLAS_DIR}/lib") + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + list(APPEND _libdir "${ENV_BLAS_DIR}/lib64") + list(APPEND _libdir "${ENV_BLAS_DIR}/lib/intel64") + else() + list(APPEND _libdir "${ENV_BLAS_DIR}/lib32") + list(APPEND _libdir "${ENV_BLAS_DIR}/lib/ia32") + endif() + endif() + if (LAPACK_LIBDIR) + list(APPEND _libdir "${LAPACK_LIBDIR}") + elseif (LAPACK_DIR) list(APPEND _libdir "${LAPACK_DIR}") list(APPEND _libdir "${LAPACK_DIR}/lib") if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") @@ -178,9 +201,28 @@ if (NOT _libdir) list(APPEND _libdir "${LAPACK_DIR}/lib32") list(APPEND _libdir "${LAPACK_DIR}/lib/ia32") endif() - elseif (LAPACK_LIBDIR) - list(APPEND _libdir "${LAPACK_LIBDIR}") + elseif(ENV_LAPACK_LIBDIR) + list(APPEND _libdir "${ENV_LAPACK_LIBDIR}") + elseif(ENV_LAPACK_DIR) + list(APPEND _libdir "${ENV_LAPACK_DIR}") + list(APPEND _libdir "${ENV_LAPACK_DIR}/lib") + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + list(APPEND _libdir "${ENV_LAPACK_DIR}/lib64") + list(APPEND _libdir "${ENV_LAPACK_DIR}/lib/intel64") + else() + list(APPEND _libdir "${ENV_LAPACK_DIR}/lib32") + list(APPEND _libdir "${ENV_LAPACK_DIR}/lib/ia32") + endif() else() + if (ENV_MKLROOT) + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + list(APPEND _libdir "${ENV_MKLROOT}/lib64") + list(APPEND _libdir "${ENV_MKLROOT}/lib/intel64") + else() + list(APPEND _libdir "${ENV_MKLROOT}/lib32") + list(APPEND _libdir "${ENV_MKLROOT}/lib/ia32") + endif() + endif() if (WIN32) string(REPLACE ":" ";" _libdir2 "$ENV{LIB}") elseif (APPLE) @@ -212,7 +254,7 @@ foreach(_library ${_list}) set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) endif (APPLE) else (BLA_STATIC) - if (CMAKE_SYSTEM_NAME STREQUAL "Linux") + if (CMAKE_SYSTEM_NAME STREQUAL "Linux") # for ubuntu's libblas3gf and liblapack3gf packages set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} .so.3gf) endif () @@ -287,71 +329,6 @@ if(BLAS_FOUND) endif(NOT BLA_VENDOR) endif ($ENV{BLA_VENDOR} MATCHES ".+") -if (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All") - if(NOT LAPACK_LIBRARIES) - check_lapack_libraries( - LAPACK_LIBRARIES - LAPACK - cheev - "" - "goto2" - "${BLAS_LIBRARIES}" - "" - ) - endif(NOT LAPACK_LIBRARIES) -endif (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All") - - -#acml lapack - if (BLA_VENDOR MATCHES "ACML.*" OR BLA_VENDOR STREQUAL "All") - if (BLAS_LIBRARIES MATCHES ".+acml.+") - set (LAPACK_LIBRARIES ${BLAS_LIBRARIES}) - endif () - endif () - -# Apple LAPACK library? -if (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All") - if(NOT LAPACK_LIBRARIES) - check_lapack_libraries( - LAPACK_LIBRARIES - LAPACK - cheev - "" - "Accelerate" - "${BLAS_LIBRARIES}" - "" - ) - endif(NOT LAPACK_LIBRARIES) -endif (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All") -if (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All") - if ( NOT LAPACK_LIBRARIES ) - check_lapack_libraries( - LAPACK_LIBRARIES - LAPACK - cheev - "" - "vecLib" - "${BLAS_LIBRARIES}" - "" - ) - endif ( NOT LAPACK_LIBRARIES ) -endif (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All") -# Generic LAPACK library? -if (BLA_VENDOR STREQUAL "Generic" OR - BLA_VENDOR STREQUAL "ATLAS" OR - BLA_VENDOR STREQUAL "All") - if ( NOT LAPACK_LIBRARIES ) - check_lapack_libraries( - LAPACK_LIBRARIES - LAPACK - cheev - "" - "lapack" - "${BLAS_LIBRARIES}" - "" - ) - endif ( NOT LAPACK_LIBRARIES ) -endif () #intel lapack if (BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All") if (NOT WIN32) @@ -431,6 +408,73 @@ if (BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All") endforeach () endif () endif() + +#goto lapack +if (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All") + if(NOT LAPACK_LIBRARIES) + check_lapack_libraries( + LAPACK_LIBRARIES + LAPACK + cheev + "" + "goto2" + "${BLAS_LIBRARIES}" + "" + ) + endif(NOT LAPACK_LIBRARIES) +endif (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All") + + +#acml lapack + if (BLA_VENDOR MATCHES "ACML.*" OR BLA_VENDOR STREQUAL "All") + if (BLAS_LIBRARIES MATCHES ".+acml.+") + set (LAPACK_LIBRARIES ${BLAS_LIBRARIES}) + endif () + endif () + +# Apple LAPACK library? +if (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All") + if(NOT LAPACK_LIBRARIES) + check_lapack_libraries( + LAPACK_LIBRARIES + LAPACK + cheev + "" + "Accelerate" + "${BLAS_LIBRARIES}" + "" + ) + endif(NOT LAPACK_LIBRARIES) +endif (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All") +if (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All") + if ( NOT LAPACK_LIBRARIES ) + check_lapack_libraries( + LAPACK_LIBRARIES + LAPACK + cheev + "" + "vecLib" + "${BLAS_LIBRARIES}" + "" + ) + endif ( NOT LAPACK_LIBRARIES ) +endif (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All") +# Generic LAPACK library? +if (BLA_VENDOR STREQUAL "Generic" OR + BLA_VENDOR STREQUAL "ATLAS" OR + BLA_VENDOR STREQUAL "All") + if ( NOT LAPACK_LIBRARIES ) + check_lapack_libraries( + LAPACK_LIBRARIES + LAPACK + cheev + "" + "lapack" + "${BLAS_LIBRARIES}" + "" + ) + endif ( NOT LAPACK_LIBRARIES ) +endif () else(BLAS_FOUND) message(STATUS "LAPACK requires BLAS") endif(BLAS_FOUND) @@ -506,11 +550,13 @@ endif(BLA_F95) set(CMAKE_FIND_LIBRARY_SUFFIXES ${_lapack_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) -if (LAPACK_FOUND AND NOT LAPACK_DIR) +if (LAPACK_FOUND) list(GET LAPACK_LIBRARIES 0 first_lib) get_filename_component(first_lib_path "${first_lib}" PATH) if (${first_lib_path} MATCHES "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)") string(REGEX REPLACE "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)" "" not_cached_dir "${first_lib_path}") - set(LAPACK_DIR "${not_cached_dir}" CACHE PATH "Installation directory of LAPACK library" FORCE) + set(LAPACK_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of LAPACK library" FORCE) + else() + set(LAPACK_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of LAPACK library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindLAPACKE.cmake b/cmake_modules/morse/find/FindLAPACKE.cmake index f4da7eb9f75d2f3e37d4cb912bab84a9a07e7701..1745f171e8326c3e315404a2a4ff121fd3253a59 100644 --- a/cmake_modules/morse/find/FindLAPACKE.cmake +++ b/cmake_modules/morse/find/FindLAPACKE.cmake @@ -39,6 +39,8 @@ # LAPACKE_DIR - Where to find the base directory of lapacke # LAPACKE_INCDIR - Where to find the header files # LAPACKE_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: LAPACKE_DIR, LAPACKE_INCDIR, LAPACKE_LIBDIR # # LAPACKE could be directly embedded in LAPACK library (ex: Intel MKL) so that # we test a lapacke function with the lapack libraries found and set LAPACKE @@ -143,17 +145,27 @@ if (LAPACK_FOUND) # Add system include paths to search include # ------------------------------------------ unset(_inc_env) - if(WIN32) - string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + set(ENV_LAPACKE_DIR "$ENV{LAPACKE_DIR}") + set(ENV_LAPACKE_INCDIR "$ENV{LAPACKE_INCDIR}") + if(ENV_LAPACKE_INCDIR) + list(APPEND _inc_env "${ENV_LAPACKE_INCDIR}") + elseif(ENV_LAPACKE_DIR) + list(APPEND _inc_env "${ENV_LAPACKE_DIR}") + list(APPEND _inc_env "${ENV_LAPACKE_DIR}/include") + list(APPEND _inc_env "${ENV_LAPACKE_DIR}/include/lapacke") else() - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{CPATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") + if(WIN32) + string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + else() + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{CPATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + endif() endif() list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") @@ -174,7 +186,7 @@ if (LAPACK_FOUND) find_path(LAPACKE_lapacke.h_DIRS NAMES lapacke.h HINTS ${LAPACKE_DIR} - PATH_SUFFIXES include) + PATH_SUFFIXES "include" "include/lapacke") else() set(LAPACKE_lapacke.h_DIRS "LAPACKE_lapacke.h_DIRS-NOTFOUND") find_path(LAPACKE_lapacke.h_DIRS @@ -202,16 +214,24 @@ if (LAPACK_FOUND) # Add system library paths to search lib # -------------------------------------- unset(_lib_env) - if(WIN32) - string(REPLACE ":" ";" _lib_env "$ENV{LIB}") + set(ENV_LAPACKE_LIBDIR "$ENV{LAPACKE_LIBDIR}") + if(ENV_LAPACKE_LIBDIR) + list(APPEND _lib_env "${ENV_LAPACKE_LIBDIR}") + elseif(ENV_LAPACKE_DIR) + list(APPEND _lib_env "${ENV_LAPACKE_DIR}") + list(APPEND _lib_env "${ENV_LAPACKE_DIR}/lib") else() - if(APPLE) - string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + if(WIN32) + string(REPLACE ":" ";" _lib_env "$ENV{LIB}") else() - string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + if(APPLE) + string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + else() + string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + endif() + list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") + list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() - list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") - list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() list(REMOVE_DUPLICATES _lib_env) @@ -340,12 +360,14 @@ else(LAPACK_FOUND) endif(LAPACK_FOUND) -if (LAPACKE_LIBRARIES AND NOT LAPACKE_DIR) +if (LAPACKE_LIBRARIES) list(GET LAPACKE_LIBRARIES 0 first_lib) get_filename_component(first_lib_path "${first_lib}" PATH) if (${first_lib_path} MATCHES "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)") string(REGEX REPLACE "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)" "" not_cached_dir "${first_lib_path}") - set(LAPACKE_DIR "${not_cached_dir}" CACHE PATH "Installation directory of LAPACKE library" FORCE) + set(LAPACKE_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of LAPACKE library" FORCE) + else() + set(LAPACKE_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of LAPACKE library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindMAGMA.cmake b/cmake_modules/morse/find/FindMAGMA.cmake index 254aa75b58e571f17ad4568e16a0ea3484bbf26c..0302ce5c0d1c7d6b8349e17be763527e5074d3d4 100644 --- a/cmake_modules/morse/find/FindMAGMA.cmake +++ b/cmake_modules/morse/find/FindMAGMA.cmake @@ -40,6 +40,8 @@ # MAGMA_DIR - Where to find the base directory of magma # MAGMA_INCDIR - Where to find the header files # MAGMA_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: MAGMA_DIR, MAGMA_INCDIR, MAGMA_LIBDIR # #============================================================================= # Copyright 2012-2013 Inria @@ -156,7 +158,7 @@ if(PKG_CONFIG_EXECUTABLE) endif() # if MAGMA is not found using pkg-config -if( (NOT PKG_CONFIG_EXECUTABLE AND NOT MAGMA_FOUND) OR NOT MAGMA_FOUND OR MAGMA_DIR) +if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT MAGMA_FOUND) OR (MAGMA_DIR) ) if (NOT MAGMA_FIND_QUIETLY) message(STATUS "Looking for MAGMA - PkgConfig not used") @@ -168,17 +170,27 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT MAGMA_FOUND) OR NOT MAGMA_FOUND OR MAGMA_ # Add system include paths to search include # ------------------------------------------ unset(_inc_env) - if(WIN32) - string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + set(ENV_MAGMA_DIR "$ENV{MAGMA_DIR}") + set(ENV_MAGMA_INCDIR "$ENV{MAGMA_INCDIR}") + if(ENV_MAGMA_INCDIR) + list(APPEND _inc_env "${ENV_MAGMA_INCDIR}") + elseif(ENV_MAGMA_DIR) + list(APPEND _inc_env "${ENV_MAGMA_DIR}") + list(APPEND _inc_env "${ENV_MAGMA_DIR}/include") + list(APPEND _inc_env "${ENV_MAGMA_DIR}/include/magma") else() - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{CPATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") + if(WIN32) + string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + else() + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{CPATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + endif() endif() list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") @@ -199,7 +211,7 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT MAGMA_FOUND) OR NOT MAGMA_FOUND OR MAGMA_ find_path(MAGMA_magma.h_DIRS NAMES magma.h HINTS ${MAGMA_DIR} - PATH_SUFFIXES include) + PATH_SUFFIXES "include" "include/magma") else() set(MAGMA_magma.h_DIRS "MAGMA_magma.h_DIRS-NOTFOUND") find_path(MAGMA_magma.h_DIRS @@ -227,16 +239,24 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT MAGMA_FOUND) OR NOT MAGMA_FOUND OR MAGMA_ # Add system library paths to search lib # -------------------------------------- unset(_lib_env) - if(WIN32) - string(REPLACE ":" ";" _lib_env "$ENV{LIB}") + set(ENV_MAGMA_LIBDIR "$ENV{MAGMA_LIBDIR}") + if(ENV_MAGMA_LIBDIR) + list(APPEND _lib_env "${ENV_MAGMA_LIBDIR}") + elseif(ENV_MAGMA_DIR) + list(APPEND _lib_env "${ENV_MAGMA_DIR}") + list(APPEND _lib_env "${ENV_MAGMA_DIR}/lib") else() - if(APPLE) - string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + if(WIN32) + string(REPLACE ":" ";" _lib_env "$ENV{LIB}") else() - string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + if(APPLE) + string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + else() + string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + endif() + list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") + list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() - list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") - list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() list(REMOVE_DUPLICATES _lib_env) @@ -374,9 +394,9 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT MAGMA_FOUND) OR NOT MAGMA_FOUND OR MAGMA_ set(CMAKE_REQUIRED_LIBRARIES) endif(MAGMA_LIBRARIES) -endif( (NOT PKG_CONFIG_EXECUTABLE AND NOT MAGMA_FOUND) OR NOT MAGMA_FOUND OR MAGMA_DIR) +endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT MAGMA_FOUND) OR (MAGMA_DIR) ) -if (MAGMA_LIBRARIES AND NOT MAGMA_DIR) +if (MAGMA_LIBRARIES) if (MAGMA_LIBRARY_DIRS) foreach(dir ${MAGMA_LIBRARY_DIRS}) if ("${dir}" MATCHES "magma") @@ -389,7 +409,9 @@ if (MAGMA_LIBRARIES AND NOT MAGMA_DIR) endif() if (${first_lib_path} MATCHES "/lib(32|64)?$") string(REGEX REPLACE "/lib(32|64)?$" "" not_cached_dir "${first_lib_path}") - set(MAGMA_DIR "${not_cached_dir}" CACHE PATH "Installation directory of MAGMA library" FORCE) + set(MAGMA_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of MAGMA library" FORCE) + else() + set(MAGMA_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of MAGMA library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindMETIS.cmake b/cmake_modules/morse/find/FindMETIS.cmake index 021f92f0b3fd43467cf0248dbbc9aa1a13f9b1c8..43a16e7b034b3537785dabf69a2d62401997557e 100644 --- a/cmake_modules/morse/find/FindMETIS.cmake +++ b/cmake_modules/morse/find/FindMETIS.cmake @@ -26,6 +26,8 @@ # METIS_DIR - Where to find the base directory of metis # METIS_INCDIR - Where to find the header files # METIS_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: METIS_DIR, METIS_INCDIR, METIS_LIBDIR #============================================================================= # Copyright 2012-2013 Inria @@ -57,17 +59,27 @@ endif() # Add system include paths to search include # ------------------------------------------ unset(_inc_env) -if(WIN32) - string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") +set(ENV_METIS_DIR "$ENV{METIS_DIR}") +set(ENV_METIS_INCDIR "$ENV{METIS_INCDIR}") +if(ENV_METIS_INCDIR) + list(APPEND _inc_env "${ENV_METIS_INCDIR}") +elseif(ENV_METIS_DIR) + list(APPEND _inc_env "${ENV_METIS_DIR}") + list(APPEND _inc_env "${ENV_METIS_DIR}/include") + list(APPEND _inc_env "${ENV_METIS_DIR}/include/metis") else() - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{CPATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") + if(WIN32) + string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + else() + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{CPATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + endif() endif() list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") @@ -88,7 +100,7 @@ else() find_path(METIS_metis.h_DIRS NAMES metis.h HINTS ${METIS_DIR} - PATH_SUFFIXES include) + PATH_SUFFIXES "include" "include/metis") else() set(METIS_metis.h_DIRS "METIS_metis.h_DIRS-NOTFOUND") find_path(METIS_metis.h_DIRS @@ -117,16 +129,24 @@ endif() # Add system library paths to search lib # -------------------------------------- unset(_lib_env) -if(WIN32) - string(REPLACE ":" ";" _lib_env "$ENV{LIB}") +set(ENV_METIS_LIBDIR "$ENV{METIS_LIBDIR}") +if(ENV_METIS_LIBDIR) + list(APPEND _lib_env "${ENV_METIS_LIBDIR}") +elseif(ENV_METIS_DIR) + list(APPEND _lib_env "${ENV_METIS_DIR}") + list(APPEND _lib_env "${ENV_METIS_DIR}/lib") else() - if(APPLE) - string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + if(WIN32) + string(REPLACE ":" ";" _lib_env "$ENV{LIB}") else() - string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + if(APPLE) + string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + else() + string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + endif() + list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") + list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() - list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") - list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() list(REMOVE_DUPLICATES _lib_env) @@ -214,12 +234,14 @@ if(METIS_LIBRARIES) set(CMAKE_REQUIRED_LIBRARIES) endif(METIS_LIBRARIES) -if (METIS_LIBRARIES AND NOT METIS_DIR) +if (METIS_LIBRARIES) list(GET METIS_LIBRARIES 0 first_lib) get_filename_component(first_lib_path "${first_lib}" PATH) if (${first_lib_path} MATCHES "/lib(32|64)?$") string(REGEX REPLACE "/lib(32|64)?$" "" not_cached_dir "${first_lib_path}") - set(METIS_DIR "${not_cached_dir}" CACHE PATH "Installation directory of METIS library" FORCE) + set(METIS_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of METIS library" FORCE) + else() + set(METIS_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of METIS library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindMUMPS.cmake b/cmake_modules/morse/find/FindMUMPS.cmake index a2f67e57341be6744e7a30b8c1eb1ec08615cd96..5655aab20c1603c5c5e70c95e9cf046a7470b690 100644 --- a/cmake_modules/morse/find/FindMUMPS.cmake +++ b/cmake_modules/morse/find/FindMUMPS.cmake @@ -43,6 +43,8 @@ # The user can give specific paths where to find the libraries adding cmake # options at configure (ex: cmake path/to/project -DMUMPS_DIR=path/to/mumps): # MUMPS_DIR - Where to find the base directory of mumps +# The module can also look for the following environment variables if paths +# are not given as cmake variable: MUMPS_DIR #============================================================================= # Copyright 2012-2013 Inria @@ -225,22 +227,22 @@ if(MUMPS_DIR) set(MUMPS_smumps_c.h_DIRS "MUMPS_smumps_c.h_DIRS-NOTFOUND") find_path(MUMPS_smumps_c.h_DIRS NAMES smumps_c.h - HINTS ${MUMPS_DIR} + HINTS "${MUMPS_DIR}" "$ENV{MUMPS_DIR}" PATH_SUFFIXES "include") set(MUMPS_dmumps_c.h_DIRS "MUMPS_dmumps_c.h_DIRS-NOTFOUND") find_path(MUMPS_dmumps_c.h_DIRS NAMES dmumps_c.h - HINTS ${MUMPS_DIR} + HINTS "${MUMPS_DIR}" "$ENV{MUMPS_DIR}" PATH_SUFFIXES "include") set(MUMPS_cmumps_c.h_DIRS "MUMPS_cmumps_c.h_DIRS-NOTFOUND") find_path(MUMPS_cmumps_c.h_DIRS NAMES cmumps_c.h - HINTS ${MUMPS_DIR} + HINTS "${MUMPS_DIR}" "$ENV{MUMPS_DIR}" PATH_SUFFIXES "include") set(MUMPS_zmumps_c.h_DIRS "MUMPS_zmumps_c.h_DIRS-NOTFOUND") find_path(MUMPS_zmumps_c.h_DIRS NAMES zmumps_c.h - HINTS ${MUMPS_DIR} + HINTS "${MUMPS_DIR}" "$ENV{MUMPS_DIR}" PATH_SUFFIXES "include") else() if (MUMPS_FIND_REQUIRED) @@ -312,37 +314,37 @@ if(MUMPS_DIR) set(MUMPS_smumps_LIBRARY "MUMPS_smumps_LIBRARY-NOTFOUND") find_library(MUMPS_smumps_LIBRARY NAMES smumps - HINTS ${MUMPS_DIR} + HINTS "${MUMPS_DIR}" "$ENV{MUMPS_DIR}" PATH_SUFFIXES lib) set(MUMPS_dmumps_LIBRARY "MUMPS_dmumps_LIBRARY-NOTFOUND") find_library(MUMPS_dmumps_LIBRARY NAMES dmumps - HINTS ${MUMPS_DIR} + HINTS "${MUMPS_DIR}" "$ENV{MUMPS_DIR}" PATH_SUFFIXES lib) set(MUMPS_cmumps_LIBRARY "MUMPS_cmumps_LIBRARY-NOTFOUND") find_library(MUMPS_cmumps_LIBRARY NAMES cmumps - HINTS ${MUMPS_DIR} + HINTS "${MUMPS_DIR}" "$ENV{MUMPS_DIR}" PATH_SUFFIXES lib) set(MUMPS_zmumps_LIBRARY "MUMPS_zmumps_LIBRARY-NOTFOUND") find_library(MUMPS_zmumps_LIBRARY NAMES zmumps - HINTS ${MUMPS_DIR} + HINTS "${MUMPS_DIR}" "$ENV{MUMPS_DIR}" PATH_SUFFIXES lib) set(MUMPS_mumps_common_LIBRARY "MUMPS_mumps_common_LIBRARY-NOTFOUND") find_library(MUMPS_mumps_common_LIBRARY NAMES mumps_common - HINTS ${MUMPS_DIR} + HINTS "${MUMPS_DIR}" "$ENV{MUMPS_DIR}" PATH_SUFFIXES lib) set(MUMPS_mpiseq_LIBRARY "MUMPS_mpiseq_LIBRARY-NOTFOUND") find_library(MUMPS_mpiseq_LIBRARY NAMES mpiseq - HINTS ${MUMPS_DIR} + HINTS "${MUMPS_DIR}" "$ENV{MUMPS_DIR}" PATH_SUFFIXES libseq) set(MUMPS_pord_LIBRARY "MUMPS_pord_LIBRARY-NOTFOUND") find_library(MUMPS_pord_LIBRARY NAMES pord - HINTS ${MUMPS_DIR} + HINTS "${MUMPS_DIR}" "$ENV{MUMPS_DIR}" PATH_SUFFIXES lib) else() if (MUMPS_FIND_REQUIRED) @@ -620,12 +622,14 @@ if(MUMPS_LIBRARIES) set(CMAKE_REQUIRED_LIBRARIES) endif(MUMPS_LIBRARIES) -if (MUMPS_LIBRARIES AND NOT MUMPS_DIR) +if (MUMPS_LIBRARIES) list(GET MUMPS_LIBRARIES 0 first_lib) get_filename_component(first_lib_path "${first_lib}" PATH) if (${first_lib_path} MATCHES "/lib(32|64)?$") string(REGEX REPLACE "/lib(32|64)?$" "" not_cached_dir "${first_lib_path}") - set(MUMPS_DIR "${not_cached_dir}" CACHE PATH "Installation directory of MUMPS library" FORCE) + set(MUMPS_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of MUMPS library" FORCE) + else() + set(MUMPS_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of MUMPS library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindPARMETIS.cmake b/cmake_modules/morse/find/FindPARMETIS.cmake index 07300069e9f44f555af03c11f25912ae97ec5623..227c178e432373a095d56e3ad1cfd7131afb5f69 100644 --- a/cmake_modules/morse/find/FindPARMETIS.cmake +++ b/cmake_modules/morse/find/FindPARMETIS.cmake @@ -26,6 +26,8 @@ # PARMETIS_DIR - Where to find the base directory of parmetis # PARMETIS_INCDIR - Where to find the header files # PARMETIS_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: PARMETIS_DIR, PARMETIS_INCDIR, PARMETIS_LIBDIR #============================================================================= # Copyright 2012-2013 Inria @@ -58,17 +60,27 @@ endif() # Add system include paths to search include # ------------------------------------------ unset(_inc_env) -if(WIN32) - string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") +set(ENV_PARMETIS_DIR "$ENV{PARMETIS_DIR}") +set(ENV_PARMETIS_INCDIR "$ENV{PARMETIS_INCDIR}") +if(ENV_PARMETIS_INCDIR) + list(APPEND _inc_env "${ENV_PARMETIS_INCDIR}") +elseif(ENV_PARMETIS_DIR) + list(APPEND _inc_env "${ENV_PARMETIS_DIR}") + list(APPEND _inc_env "${ENV_PARMETIS_DIR}/include") + list(APPEND _inc_env "${ENV_PARMETIS_DIR}/include/parmetis") else() - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{CPATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") + if(WIN32) + string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + else() + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{CPATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + endif() endif() list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") @@ -89,7 +101,7 @@ else() find_path(PARMETIS_parmetis.h_DIRS NAMES parmetis.h HINTS ${PARMETIS_DIR} - PATH_SUFFIXES include) + PATH_SUFFIXES "include" "include/parmetis") else() set(PARMETIS_parmetis.h_DIRS "PARMETIS_parmetis.h_DIRS-NOTFOUND") find_path(PARMETIS_parmetis.h_DIRS @@ -118,16 +130,24 @@ endif() # Add system library paths to search lib # -------------------------------------- unset(_lib_env) -if(WIN32) - string(REPLACE ":" ";" _lib_env "$ENV{LIB}") +set(ENV_PARMETIS_LIBDIR "$ENV{PARMETIS_LIBDIR}") +if(ENV_PARMETIS_LIBDIR) + list(APPEND _lib_env "${ENV_PARMETIS_LIBDIR}") +elseif(ENV_PARMETIS_DIR) + list(APPEND _lib_env "${ENV_PARMETIS_DIR}") + list(APPEND _lib_env "${ENV_PARMETIS_DIR}/lib") else() - if(APPLE) - string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + if(WIN32) + string(REPLACE ":" ";" _lib_env "$ENV{LIB}") else() - string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + if(APPLE) + string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + else() + string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + endif() + list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") + list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() - list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") - list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() list(REMOVE_DUPLICATES _lib_env) @@ -214,12 +234,14 @@ if(PARMETIS_LIBRARIES) set(CMAKE_REQUIRED_LIBRARIES) endif(PARMETIS_LIBRARIES) -if (PARMETIS_LIBRARIES AND NOT PARMETIS_DIR) +if (PARMETIS_LIBRARIES) list(GET PARMETIS_LIBRARIES 0 first_lib) get_filename_component(first_lib_path "${first_lib}" PATH) if (${first_lib_path} MATCHES "/lib(32|64)?$") string(REGEX REPLACE "/lib(32|64)?$" "" not_cached_dir "${first_lib_path}") - set(PARMETIS_DIR "${not_cached_dir}" CACHE PATH "Installation directory of PARMETIS library" FORCE) + set(PARMETIS_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of PARMETIS library" FORCE) + else() + set(PARMETIS_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of PARMETIS library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindPASTIX.cmake b/cmake_modules/morse/find/FindPASTIX.cmake index 781fa339e9b1a003f20bd725f9ece39fc85e2045..00632053503fff6be6a96ca2b6dc7eea0f099768 100644 --- a/cmake_modules/morse/find/FindPASTIX.cmake +++ b/cmake_modules/morse/find/FindPASTIX.cmake @@ -51,6 +51,8 @@ # PASTIX_DIR - Where to find the base directory of pastix # PASTIX_INCDIR - Where to find the header files # PASTIX_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: PASTIX_DIR, PASTIX_INCDIR, PASTIX_LIBDIR #============================================================================= # Copyright 2012-2013 Inria @@ -333,17 +335,27 @@ endif() # Add system include paths to search include # ------------------------------------------ unset(_inc_env) -if(WIN32) - string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") +set(ENV_PASTIX_DIR "$ENV{PASTIX_DIR}") +set(ENV_PASTIX_INCDIR "$ENV{PASTIX_INCDIR}") +if(ENV_PASTIX_INCDIR) + list(APPEND _inc_env "${ENV_PASTIX_INCDIR}") +elseif(ENV_PASTIX_DIR) + list(APPEND _inc_env "${ENV_PASTIX_DIR}") + list(APPEND _inc_env "${ENV_PASTIX_DIR}/include") + list(APPEND _inc_env "${ENV_PASTIX_DIR}/include/pastix") else() - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{CPATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") + if(WIN32) + string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + else() + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{CPATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + endif() endif() list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") @@ -392,16 +404,24 @@ endif() # Add system library paths to search lib # -------------------------------------- unset(_lib_env) -if(WIN32) - string(REPLACE ":" ";" _lib_env "$ENV{LIB}") +set(ENV_PASTIX_LIBDIR "$ENV{PASTIX_LIBDIR}") +if(ENV_PASTIX_LIBDIR) + list(APPEND _lib_env "${ENV_PASTIX_LIBDIR}") +elseif(ENV_PASTIX_DIR) + list(APPEND _lib_env "${ENV_PASTIX_DIR}") + list(APPEND _lib_env "${ENV_PASTIX_DIR}/lib") else() - if(APPLE) - string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + if(WIN32) + string(REPLACE ":" ";" _lib_env "$ENV{LIB}") else() - string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + if(APPLE) + string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + else() + string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + endif() + list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") + list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() - list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") - list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() list(REMOVE_DUPLICATES _lib_env) @@ -639,12 +659,14 @@ if(PASTIX_LIBRARIES) set(CMAKE_REQUIRED_LIBRARIES) endif(PASTIX_LIBRARIES) -if (PASTIX_LIBRARIES AND NOT PASTIX_DIR) +if (PASTIX_LIBRARIES) list(GET PASTIX_LIBRARIES 0 first_lib) get_filename_component(first_lib_path "${first_lib}" PATH) if (${first_lib_path} MATCHES "/lib(32|64)?$") string(REGEX REPLACE "/lib(32|64)?$" "" not_cached_dir "${first_lib_path}") - set(PASTIX_DIR "${not_cached_dir}" CACHE PATH "Installation directory of PASTIX library" FORCE) + set(PASTIX_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of PASTIX library" FORCE) + else() + set(PASTIX_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of PASTIX library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindPTSCOTCH.cmake b/cmake_modules/morse/find/FindPTSCOTCH.cmake index 6065076b458f9007f5656569593a76c1d77d4769..5fe48d1a7a5970096c479cfb133e943ee241869c 100644 --- a/cmake_modules/morse/find/FindPTSCOTCH.cmake +++ b/cmake_modules/morse/find/FindPTSCOTCH.cmake @@ -35,6 +35,8 @@ # PTSCOTCH_DIR - Where to find the base directory of ptscotch # PTSCOTCH_INCDIR - Where to find the header files # PTSCOTCH_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: PTSCOTCH_DIR, PTSCOTCH_INCDIR, PTSCOTCH_LIBDIR #============================================================================= # Copyright 2012-2013 Inria @@ -84,17 +86,27 @@ endif() # Add system include paths to search include # ------------------------------------------ unset(_inc_env) -if(WIN32) - string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") +set(ENV_PTSCOTCH_DIR "$ENV{PTSCOTCH_DIR}") +set(ENV_PTSCOTCH_INCDIR "$ENV{PTSCOTCH_INCDIR}") +if(ENV_PTSCOTCH_INCDIR) + list(APPEND _inc_env "${ENV_PTSCOTCH_INCDIR}") +elseif(ENV_PTSCOTCH_DIR) + list(APPEND _inc_env "${ENV_PTSCOTCH_DIR}") + list(APPEND _inc_env "${ENV_PTSCOTCH_DIR}/include") + list(APPEND _inc_env "${ENV_PTSCOTCH_DIR}/include/ptscotch") else() - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{CPATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") + if(WIN32) + string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + else() + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{CPATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + endif() endif() list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") @@ -115,7 +127,7 @@ else() find_path(PTSCOTCH_ptscotch.h_DIRS NAMES ptscotch.h HINTS ${PTSCOTCH_DIR} - PATH_SUFFIXES include) + PATH_SUFFIXES "include" "include/ptscotch") else() set(PTSCOTCH_ptscotch.h_DIRS "PTSCOTCH_ptscotch.h_DIRS-NOTFOUND") find_path(PTSCOTCH_ptscotch.h_DIRS @@ -143,16 +155,24 @@ endif() # Add system library paths to search lib # -------------------------------------- unset(_lib_env) -if(WIN32) - string(REPLACE ":" ";" _lib_env "$ENV{LIB}") +set(ENV_PTSCOTCH_LIBDIR "$ENV{PTSCOTCH_LIBDIR}") +if(ENV_PTSCOTCH_LIBDIR) + list(APPEND _lib_env "${ENV_PTSCOTCH_LIBDIR}") +elseif(ENV_PTSCOTCH_DIR) + list(APPEND _lib_env "${ENV_PTSCOTCH_DIR}") + list(APPEND _lib_env "${ENV_PTSCOTCH_DIR}/lib") else() - if(APPLE) - string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + if(WIN32) + string(REPLACE ":" ";" _lib_env "$ENV{LIB}") else() - string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + if(APPLE) + string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + else() + string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + endif() + list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") + list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() - list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") - list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() list(REMOVE_DUPLICATES _lib_env) @@ -283,12 +303,14 @@ if(PTSCOTCH_LIBRARIES) set(CMAKE_REQUIRED_LIBRARIES) endif(PTSCOTCH_LIBRARIES) -if (PTSCOTCH_LIBRARIES AND NOT PTSCOTCH_DIR) +if (PTSCOTCH_LIBRARIES) list(GET PTSCOTCH_LIBRARIES 0 first_lib) get_filename_component(first_lib_path "${first_lib}" PATH) if (${first_lib_path} MATCHES "/lib(32|64)?$") string(REGEX REPLACE "/lib(32|64)?$" "" not_cached_dir "${first_lib_path}") - set(PTSCOTCH_DIR "${not_cached_dir}" CACHE PATH "Installation directory of PTSCOTCH library" FORCE) + set(PTSCOTCH_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of PTSCOTCH library" FORCE) + else() + set(PTSCOTCH_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of PTSCOTCH library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindQUARK.cmake b/cmake_modules/morse/find/FindQUARK.cmake index 507f00f71b880fe3ffa16521b397cc2c78e5baa3..119d00f8f56fbdbabd518ebc06f614cea1bf8962 100644 --- a/cmake_modules/morse/find/FindQUARK.cmake +++ b/cmake_modules/morse/find/FindQUARK.cmake @@ -38,6 +38,8 @@ # QUARK_DIR - Where to find the base directory of quark # QUARK_INCDIR - Where to find the header files # QUARK_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: QUARK_DIR, QUARK_INCDIR, QUARK_LIBDIR #============================================================================= # Copyright 2012-2013 Inria @@ -100,17 +102,28 @@ endif() # Add system include paths to search include # ------------------------------------------ unset(_inc_env) -if(WIN32) - string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") +set(ENV_QUARK_DIR "$ENV{QUARK_DIR}") +set(ENV_QUARK_INCDIR "$ENV{QUARK_INCDIR}") +if(ENV_QUARK_INCDIR) + list(APPEND _inc_env "${ENV_QUARK_INCDIR}") +elseif(ENV_QUARK_DIR) + list(APPEND _inc_env "${ENV_QUARK_DIR}") + list(APPEND _inc_env "${ENV_QUARK_DIR}/include") + list(APPEND _inc_env "${ENV_QUARK_DIR}/include/quark") + list(APPEND _inc_env "${ENV_QUARK_DIR}/include/plasma") else() - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{CPATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") + if(WIN32) + string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + else() + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{CPATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + endif() endif() list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") @@ -131,7 +144,7 @@ else() find_path(QUARK_quark.h_DIRS NAMES quark.h HINTS ${QUARK_DIR} - PATH_SUFFIXES include) + PATH_SUFFIXES "include" "include/quark" "include/plasma") else() set(QUARK_quark.h_DIRS "QUARK_quark.h_DIRS-NOTFOUND") find_path(QUARK_quark.h_DIRS @@ -159,16 +172,24 @@ endif() # Add system library paths to search lib # -------------------------------------- unset(_lib_env) -if(WIN32) - string(REPLACE ":" ";" _lib_env "$ENV{LIB}") +set(ENV_QUARK_LIBDIR "$ENV{QUARK_LIBDIR}") +if(ENV_QUARK_LIBDIR) + list(APPEND _lib_env "${ENV_QUARK_LIBDIR}") +elseif(ENV_QUARK_DIR) + list(APPEND _lib_env "${ENV_QUARK_DIR}") + list(APPEND _lib_env "${ENV_QUARK_DIR}/lib") else() - if(APPLE) - string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + if(WIN32) + string(REPLACE ":" ";" _lib_env "$ENV{LIB}") else() - string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + if(APPLE) + string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + else() + string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + endif() + list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") + list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() - list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") - list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() list(REMOVE_DUPLICATES _lib_env) @@ -283,12 +304,14 @@ if(QUARK_LIBRARIES) set(CMAKE_REQUIRED_LIBRARIES) endif(QUARK_LIBRARIES) -if (QUARK_LIBRARIES AND NOT QUARK_DIR) +if (QUARK_LIBRARIES) list(GET QUARK_LIBRARIES 0 first_lib) get_filename_component(first_lib_path "${first_lib}" PATH) if (${first_lib_path} MATCHES "/lib(32|64)?$") string(REGEX REPLACE "/lib(32|64)?$" "" not_cached_dir "${first_lib_path}") - set(QUARK_DIR "${not_cached_dir}" CACHE PATH "Installation directory of QUARK library" FORCE) + set(QUARK_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of QUARK library" FORCE) + else() + set(QUARK_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of QUARK library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindSCALAPACK.cmake b/cmake_modules/morse/find/FindSCALAPACK.cmake index dcdcf427f0b96c411e9ced15ecf5fb7bc187746c..e5ab20fda153e92934e515bcbe877df433211d60 100644 --- a/cmake_modules/morse/find/FindSCALAPACK.cmake +++ b/cmake_modules/morse/find/FindSCALAPACK.cmake @@ -32,6 +32,8 @@ # SCALAPACK_DIR - Where to find the base directory of scalapack # SCALAPACK_INCDIR - Where to find the header files # SCALAPACK_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: SCALAPACK_DIR, SCALAPACK_INCDIR, SCALAPACK_LIBDIR # Note that if BLAS_DIR is set, it will also look for scalapack in it ### List of vendors (BLA_VENDOR) valid in this module ## Intel(mkl), ACML, Apple, NAS, Generic @@ -151,21 +153,40 @@ macro(Check_Scalapack_Libraries LIBRARIES _prefix _name _flags _list _blaslapack set(_libraries_work TRUE) set(${LIBRARIES}) set(_combined_name) +set(ENV_MKLROOT "$ENV{MKLROOT}") +set(ENV_BLAS_DIR "$ENV{BLAS_DIR}") +set(ENV_BLAS_LIBDIR "$ENV{BLAS_LIBDIR}") +set(ENV_SCALAPACK_DIR "$ENV{SCALAPACK_DIR}") +set(ENV_SCALAPACK_LIBDIR "$ENV{SCALAPACK_LIBDIR}") if (NOT _libdir) - if (BLAS_DIR) - list(APPEND _libdir "${BLAS_DIR}") - list(APPEND _libdir "${BLAS_DIR}/lib") - if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") - list(APPEND _libdir "${BLAS_DIR}/lib64") - list(APPEND _libdir "${BLAS_DIR}/lib/intel64") - else() - list(APPEND _libdir "${BLAS_DIR}/lib32") - list(APPEND _libdir "${BLAS_DIR}/lib/ia32") - endif() - elseif (BLAS_LIBDIR) - list(APPEND _libdir "${BLAS_LIBDIR}") - endif () - if (SCALAPACK_DIR) + if (BLAS_LIBDIR) + list(APPEND _libdir "${BLAS_LIBDIR}") + elseif (BLAS_DIR) + list(APPEND _libdir "${BLAS_DIR}") + list(APPEND _libdir "${BLAS_DIR}/lib") + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + list(APPEND _libdir "${BLAS_DIR}/lib64") + list(APPEND _libdir "${BLAS_DIR}/lib/intel64") + else() + list(APPEND _libdir "${BLAS_DIR}/lib32") + list(APPEND _libdir "${BLAS_DIR}/lib/ia32") + endif() + elseif(ENV_BLAS_LIBDIR) + list(APPEND _libdir "${ENV_BLAS_LIBDIR}") + elseif(ENV_BLAS_DIR) + list(APPEND _libdir "${ENV_BLAS_DIR}") + list(APPEND _libdir "${ENV_BLAS_DIR}/lib") + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + list(APPEND _libdir "${ENV_BLAS_DIR}/lib64") + list(APPEND _libdir "${ENV_BLAS_DIR}/lib/intel64") + else() + list(APPEND _libdir "${ENV_BLAS_DIR}/lib32") + list(APPEND _libdir "${ENV_BLAS_DIR}/lib/ia32") + endif() + endif() + if (SCALAPACK_LIBDIR) + list(APPEND _libdir "${SCALAPACK_LIBDIR}") + elseif (SCALAPACK_DIR) list(APPEND _libdir "${SCALAPACK_DIR}") list(APPEND _libdir "${SCALAPACK_DIR}/lib") if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") @@ -175,9 +196,28 @@ if (NOT _libdir) list(APPEND _libdir "${SCALAPACK_DIR}/lib32") list(APPEND _libdir "${SCALAPACK_DIR}/lib/ia32") endif() - elseif (SCALAPACK_LIBDIR) - list(APPEND _libdir "${SCALAPACK_LIBDIR}") + elseif(ENV_SCALAPACK_LIBDIR) + list(APPEND _libdir "${ENV_SCALAPACK_LIBDIR}") + elseif(ENV_SCALAPACK_DIR) + list(APPEND _libdir "${ENV_SCALAPACK_DIR}") + list(APPEND _libdir "${ENV_SCALAPACK_DIR}/lib") + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + list(APPEND _libdir "${ENV_SCALAPACK_DIR}/lib64") + list(APPEND _libdir "${ENV_SCALAPACK_DIR}/lib/intel64") + else() + list(APPEND _libdir "${ENV_SCALAPACK_DIR}/lib32") + list(APPEND _libdir "${ENV_SCALAPACK_DIR}/lib/ia32") + endif() else() + if (ENV_MKLROOT) + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + list(APPEND _libdir "${ENV_MKLROOT}/lib64") + list(APPEND _libdir "${ENV_MKLROOT}/lib/intel64") + else() + list(APPEND _libdir "${ENV_MKLROOT}/lib32") + list(APPEND _libdir "${ENV_MKLROOT}/lib/ia32") + endif() + endif() if (WIN32) string(REPLACE ":" ";" _libdir2 "$ENV{LIB}") elseif (APPLE) @@ -448,11 +488,13 @@ endif(BLA_F95) set(CMAKE_FIND_LIBRARY_SUFFIXES ${_scalapack_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) -if (SCALAPACK_LIBRARIES AND NOT SCALAPACK_DIR) +if (SCALAPACK_LIBRARIES) list(GET SCALAPACK_LIBRARIES 0 first_lib) get_filename_component(first_lib_path "${first_lib}" PATH) if (${first_lib_path} MATCHES "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)") string(REGEX REPLACE "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)" "" not_cached_dir "${first_lib_path}") - set(SCALAPACK_DIR "${not_cached_dir}" CACHE PATH "Installation directory of SCALAPACK library" FORCE) + set(SCALAPACK_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of SCALAPACK library" FORCE) + else() + set(SCALAPACK_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of SCALAPACK library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindSCOTCH.cmake b/cmake_modules/morse/find/FindSCOTCH.cmake index 0a5c2898fcf87aa7a964dd39beca21b4f5f37d21..6b00ae4cfb42546d4d3e02de4779d525f25ed061 100644 --- a/cmake_modules/morse/find/FindSCOTCH.cmake +++ b/cmake_modules/morse/find/FindSCOTCH.cmake @@ -27,6 +27,8 @@ # SCOTCH_DIR - Where to find the base directory of scotch # SCOTCH_INCDIR - Where to find the header files # SCOTCH_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: SCOTCH_DIR, SCOTCH_INCDIR, SCOTCH_LIBDIR #============================================================================= # Copyright 2012-2013 Inria @@ -67,17 +69,27 @@ endif() # Add system include paths to search include # ------------------------------------------ unset(_inc_env) -if(WIN32) - string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") +set(ENV_SCOTCH_DIR "$ENV{SCOTCH_DIR}") +set(ENV_SCOTCH_INCDIR "$ENV{SCOTCH_INCDIR}") +if(ENV_SCOTCH_INCDIR) + list(APPEND _inc_env "${ENV_SCOTCH_INCDIR}") +elseif(ENV_SCOTCH_DIR) + list(APPEND _inc_env "${ENV_SCOTCH_DIR}") + list(APPEND _inc_env "${ENV_SCOTCH_DIR}/include") + list(APPEND _inc_env "${ENV_SCOTCH_DIR}/include/scotch") else() - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{CPATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") + if(WIN32) + string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + else() + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{CPATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + endif() endif() list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") @@ -98,7 +110,7 @@ else() find_path(SCOTCH_scotch.h_DIRS NAMES scotch.h HINTS ${SCOTCH_DIR} - PATH_SUFFIXES include) + PATH_SUFFIXES "include" "include/scotch") else() set(SCOTCH_scotch.h_DIRS "SCOTCH_scotch.h_DIRS-NOTFOUND") find_path(SCOTCH_scotch.h_DIRS @@ -126,16 +138,24 @@ endif() # Add system library paths to search lib # -------------------------------------- unset(_lib_env) -if(WIN32) - string(REPLACE ":" ";" _lib_env "$ENV{LIB}") +set(ENV_SCOTCH_LIBDIR "$ENV{SCOTCH_LIBDIR}") +if(ENV_SCOTCH_LIBDIR) + list(APPEND _lib_env "${ENV_SCOTCH_LIBDIR}") +elseif(ENV_SCOTCH_DIR) + list(APPEND _lib_env "${ENV_SCOTCH_DIR}") + list(APPEND _lib_env "${ENV_SCOTCH_DIR}/lib") else() - if(APPLE) - string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + if(WIN32) + string(REPLACE ":" ";" _lib_env "$ENV{LIB}") else() - string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + if(APPLE) + string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + else() + string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + endif() + list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") + list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() - list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") - list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() list(REMOVE_DUPLICATES _lib_env) @@ -244,12 +264,14 @@ if(SCOTCH_LIBRARIES) set(CMAKE_REQUIRED_LIBRARIES) endif(SCOTCH_LIBRARIES) -if (SCOTCH_LIBRARIES AND NOT SCOTCH_DIR) +if (SCOTCH_LIBRARIES) list(GET SCOTCH_LIBRARIES 0 first_lib) get_filename_component(first_lib_path "${first_lib}" PATH) if (${first_lib_path} MATCHES "/lib(32|64)?$") string(REGEX REPLACE "/lib(32|64)?$" "" not_cached_dir "${first_lib_path}") - set(SCOTCH_DIR "${not_cached_dir}" CACHE PATH "Installation directory of SCOTCH library" FORCE) + set(SCOTCH_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of SCOTCH library" FORCE) + else() + set(SCOTCH_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of SCOTCH library" FORCE) endif() endif() diff --git a/cmake_modules/morse/find/FindSTARPU.cmake b/cmake_modules/morse/find/FindSTARPU.cmake index 7484dbe358936d2e30f87c2b53a8b008aee37c44..b1edf5ddc982ab7d5305c5ef9578cdc8586d32cc 100644 --- a/cmake_modules/morse/find/FindSTARPU.cmake +++ b/cmake_modules/morse/find/FindSTARPU.cmake @@ -46,7 +46,8 @@ # STARPU_DIR - Where to find the base directory of starpu # STARPU_INCDIR - Where to find the header files # STARPU_LIBDIR - Where to find the library files - +# The module can also look for the following environment variables if paths +# are not given as cmake variable: STARPU_DIR, STARPU_INCDIR, STARPU_LIBDIR #============================================================================= # Copyright 2012-2013 Inria @@ -232,13 +233,18 @@ if(PKG_CONFIG_EXECUTABLE) set(STARPU_INCLUDE_DIRS_DEP "${STARPU_INCLUDE_DIRS}") set(STARPU_LIBRARY_DIRS_DEP "${STARPU_LIBRARY_DIRS}") set(STARPU_LIBRARIES_DEP "${STARPU_LIBRARIES}") + if (STARPU_SHM_FOUND) + set(STARPU_FOUND "TRUE") + else() + set(STARPU_FOUND "FALSE") + endif() + if (STARPU_LOOK_FOR_MPI AND NOT STARPU_MPI_FOUND) + set(STARPU_FOUND "FALSE") + endif() endif() -if( (NOT PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) OR - (NOT STARPU_SHM_FOUND OR (NOT STARPU_MPI_FOUND AND STARPU_LOOK_FOR_MPI)) - OR STARPU_DIR - ) +if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) OR (STARPU_DIR) ) # Looking for include # ------------------- @@ -246,17 +252,30 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) OR # Add system include paths to search include # ------------------------------------------ unset(_inc_env) - if(WIN32) - string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + set(ENV_STARPU_DIR "$ENV{STARPU_DIR}") + set(ENV_STARPU_INCDIR "$ENV{STARPU_INCDIR}") + if(ENV_STARPU_INCDIR) + list(APPEND _inc_env "${ENV_STARPU_INCDIR}") + elseif(ENV_STARPU_DIR) + list(APPEND _inc_env "${ENV_STARPU_DIR}") + list(APPEND _inc_env "${ENV_STARPU_DIR}/include") + list(APPEND _inc_env "${ENV_STARPU_DIR}/include/starpu/1.0") + list(APPEND _inc_env "${ENV_STARPU_DIR}/include/starpu/1.1") + list(APPEND _inc_env "${ENV_STARPU_DIR}/include/starpu/1.2") + list(APPEND _inc_env "${ENV_STARPU_DIR}/include/starpu/1.3") else() - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{CPATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") + if(WIN32) + string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") + else() + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{CPATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + endif() endif() list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") @@ -451,16 +470,24 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) OR # Add system library paths to search lib # -------------------------------------- unset(_lib_env) - if(WIN32) - string(REPLACE ":" ";" _lib_env "$ENV{LIB}") + set(ENV_STARPU_LIBDIR "$ENV{STARPU_LIBDIR}") + if(ENV_STARPU_LIBDIR) + list(APPEND _lib_env "${ENV_STARPU_LIBDIR}") + elseif(ENV_STARPU_DIR) + list(APPEND _lib_env "${ENV_STARPU_DIR}") + list(APPEND _lib_env "${ENV_STARPU_DIR}/lib") else() - if(APPLE) - string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + if(WIN32) + string(REPLACE ":" ";" _lib_env "$ENV{LIB}") else() - string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + if(APPLE) + string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + else() + string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + endif() + list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") + list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() - list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") - list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() list(REMOVE_DUPLICATES _lib_env) @@ -513,29 +540,17 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) OR foreach(starpu_shm_lib ${STARPU_SHM_libs_to_find}) if(starpu_shm_lib STREQUAL starpu_lib) - if (STARPU_SHM_LIBRARIES) - list(APPEND STARPU_SHM_LIBRARIES "${STARPU_${starpu_lib}_LIBRARY}") - else() - set(STARPU_SHM_LIBRARIES "${STARPU_${starpu_lib}_LIBRARY}") - endif() + list(APPEND STARPU_SHM_LIBRARIES "${STARPU_${starpu_lib}_LIBRARY}") endif() endforeach() if (STARPU_LOOK_FOR_MPI AND MPI_FOUND) foreach(starpu_mpi_lib ${STARPU_MPI_libs_to_find}) if(starpu_mpi_lib STREQUAL starpu_lib) - if (STARPU_MPI_LIBRARIES) - list(APPEND STARPU_MPI_LIBRARIES "${STARPU_${starpu_lib}_LIBRARY}") - else() - set(STARPU_MPI_LIBRARIES "${STARPU_${starpu_lib}_LIBRARY}") - endif() + list(APPEND STARPU_MPI_LIBRARIES "${STARPU_${starpu_lib}_LIBRARY}") endif() endforeach() endif () - if (STARPU_LIBRARY_DIRS) - list(APPEND STARPU_LIBRARY_DIRS "${${starpu_lib}_lib_path}") - else() - set(STARPU_LIBRARY_DIRS "${${starpu_lib}_lib_path}") - endif() + list(APPEND STARPU_LIBRARY_DIRS "${${starpu_lib}_lib_path}") else (STARPU_${starpu_lib}_LIBRARY) @@ -552,21 +567,13 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) OR # for any other lib, add NOTFOUND in the proper list of LIBRARIES foreach(starpu_shm_lib ${STARPU_SHM_libs_to_find}) if(starpu_shm_lib STREQUAL starpu_lib) - if (STARPU_SHM_LIBRARIES) - list(APPEND STARPU_SHM_LIBRARIES "${STARPU_${starpu_lib}_LIBRARY}") - else() - set(STARPU_SHM_LIBRARIES "${STARPU_${starpu_lib}_LIBRARY}") - endif() + set(STARPU_SHM_LIBRARIES "${STARPU_${starpu_lib}_LIBRARY}") endif() endforeach() if (STARPU_LOOK_FOR_MPI AND MPI_FOUND) foreach(starpu_mpi_lib ${STARPU_MPI_libs_to_find}) if(starpu_mpi_lib STREQUAL starpu_lib) - if (STARPU_MPI_LIBRARIES) - list(APPEND STARPU_MPI_LIBRARIES "${STARPU_${starpu_lib}_LIBRARY}") - else() - set(STARPU_MPI_LIBRARIES "${STARPU_${starpu_lib}_LIBRARY}") - endif() + list(APPEND STARPU_MPI_LIBRARIES "${STARPU_${starpu_mpi_lib}_LIBRARY}") endif() endforeach() endif () @@ -578,9 +585,9 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) OR endforeach(starpu_lib ${STARPU_libs_to_find}) + list(REMOVE_DUPLICATES STARPU_SHM_LIBRARIES) + list(REMOVE_DUPLICATES STARPU_MPI_LIBRARIES) if (STARPU_LIBRARY_DIRS) - list(REMOVE_DUPLICATES STARPU_SHM_LIBRARIES) - list(REMOVE_DUPLICATES STARPU_MPI_LIBRARIES) list(REMOVE_DUPLICATES STARPU_LIBRARY_DIRS) endif () @@ -597,12 +604,20 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) OR endif() endif(STARPU_starpu_config.h_INCLUDE_DIRS) - if(STARPU_MPI_LIBRARIES) + foreach(lib ${STARPU_SHM_LIBRARIES}) + if (NOT lib) + set(STARPU_SHM_LIBRARIES "STARPU_SHM_LIBRARIES-NOTFOUND") + endif() + endforeach() + foreach(lib ${STARPU_MPI_LIBRARIES}) + if (NOT lib) + set(STARPU_MPI_LIBRARIES "STARPU_MPI_LIBRARIES-NOTFOUND") + endif() + endforeach() + if(STARPU_LOOK_FOR_MPI) set(STARPU_LIBRARIES "${STARPU_MPI_LIBRARIES}") - elseif(STARPU_SHM_LIBRARIES) - set(STARPU_LIBRARIES "${STARPU_SHM_LIBRARIES}") else() - set(STARPU_LIBRARIES "STARPU_LIBRARIES-NOTFOUND") + set(STARPU_LIBRARIES "${STARPU_SHM_LIBRARIES}") endif() # check a function to validate the find @@ -773,12 +788,9 @@ if( (NOT PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) OR set(CMAKE_REQUIRED_LIBRARIES) endif(STARPU_LIBRARIES) -endif( (NOT PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) OR - (NOT STARPU_SHM_FOUND OR (NOT STARPU_MPI_FOUND AND STARPU_LOOK_FOR_MPI)) - OR STARPU_DIR - ) +endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT STARPU_FOUND) OR (STARPU_DIR) ) -if (STARPU_LIBRARIES AND NOT STARPU_DIR) +if (STARPU_LIBRARIES) if (STARPU_LIBRARY_DIRS) foreach(dir ${STARPU_LIBRARY_DIRS}) if ("${dir}" MATCHES "starpu") @@ -791,7 +803,9 @@ if (STARPU_LIBRARIES AND NOT STARPU_DIR) endif() if (${first_lib_path} MATCHES "/lib(32|64)?$") string(REGEX REPLACE "/lib(32|64)?$" "" not_cached_dir "${first_lib_path}") - set(STARPU_DIR "${not_cached_dir}" CACHE PATH "Installation directory of STARPU library" FORCE) + set(STARPU_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of STARPU library" FORCE) + else() + set(STARPU_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of STARPU library" FORCE) endif() endif() @@ -801,7 +815,7 @@ include(FindPackageHandleStandardArgs) if(NOT STARPU_FIND_QUIETLY) if(STARPU_SHM_FOUND) message(STATUS "StarPU has been found.") - if(STARPU_MPI_FOUND) + if(STARPU_MPI_LIBRARIES) message(STATUS "The mpi version of StarPU has been found so that we manage" "two lists of libs, one sequential and one parallel (see" "STARPU_SHM_LIBRARIES and STARPU_MPI_LIBRARIES).") @@ -818,7 +832,7 @@ else() STARPU_WORKS) endif() if(STARPU_LOOK_FOR_MPI) - if(NOT STARPU_FIND_QUIETLY) + if(STARPU_MPI_LIBRARIES AND NOT STARPU_FIND_QUIETLY) message(STATUS "StarPU mpi libraries stored in STARPU_MPI_LIBRARIES") endif() if (PKG_CONFIG_EXECUTABLE AND STARPU_MPI_FOUND) diff --git a/cmake_modules/morse/find/FindTMG.cmake b/cmake_modules/morse/find/FindTMG.cmake index fff4cccde767ad309ab8babacf6a2e6233c2b356..24e8cc9d6208e57b15c9b168577a62cba3efa4e7 100644 --- a/cmake_modules/morse/find/FindTMG.cmake +++ b/cmake_modules/morse/find/FindTMG.cmake @@ -30,6 +30,8 @@ # TMG_DIR - Where to find the base directory of tmg # TMG_INCDIR - Where to find the header files # TMG_LIBDIR - Where to find the library files +# The module can also look for the following environment variables if paths +# are not given as cmake variable: TMG_DIR, TMG_INCDIR, TMG_LIBDIR #============================================================================= # Copyright 2012-2013 Inria @@ -127,16 +129,25 @@ if (LAPACK_FOUND) # Add system library paths to search lib # -------------------------------------- unset(_lib_env) - if(WIN32) - string(REPLACE ":" ";" _lib_env "$ENV{LIB}") + set(ENV_TMG_DIR "$ENV{TMG_DIR}") + set(ENV_TMG_LIBDIR "$ENV{TMG_LIBDIR}") + if(ENV_TMG_LIBDIR) + list(APPEND _lib_env "${ENV_TMG_LIBDIR}") + elseif(ENV_TMG_DIR) + list(APPEND _lib_env "${ENV_TMG_DIR}") + list(APPEND _lib_env "${ENV_TMG_DIR}/lib") else() - if(APPLE) - string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + if(WIN32) + string(REPLACE ":" ";" _lib_env "$ENV{LIB}") else() - string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + if(APPLE) + string(REPLACE ":" ";" _lib_env "$ENV{DYLD_LIBRARY_PATH}") + else() + string(REPLACE ":" ";" _lib_env "$ENV{LD_LIBRARY_PATH}") + endif() + list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") + list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() - list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") - list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() list(REMOVE_DUPLICATES _lib_env) @@ -274,12 +285,14 @@ else() endif() -if (TMG_LIBRARIES AND NOT TMG_DIR) +if (TMG_LIBRARIES) list(GET TMG_LIBRARIES 0 first_lib) get_filename_component(first_lib_path "${first_lib}" PATH) if (${first_lib_path} MATCHES "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)") string(REGEX REPLACE "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)" "" not_cached_dir "${first_lib_path}") - set(TMG_DIR "${not_cached_dir}" CACHE PATH "Installation directory of TMG library" FORCE) + set(TMG_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of TMG library" FORCE) + else() + set(TMG_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of TMG library" FORCE) endif() endif()