diff --git a/CMake/CheckSincos.cmake b/CMake/CheckSincos.cmake index 2446f309ec..e00b7d12c8 100644 --- a/CMake/CheckSincos.cmake +++ b/CMake/CheckSincos.cmake @@ -1,21 +1,6 @@ INCLUDE(${CMAKE_ROOT}/Modules/CheckCXXSourceCompiles.cmake) -SET(SINCOS_INCLUDE cmath) - -SET(ENABLE_MASS FALSE CACHE BOOL "ENABLE MASS math libraries for Power architecture") -# This needs to go before HAVE_SINCOS -IF(ENABLE_MASS) - INCLUDE(CMake/FindIBMMASS.cmake) - IF(HAVE_MASS) - SET(CMAKE_REQUIRED_INCLUDES ${MASS_INCLUDE_DIRECTORIES} ${CMAKE_REQUIRED_INCLUDES}) - SET(CMAKE_REQUIRED_LINK_OPTIONS ${MASS_LINKER_FLAGS}) - SET(CMAKE_REQUIRED_LIBRARIES ${MASS_LIBRARIES}) - ENDIF(HAVE_MASS) -ENDIF(ENABLE_MASS) - -MESSAGE("CMAKE_REQUIRED_INCLUDES: ${CMAKE_REQUIRED_INCLUDES}") -MESSAGE("CMAKE_REQUIRED_LINK_OPTIONS: ${CMAKE_REQUIRED_LINK_OPTIONS}") -MESSAGE("CMAKE_REQUIRED_LIBRARIES: ${CMAKE_REQUIRED_LIBRARIES}") +SET(CMAKE_REQUIRED_LIBRARIES Math::scalar_vector_functions) SET( SINCOS_TEST_SRC "#include \"${SINCOS_INCLUDE}\" diff --git a/CMake/FindFFTW.cmake b/CMake/FindFFTW.cmake index ad972dd0b2..9ec7e6ad71 100644 --- a/CMake/FindFFTW.cmake +++ b/CMake/FindFFTW.cmake @@ -20,6 +20,11 @@ IF(FFTW_INCLUDE_DIR AND FFTW_LIBRARIES) MESSAGE(STATUS "FFTW_INCLUDE_DIR=${FFTW_INCLUDE_DIR}") MESSAGE(STATUS "FFTW_LIBRARIES=${FFTW_LIBRARIES}") SET(FFTW_FOUND TRUE) + #create FFTW3 target + ADD_LIBRARY(Math::FFTW3 INTERFACE IMPORTED) + SET_TARGET_PROPERTIES(Math::FFTW3 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIR}" + INTERFACE_COMPILE_DEFINITIONS "HAVE_LIBFFTW" + INTERFACE_LINK_LIBRARIES "${FFTW_LIBRARIES}") ENDIF() MARK_AS_ADVANCED( diff --git a/CMake/FindIBMMASS.cmake b/CMake/FindIBMMASS.cmake index 21954cb706..053735e2c3 100644 --- a/CMake/FindIBMMASS.cmake +++ b/CMake/FindIBMMASS.cmake @@ -7,9 +7,9 @@ set(SUFFIXES include) find_path(MASS_INCLUDE_DIRECTORIES name "mass.h" HINTS ${MASS_ROOT} PATH_SUFFIXES ${SUFFIXES}) if (NOT MASS_INCLUDE_DIRECTORIES) - message(FATAL_ERROR "MASS_INCLUDE_DIRECTORIES not set. \"mass.h\" not found in MASS_ROOT/(${SUFFIXES})") + MESSAGE(FATAL_ERROR "MASS_INCLUDE_DIRECTORIES not set. \"mass.h\" not found in MASS_ROOT/(${SUFFIXES})") endif (NOT MASS_INCLUDE_DIRECTORIES) -message("MASS_INCLUDE_DIRECTORIES: ${MASS_INCLUDE_DIRECTORIES}") +MESSAGE(STATUS "MASS_INCLUDE_DIRECTORIES: ${MASS_INCLUDE_DIRECTORIES}") # Finding and setting the MASS_LINK_DIRECTORIES # the directory organization varies with platform and targets @@ -19,10 +19,10 @@ set(SUFFIXES lib lib64) find_path(MASS_LINK_DIRECTORIES name "${MASS_FIND_LIB}" HINTS ${MASS_ROOT} PATH_SUFFIXES ${SUFFIXES}) if (NOT MASS_LINK_DIRECTORIES) - message(FATAL_ERROR "MASS_LINK_DIRECTORIES not set. ${MASS_FIND_LIB} " + MESSAGE(FATAL_ERROR "MASS_LINK_DIRECTORIES not set. ${MASS_FIND_LIB} " "not found in MASS_ROOT/(${SUFFIXES})") endif (NOT MASS_LINK_DIRECTORIES) -message("MASS_LINK_DIRECTORIES: ${MASS_LINK_DIRECTORIES}") +MESSAGE(STATUS "MASS_LINK_DIRECTORIES: ${MASS_LINK_DIRECTORIES}") set(MASS_LINKER_FLAGS -L${MASS_LINK_DIRECTORIES} -Wl,-rpath,${MASS_LINK_DIRECTORIES}) set(MASS_LIBRARIES "-lmass -lmassv") @@ -45,6 +45,7 @@ for( int i = 0; i < in_size; ++i) vlog10(resultv, inputv, &in_size); } ") + try_compile(HAVE_MASS ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_mass.cxx CMAKE_FLAGS @@ -58,17 +59,17 @@ if ( NOT HAVE_MASS ) endif ( NOT HAVE_MASS ) IF ( HAVE_MASS ) - SET( MASS_FOUND 1 ) - SET( MASS_FLAGS ${MASS_COMPILE_DEFINITIONS} ) - include_directories( ${MASS_INCLUDE_DIRECTORIES} ) - set( HAVE_VECTOR_MATH 1 ) - set( HAVE_MASSV 1 ) - set( SINCOS_INCLUDE mass.h ) + SET( MASS_FOUND TRUE ) + SET( HAVE_MASSV TRUE ) MESSAGE(STATUS "MASS found: HAVE_MASS=${HAVE_MASS}, HAVE_MASSV=${HAVE_MASSV}") + + #create scalar_vector_functions target + ADD_LIBRARY(Math::scalar_vector_functions INTERFACE IMPORTED) + SET_TARGET_PROPERTIES(Math::scalar_vector_functions PROPERTIES INTERFACE_COMPILE_DEFINITIONS "HAVE_MASS;HAVE_MASSV" + INTERFACE_INCLUDE_DIRECTORIES "${MASS_INCLUDE_DIRECTORIES}" + INTERFACE_LINK_LIBRARIES "${MASS_LINKER_FLAGS} ${MASS_LIBRARIES}") + set( SINCOS_INCLUDE mass.h ) ELSE( HAVE_MASS ) - SET( MASS_FOUND 0 ) - SET( MASS_FLAGS ) - SET( MASS_LIBRARIES ) - SET( MASS_LINKER_FLAGS ) - MESSAGE("MASS not found") + SET( MASS_FOUND FALSE ) + MESSAGE(STATUS "MASS not found") ENDIF( HAVE_MASS ) diff --git a/CMake/FindMKL.cmake b/CMake/FindMKL.cmake index 04edf2ed19..cc87d305ff 100644 --- a/CMake/FindMKL.cmake +++ b/CMake/FindMKL.cmake @@ -20,21 +20,21 @@ else (NOT MKL_ROOT) find_path(MKL_INCLUDE_DIRECTORIES "mkl.h" HINTS ${MKL_ROOT} PATH_SUFFIXES ${SUFFIXES}) if (NOT MKL_INCLUDE_DIRECTORIES) - message(FATAL_ERROR "MKL_INCLUDE_DIRECTORIES not set. \"mkl.h\" not found in MKL_ROOT/(${SUFFIXES})") + MESSAGE(FATAL_ERROR "MKL_INCLUDE_DIRECTORIES not set. \"mkl.h\" not found in MKL_ROOT/(${SUFFIXES})") endif () endif (NOT MKL_ROOT) if (NOT MKL_ROOT) if (CMAKE_CXX_COMPILER_ID MATCHES "Intel") - message(FATAL_ERROR "Intel's standard compilervar.sh sets the env variable MKLROOT.\n" + MESSAGE(FATAL_ERROR "Intel's standard compilervar.sh sets the env variable MKLROOT.\n" "If you are invoking icc without the customary environment\n" "you must set the the environment variable or pass cmake MKL_ROOT.") else(CMAKE_CXX_COMPILER_ID MATCHES "Intel") - message (FATAL_ERROR "ENABLE_MKL is TRUE and mkl directory not found. Set MKL_ROOT." ) + MESSAGE(FATAL_ERROR "ENABLE_MKL is TRUE and mkl directory not found. Set MKL_ROOT." ) endif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") endif (NOT MKL_ROOT) -message("MKL_INCLUDE_DIRECTORIES: ${MKL_INCLUDE_DIRECTORIES}") +MESSAGE(STATUS "MKL_INCLUDE_DIRECTORIES: ${MKL_INCLUDE_DIRECTORIES}") if ( NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" ) # Finding and setting the MKL_LINK_DIRECTORIES @@ -45,11 +45,11 @@ if ( NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" ) find_library(MKL_LINK_DIRECTORIES "${MKL_FIND_LIB}" HINTS ${MKL_ROOT} PATH_SUFFIXES ${SUFFIXES}) if (NOT MKL_LINK_DIRECTORIES) - message(FATAL_ERROR "MKL_LINK_DIRECTORIES not set. ${MKL_FIND_LIB} " + MESSAGE(FATAL_ERROR "MKL_LINK_DIRECTORIES not set. ${MKL_FIND_LIB} " "not found in MKL_ROOT/(${SUFFIXES})") endif () string(REPLACE "/${MKL_FIND_LIB}" "" MKL_LINK_DIRECTORIES ${MKL_LINK_DIRECTORIES}) - message("MKL_LINK_DIRECTORIES: ${MKL_LINK_DIRECTORIES}") + MESSAGE(STATUS "MKL_LINK_DIRECTORIES: ${MKL_LINK_DIRECTORIES}") set(MKL_LINKER_FLAGS "-L${MKL_LINK_DIRECTORIES} -Wl,-rpath,${MKL_LINK_DIRECTORIES}") set(MKL_LIBRARIES "-lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl") else ( NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" ) @@ -91,13 +91,12 @@ find_path(MKL_FFTW3 "fftw3.h" HINTS ${MKL_INCLUDE_DIRECTORIES} PATH_SUFFIXES fftw) if(MKL_FFTW3) - list(APPEND MKL_INCLUDE_DIRECTORIES ${MKL_FFTW3}) FILE( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_mkl_fftw3.cxx" "#include \n #include \n int main() { return 0; }\n" ) try_compile(HAVE_MKL_FFTW3 ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_mkl_fftw3.cxx CMAKE_FLAGS - "-DINCLUDE_DIRECTORIES=${MKL_INCLUDE_DIRECTORIES} " + "-DINCLUDE_DIRECTORIES=${MKL_FFTW3} " "-DLINK_DIRECTORIES=${MKL_LINK_DIRECTORIES}" LINK_LIBRARIES "${MKL_LIBRARIES}" COMPILE_DEFINITIONS "${MKL_COMPILE_DEFINITIONS}" @@ -107,14 +106,46 @@ else(MKL_FFTW3) endif(MKL_FFTW3) IF ( HAVE_MKL ) - SET( MKL_FOUND 1 ) - SET( MKL_FLAGS ${MKL_COMPILE_DEFINITIONS} ) - include_directories( ${MKL_INCLUDE_DIRECTORIES} ) + SET( MKL_FOUND TRUE ) MESSAGE(STATUS "MKL found: HAVE_MKL=${HAVE_MKL}, HAVE_MKL_VML=${HAVE_MKL_VML}, HAVE_MKL_FFTW3=${HAVE_MKL_FFTW3}") + + #create BLAS_LAPACK target + ADD_LIBRARY(Math::BLAS_LAPACK INTERFACE IMPORTED) + SET_TARGET_PROPERTIES(Math::BLAS_LAPACK PROPERTIES INTERFACE_COMPILE_DEFINITIONS "HAVE_MKL") + IF (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" ) + SET_TARGET_PROPERTIES(Math::BLAS_LAPACK PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${MKL_INCLUDE_DIRECTORIES}" + INTERFACE_LINK_LIBRARIES "${MKL_LINKER_FLAGS} ${MKL_LIBRARIES}") + ELSE (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" ) + SET_TARGET_PROPERTIES(Math::BLAS_LAPACK PROPERTIES INTERFACE_COMPILE_OPTIONS "-mkl" + INTERFACE_LINK_LIBRARIES "-mkl") + ENDIF (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" ) + + IF( HAVE_MKL_VML ) + #create scalar_vector_functions target + ADD_LIBRARY(Math::scalar_vector_functions INTERFACE IMPORTED) + SET_TARGET_PROPERTIES(Math::scalar_vector_functions PROPERTIES INTERFACE_COMPILE_DEFINITIONS "HAVE_MKL;HAVE_MKL_VML") + IF (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" ) + SET_TARGET_PROPERTIES(Math::scalar_vector_functions PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${MKL_INCLUDE_DIRECTORIES}" + INTERFACE_LINK_LIBRARIES "${MKL_LINKER_FLAGS} ${MKL_LIBRARIES}") + ELSE (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" ) + SET_TARGET_PROPERTIES(Math::scalar_vector_functions PROPERTIES INTERFACE_COMPILE_OPTIONS "-mkl" + INTERFACE_LINK_LIBRARIES "-mkl") + ENDIF (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" ) + ENDIF( HAVE_MKL_VML ) + + IF( HAVE_MKL_FFTW3 ) + #create FFTW3 target + ADD_LIBRARY(Math::FFTW3 INTERFACE IMPORTED) + SET_TARGET_PROPERTIES(Math::FFTW3 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${MKL_FFTW3}" + INTERFACE_COMPILE_DEFINITIONS "HAVE_MKL;HAVE_LIBFFTW") + IF (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" ) + SET_TARGET_PROPERTIES(Math::FFTW3 PROPERTIES INTERFACE_LINK_LIBRARIES "${MKL_LINKER_FLAGS} ${MKL_LIBRARIES}") + ELSE (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" ) + SET_TARGET_PROPERTIES(Math::FFTW3 PROPERTIES INTERFACE_COMPILE_OPTIONS "-mkl" + INTERFACE_LINK_LIBRARIES "-mkl") + ENDIF (NOT CMAKE_CXX_COMPILER_ID MATCHES "Intel" ) + ENDIF( HAVE_MKL_FFTW3 ) ELSE( HAVE_MKL ) - SET( MKL_FOUND 0 ) - SET( MKL_FLAGS ) - SET( MKL_LIBRARIES ) - SET( MKL_LINKER_FLAGS ) - MESSAGE("MKL not found") + SET( MKL_FOUND FALSE ) + MESSAGE(STATUS "MKL not found") ENDIF( HAVE_MKL ) diff --git a/CMake/FindVectorMath.cmake b/CMake/FindVectorMath.cmake deleted file mode 100644 index a73cf626d1..0000000000 --- a/CMake/FindVectorMath.cmake +++ /dev/null @@ -1,42 +0,0 @@ -# -# Find vectorized math libraries and enable appropriate flags -# -# Initial version only for MKL VML. Works for gcc+MKL case. libm and massv detection required. -# - -IF(NOT HAVE_MASS) -SET( HAVE_VECTOR_MATH 0 ) - -IF ( HAVE_MKL_VML ) -# We arrive here if MKL was detected earlier by FindMKL - SET ( HAVE_VECTOR_MATH 1 ) - MESSAGE(STATUS "Using MKL Vector Math functions") -ELSE() - #MESSAGE(STATUS "Trying MKL VML") - # Check for mkl_vml_functions.h - FILE( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_mkl_vml.cxx" - "#include \n #include \n int main() { return 0; }\n" ) - try_compile(HAVE_MKL_VML ${CMAKE_BINARY_DIR} - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_mkl_vml.cxx - CMAKE_FLAGS "${CMAKE_CXX_FLAGS}" ) - IF (HAVE_MKL_VML) - # enable VML only when MKL libraries have been picked up - IF (MKL_FOUND) - SET ( HAVE_VECTOR_MATH 1 ) - MESSAGE(STATUS "Using MKL Vector Math functions (header file check passed)") - ELSE(MKL_FOUND) - MESSAGE(STATUS "Drop MKL Vector Math functions (header file check passed but libraries are not available)") - SET ( HAVE_MKL_VML 0 ) - ENDIF(MKL_FOUND) - ELSE () - IF (MKL_FOUND) - MESSAGE(WARNING "mkl_vml_functions.h check failed but MKL libraries are available. At the risk of losing performance.") - ENDIF() - ENDIF() -ENDIF() -ENDIF() -IF ( NOT HAVE_VECTOR_MATH ) - MESSAGE(STATUS "No usable vector math library detected.") -ENDIF() - - diff --git a/CMakeLists.txt b/CMakeLists.txt index 74e5432b20..49bba2a303 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -226,8 +226,6 @@ INCLUDE(${CMAKE_ROOT}/Modules/CheckCXXSymbolExists.cmake) INCLUDE(${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake) INCLUDE(${CMAKE_ROOT}/Modules/CheckTypeSize.cmake) -INCLUDE(${PROJECT_CMAKE}/CheckSincos.cmake) - CHECK_FUNCTION_EXISTS(posix_memalign HAVE_POSIX_MEMALIGN) CHECK_INCLUDE_FILE(dlfcn.h HAVE_DLFCN_H) @@ -450,34 +448,25 @@ ELSE(CMAKE_TOOLCHAIN_FILE) INCLUDE(CMake/FindMKL.cmake) ENDIF(ENABLE_MKL) IF ( HAVE_MKL ) - # We found MKL, add the link library - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MKL_FLAGS}") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MKL_FLAGS}") - SET(LAPACK_FOUND 1) - SET(LAPACK_LIBRARIES "${MKL_LIBRARIES}") - SET(LAPACK_LINKER_FLAGS "${MKL_LINKER_FLAGS}") + # Skip adding Math::BLAS_LAPACK target which has been imported by FindMKL. ELSEIF ( $ENV{CRAYPE_VERSION} MATCHES "." ) # Cray specific environment variable indicates we are on a cray. Assume libsci will be linked # preferable to attempt a compile/link - SET(LAPACK_FOUND 1) MESSAGE(STATUS "Assuming Cray libsci or other BLAS/LAPACK will be linked by compiler wrappers") + ADD_LIBRARY(Math::BLAS_LAPACK INTERFACE IMPORTED) ELSE() - # Search for Blas/Lapack - find_package(LAPACK) + # The last search for Blas/Lapack + find_package(LAPACK REQUIRED) IF("${LAPACK_LIBRARIES}" MATCHES "mkl") MESSAGE(FATAL_ERROR "MKL found via LAPACK/BLAS. Please pass -DENABLE_MKL=1 to cmake for full Intel MKL utilization. -DMKL_ROOT may also be needed for the include files to be found.") ENDIF() - ENDIF() - IF(LAPACK_FOUND) MESSAGE(STATUS "LAPACK libraries: ${LAPACK_LIBRARIES}") MESSAGE(STATUS "LAPACK linker flags: ${LAPACK_LINKER_FLAGS}") - SET(LAPACK_LIBRARY ${LAPACK_LIBRARIES} ${LAPACK_LINKER_FLAGS}) - ELSE() - MESSAGE(FATAL_ERROR "Could not find required libraries LAPACK &/or BLAS") + SET(LAPACK_LIBRARY ${LAPACK_LINKER_FLAGS} ${LAPACK_LIBRARIES}) + # Add Math::BLAS_LAPACK target + ADD_LIBRARY(Math::BLAS_LAPACK INTERFACE IMPORTED) + SET_TARGET_PROPERTIES(Math::BLAS_LAPACK PROPERTIES INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARY}") ENDIF() - - INCLUDE(CMake/FindVectorMath.cmake) - ENDIF(CMAKE_TOOLCHAIN_FILE) IF (ENABLE_GCOV) @@ -545,16 +534,31 @@ ENDIF(QMC_MPI) # installataions # list of libraries to be linked with the main applications using I/O -SET(QMC_UTIL_LIBS ${LAPACK_LIBRARY} ${BLAS_LIBRARY}) - -# This needs a better place to live. as does all the IF( HAVE_MKL ) stuff -IF(HAVE_MASS) - SET(CMAKE_CXX_FLAGS ${MASS_FLAGS} ${CMAKE_CXX_FLAGS}) - SET(CMAKE_C_FLAGS ${MASS_FLAGS} ${CMAKE_C_FLAGS}) - SET(MASS_LIBRARY "${MASS_LINKER_FLAGS} ${MASS_LIBRARIES}") - SET(QMC_UTIL_LIBS ${MASS_LIBRARY} ${QMC_UTIL_LIBS}) -ENDIF(HAVE_MASS) +#------------------------------------------------------------------- +# set up scalar/vector math libraries +#------------------------------------------------------------------- +SET(ENABLE_MASS FALSE CACHE BOOL "ENABLE MASS scalar and vector math libraries for Power architecture") + +# This needs to go before HAVE_SINCOS +IF(ENABLE_MASS) + INCLUDE(CMake/FindIBMMASS.cmake) +ENDIF(ENABLE_MASS) + +IF(NOT HAVE_MASS AND NOT HAVE_MKL_VML) + MESSAGE(STATUS "No usable vector math library detected.") + ADD_LIBRARY(Math::scalar_vector_functions INTERFACE IMPORTED) +ENDIF(NOT HAVE_MASS AND NOT HAVE_MKL_VML) + +# CheckSincos relies on SINCOS_INCLUDE which may be modified based on vendor libraries +IF(NOT SINCOS_INCLUDE) + SET(SINCOS_INCLUDE cmath) +ENDIF(NOT SINCOS_INCLUDE) +MESSAGE(STATUS "SINCOS_INCLUDE : ${SINCOS_INCLUDE}") +INCLUDE(${PROJECT_CMAKE}/CheckSincos.cmake) +#------------------------------------------------------------------- +# set up FFTW3 library +#------------------------------------------------------------------- SET( FFTW_FOUND 0 ) IF ( HAVE_MKL ) IF ( HAVE_MKL_FFTW3 ) @@ -566,8 +570,6 @@ IF ( NOT FFTW_FOUND ) ENDIF() IF(FFTW_FOUND) SET(HAVE_LIBFFTW 1) - INCLUDE_DIRECTORIES(${FFTW_INCLUDE_DIR}) - SET(QMC_UTIL_LIBS ${QMC_UTIL_LIBS} ${FFTW_LIBRARIES}) MESSAGE(STATUS "Found FFTW") ELSE(FFTW_FOUND) # MESSAGE(STATUS "Disabling FFTW") diff --git a/src/AFQMC/CMakeLists.txt b/src/AFQMC/CMakeLists.txt index 5a576c4c78..743ae715b5 100644 --- a/src/AFQMC/CMakeLists.txt +++ b/src/AFQMC/CMakeLists.txt @@ -70,6 +70,7 @@ ELSE(ENABLE_CUDA) ENDIF(ENABLE_CUDA) TARGET_LINK_LIBRARIES(afqmc PUBLIC qmcutil) +TARGET_LINK_LIBRARIES(afqmc PRIVATE Math::BLAS_LAPACK) IF(HAVE_MPI) TARGET_COMPILE_DEFINITIONS(afqmc PRIVATE "USE_MPI") ENDIF(HAVE_MPI) diff --git a/src/AFQMC/Numerics/tests/CMakeLists.txt b/src/AFQMC/Numerics/tests/CMakeLists.txt index 49e5398f76..2ef89cb9e7 100644 --- a/src/AFQMC/Numerics/tests/CMakeLists.txt +++ b/src/AFQMC/Numerics/tests/CMakeLists.txt @@ -25,7 +25,7 @@ SET(UTEST_NAME deterministic-unit_test_${SRC_DIR}) ADD_EXECUTABLE(${UTEST_EXE} test_dense_numerics.cpp test_ma_blas.cpp test_sparse_numerics.cpp test_sparse_numerics_native.cpp) #ENDIF(ENABLE_CUDA) -TARGET_LINK_LIBRARIES(${UTEST_EXE} afqmc) +TARGET_LINK_LIBRARIES(${UTEST_EXE} afqmc Math::BLAS_LAPACK) #ADD_TEST(NAME ${UTEST_NAME} COMMAND "${QMCPACK_UNIT_TEST_DIR}/${UTEST_EXE}") ADD_UNIT_TEST(${UTEST_NAME} "${QMCPACK_UNIT_TEST_DIR}/${UTEST_EXE}") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 14cb06f396..3e2b8e3b46 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -254,7 +254,7 @@ ENDIF() ADD_LIBRARY(qmcbase ${PARTICLE} ${PARTICLEIO}) - TARGET_LINK_LIBRARIES(qmcbase PRIVATE qmcminimalcontainers) + TARGET_LINK_LIBRARIES(qmcbase PRIVATE qmcminimalcontainers Math::BLAS_LAPACK Math::scalar_vector_functions) TARGET_LINK_LIBRARIES(qmcbase PUBLIC qmcutil) diff --git a/src/Lattice/tests/CMakeLists.txt b/src/Lattice/tests/CMakeLists.txt index 06661f6698..54b8b89411 100644 --- a/src/Lattice/tests/CMakeLists.txt +++ b/src/Lattice/tests/CMakeLists.txt @@ -18,7 +18,7 @@ SET(UTEST_NAME deterministic-unit_test_${SRC_DIR}) ADD_EXECUTABLE(${UTEST_EXE} test_ParticleBConds.cpp test_CrystalLattice.cpp test_LRBreakupParameters.cpp) -TARGET_LINK_LIBRARIES(${UTEST_EXE} qmcutil) +TARGET_LINK_LIBRARIES(${UTEST_EXE} qmcutil Math::scalar_vector_functions) #ADD_TEST(NAME ${UTEST_NAME} COMMAND "${QMCPACK_UNIT_TEST_DIR}/${UTEST_EXE}") ADD_UNIT_TEST(${UTEST_NAME} "${QMCPACK_UNIT_TEST_DIR}/${UTEST_EXE}") diff --git a/src/Numerics/tests/CMakeLists.txt b/src/Numerics/tests/CMakeLists.txt index 7155600cb1..311b88fb66 100644 --- a/src/Numerics/tests/CMakeLists.txt +++ b/src/Numerics/tests/CMakeLists.txt @@ -30,7 +30,7 @@ SET(UTEST_SRCS test_grid_functor.cpp test_stdlib.cpp test_bessel.cpp ADD_EXECUTABLE(${UTEST_EXE} ${UTEST_SRCS}) -TARGET_LINK_LIBRARIES(${UTEST_EXE} qmcutil) +TARGET_LINK_LIBRARIES(${UTEST_EXE} qmcutil Math::scalar_vector_functions) #ADD_TEST(NAME ${UTEST_NAME} COMMAND "${QMCPACK_UNIT_TEST_DIR}/${UTEST_EXE}") ADD_UNIT_TEST(${UTEST_NAME} "${QMCPACK_UNIT_TEST_DIR}/${UTEST_EXE}") diff --git a/src/Particle/tests/CMakeLists.txt b/src/Particle/tests/CMakeLists.txt index 6437297dd9..fb9cd6061b 100644 --- a/src/Particle/tests/CMakeLists.txt +++ b/src/Particle/tests/CMakeLists.txt @@ -17,6 +17,6 @@ SET(UTEST_NAME deterministic-unit_test_${SRC_DIR}) ADD_EXECUTABLE(${UTEST_EXE} test_particle.cpp test_distance_table.cpp test_walker.cpp test_particle_pool.cpp) -TARGET_LINK_LIBRARIES(${UTEST_EXE} qmcbase) +TARGET_LINK_LIBRARIES(${UTEST_EXE} qmcbase Math::scalar_vector_functions) ADD_UNIT_TEST(${UTEST_NAME} "${QMCPACK_UNIT_TEST_DIR}/${UTEST_EXE}") diff --git a/src/QMCDrivers/CMakeLists.txt b/src/QMCDrivers/CMakeLists.txt index 890e2bd4a9..1e55490da7 100644 --- a/src/QMCDrivers/CMakeLists.txt +++ b/src/QMCDrivers/CMakeLists.txt @@ -117,10 +117,11 @@ USE_FAKE_RNG(qmcdriver_unit) TARGET_LINK_LIBRARIES(qmcdriver PUBLIC qmcham) TARGET_LINK_LIBRARIES(qmcdriver_unit PUBLIC qmcham_unit) - +TARGET_LINK_LIBRARIES(qmcdriver PRIVATE Math::BLAS_LAPACK) +TARGET_LINK_LIBRARIES(qmcdriver_unit PRIVATE Math::BLAS_LAPACK) IF(BUILD_LMYENGINE_INTERFACE) - TARGET_LINK_LIBRARIES(qmcdriver PUBLIC formic_utils) - TARGET_LINK_LIBRARIES(qmcdriver_unit PUBLIC formic_utils) + TARGET_LINK_LIBRARIES(qmcdriver PRIVATE formic_utils) + TARGET_LINK_LIBRARIES(qmcdriver_unit PRIVATE formic_utils) ENDIF() #IF(QMC_BUILD_STATIC) diff --git a/src/QMCHamiltonians/CMakeLists.txt b/src/QMCHamiltonians/CMakeLists.txt index 2a756c62ec..fdd6293a78 100644 --- a/src/QMCHamiltonians/CMakeLists.txt +++ b/src/QMCHamiltonians/CMakeLists.txt @@ -117,8 +117,8 @@ TARGET_LINK_LIBRARIES(qmcham_unit PUBLIC qmcfakerng) TARGET_LINK_LIBRARIES(qmcham PUBLIC qmcwfs) TARGET_LINK_LIBRARIES(qmcham_unit PUBLIC qmcwfs) -TARGET_LINK_LIBRARIES(qmcham PRIVATE einspline) -TARGET_LINK_LIBRARIES(qmcham_unit PRIVATE einspline) +TARGET_LINK_LIBRARIES(qmcham PRIVATE einspline Math::BLAS_LAPACK Math::FFTW3) +TARGET_LINK_LIBRARIES(qmcham_unit PRIVATE einspline Math::BLAS_LAPACK Math::FFTW3) #IF(QMC_BUILD_STATIC) diff --git a/src/QMCTools/CMakeLists.txt b/src/QMCTools/CMakeLists.txt index 0df04c5054..0d6755ed0f 100644 --- a/src/QMCTools/CMakeLists.txt +++ b/src/QMCTools/CMakeLists.txt @@ -64,7 +64,7 @@ INSTALL(TARGETS qmc-check-affinity RUNTIME DESTINATION bin) ADD_EXECUTABLE(convertpw4qmc convertpw4qmc.cpp XmlRep.cpp WriteEshdf.cpp) -TARGET_LINK_LIBRARIES(convertpw4qmc PRIVATE qmcutil) +TARGET_LINK_LIBRARIES(convertpw4qmc PRIVATE qmcutil Math::FFTW3) INSTALL(TARGETS convertpw4qmc RUNTIME DESTINATION bin) diff --git a/src/QMCTools/ppconvert/src/CMakeLists.txt b/src/QMCTools/ppconvert/src/CMakeLists.txt index 8bdc122bea..c1c54fb893 100644 --- a/src/QMCTools/ppconvert/src/CMakeLists.txt +++ b/src/QMCTools/ppconvert/src/CMakeLists.txt @@ -11,10 +11,4 @@ target_sources(ppconvert "${CMAKE_CURRENT_SOURCE_DIR}/ParserClass.cc" ) -target_link_libraries(ppconvert common ${LAPACK_LIBRARIES}) -set_property(TARGET ppconvert PROPERTY INSTALL_RPATH "${LAPACK_LINK_DIRECTORIES}") -set_property(TARGET ppconvert PROPERTY BUILD_WITH_INSTALL_RPATH ON) -set_property(TARGET ppconvert PROPERTY LINK_FLAGS "${LAPACK_LINKER_FLAGS}") -target_include_directories(ppconvert PUBLIC - ${LAPACK_INCLUDE_DIRECTORIES} - ) +target_link_libraries(ppconvert common Math::BLAS_LAPACK) diff --git a/src/QMCWaveFunctions/CMakeLists.txt b/src/QMCWaveFunctions/CMakeLists.txt index 02a7d281ec..0f34ad354f 100644 --- a/src/QMCWaveFunctions/CMakeLists.txt +++ b/src/QMCWaveFunctions/CMakeLists.txt @@ -234,7 +234,7 @@ IF(HAVE_CUDA) ENDIF(HAVE_CUDA) TARGET_LINK_LIBRARIES(qmcwfs PUBLIC qmcbase) -TARGET_LINK_LIBRARIES(qmcwfs PRIVATE einspline) +TARGET_LINK_LIBRARIES(qmcwfs PRIVATE einspline Math::BLAS_LAPACK Math::FFTW3 Math::scalar_vector_functions) #IF(QMC_BUILD_STATIC) # ADD_LIBRARY(qmcwfs STATIC ${WFBASE_SRCS} ${JASTROW_SRCS} ${FERMION_SRCS}) diff --git a/src/QMCWaveFunctions/tests/CMakeLists.txt b/src/QMCWaveFunctions/tests/CMakeLists.txt index c20888c127..d329c54f7f 100644 --- a/src/QMCWaveFunctions/tests/CMakeLists.txt +++ b/src/QMCWaveFunctions/tests/CMakeLists.txt @@ -61,7 +61,7 @@ ADD_EXECUTABLE(${UTEST_EXE} test_wf.cpp test_TrialWaveFunction.cpp test_wavefunc test_rpa_jastrow.cpp test_example_he.cpp test_user_jastrow.cpp test_lattice_gaussian.cpp test_kspace_jastrow.cpp test_short_range_cusp_jastrow.cpp ${MO_SRCS}) -TARGET_LINK_LIBRARIES(${UTEST_EXE} qmcwfs) +TARGET_LINK_LIBRARIES(${UTEST_EXE} qmcwfs Math::BLAS_LAPACK Math::scalar_vector_functions) ADD_UNIT_TEST(${UTEST_NAME} "${QMCPACK_UNIT_TEST_DIR}/${UTEST_EXE}") SET_TESTS_PROPERTIES(${UTEST_NAME} PROPERTIES WORKING_DIRECTORY ${UTEST_DIR}) diff --git a/src/config.h.cmake.in b/src/config.h.cmake.in index 9f2da07b59..80fee2b3e9 100644 --- a/src/config.h.cmake.in +++ b/src/config.h.cmake.in @@ -62,9 +62,6 @@ /* Define to 1 if you have libxml2 */ #cmakedefine HAVE_LIBXML2 @HAVE_LIBXML2@ -/* Define to 1 if you have fftw */ -#cmakedefine HAVE_LIBFFTW @HAVE_LIBFFTW@ - /* Define to 1 if you have libxml++ */ #cmakedefine HAVE_LIBXMLPP @HAVE_LIBXMLPP@ @@ -132,24 +129,12 @@ #endif /* HAVE_EINSPLINE_EXT */ -/* Find MKL library */ -#cmakedefine HAVE_MKL @HAVE_MKL@ - -/* Find mkl/vml library */ -#cmakedefine HAVE_MKL_VML @HAVE_MKL_VML@ - /* Find ESSL library */ #cmakedefine HAVE_ESSL @HAVE_ESSL@ /* Find acml library */ #cmakedefine HAVE_ACML @HAVE_ACML@ -/* Find MASS library */ -#cmakedefine HAVE_MASS @HAVE_MASS@ - -/* Find MASSV library */ -#cmakedefine HAVE_MASSV @HAVE_MASSV@ - /* Using CUDA for GPU execution */ #cmakedefine QMC_CUDA @QMC_CUDA@ diff --git a/src/formic/utils/CMakeLists.txt b/src/formic/utils/CMakeLists.txt index 2b90cb749e..3cf010b0a5 100644 --- a/src/formic/utils/CMakeLists.txt +++ b/src/formic/utils/CMakeLists.txt @@ -64,14 +64,11 @@ add_library(formic_utils matrix.cpp lmyengine/var_dependencies.cpp) TARGET_COMPILE_DEFINITIONS(formic_utils INTERFACE "HAVE_LMY_ENGINE") - +TARGET_LINK_LIBRARIES(formic_utils PRIVATE Math::BLAS_LAPACK) IF(HAVE_MPI) TARGET_LINK_LIBRARIES(formic_utils PUBLIC MPI::MPI_CXX) ENDIF() -# Ye Temporary safe depdency for linear algerbra, will be fixed soon. -TARGET_LINK_LIBRARIES(formic_utils PUBLIC qmcutil) - #target_link_libraries(formic_utils ${FORMIC_LAPACK_BLAS_LIBS}) #set_property(TARGET formic_utils PROPERTY CXX_STANDARD 11)