diff --git a/CMakeLists.txt b/CMakeLists.txt index acf176a96b93c4f294c5ac4c614cc51d9b8f86c9..2568a02b04bcf7a5e15d47d1143801ad70eee106 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,20 +51,21 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/CMakeModules/morse/") # # Options option( ScalFMM_USE_MPI "Set to ON to build ScaFMM with MPI" OFF ) - option( ScalFMM_USE_BLAS "Set to ON to build ScaFMM with BLAS" OFF ) - option( ScalFMM_USE_FFT "Set to ON to build ScaFMM with FFTW" OFF ) + option( ScalFMM_USE_BLAS "Set to ON to build ScaFMM with BLAS" ON ) + option( ScalFMM_USE_FFT "Set to ON to build ScaFMM with FFTW" ON ) + option( ScalFMM_BUILD_EXAMPLES "Set to ON to compile examples " ON ) option( ScalFMM_BUILD_TESTS "Set to ON to build functionalities Tests" OFF ) option( ScalFMM_BUILD_UTESTS "Set to ON to build UTests" OFF ) + option( ScalFMM_INSTALL_DATA "Set to ON to include the data when proceeding to the installtion " OFF ) option( ScalFMM_BUILD_DEBUG "Set to ON to build in Debug" OFF ) option( ScalFMM_USE_LOG "Set to ON to print output debug information" OFF ) option( ScalFMM_USE_MEM_STATS "Set to ON to profile memory" OFF ) option( ScalFMM_ATTACHE_SOURCE "Set to ON to compile with -g" OFF ) option( ScalFMM_USE_ADDONS "Set to ON to compile add ons" OFF ) - option( ScalFMM_USE_SSE "Set to ON to compile with SSE support (and use intrinsec SSE P2P)" ON ) - option( ScalFMM_USE_AVX "Set to ON to compile with AVX support (and use intrinsec AVX P2P)" OFF ) + option( ScalFMM_USE_SSE "Set to ON to compile with SSE support (and use intrinsec SSE P2P)" ON ) + option( ScalFMM_USE_AVX "Set to ON to compile with AVX support (and use intrinsec AVX P2P)" OFF ) option( ScalFMM_USE_ASSERT "Set to ON to enable safe tests during execution" ON ) option( ScalFMM_USE_MIC_NATIVE "Set to ON to compile in native mode for MIC" OFF ) - option( ScalFMM_BUILD_ONLY_LIB "Set to ON to compile only the lib (examples are not compiled) " OFF ) option( ScalFMM_ONLY_DEVEL "Set to ON to compile Development tools (only scalfmm team)" ON ) if( ScalFMM_ONLY_DEVEL ) option( ScalFMM_USE_STARPU "Set to ON to build ScalFMM with StarPU" OFF ) @@ -258,29 +259,22 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/CMakeModules/morse/") option( ScalFMM_USE_MKL_AS_BLAS "Set to ON to use MKL CBLAS" OFF ) if( ScalFMM_USE_MKL_AS_BLAS ) - set(BLA_VENDOR "Intel10_64lp_seq") - find_package(BLASEXT REQUIRED) + find_package(BLASEXT) # not REQUIRED - if(BLAS_FOUND AND BLAS_LIBRARY_DIRS) + if(BLAS_LIBRARY_DIRS) # the RPATH to be used when installing list(APPEND CMAKE_INSTALL_RPATH "${BLAS_LIBRARY_DIRS}") - else() - message(FATAL_ERROR "A BLAS library is required but has not been found") endif() unset(LAPACK_LIBRARIES) if (BLAS_LIBRARIES) set(BLASLAPACK_LIBRARIES ${BLAS_LIBRARIES}) endif() - elseif(ScalFMM_USE_EXTERNAL_BLAS) - message(STATUS "BLAS SET BY EXTERNAL PROGRAM = ${BLAS_LIBRARIES}") - else() - - find_package(BLASEXT REQUIRED) - find_package(LAPACKEXT REQUIRED) + find_package(BLASEXT) # not REQUIRED + find_package(LAPACKEXT) # not REQUIRED set(BLASLAPACK_LIBRARIES) if (LAPACK_LIBRARIES) set(BLASLAPACK_LIBRARIES "${LAPACK_LIBRARIES}") @@ -288,11 +282,16 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/CMakeModules/morse/") if (BLAS_LIBRARIES) list(APPEND BLASLAPACK_LIBRARIES "${BLAS_LIBRARIES}") endif() - endif() - set(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES}; ${BLASLAPACK_LIBRARIES}") - #message(STATUS "SCALFMM_LIBRARIES = ${SCALFMM_LIBRARIES}") + if(BLAS_FOUND) + set(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES}; ${BLASLAPACK_LIBRARIES}") + #message(STATUS "SCALFMM_LIBRARIES = ${SCALFMM_LIBRARIES}") + else() + message(WARNING "BLAS has not been found, ScalFMM will continue to compile but some applications will be disabled.") + message(WARNING "If you have BLAS set BLAS_LIBDIR, BLAS_INCDIR or BLAS_DIR (CMake variables using -D or environment variables).") + set(ScalFMM_USE_FFT OFF) + endif() endif(ScalFMM_USE_BLAS) list(APPEND FUSE_LIST "BLAS") @@ -320,7 +319,7 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/CMakeModules/morse/") # The package can be used with the following COMPONENTS: # MKL, THREADS|OMP and/or SIMPLE|DOUBLE|LONG|QUAD # Default is DOUBLE and without THREADS|OMP - find_package(FFTW REQUIRED COMPONENTS MKL) + find_package(FFTW COMPONENTS MKL) # not REQUIRED set(FFT_LIBRARIES "-L${FFTW_LIBRARY_DIRS_DEP};" CACHE STRING "Set your MKL flags") foreach (fft_lib ${FFTW_LIBRARIES_DEP}) set(FFT_LIBRARIES "${FFT_LIBRARIES} ${fft_lib};") @@ -336,7 +335,7 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/CMakeModules/morse/") # The package can be used with the following COMPONENTS: # MKL, THREADS|OMP and/or SIMPLE|DOUBLE|LONG|QUAD # Default is DOUBLE and without THREADS|OMP - find_package(FFTW REQUIRED) + find_package(FFTW) # not REQUIRED set(FFT_LIBRARIES "-L${FFTW_LIBRARY_DIRS_DEP};" CACHE STRING "Set your MKL flags") foreach (fft_lib ${FFTW_LIBRARIES_DEP}) @@ -350,9 +349,15 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/CMakeModules/morse/") if (FFT_INCLUDES) set(SCALFMM_INCLUDES "${SCALFMM_INCLUDES}; ${FFT_INCLUDES}") endif() - message(STATUS " SCALFMM_LIBRARIES = ${SCALFMM_LIBRARIES}") - message(STATUS " SCALFMM_INCLUDES = ${SCALFMM_INCLUDES}") - + + if(FFTW_FOUND) + message(STATUS " SCALFMM_LIBRARIES = ${SCALFMM_LIBRARIES}") + message(STATUS " SCALFMM_INCLUDES = ${SCALFMM_INCLUDES}") + else() + message(WARNING "FFTW has not been found, ScalFMM will continue to compile but some applications will be disabled.") + message(WARNING "If you have FFTW set FFTW_LIBDIR, FFTW_INCDIR or FFTW_DIR (CMake variables using -D or environment variables).") + set(ScalFMM_USE_FFT OFF) + endif() endif(ScalFMM_USE_FFT) list(APPEND FUSE_LIST "FFT") @@ -576,7 +581,7 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/CMakeModules/morse/") ################################################################## # Remove compilation of the drivers # ################################################################## - if( NOT ScalFMM_BUILD_ONLY_LIB ) + if( ScalFMM_BUILD_EXAMPLES ) # Build - Examples and drivers add_subdirectory(Examples) endif() @@ -585,7 +590,6 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/CMakeModules/morse/") ################################################################## # Build - UTILs if( ScalFMM_ONLY_DEVEL ) - #if( NOT ScalFMM_BUILD_ONLY_LIB ) add_subdirectory(Utils) endif() @@ -650,15 +654,9 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/CMakeModules/morse/") @ONLY IMMEDIATE ) # - install(FILES - ${ScalFMM_BINARY_DIR}/ScalFMMConfig.cmake - DESTINATION lib/ - ) - if( NOT ScalFMM_BUILD_ONLY_LIB) - install(FILES - ${ScalFMM_SOURCE_DIR}/Data/test20k.fma - DESTINATION Data/ - ) + install(FILES ${ScalFMM_BINARY_DIR}/ScalFMMConfig.cmake DESTINATION lib/ ) + if( ScalFMM_INSTALL_DATA ) + install(FILES ${ScalFMM_SOURCE_DIR}/Data/test20k.fma DESTINATION Data/ ) endif() ##################################################################