2006-10-19 04:57:15 +08:00
|
|
|
PROJECT(qmcpack)
|
2005-11-18 01:29:59 +08:00
|
|
|
|
2008-05-14 02:12:10 +08:00
|
|
|
|
2009-12-23 23:49:53 +08:00
|
|
|
#####################################################
|
2015-12-03 04:08:42 +08:00
|
|
|
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.10)
|
|
|
|
IF(COMMAND cmake_policy)
|
2011-08-31 00:01:08 +08:00
|
|
|
cmake_policy(SET CMP0003 NEW)
|
2015-12-03 04:08:42 +08:00
|
|
|
ENDIF(COMMAND cmake_policy)
|
2011-08-31 00:01:08 +08:00
|
|
|
|
2013-12-18 04:00:01 +08:00
|
|
|
|
2005-11-18 01:29:59 +08:00
|
|
|
######################################################################
|
|
|
|
# Version
|
|
|
|
######################################################################
|
2013-12-18 04:00:01 +08:00
|
|
|
SET(QMCPLUSPLUS_VERSION_MAJOR 1)
|
|
|
|
SET(QMCPLUSPLUS_VERSION_MINOR 0)
|
|
|
|
SET(QMCPLUSPLUS_VERSION_PATCH 0)
|
|
|
|
SET(QMCPLUSPLUS_VERSION "${QMCPLUSPLUS_VERSION_MAJOR}.${QMCPLUSPLUS_VERSION_MINOR}.${QMCPLUSPLUS_VERSION_PATCH}")
|
2005-11-03 06:23:38 +08:00
|
|
|
|
2014-11-14 05:21:32 +08:00
|
|
|
######################################################################
|
|
|
|
# CTest
|
|
|
|
######################################################################
|
|
|
|
SET( DROP_METHOD "http" )
|
|
|
|
SET( DROP_SITE "cdash.qmcpack.org" )
|
|
|
|
SET( DROP_LOCATION "/CDash/submit.php?project=QMCPACK" )
|
|
|
|
SET( TRIGGER_SITE "" )
|
|
|
|
SET( DROP_SITE_CDASH TRUE )
|
2016-02-08 23:00:30 +08:00
|
|
|
# Increase timeout per test over the default of 1500 seconds (25 minutes)
|
|
|
|
SET( DART_TESTING_TIMEOUT 3600 CACHE STRING "Maximum time for one test")
|
2014-11-14 05:21:32 +08:00
|
|
|
ENABLE_TESTING()
|
|
|
|
INCLUDE( CTest )
|
|
|
|
|
2009-10-29 02:27:53 +08:00
|
|
|
######################################################################
|
|
|
|
# Build level
|
|
|
|
######################################################################
|
2012-03-22 09:14:56 +08:00
|
|
|
SET(QMC_BUILD_LEVEL 3 CACHE INTEGER
|
2013-05-13 20:28:40 +08:00
|
|
|
"QMC Build Level: 1=bare, 2=developer, 3=experimental, 4=minimal")
|
2015-12-06 02:36:18 +08:00
|
|
|
IF ( NOT CMAKE_BUILD_TYPE AND NOT CMAKE_TOOLCHAIN_FILE)
|
2015-12-04 06:41:31 +08:00
|
|
|
SET( CMAKE_BUILD_TYPE Release )
|
|
|
|
ENDIF()
|
2015-12-05 04:28:01 +08:00
|
|
|
STRING( TOUPPER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE )
|
2015-12-19 00:56:57 +08:00
|
|
|
MESSAGE( STATUS "CMAKE_BUILD_TYPE is ${CMAKE_BUILD_TYPE}")
|
2009-10-29 02:27:53 +08:00
|
|
|
|
2006-04-15 05:54:50 +08:00
|
|
|
######################################################################
|
2004-08-25 03:21:10 +08:00
|
|
|
#define the paths for library and executable for out-of-soruce compilation
|
2006-04-15 05:54:50 +08:00
|
|
|
######################################################################
|
2006-10-19 04:57:15 +08:00
|
|
|
SET (LIBRARY_OUTPUT_PATH ${qmcpack_BINARY_DIR}/lib CACHE PATH "Single output directory for building all libraries.")
|
|
|
|
SET (EXECUTABLE_OUTPUT_PATH ${qmcpack_BINARY_DIR}/bin CACHE PATH "Single output directory for building all executables.")
|
|
|
|
|
2009-12-23 23:49:53 +08:00
|
|
|
######################################################################
|
|
|
|
# build include and library paths required for the projects
|
|
|
|
# For XYZ library, set an environment as
|
|
|
|
# export XYZ_HOME='root-of-the-library'
|
|
|
|
# XYZ_HOME/include
|
|
|
|
# XYZ_HOME/lib
|
|
|
|
# IF XYZ library is found, XYZ_FOUND is set to true
|
|
|
|
#
|
|
|
|
# find_package is used with cmake 2.8 and higher
|
|
|
|
######################################################################
|
2011-09-15 05:41:49 +08:00
|
|
|
#if(APPLE)
|
|
|
|
# set(QMC_INCLUDE_PATHS ${QMC_INCLUDE_PATHS} /sw/include)
|
|
|
|
# set(QMC_LIBRARY_PATHS ${QMC_LIBRARY_PATHS} /sw/lib)
|
|
|
|
#endif(APPLE)
|
2009-12-23 23:49:53 +08:00
|
|
|
|
2006-10-19 04:57:15 +08:00
|
|
|
######################################################################
|
2006-11-24 07:00:56 +08:00
|
|
|
# Set the compiler-time parameters
|
|
|
|
# OHMMS_DIM = dimension of the problem
|
|
|
|
# OHMMS_INDEXTYPE = type of index
|
|
|
|
# OHMMS_PRECISION = base precision, float, double etc
|
|
|
|
# QMC_COMPLEX = true if using complex wavefunctions
|
|
|
|
# QMC_MPI = enable MPI
|
|
|
|
# QMC_OMP = enable OMP
|
|
|
|
# QMC_BITS = 32/64 bit
|
2006-10-19 04:57:15 +08:00
|
|
|
######################################################################
|
2008-04-05 01:31:32 +08:00
|
|
|
SET(OHMMS_DIM 3 CACHE INTEGER "Select physical dimension")
|
2006-11-24 07:00:56 +08:00
|
|
|
SET(OHMMS_INDEXTYPE int)
|
|
|
|
SET(OHMMS_PRECISION double)
|
2008-07-10 03:07:35 +08:00
|
|
|
SET(APP_PRECISION double)
|
2016-03-05 02:50:36 +08:00
|
|
|
SET(CUDA_PRECISION float CACHE STRING "Select the precision of CUDA kernels")
|
2015-07-11 05:49:04 +08:00
|
|
|
SET(CUDA_COULOMB_PRECISION double)
|
2008-04-11 11:04:10 +08:00
|
|
|
|
2009-08-13 05:23:52 +08:00
|
|
|
######################################################################
|
|
|
|
# enable MPI and OPNEMP if possible
|
|
|
|
######################################################################
|
2008-04-05 01:31:32 +08:00
|
|
|
SET(QMC_MPI 1 CACHE BOOL "Enable/disable MPI")
|
2009-02-22 03:08:23 +08:00
|
|
|
SET(QMC_OMP 1 CACHE BOOL "Enable/disable OpenMP")
|
|
|
|
SET(QMC_BITS 64 CACHE INTEGER "Select OS bit")
|
2009-08-13 05:23:52 +08:00
|
|
|
SET(QMC_COMPLEX 0 CACHE INTEGER "Build for complex binary")
|
|
|
|
SET(PRINT_DEBUG 0 CACHE BOOL "Enable/disable debug printing")
|
2011-07-21 21:35:43 +08:00
|
|
|
SET(QMC_CUDA 0 CACHE BOOL "Build with GPU support through CUDA")
|
2013-10-19 04:27:59 +08:00
|
|
|
SET(QMC_ADIOS 0 CACHE BOOL "Build with ADIOS")
|
2012-02-18 01:37:16 +08:00
|
|
|
|
|
|
|
######################################################################
|
|
|
|
# set debug printout
|
|
|
|
# DEBUG_PSIBUFFER_ON keep track buffer's locator
|
|
|
|
######################################################################
|
|
|
|
SET(DEBUG_PSIBUFFER_ON 0 CACHE BOOL "Build with GPU support through CUDA")
|
2009-08-13 05:23:52 +08:00
|
|
|
######################################################################
|
|
|
|
# check environment variables
|
2011-09-15 05:41:49 +08:00
|
|
|
# todo: disallow environment
|
2009-08-13 05:23:52 +08:00
|
|
|
######################################################################
|
|
|
|
IF($ENV{QMC_MPI})
|
|
|
|
SET(QMC_MPI $ENV{QMC_MPI})
|
2011-09-15 05:41:49 +08:00
|
|
|
MESSAGE(STATUS "Found environment QMC_MPI=${QMC_MPI}")
|
2009-08-13 05:23:52 +08:00
|
|
|
ENDIF($ENV{QMC_MPI})
|
|
|
|
IF($ENV{QMC_OMP})
|
|
|
|
SET(QMC_OMP $ENV{QMC_OMP})
|
2011-09-15 05:41:49 +08:00
|
|
|
MESSAGE(STATUS "Found environment QMC_OMP=${QMC_OMP}")
|
2009-08-13 05:23:52 +08:00
|
|
|
ENDIF($ENV{QMC_OMP})
|
2011-09-15 05:41:49 +08:00
|
|
|
IF($ENV{QMC_BITS})
|
|
|
|
SET(QMC_BITS $ENV{QMC_BITS})
|
|
|
|
MESSAGE(STATUS "Found environment QMC_BITS=${QMC_BITS}")
|
|
|
|
ENDIF($ENV{QMC_BITS})
|
2009-08-13 05:23:52 +08:00
|
|
|
IF($ENV{QMC_COMPLEX})
|
|
|
|
SET(QMC_COMPLEX $ENV{QMC_COMPLEX})
|
2011-09-15 05:41:49 +08:00
|
|
|
MESSAGE(STATUS "Found environment QMC_COMPLEX=${QMC_COMPLEX}")
|
2009-08-13 05:23:52 +08:00
|
|
|
ENDIF($ENV{QMC_COMPLEX})
|
2005-11-17 11:38:21 +08:00
|
|
|
|
2007-05-23 00:35:35 +08:00
|
|
|
######################################################################
|
|
|
|
# Standard test
|
|
|
|
######################################################################
|
2010-02-06 02:45:53 +08:00
|
|
|
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})
|
2011-09-15 05:41:49 +08:00
|
|
|
|
2013-12-18 04:00:01 +08:00
|
|
|
|
2011-09-15 05:41:49 +08:00
|
|
|
######################################################################
|
|
|
|
# add macros to compile einspline if necessary
|
|
|
|
######################################################################
|
2007-05-23 00:35:35 +08:00
|
|
|
INCLUDE(${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
|
2008-05-13 22:48:20 +08:00
|
|
|
INCLUDE(${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
|
|
|
|
INCLUDE(${CMAKE_ROOT}/Modules/CheckTypeSize.cmake)
|
2011-09-15 05:41:49 +08:00
|
|
|
|
2007-05-23 00:35:35 +08:00
|
|
|
CHECK_FUNCTION_EXISTS(sincos HAVE_SINCOS)
|
2008-01-18 23:09:05 +08:00
|
|
|
CHECK_FUNCTION_EXISTS(round HAVE_STD_ROUND)
|
2008-05-13 22:48:20 +08:00
|
|
|
CHECK_FUNCTION_EXISTS(floor HAVE_FLOOR)
|
|
|
|
CHECK_FUNCTION_EXISTS(posix_memalign HAVE_POSIX_MEMALIGN)
|
|
|
|
CHECK_FUNCTION_EXISTS(pow HAVE_POW)
|
|
|
|
CHECK_FUNCTION_EXISTS(sqrt HAVE_SQRT)
|
|
|
|
|
|
|
|
CHECK_INCLUDE_FILE(dlfcn.h HAVE_DLFCN_H)
|
|
|
|
CHECK_INCLUDE_FILE(inttypes.h HAVE_INTTYPES_H)
|
|
|
|
CHECK_INCLUDE_FILE(memory.h HAVE_MEMORY_H)
|
|
|
|
CHECK_INCLUDE_FILE(pmmintrin.h HAVE_PMMINTRIN_H)
|
|
|
|
CHECK_INCLUDE_FILE(emmintrin.h HAVE_EMMINTRIN_H)
|
|
|
|
CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H)
|
|
|
|
CHECK_INCLUDE_FILE(sys/time.h HAVE_SYS_TIME_H)
|
|
|
|
CHECK_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H)
|
|
|
|
CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
|
|
|
|
|
2006-04-15 05:54:50 +08:00
|
|
|
######################################################################
|
2006-11-24 07:00:56 +08:00
|
|
|
# Build options
|
|
|
|
# QMC_BUILD_STATIC build static/dynamic libraries
|
|
|
|
# BUILD_QMCTOOLS build utility programs
|
|
|
|
# BUILD_SANDBOX build test programs
|
|
|
|
# MPIP_PROFILE profile mpi performance
|
2006-04-15 05:54:50 +08:00
|
|
|
######################################################################
|
2012-03-22 09:14:56 +08:00
|
|
|
#SET(BUILD_QMCTOOLS 1 CACHE BOOL "Build tools for QMCPACK")
|
2011-09-15 05:41:49 +08:00
|
|
|
#SET(BUILD_SANDBOX 0 CACHE BOOL "Build snadbox for testing")
|
|
|
|
#SET(MPIP_PROFILE 0 CACHE BOOL "Build with mpip for mpi profile")
|
2012-03-22 09:14:56 +08:00
|
|
|
#SET(BUILD_QMCTOOLS 1)
|
2011-09-15 05:41:49 +08:00
|
|
|
#SET(BUILD_SANDBOX 0)
|
|
|
|
#SET(MPIP_PROFILE 0)
|
2015-09-26 02:06:38 +08:00
|
|
|
#option(QMC_BUILD_STATIC "Link to static libraries" OFF)
|
2005-11-17 11:38:21 +08:00
|
|
|
|
2007-05-09 22:31:02 +08:00
|
|
|
######################################################################
|
|
|
|
# Performance-related macros
|
|
|
|
# QMC_SK_USE_RECURSIVE enable/disable recursive evalaution of SK
|
|
|
|
######################################################################
|
2007-06-01 05:19:20 +08:00
|
|
|
SET(QMC_SK_USE_RECURSIVE 0)
|
2009-08-13 05:23:52 +08:00
|
|
|
IF($ENV{QMC_SK_RECURSIVE})
|
2011-09-15 05:41:49 +08:00
|
|
|
MESSAGE(STATUS "SK structure factor uses a recursive algorithm.")
|
2007-05-25 00:46:07 +08:00
|
|
|
SET(QMC_SK_USE_RECURSIVE $ENV{QMC_SK_RECURSIVE})
|
2009-08-13 05:23:52 +08:00
|
|
|
ENDIF($ENV{QMC_SK_RECURSIVE})
|
2006-04-15 05:54:50 +08:00
|
|
|
|
|
|
|
######################################################################
|
|
|
|
# FIXED PARAMETERS for test and legacy reasons
|
2006-11-24 07:00:56 +08:00
|
|
|
# DO NOT TOUCH THESE
|
|
|
|
# QMC_ORTHO = 0 for general unit cell, 1 for orthogonal cells
|
|
|
|
# QMC_FASTWALKER = true, when operation is faster for each walker
|
2006-04-15 05:54:50 +08:00
|
|
|
######################################################################
|
2004-08-25 03:21:10 +08:00
|
|
|
SET(QMC_FASTWALKER 1)
|
2006-04-15 05:54:50 +08:00
|
|
|
SET(OHMMS_ORTHO 0)
|
2004-08-25 03:21:10 +08:00
|
|
|
|
2006-04-15 05:54:50 +08:00
|
|
|
######################################################################
|
|
|
|
#list of options to determine libraries. First, try to use libraries available
|
2009-08-13 05:23:52 +08:00
|
|
|
#FindXYZ.cmake will set the values if successful
|
2004-08-25 03:21:10 +08:00
|
|
|
######################################################################
|
2008-02-22 11:16:19 +08:00
|
|
|
SET(ENABLE_PHDF5 0 CACHE BOOL "Enable phdf5 for output")
|
2006-09-05 00:01:08 +08:00
|
|
|
SET(HAVE_LIBXML2 1)
|
2006-06-06 04:02:37 +08:00
|
|
|
SET(HAVE_LIBFFTW 0)
|
2006-04-15 05:54:50 +08:00
|
|
|
SET(HAVE_LIBXMLPP 0)
|
|
|
|
SET(HAVE_LIBHDF5 0)
|
|
|
|
SET(HAVE_LIBSPRNG 0)
|
|
|
|
SET(HAVE_LIBBLITZ 0)
|
|
|
|
SET(HAVE_LIBGSL 0)
|
2007-03-14 02:16:14 +08:00
|
|
|
SET(MAC_VECLIB 0)
|
2007-05-28 21:42:06 +08:00
|
|
|
SET(ENABLE_GTK_GUI 0)
|
2009-04-21 06:19:07 +08:00
|
|
|
set(ENABLE_TAU_PROFILE 0 CACHE BOOL "Enable tau for profiling")
|
2009-08-13 05:23:52 +08:00
|
|
|
set(TAU_HOME $ENV{TAU_HOME})
|
2009-04-21 06:19:07 +08:00
|
|
|
|
2006-04-15 05:54:50 +08:00
|
|
|
######################################################
|
|
|
|
# Directory where customize cmake files reside
|
|
|
|
######################################################
|
2006-10-19 05:13:15 +08:00
|
|
|
SET (PROJECT_CMAKE ${qmcpack_SOURCE_DIR}/CMake)
|
2006-04-15 05:54:50 +08:00
|
|
|
|
2013-10-19 04:27:59 +08:00
|
|
|
######################################################
|
|
|
|
# set ADIOS flags
|
|
|
|
######################################################
|
|
|
|
IF(QMC_ADIOS)
|
|
|
|
IF(NOT HAVE_ADIOS)
|
|
|
|
SET (ADIOS_FOUND 0)
|
|
|
|
INCLUDE(${PROJECT_CMAKE}/FindADIOS.cmake)
|
|
|
|
IF (${ADIOS_FOUND} EQUAL 1)
|
|
|
|
INCLUDE_DIRECTORIES(${ADIOS_INCLUDES})
|
|
|
|
MESSAGE(STATUS "Found ADIOS")
|
|
|
|
LINK_LIBRARIES(${ADIOS_LIBRARIES})
|
|
|
|
ADD_DEFINITIONS(-DHAVE_ADIOS)
|
|
|
|
ELSE()
|
|
|
|
MESSAGE(STATUS "Couldn't find ADIOS")
|
|
|
|
MESSAGE(FATAL_ERROR "ADIOS_HOME: export ADIOS_HOME=/path/to/adios")
|
|
|
|
ENDIF()
|
2013-10-21 21:54:34 +08:00
|
|
|
ELSE()
|
|
|
|
ADD_DEFINITIONS(-DHAVE_ADIOS)
|
2013-10-19 04:27:59 +08:00
|
|
|
endif()
|
|
|
|
ENDIF(QMC_ADIOS)
|
|
|
|
|
2008-06-02 04:57:35 +08:00
|
|
|
######################################################
|
|
|
|
# Get the current SVN version
|
|
|
|
######################################################
|
2008-05-13 22:48:20 +08:00
|
|
|
SET(QMCPLUSPLUS_SVN_LAST_CHANGED "2008-05-12")
|
2014-07-30 05:14:33 +08:00
|
|
|
SET(QMCPLUSPLUS_BRANCH "00000") # Will be edited on export, do not edit. Exact match required.
|
|
|
|
SET(QMCPLUSPLUS_LAST_CHANGED_DATE "2001-01-01") # Will be edited on export, do not edit. Exact match required.
|
2008-05-13 22:48:20 +08:00
|
|
|
FIND_PACKAGE(Subversion)
|
|
|
|
IF(Subversion_FOUND)
|
2014-07-30 05:14:33 +08:00
|
|
|
IF (EXISTS "${PROJECT_SOURCE_DIR}/.svn") # Avoid using svn with exported files
|
2014-07-06 05:02:46 +08:00
|
|
|
Subversion_WC_INFO(${PROJECT_SOURCE_DIR} my)
|
|
|
|
MESSAGE(STATUS "Current revision : ${my_WC_REVISION} modified on ${Project_WC_LAST_CHANGED_DATE}")
|
|
|
|
SET(QMCPLUSPLUS_BRANCH ${my_WC_REVISION})
|
|
|
|
SET(QMCPLUSPLUS_LAST_CHANGED_DATE ${my_WC_LAST_CHANGED_DATE})
|
|
|
|
ENDIF()
|
2013-12-18 04:00:01 +08:00
|
|
|
ENDIF()
|
2008-05-13 22:48:20 +08:00
|
|
|
|
2004-08-25 03:21:10 +08:00
|
|
|
######################################################
|
|
|
|
#COMPILER choose one of the cmake files to customize the compiler options
|
|
|
|
#If nothing is chosen, default settings by cmake will be used.
|
2007-01-05 03:41:39 +08:00
|
|
|
#If the automatic detection does not work, comment out everything
|
|
|
|
#upto COMPILER MANUAL SELECTION and use one of the customized cmake file.
|
2004-08-25 03:21:10 +08:00
|
|
|
######################################################
|
2007-10-11 01:23:18 +08:00
|
|
|
INCLUDE(${CMAKE_ROOT}/Modules/TestCXXAcceptsFlag.cmake)
|
2008-07-20 02:42:58 +08:00
|
|
|
INCLUDE(${CMAKE_ROOT}/Modules/CheckCCompilerFlag.cmake)
|
2007-10-11 01:23:18 +08:00
|
|
|
|
2015-09-26 02:06:38 +08:00
|
|
|
|
2008-06-02 04:57:35 +08:00
|
|
|
######################################################
|
2009-08-13 05:23:52 +08:00
|
|
|
# DO NOT MODIFY BELOW
|
|
|
|
# If you like to customize your build, create a toolchain as instructed
|
|
|
|
######################################################
|
|
|
|
######################################################
|
|
|
|
# now set the compiler flags and the macros in src/config.h
|
2008-06-02 04:57:35 +08:00
|
|
|
######################################################
|
2009-08-13 05:23:52 +08:00
|
|
|
IF(CMAKE_TOOLCHAIN_FILE)
|
2011-09-15 05:41:49 +08:00
|
|
|
MESSAGE(STATUS "Using ${CMAKE_TOOLCHAIN_FILE} toolchain ")
|
2009-08-13 05:23:52 +08:00
|
|
|
ELSE(CMAKE_TOOLCHAIN_FILE)
|
2013-05-13 20:28:40 +08:00
|
|
|
MESSAGE(STATUS "Trying to figure out .....")
|
2011-09-15 05:41:49 +08:00
|
|
|
SET(QMC_BUILD_STATIC 0)
|
2009-08-13 05:23:52 +08:00
|
|
|
SET(ENABLE_OPENMP 0)
|
|
|
|
SET(HAVE_MPI 0)
|
|
|
|
SET(INTEL_COMPILER 0)
|
|
|
|
SET(HAVE_MKL 0)
|
2009-12-23 23:49:53 +08:00
|
|
|
SET(HAVE_MKL_VML 0)
|
2009-08-13 05:23:52 +08:00
|
|
|
SET(HAVE_ACML 0)
|
|
|
|
SET(HAVE_SSE 0)
|
|
|
|
SET(HAVE_SSE2 0)
|
|
|
|
SET(HAVE_SSE3 0)
|
|
|
|
SET(HAVE_SSSE3 0)
|
|
|
|
SET(USE_PREFETCH 0)
|
|
|
|
SET(PREFETCH_AHEAD 12)
|
|
|
|
SET(HAVE_C_VARARRAYS 1)
|
2007-10-11 01:23:18 +08:00
|
|
|
|
2009-08-13 05:23:52 +08:00
|
|
|
######################################################
|
|
|
|
# Try to identify CPU identity
|
|
|
|
######################################################
|
|
|
|
SET(CPU_IDENTITY "generic")
|
2015-09-26 02:06:38 +08:00
|
|
|
#INCLUDE(${PROJECT_CMAKE}/CheckProcessorID.cmake)
|
2009-12-23 23:49:53 +08:00
|
|
|
|
2015-09-26 03:51:10 +08:00
|
|
|
#------------------------
|
|
|
|
# On Cray's machine
|
|
|
|
#------------------------
|
2016-07-07 02:09:02 +08:00
|
|
|
IF($ENV{CRAYPE_VERSION} MATCHES ".")
|
|
|
|
MESSAGE(STATUS "Running on a Cray machine.")
|
2009-12-23 23:49:53 +08:00
|
|
|
SET(CMAKE_SKIP_RPATH TRUE)
|
2015-09-26 02:06:38 +08:00
|
|
|
|
2015-09-26 03:51:10 +08:00
|
|
|
# Flags for ctest
|
|
|
|
SET(USE_EXT_MPI_FOR_SERIAL_TESTS 1)
|
|
|
|
FIND_PROGRAM(MPIEXEC aprun)
|
2016-02-02 04:57:00 +08:00
|
|
|
IF(NOT MPIEXEC)
|
2016-02-02 04:46:18 +08:00
|
|
|
# For slurm use srun
|
2016-02-02 04:57:00 +08:00
|
|
|
FIND_PROGRAM(MPIEXEC srun)
|
|
|
|
ENDIF(NOT MPIEXEC)
|
2015-09-26 03:51:10 +08:00
|
|
|
SET(MPIEXEC_NUMPROC_FLAG "-n")
|
|
|
|
|
2015-09-26 02:06:38 +08:00
|
|
|
IF(QMC_CUDA)
|
|
|
|
MESSAGE(STATUS "Building GPU code. Linking dynamically.")
|
|
|
|
ELSE(QMC_CUDA)
|
|
|
|
SET(QMC_BUILD_STATIC 1)
|
|
|
|
MESSAGE(STATUS "Building CPU code. Linking statically.")
|
|
|
|
SET(BUILD_SHARED_LIBS off)
|
|
|
|
SET(CMAKE_FIND_LIBRARY_SUFFIXES .a)
|
|
|
|
FOREACH(type SHARED_LIBRARY SHARED_MODULE EXE)
|
|
|
|
SET(CMAKE_${type}_LINK_STATIC_C_FLAGS "-Wl,-Bstatic")
|
|
|
|
SET(CMAKE_${type}_LINK_DYNAMIC_C_FLAGS "-static")
|
|
|
|
SET(CMAKE_${type}_LINK_STATIC_CXX_FLAGS "-Wl,-Bstatic")
|
|
|
|
SET(CMAKE_${type}_LINK_DYNAMIC_CXX_FLAGS "-static")
|
|
|
|
ENDFOREACH(type)
|
|
|
|
ENDIF(QMC_CUDA)
|
2016-07-07 02:09:02 +08:00
|
|
|
ENDIF($ENV{CRAYPE_VERSION} MATCHES ".")
|
2006-11-24 07:00:56 +08:00
|
|
|
|
2009-08-13 05:23:52 +08:00
|
|
|
#------------------------------------
|
2016-02-13 04:31:35 +08:00
|
|
|
# Identify the compiler
|
2009-08-13 05:23:52 +08:00
|
|
|
#------------------------------------
|
2016-02-13 04:31:35 +08:00
|
|
|
IF( $ENV{CXX} MATCHES "icpc" )
|
|
|
|
SET( COMPILER Intel )
|
|
|
|
ELSEIF($ENV{CXX} MATCHES "xlC")
|
|
|
|
SET( COMPILER IBM )
|
|
|
|
ELSEIF ( CMAKE_C_COMPILER_WORKS OR CMAKE_C_COMPILER_WORKS )
|
|
|
|
IF( CMAKE_COMPILE_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
|
|
|
|
SET( COMPILER GNU )
|
|
|
|
ELSEIF( MSVC OR MSVC_IDE OR MSVC60 OR MSVC70 OR MSVC71 OR MSVC80 OR CMAKE_COMPILER_2005 OR MSVC90 OR MSVC10 )
|
|
|
|
SET( COMPILER Microsoft )
|
|
|
|
ELSEIF( (${CMAKE_C_COMPILER_ID} MATCHES "Intel") OR (${CMAKE_CXX_COMPILER_ID} MATCHES "Intel") )
|
|
|
|
SET( COMPILER Intel )
|
|
|
|
ELSEIF( (${CMAKE_C_COMPILER_ID} MATCHES "PGI") OR (${CMAKE_CXX_COMPILER_ID} MATCHES "PGI") )
|
|
|
|
SET( COMPILER PGI )
|
|
|
|
ELSEIF( (${CMAKE_C_COMPILER_ID} MATCHES "CRAY") OR (${CMAKE_CXX_COMPILER_ID} MATCHES "CRAY") OR
|
|
|
|
(${CMAKE_C_COMPILER_ID} MATCHES "Cray") OR (${CMAKE_CXX_COMPILER_ID} MATCHES "Cray") )
|
|
|
|
SET( COMPILER Cray )
|
|
|
|
ELSEIF( (${CMAKE_C_COMPILER_ID} MATCHES "CLANG") OR (${CMAKE_CXX_COMPILER_ID} MATCHES "CLANG") OR
|
|
|
|
(${CMAKE_C_COMPILER_ID} MATCHES "Clang") OR (${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") )
|
|
|
|
SET( COMPILER Clang )
|
|
|
|
ELSE()
|
|
|
|
SET(USING_DEFAULT TRUE)
|
|
|
|
MESSAGE("${CMAKE_C_COMPILER_ID}")
|
|
|
|
MESSAGE(WARNING "Unknown C/C++ compiler, default flags will be used")
|
|
|
|
ENDIF()
|
|
|
|
ELSE()
|
|
|
|
MESSAGE(WARNING "No compiler identified")
|
|
|
|
ENDIF()
|
|
|
|
MESSAGE(STATUS "Compiler: ${COMPILER}")
|
|
|
|
MESSAGE(STATUS "Compiler Version: ${CMAKE_CXX_COMPILER_VERSION}")
|
2008-05-14 02:12:10 +08:00
|
|
|
|
2009-08-13 05:23:52 +08:00
|
|
|
#------------------------------------
|
2016-02-13 04:31:35 +08:00
|
|
|
# Include compiler-specific cmake file
|
2009-08-13 05:23:52 +08:00
|
|
|
#------------------------------------
|
2016-02-13 04:31:35 +08:00
|
|
|
IF( ${COMPILER} MATCHES "IBM" )
|
|
|
|
INCLUDE(${PROJECT_CMAKE}/IBMCompilers.cmake)
|
|
|
|
ELSEIF( ${COMPILER} MATCHES "Intel" )
|
2009-08-13 05:23:52 +08:00
|
|
|
INCLUDE(${PROJECT_CMAKE}/IntelCompilers.cmake)
|
2016-02-13 04:31:35 +08:00
|
|
|
ELSEIF( ${COMPILER} MATCHES "GNU" )
|
|
|
|
INCLUDE(${PROJECT_CMAKE}/GNUCompilers.cmake)
|
|
|
|
ELSEIF( ${COMPILER} MATCHES "Clang" )
|
|
|
|
INCLUDE(${PROJECT_CMAKE}/ClangCompilers.cmake)
|
|
|
|
ELSE()
|
|
|
|
MESSAGE(WARNING "No default file for compiler (${COMPILER})")
|
|
|
|
ENDIF()
|
2008-05-14 22:52:41 +08:00
|
|
|
|
2009-08-13 05:23:52 +08:00
|
|
|
#-------------------------------------------------------------------
|
2009-12-23 23:49:53 +08:00
|
|
|
# check MPI installation
|
2009-08-13 05:23:52 +08:00
|
|
|
#-------------------------------------------------------------------
|
2009-12-23 23:49:53 +08:00
|
|
|
IF(QMC_MPI)
|
|
|
|
## mpi compilers
|
|
|
|
if($ENV{CXX} MATCHES "mp")
|
|
|
|
SET(HAVE_MPI 1)
|
|
|
|
SET(HAVE_OOMPI 1)
|
|
|
|
SET(MPI_FOUND TRUE)
|
2015-09-26 03:51:10 +08:00
|
|
|
elseif($ENV{CRAYOS_VERSION} MATCHES ".")
|
|
|
|
SET(HAVE_MPI 1)
|
|
|
|
SET(HAVE_OOMPI 1)
|
|
|
|
SET(MPI_FOUND TRUE)
|
|
|
|
else()
|
2009-12-23 23:49:53 +08:00
|
|
|
include(FindMPI)
|
|
|
|
IF(MPI_FOUND)
|
|
|
|
MESSAGE(STATUS "Found mpi.h and libraries. Check for working mpi compiler ")
|
|
|
|
FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testmpi.cxx
|
|
|
|
"#include <mpi.h>"
|
|
|
|
"int main(int argc, char** argv){MPI_Init(&argc,&argv); MPI_Finalize();return 0;}\n")
|
2015-09-26 02:06:38 +08:00
|
|
|
#TRY_COMPILE(MPI_WORKS ${CMAKE_BINARY_DIR}
|
|
|
|
#${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testmpi.cxx
|
|
|
|
#OUTPUT_VARIABLE OUTPUT)
|
|
|
|
set(MPI_WORKS 1)
|
2009-12-23 23:49:53 +08:00
|
|
|
IF(MPI_WORKS)
|
|
|
|
MESSAGE(STATUS "MPI is enabled")
|
|
|
|
SET(HAVE_MPI 1)
|
|
|
|
SET(HAVE_OOMPI 1)
|
2011-09-15 05:41:49 +08:00
|
|
|
#LINK_LIBRARIES(${MPI_LIBRARY})
|
2009-12-23 23:49:53 +08:00
|
|
|
ELSE(MPI_WORKS)
|
|
|
|
MESSAGE(STATUS "MPI is disabled")
|
|
|
|
SET(HAVE_MPI 0)
|
|
|
|
SET(HAVE_OOMPI 0)
|
|
|
|
ENDIF(MPI_WORKS)
|
|
|
|
ENDIF(MPI_FOUND)
|
|
|
|
endif($ENV{CXX} MATCHES "mp")
|
|
|
|
ENDIF(QMC_MPI)
|
2009-02-22 00:30:49 +08:00
|
|
|
|
2009-08-13 05:23:52 +08:00
|
|
|
#-------------------------------------------------------------------
|
|
|
|
# check lapack/blas
|
|
|
|
#-------------------------------------------------------------------
|
2016-01-06 06:58:25 +08:00
|
|
|
# Quick search for MKL (this will need to be improved). Currently only for Intel compilers
|
|
|
|
IF (INTEL_COMPILER)
|
|
|
|
INCLUDE(CMake/FindMKL.cmake)
|
|
|
|
ENDIF(INTEL_COMPILER)
|
2016-01-06 04:57:37 +08:00
|
|
|
IF ( HAVE_MKL )
|
2016-01-06 03:37:18 +08:00
|
|
|
# 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}")
|
|
|
|
ELSE()
|
|
|
|
# Search for Blas/Lapack
|
|
|
|
find_package(LAPACK)
|
|
|
|
ENDIF()
|
|
|
|
IF(LAPACK_FOUND)
|
2015-09-26 02:06:38 +08:00
|
|
|
MESSAGE(STATUS "LAPACK libraries: ${LAPACK_LIBRARIES}")
|
|
|
|
MESSAGE(STATUS "LAPACK linker flags: ${LAPACK_LINKER_FLAGS}")
|
2016-05-18 09:52:12 +08:00
|
|
|
SET(LAPACK_LIBRARY ${LAPACK_LIBRARIES} ${LAPACK_LINKER_FLAGS})
|
2016-01-06 03:37:18 +08:00
|
|
|
ENDIF()
|
2009-12-23 23:49:53 +08:00
|
|
|
|
|
|
|
|
2009-08-13 05:23:52 +08:00
|
|
|
ENDIF(CMAKE_TOOLCHAIN_FILE)
|
2009-02-22 00:30:49 +08:00
|
|
|
|
2014-11-20 02:28:35 +08:00
|
|
|
|
|
|
|
# setup ctest variables
|
|
|
|
IF ( HAVE_MPI )
|
|
|
|
SET( USE_MPI 1 )
|
|
|
|
IF ( NOT MPIEXEC )
|
|
|
|
SET( MPIEXEC "mpirun" )
|
|
|
|
ENDIF()
|
2015-09-26 03:51:10 +08:00
|
|
|
|
|
|
|
IF ( NOT DEFINED MPIEXEC_NUMPROC_FLAG )
|
2014-11-20 02:28:35 +08:00
|
|
|
SET( MPIEXEC_NUMPROC_FLAG "-np" )
|
|
|
|
ENDIF()
|
2015-09-26 03:51:10 +08:00
|
|
|
|
2014-11-20 02:28:35 +08:00
|
|
|
IF ( NOT TEST_MAX_PROCS )
|
|
|
|
SET( TEST_MAX_PROCS 100 )
|
|
|
|
ENDIF()
|
2016-02-02 04:57:00 +08:00
|
|
|
|
|
|
|
MESSAGE(STATUS "MPI runner is ${MPIEXEC}")
|
2014-11-20 02:28:35 +08:00
|
|
|
ENDIF(HAVE_MPI)
|
|
|
|
|
|
|
|
|
2011-09-15 05:41:49 +08:00
|
|
|
MESSAGE(STATUS "CXX compiler flags: ${CMAKE_CXX_FLAGS}")
|
|
|
|
MESSAGE(STATUS "CC compiler flags: ${CMAKE_C_FLAGS}")
|
2004-08-25 03:21:10 +08:00
|
|
|
|
2009-08-13 05:23:52 +08:00
|
|
|
SET(HAVE_OOMPI ${HAVE_MPI})
|
2006-04-15 05:54:50 +08:00
|
|
|
INCLUDE(${CMAKE_ROOT}/Modules/FindThreads.cmake)
|
2004-09-30 23:42:16 +08:00
|
|
|
|
2009-12-23 23:49:53 +08:00
|
|
|
####################################################################
|
|
|
|
#First check the required libraries. Abort if these are not found.
|
|
|
|
#Changed the fall-back versions to use similar conventions to 2.8.0 and higher
|
|
|
|
####################################################################
|
2010-01-05 01:14:34 +08:00
|
|
|
# use customized cmake file for boost so that we can deal with multiple
|
|
|
|
# installataions
|
2011-09-15 05:41:49 +08:00
|
|
|
# list of libraries to be linked with the main applications using I/O
|
2016-05-18 09:52:12 +08:00
|
|
|
|
|
|
|
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)
|
2015-09-26 02:06:38 +08:00
|
|
|
|
2016-05-18 09:52:12 +08:00
|
|
|
SET(QMC_UTIL_LIBS ${QMC_UTIL_LIBS} ${FORTRAN_LIBRARIES})
|
|
|
|
|
2015-09-26 02:06:38 +08:00
|
|
|
find_package(ZLIB)
|
2016-07-07 02:09:02 +08:00
|
|
|
#find_package(LibXml2)
|
|
|
|
INCLUDE(CMake/FindLibxml2QMC.cmake)
|
|
|
|
|
2015-09-26 02:06:38 +08:00
|
|
|
IF(LIBXML2_FOUND)
|
|
|
|
INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR})
|
|
|
|
SET(HAVE_LIBXML2 1)
|
|
|
|
SET(QMC_UTIL_LIBS ${QMC_UTIL_LIBS} ${LIBXML2_LIBRARIES})
|
|
|
|
ELSE()
|
|
|
|
MESSAGE(FATAL_ERROR "Missing Libxml2")
|
|
|
|
ENDIF(LIBXML2_FOUND)
|
|
|
|
|
|
|
|
set(HDF5_USE_STATIC_LIBRARIES off)
|
|
|
|
if(QMC_BUILD_STATIC)
|
|
|
|
set(HDF5_USE_STATIC_LIBRARIES on)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
find_package(HDF5)
|
2009-12-23 23:49:53 +08:00
|
|
|
IF(HDF5_FOUND)
|
2004-08-25 03:21:10 +08:00
|
|
|
SET(HAVE_LIBHDF5 1)
|
|
|
|
INCLUDE_DIRECTORIES(${HDF5_INCLUDE_DIR})
|
2015-12-05 04:28:01 +08:00
|
|
|
IF ( CMAKE_BUILD_TYPE AND HDF5_LIBRARIES_DEBUG )
|
|
|
|
IF ( CMAKE_BUILD_TYPE MATCHES DEBUG )
|
|
|
|
SET( HDF5_LIBRARIES ${HDF5_LIBRARIES_DEBUG} )
|
|
|
|
ELSE()
|
|
|
|
SET( HDF5_LIBRARIES ${HDF5_LIBRARIES_RELEASE} )
|
|
|
|
ENDIF()
|
|
|
|
ENDIF()
|
2011-09-15 05:41:49 +08:00
|
|
|
SET(QMC_UTIL_LIBS ${QMC_UTIL_LIBS} ${HDF5_LIBRARIES})
|
|
|
|
if(ZLIB_LIBRARY)
|
|
|
|
SET(QMC_UTIL_LIBS ${QMC_UTIL_LIBS} ${ZLIB_LIBRARY})
|
|
|
|
endif(ZLIB_LIBRARY)
|
2015-09-26 02:06:38 +08:00
|
|
|
#IF(SZLIB_FOUND)
|
|
|
|
# SET(QMC_UTIL_LIBS ${QMC_UTIL_LIBS} ${SZLIB_LIBRARIES})
|
|
|
|
#ENDIF(SZLIB_FOUND)
|
2009-12-23 23:49:53 +08:00
|
|
|
ELSE(HDF5_FOUND)
|
2013-05-13 20:28:40 +08:00
|
|
|
if(NOT QMC_PHI)
|
2015-12-06 02:36:18 +08:00
|
|
|
MESSAGE(FATAL_ERROR "Require hdf5 1.6.4 or higher. Set HDF5_ROOT")
|
2013-05-13 20:28:40 +08:00
|
|
|
endif()
|
2009-12-23 23:49:53 +08:00
|
|
|
ENDIF(HDF5_FOUND)
|
2004-08-25 03:21:10 +08:00
|
|
|
|
2015-09-26 02:06:38 +08:00
|
|
|
#make sure we can find boost if it's not in /usr
|
|
|
|
set(Boost_NO_BOOST_CMAKE on)
|
|
|
|
find_package(Boost REQUIRED)
|
2009-12-23 23:49:53 +08:00
|
|
|
IF(Boost_FOUND)
|
|
|
|
SET(HAVE_LIBBOOST 1)
|
2015-09-26 02:06:38 +08:00
|
|
|
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
|
|
|
|
MESSAGE(STATUS "Setting Boost_INCLUDE_DIRS=${Boost_INCLUDE_DIRS}")
|
2009-12-23 23:49:53 +08:00
|
|
|
ELSE()
|
2013-05-13 20:28:40 +08:00
|
|
|
MESSAGE(STATUS "Using MT engine in Utilities/MersenneTwister.h")
|
|
|
|
#MESSAGE(FATAL_ERROR "Require boost 1.33.x or higher. Set BOOST_HOME")
|
2009-12-23 23:49:53 +08:00
|
|
|
ENDIF()
|
|
|
|
|
2015-09-26 02:06:38 +08:00
|
|
|
SET(HAVE_CUDA 0)
|
2010-02-06 02:45:53 +08:00
|
|
|
IF(QMC_CUDA)
|
2012-02-18 01:37:16 +08:00
|
|
|
set(CUDA_PROPAGATE_HOST_FLAGS OFF)
|
2015-09-26 02:06:38 +08:00
|
|
|
FIND_PACKAGE(CUDA REQUIRED)
|
|
|
|
#set(CUDA_NVCC_FLAGS
|
|
|
|
# "-arch=sm_20;-Drestrict=__restrict__;-DNO_CUDA_MAIN;-O3;-use_fast_math")
|
2012-02-18 01:37:16 +08:00
|
|
|
if(CUDA_NVCC_FLAGS MATCHES "arch")
|
2015-12-19 00:56:57 +08:00
|
|
|
# User defined NVCC flags
|
2013-12-18 04:00:01 +08:00
|
|
|
MESSAGE(STATUS "Setting CUDA FLAGS=${CUDA_NVCC_FLAGS}")
|
2015-09-26 02:06:38 +08:00
|
|
|
else(CUDA_NVCC_FLAGS MATCHES "arch")
|
2015-12-19 00:56:57 +08:00
|
|
|
# Automatically set the default NVCC flags
|
|
|
|
SET(CUDA_NVCC_FLAGS "-Drestrict=__restrict__;-DNO_CUDA_MAIN")
|
|
|
|
if ( CMAKE_BUILD_TYPE STREQUAL "DEBUG" )
|
|
|
|
SET(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS};-g;-G")
|
|
|
|
else()
|
|
|
|
# Temporarily disable fast_math because it causes multiple test failures
|
|
|
|
# SET(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS};-O3;-use_fast_math")
|
|
|
|
SET(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS};-O3")
|
|
|
|
ENDIF()
|
2015-09-26 02:06:38 +08:00
|
|
|
if(CUDA_VERSION VERSION_GREATER 6.5 OR CUDA_VERSION VERSION_EQUAL 6.5)
|
2015-12-19 00:56:57 +08:00
|
|
|
SET(CUDA_NVCC_FLAGS "-arch=sm_35;${CUDA_NVCC_FLAGS}")
|
|
|
|
else()
|
|
|
|
SET(CUDA_NVCC_FLAGS "-arch=sm_20;${CUDA_NVCC_FLAGS}")
|
|
|
|
endif()
|
2015-09-26 02:06:38 +08:00
|
|
|
endif(CUDA_NVCC_FLAGS MATCHES "arch")
|
2012-02-18 01:37:16 +08:00
|
|
|
set(HAVE_CUDA 1)
|
2015-12-19 00:56:57 +08:00
|
|
|
MESSAGE(" CUDA_PRECISION=${CUDA_PRECISION}")
|
2016-02-01 06:54:29 +08:00
|
|
|
MESSAGE(" CUDA_NVCC_FLAGS=${CUDA_NVCC_FLAGS}")
|
2015-12-19 00:56:57 +08:00
|
|
|
ELSE(QMC_CUDA)
|
|
|
|
MESSAGE(STATUS "Disabling CUDA")
|
2010-02-06 02:45:53 +08:00
|
|
|
ENDIF(QMC_CUDA)
|
|
|
|
|
2009-12-23 23:49:53 +08:00
|
|
|
#INCLUDE(${PROJECT_CMAKE}/FindPkgConfig.cmake)
|
|
|
|
##################################################################
|
|
|
|
# TODO:use profile tools
|
|
|
|
##################################################################
|
|
|
|
#IF(MPIP_PROFILE)
|
|
|
|
# LINK_LIBRARIES("/usr/apps/tools/mpip/lib/cmpi/libmpiP.a")
|
|
|
|
# LINK_LIBRARIES("/usr/lib/libbfd.a")
|
|
|
|
# LINK_LIBRARIES("/usr/lib/libiberty.a")
|
|
|
|
#ENDIF(MPIP_PROFILE)
|
|
|
|
#if(ENABLE_TAU_PROFILE)
|
|
|
|
# INCLUDE(${PROJECT_CMAKE}/FindTau.cmake)
|
|
|
|
#endif(ENABLE_TAU_PROFILE)
|
|
|
|
# #add tau stuff
|
|
|
|
# IF(FOUND_TAU)
|
|
|
|
# ADD_DEFINITIONS(
|
|
|
|
# -DTAU_MPI
|
|
|
|
# -DTAU_MPI_THREADED
|
|
|
|
# -DTAU_MPIGREQUEST
|
|
|
|
# -DTAU_MPIDATAREP
|
|
|
|
# -DTAU_MPIERRHANDLER
|
|
|
|
# -DTAU_MPIATTRFUNCTION
|
|
|
|
# -DTAU_MPITYPEEX
|
|
|
|
# -DTAU_MPIADDERROR
|
|
|
|
# )
|
|
|
|
# #build libtau
|
|
|
|
# subdirs(src/tau)
|
|
|
|
# LINK_LIBRARIES(tau)
|
|
|
|
# ENDIF(FOUND_TAU)
|
|
|
|
#IF(FOUND_TAU)
|
|
|
|
# INCLUDE_DIRECTORIES(${TAU_INCLUDE_DIR})
|
|
|
|
# ADD_DEFINITIONS (-DPROFILING_ON
|
|
|
|
# -DTAU_STDCXXLIB
|
|
|
|
# -DTAU_DOT_H_LESS_HEADERS
|
|
|
|
# -DTAU_CALLPATH
|
|
|
|
# -DTAU_LARGEFILE64_SOURCE
|
|
|
|
# -DTAU_BFD
|
|
|
|
# )
|
|
|
|
# if(ENABLE_OPENMP)
|
|
|
|
# ADD_DEFINITIONS(-DTAU_OPENMP)
|
|
|
|
# endif(ENABLE_OPENMP)
|
|
|
|
#ENDIF(FOUND_TAU)
|
|
|
|
|
|
|
|
######################################################
|
|
|
|
# Add optional macros
|
|
|
|
######################################################
|
2015-09-26 02:06:38 +08:00
|
|
|
|
2012-02-18 01:37:16 +08:00
|
|
|
#include qmcpack/src build/src
|
|
|
|
INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/src ${PROJECT_BINARY_DIR}/src)
|
|
|
|
|
2008-05-14 22:52:41 +08:00
|
|
|
######################################################################
|
|
|
|
# Manage Einspline library
|
2012-02-18 01:37:16 +08:00
|
|
|
# - toolchain file can set
|
2009-02-21 04:16:43 +08:00
|
|
|
# - check if libeinspline can be found in $EINSPLINE_HOME/include and
|
|
|
|
# $EINSPLINE_HOME/lib
|
|
|
|
# - if not found, build it from the source directory in $EINSPLINE_HOME
|
2008-05-14 22:52:41 +08:00
|
|
|
# - if everything fails, do not use it
|
|
|
|
######################################################################
|
2012-04-22 22:24:14 +08:00
|
|
|
SET(HAVE_EINSPLINE 1)
|
|
|
|
set(build_einspline 1)
|
2013-11-27 05:48:53 +08:00
|
|
|
#if(HAVE_EINSPLINE_EXT)
|
|
|
|
# set(HAVE_EINSPLINE 0)
|
|
|
|
# INCLUDE(${PROJECT_CMAKE}/FindEinspline.cmake)
|
|
|
|
# IF(EINSPLINE_FOUND)
|
|
|
|
# INCLUDE_DIRECTORIES(${EINSPLINE_INCLUDE_DIR})
|
|
|
|
# SET(QMC_UTIL_LIBS ${EINSPLINE_LIBRARIES} ${QMC_UTIL_LIBS})
|
|
|
|
# set(build_einspline 0)
|
|
|
|
# endif()
|
|
|
|
#endif()
|
2012-04-22 22:24:14 +08:00
|
|
|
if(build_einspline)
|
2012-03-23 18:43:07 +08:00
|
|
|
SUBDIRS(src/einspline)
|
|
|
|
INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}/include)
|
2016-05-18 09:52:12 +08:00
|
|
|
SET(QMC_UTIL_LIBS einspline ${QMC_UTIL_LIBS})
|
2009-12-23 23:49:53 +08:00
|
|
|
endif()
|
2012-04-22 22:24:14 +08:00
|
|
|
|
2012-02-18 01:37:16 +08:00
|
|
|
#include(ExternalProject)
|
|
|
|
# set(einspline_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/einspline")
|
|
|
|
# set(einspline_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/einspline")
|
|
|
|
# set(einspline_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${einspline_INSTALL_DIR})
|
|
|
|
#ExternalProject_Add(
|
|
|
|
# einspline
|
|
|
|
# SVN_REPOSITORY http://qmctools.googlecode.com/svn/ext-packages/einspline
|
|
|
|
# )
|
|
|
|
# INSTALL_DIR ${einspline_INSTALL_DIR}
|
|
|
|
# CMAKE_ARGS ${einspline_CMAKE_ARGS}
|
|
|
|
# )
|
|
|
|
# find_package(einspline REQUIRED)
|
|
|
|
# set(HAVE_EINSPLINE 1)
|
2009-12-23 23:49:53 +08:00
|
|
|
#######################################################################
|
|
|
|
## Manage GTK+ and GTKMM packages for GUI
|
|
|
|
## search headers and libraries
|
|
|
|
## 1) -lXYZ-${XYZ_VERSION}
|
|
|
|
## 2) -lXYZ
|
|
|
|
## example: -lgtk-${GTK_VERSION} | -lgtk
|
|
|
|
#######################################################################
|
|
|
|
#SET(GTK_VERSION 2.0)
|
|
|
|
#SET(PANGO_VERSION 1.0)
|
2009-02-21 04:16:43 +08:00
|
|
|
#
|
2009-12-23 23:49:53 +08:00
|
|
|
#SET(GTKMM_VERSION 2.4)
|
|
|
|
#SET(PANGOMM_VERSION 1.4)
|
|
|
|
#SET(SIGCPP_VERSION 2.0)
|
|
|
|
#IF(ENABLE_GTK_GUI)
|
|
|
|
# INCLUDE(${PROJECT_CMAKE}/FindGTK.cmake)
|
|
|
|
# #THIS SHOULD GO TO the directory where GUI is built
|
|
|
|
# IF(GTKMM_FOUND)
|
|
|
|
# INCLUDE_DIRECTORIES(${GTKMM_INCLUDE_DIR})
|
|
|
|
# LINK_LIBRARIES(${GTKMM_LIBRARIES})
|
|
|
|
# ENDIF(GTKMM_FOUND)
|
|
|
|
#ENDIF(ENABLE_GTK_GUI)
|
2008-05-13 22:48:20 +08:00
|
|
|
|
2016-05-18 09:52:12 +08:00
|
|
|
###############################################################
|
|
|
|
# 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()
|
2014-11-14 05:21:32 +08:00
|
|
|
|
|
|
|
###################################################
|
|
|
|
# Add user extra flags
|
|
|
|
###################################################
|
2016-01-06 03:37:18 +08:00
|
|
|
IF(QMC_INCLUDE)
|
|
|
|
FOREACH ( tmp ${QMC_INCLUDE} )
|
|
|
|
MESSAGE(STATUS "Adding '${tmp}' to include directories")
|
|
|
|
INCLUDE_DIRECTORIES( "${tmp}" )
|
|
|
|
ENDFOREACH()
|
|
|
|
ENDIF()
|
2014-11-20 02:28:35 +08:00
|
|
|
IF(QMC_EXTRA_LIBS)
|
|
|
|
string(REPLACE " " ";" QMC_EXTRA_LIBS ${QMC_EXTRA_LIBS})
|
|
|
|
SET(QMC_UTIL_LIBS ${QMC_UTIL_LIBS} ${QMC_EXTRA_LIBS})
|
|
|
|
MESSAGE("QMC_UTIL_LIBS=${QMC_UTIL_LIBS}")
|
|
|
|
ENDIF()
|
2014-11-14 05:21:32 +08:00
|
|
|
|
2016-02-06 13:16:11 +08:00
|
|
|
# Avoid unused variables warnings (for now) by using for information purposes
|
|
|
|
IF(QMC_DATA)
|
|
|
|
MESSAGE(STATUS "QMC_DATA is ${QMC_DATA}")
|
|
|
|
ENDIF()
|
|
|
|
IF(ENABLE_GCOV)
|
|
|
|
MESSAGE(STATUS "GCOV is enabled")
|
|
|
|
ENDIF()
|
|
|
|
|
2008-05-14 22:52:41 +08:00
|
|
|
###################################################
|
|
|
|
# Done searching libraries. Start building qmcpack
|
|
|
|
###################################################
|
|
|
|
|
2011-09-15 05:41:49 +08:00
|
|
|
MESSAGE(STATUS "Ready to build qmcpack")
|
2008-05-14 22:52:41 +08:00
|
|
|
|
2009-12-23 23:49:53 +08:00
|
|
|
####################################################################
|
|
|
|
# add definitions
|
|
|
|
# -DH5_USE_16_API for HDF5
|
|
|
|
# -DMPICH_SKIP_MPICXX : disable C++ binding of MPICH
|
|
|
|
####################################################################
|
2013-05-13 20:28:40 +08:00
|
|
|
|
2013-12-03 02:09:25 +08:00
|
|
|
ADD_DEFINITIONS(-DHAVE_CONFIG_H -DH5_USE_16_API -DDISABLE_TIMER=1 -DUSE_REAL_STRUCT_FACTOR -DINLINE_ALL=inline)
|
|
|
|
|
|
|
|
IF(CMAKE_COMPILER_IS_GNUCXX)
|
|
|
|
ADD_DEFINITIONS(-DADD_)
|
|
|
|
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
|
|
|
|
|
2009-12-23 23:49:53 +08:00
|
|
|
if(HAVE_MPI)
|
|
|
|
ADD_DEFINITIONS(-DMPICH_SKIP_MPICXX)
|
|
|
|
endif()
|
2008-10-30 08:22:11 +08:00
|
|
|
#ADD_DEFINITIONS(-DDISABLE_WS_CELL)
|
2004-08-25 03:21:10 +08:00
|
|
|
|
2013-12-18 04:00:01 +08:00
|
|
|
EXECUTE_PROCESS(COMMAND hostname OUTPUT_VARIABLE QMC_HOSTNAME OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
CONFIGURE_FILE(${qmcpack_SOURCE_DIR}/qmcpack.settings ${qmcpack_BINARY_DIR}/bin/qmcpack.settings)
|
2013-10-19 04:27:59 +08:00
|
|
|
|
2014-01-22 00:39:29 +08:00
|
|
|
#########################
|
|
|
|
# add definitions for adios profile
|
|
|
|
# add definitions for adios verification
|
|
|
|
########################
|
|
|
|
IF(QMC_ADIOS)
|
|
|
|
#ADD_DEFINITIONS(-DIO_PROFILE)
|
|
|
|
#ADD_DEFINITIONS(-DADIOS_VERIFY)
|
2014-06-12 00:53:45 +08:00
|
|
|
ADD_DEFINITIONS(-DWRITE_GLOBAL)
|
2014-01-22 00:39:29 +08:00
|
|
|
ENDIF(QMC_ADIOS)
|
|
|
|
|
2004-08-25 03:21:10 +08:00
|
|
|
SUBDIRS(src)
|
2013-12-18 04:00:01 +08:00
|
|
|
|
2016-02-19 02:43:14 +08:00
|
|
|
SUBDIRS(tests/converter)
|
2016-07-06 02:22:33 +08:00
|
|
|
SUBDIRS(tests/system)
|
2016-07-06 02:38:37 +08:00
|
|
|
SUBDIRS(examples)
|
2013-12-18 04:00:01 +08:00
|
|
|
#ADD_CUSTOM_TARGET(print_settings ALL
|
|
|
|
# ${CMAKE_COMMAND} -E echo "Print build settings"
|
|
|
|
# VERBATIM)
|
|
|
|
#
|
|
|
|
#add_custom_command(TARGET print_settings
|
|
|
|
# POST_BUILD
|
|
|
|
# COMMAND svn info ${qmcpack_SOURCE_DIR})
|
|
|
|
#
|
|
|
|
#file(APPEND ${qmcpack_BINARY_DIR}/bin/qmcpack.settings ${print_settings})
|