Fix the library link order in CMake configuration.

Issues are:
1) Wrong order of libaries. After in this fix, the order is qmcapp.cpp.o, qmcpack owned libraries, lapack/blas, FFT, XML2, HDF5, LIBZ, LIBM.
2) Performance issue on BGQ due to the inclusion of libmass after libm. This might also affect other platforms.
3) Duplicated occurance of libraries in the final linking line.


git-svn-id: https://subversion.assembla.com/svn/qmcdev/trunk@6919 e5b18d87-469d-4833-9cc0-8cdfa06e9491
This commit is contained in:
Ye Luo 2016-05-18 01:52:12 +00:00
parent 0a87dbc1d2
commit b255dca1b5
6 changed files with 36 additions and 41 deletions

View File

@ -423,7 +423,7 @@ ELSE(CMAKE_TOOLCHAIN_FILE)
IF(LAPACK_FOUND)
MESSAGE(STATUS "LAPACK libraries: ${LAPACK_LIBRARIES}")
MESSAGE(STATUS "LAPACK linker flags: ${LAPACK_LINKER_FLAGS}")
link_libraries(${LAPACK_LIBRARIES} ${LAPACK_LINKER_FLAGS})
SET(LAPACK_LIBRARY ${LAPACK_LIBRARIES} ${LAPACK_LINKER_FLAGS})
ENDIF()
@ -462,8 +462,29 @@ INCLUDE(${CMAKE_ROOT}/Modules/FindThreads.cmake)
# use customized cmake file for boost so that we can deal with multiple
# installataions
# list of libraries to be linked with the main applications using I/O
SET(QMC_UTIL_LIBS )
SET(QMC_UTIL_LIBS ${LAPACK_LIBRARY} ${BLAS_LIBRARY})
SET( FFTW_FOUND 0 )
IF ( HAVE_MKL )
IF ( HAVE_MKL_FFTW3 )
SET( FFTW_FOUND 1 )
ENDIF()
ENDIF()
IF ( NOT FFTW_FOUND )
find_package(FFTW)
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")
ENDIF(FFTW_FOUND)
SET(QMC_UTIL_LIBS ${QMC_UTIL_LIBS} ${FORTRAN_LIBRARIES})
find_package(ZLIB)
find_package(LibXml2)
@ -590,37 +611,10 @@ ENDIF(QMC_CUDA)
# endif(ENABLE_OPENMP)
#ENDIF(FOUND_TAU)
###############################################################
# for specific linker in the case of profiling like hpctoolkit.
###############################################################
if(CMAKE_CXX_LINKER)
set(CMAKE_CXX_LINK_EXECUTABLE
"${CMAKE_CXX_LINKER} <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
MESSAGE(STATUS "Linker is specified as '${CMAKE_CXX_LINKER}' instead of '${CMAKE_CXX_COMPILER}'")
endif()
######################################################
# Add optional macros
######################################################
SET( FFTW_FOUND 0 )
IF ( HAVE_MKL )
IF ( HAVE_MKL_FFTW3 )
SET( FFTW_FOUND 1 )
ENDIF()
ENDIF()
IF ( NOT FFTW_FOUND )
find_package(FFTW)
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")
ENDIF(FFTW_FOUND)
#include qmcpack/src build/src
INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/src ${PROJECT_BINARY_DIR}/src)
@ -646,7 +640,7 @@ set(build_einspline 1)
if(build_einspline)
SUBDIRS(src/einspline)
INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}/include)
SET(QMC_UTIL_LIBS ${QMC_UTIL_LIBS} einspline)
SET(QMC_UTIL_LIBS einspline ${QMC_UTIL_LIBS})
endif()
#include(ExternalProject)
@ -684,6 +678,14 @@ endif()
# ENDIF(GTKMM_FOUND)
#ENDIF(ENABLE_GTK_GUI)
###############################################################
# for specific linker in the case of profiling like hpctoolkit.
###############################################################
if(CMAKE_CXX_LINKER)
set(CMAKE_CXX_LINK_EXECUTABLE
"${CMAKE_CXX_LINKER} <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
MESSAGE(STATUS "Linker is specified as '${CMAKE_CXX_LINKER}' instead of '${CMAKE_CXX_COMPILER}'")
endif()
###################################################
# Add user extra flags

View File

@ -39,18 +39,18 @@ SET(CMAKE_FIND_ROOT_PATH
SET(LAPACK_LIBRARY /soft/libraries/alcf/current/xl/LAPACK/lib/liblapack.a)
SET(BLAS_LIBRARY /soft/libraries/essl/current/essl/5.1/lib64/libesslsmpbg.a)
SET(FORTRAN_LIBRARIES
$ENV{IBM_MAIN_DIR}/xlmass/bg/7.3/bglib64/libmass.a
$ENV{IBM_MAIN_DIR}/xlmass/bg/7.3/bglib64/libmassv.a
$ENV{IBM_FCMP_DIR}/bglib64/libxlf90_r.a
$ENV{IBM_FCMP_DIR}/bglib64/libxlopt.a
)
LINK_LIBRARIES(
$ENV{IBM_MAIN_DIR}/xlmass/bg/7.3/bglib64/libmass.a
$ENV{IBM_MAIN_DIR}/xlmass/bg/7.3/bglib64/libmassv.a
#LINK_LIBRARIES(
#/soft/perftools/hpctw/libmpihpm_smp.a
#/bgsys/drivers/ppcfloor/bgpm/lib/libbgpm.a
#/bgsys/drivers/ppcfloor/spi/lib/libSPI_upci_cnk.a
#-pg
)
#)
FOREACH(type SHARED_LIBRARY SHARED_MODULE EXE)
SET(CMAKE_${type}_LINK_STATIC_C_FLAGS "-Wl,-Bstatic")

View File

@ -37,8 +37,6 @@ ENDIF()
TARGET_LINK_LIBRARIES(${p} ${l})
ENDFOREACH(l ${QMC_UTIL_LIBS})
TARGET_LINK_LIBRARIES(${p} ${LAPACK_LIBRARY} ${BLAS_LIBRARY} ${FORTRAN_LIBRARIES})
if(ENABLE_TAU_PROFILE)
TARGET_LINK_LIBRARIES(${p} tau)
endif(ENABLE_TAU_PROFILE)

View File

@ -39,8 +39,6 @@ FOREACH(p ${QTOOLS})
TARGET_LINK_LIBRARIES(${p} ${l})
ENDFOREACH(l ${QMC_UTIL_LIBS})
TARGET_LINK_LIBRARIES(${p} ${LAPACK_LIBRARY} ${BLAS_LIBRARY} ${FORTRAN_LIBRARIES})
if(ENABLE_TAU_PROFILE)
TARGET_LINK_LIBRARIES(${p} tau)
endif(ENABLE_TAU_PROFILE)

View File

@ -29,8 +29,6 @@ FOREACH(p ${MYTEST})
TARGET_LINK_LIBRARIES(${p} ${l})
ENDFOREACH(l ${QMC_UTIL_LIBS})
TARGET_LINK_LIBRARIES(${p} ${LAPACK_LIBRARY} ${BLAS_LIBRARY} ${FORTRAN_LIBRARIES})
IF(MPI_LIBRARY)
TARGET_LINK_LIBRARIES(${p} ${MPI_LIBRARY})
ENDIF(MPI_LIBRARY)

View File

@ -11,7 +11,6 @@ SET(BENCH numerics)
FOREACH(p ${BENCH})
ADD_EXECUTABLE( ${p} ${p}.cpp)
TARGET_LINK_LIBRARIES(${p} qmcutil)
TARGET_LINK_LIBRARIES(${p} ${LAPACK_LIBRARY} ${BLAS_LIBRARY} ${FORTRAN_LIBRARIES})
IF(MPI_LIBRARY)
TARGET_LINK_LIBRARIES(${p} ${MPI_LIBRARY})
ENDIF(MPI_LIBRARY)