| 1 |
|
# Top level cmake script for OpenMD. |
| 2 |
< |
project(OpenMD) |
| 3 |
< |
# project(OpenMD CXX) |
| 2 |
> |
project(OpenMD CXX) |
| 3 |
> |
cmake_minimum_required(VERSION 2.8.5) |
| 4 |
|
|
| 5 |
– |
CMAKE_MINIMUM_REQUIRED(VERSION 2.6) |
| 6 |
– |
|
| 5 |
|
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules") |
| 6 |
|
|
| 7 |
|
if (NOT CMAKE_BUILD_TYPE) |
| 8 |
|
set(CMAKE_BUILD_TYPE "Release") |
| 9 |
|
endif() |
| 10 |
|
|
| 11 |
+ |
find_package(MPI) |
| 12 |
+ |
if (NOT MPI_CXX_FOUND) |
| 13 |
+ |
message(STATUS "========== OpenMD Parallel Information ==========") |
| 14 |
+ |
message(STATUS ) |
| 15 |
+ |
message(STATUS "No MPI compiler found. Perhaps you want to set one explicitly?") |
| 16 |
+ |
message(STATUS "To override the default compiler, set the environment variable") |
| 17 |
+ |
message(STATUS " export CXX=/full/path/to/mpic++") |
| 18 |
+ |
message(STATUS "in bash or ksh or sh. In csh or tcsh, use:") |
| 19 |
+ |
message(STATUS " setenv CXX /full/path/to/mpic++") |
| 20 |
+ |
message(STATUS "before running the cmake command.") |
| 21 |
+ |
message(STATUS ) |
| 22 |
+ |
message(STATUS "=================================================") |
| 23 |
+ |
endif() |
| 24 |
+ |
IF ( MPI_CXX_FOUND ) |
| 25 |
+ |
INCLUDE_DIRECTORIES(${MPI_CXX_INCLUDE_PATH}) |
| 26 |
+ |
ENDIF() |
| 27 |
+ |
|
| 28 |
|
include(CheckCXXCompilerFlag) |
| 29 |
+ |
include(CheckIncludeFileCXX) |
| 30 |
+ |
include(CheckCXXSymbolExists) |
| 31 |
|
|
| 32 |
|
# OpenMD version number. |
| 33 |
|
set (VERSION_MAJOR "2") |
| 34 |
|
set (VERSION_MINOR "0") |
| 35 |
|
set (VERSION_TINY "0") |
| 19 |
– |
|
| 20 |
– |
# Should |
| 36 |
|
option(SINGLE_PRECISION "Build Single precision (float) version" OFF) |
| 37 |
|
|
| 23 |
– |
|
| 38 |
|
IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) |
| 39 |
|
SET(CMAKE_INSTALL_PREFIX |
| 40 |
|
"/usr/local/openmd" CACHE PATH "OpenMD install prefix" FORCE |
| 60 |
|
"Single directory for all static libraries." |
| 61 |
|
) |
| 62 |
|
|
| 49 |
– |
if ( APPLE ) |
| 50 |
– |
set(MPI_COMPILER /opt/local/lib/openmpi/bin/mpic++) |
| 51 |
– |
set(MPI_LIBRARY "MPI_LIBRARY-NOTFOUND" ) |
| 52 |
– |
endif( APPLE ) |
| 53 |
– |
FIND_PACKAGE(MPI) |
| 54 |
– |
IF ( MPI_FOUND ) |
| 55 |
– |
SET(CMAKE_REQUIRED_INCLUDES "${MPI_INCLUDE_PATH};${CMAKE_REQUIRED_INCLUDES}") |
| 56 |
– |
INCLUDE_DIRECTORIES(${MPI_INCLUDE_PATH}) |
| 57 |
– |
ENDIF() |
| 58 |
– |
|
| 63 |
|
FIND_PACKAGE(Subversion) |
| 64 |
|
IF ( Subversion_FOUND AND EXISTS ${PROJECT_SOURCE_DIR}/.svn ) |
| 65 |
|
Subversion_WC_INFO(${PROJECT_SOURCE_DIR} Project) |
| 66 |
< |
MESSAGE("Current revision is ${Project_WC_REVISION}") |
| 66 |
> |
MESSAGE(STATUS "Current revision is ${Project_WC_REVISION}") |
| 67 |
|
Subversion_WC_LOG(${PROJECT_SOURCE_DIR} Project) |
| 68 |
|
SET(SVN_REV ${Project_WC_REVISION}) |
| 69 |
|
ADD_DEFINITIONS( -DSVN_REV=${Project_WC_REVISION} ) |
| 74 |
|
) |
| 75 |
|
ENDIF() |
| 76 |
|
|
| 77 |
+ |
check_include_file_cxx(conio.h HAVE_CONIO_H) |
| 78 |
+ |
check_cxx_symbol_exists(strncasecmp "string.h" HAVE_STRNCASECMP) |
| 79 |
|
|
| 74 |
– |
include(CheckIncludeFile) |
| 75 |
– |
include(CheckIncludeFileCXX) |
| 76 |
– |
include(CheckSymbolExists) |
| 77 |
– |
include(CheckLibraryExists) |
| 78 |
– |
include(CheckTypeSize) |
| 79 |
– |
include(CheckCSourceCompiles) |
| 80 |
– |
check_include_file(conio.h HAVE_CONIO_H) |
| 81 |
– |
check_symbol_exists(strncasecmp "string.h" HAVE_STRNCASECMP) |
| 80 |
|
# Optional libraries: If we can find these, we will build with them |
| 81 |
|
# Look for OpenBabel libraries |
| 82 |
|
find_package(OpenBabel2) |
| 83 |
|
IF(OPENBABEL2_FOUND) |
| 84 |
|
SET(USE_OPENBABEL) |
| 85 |
|
include_directories(${OPENBABEL2_INCLUDE_DIR}) |
| 86 |
< |
message(STATUS "Openbabel libs: " ${OPENBABEL2_LIBRARIES}) |
| 89 |
< |
# TARGET_LINK_LIBRARIES(${OPENBABEL2_LIBRARIES}) |
| 86 |
> |
# link libraries are added only for targets that need them. |
| 87 |
|
ENDIF(OPENBABEL2_FOUND) |
| 88 |
|
|
| 89 |
|
#Look for QHULL Libraries |
| 90 |
< |
find_package(QHULL) |
| 90 |
> |
find_package(Qhull) |
| 91 |
|
IF(QHULL_FOUND) |
| 92 |
|
SET(HAVE_QHULL 1) |
| 93 |
|
include_directories(${QHULL_INCLUDE_DIR}) |
| 104 |
|
endif(ZLIB_FOUND) |
| 105 |
|
|
| 106 |
|
#FFTW |
| 107 |
< |
FIND_PACKAGE(FFTW) |
| 108 |
< |
IF(FFTW_FOUND) |
| 107 |
> |
IF(SINGLE_PRECISION) |
| 108 |
> |
find_package(FFTW3 COMPONENTS single) |
| 109 |
> |
else() |
| 110 |
> |
find_package(FFTW3 COMPONENTS double) |
| 111 |
> |
endif(SINGLE_PRECISION) |
| 112 |
> |
if (FFTW3_FOUND) |
| 113 |
> |
include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${FFTW3_INCLUDE_DIR}) |
| 114 |
|
SET(HAVE_LIBFFTW 1) |
| 115 |
|
SET(HAVE_FFTW3_H 1) |
| 116 |
< |
INCLUDE_DIRECTORIES(${FFTW_INCLUDE_DIR}) |
| 117 |
< |
LINK_LIBRARIES(${FFTW_LIBRARIES}) |
| 118 |
< |
ENDIF(FFTW_FOUND) |
| 116 |
> |
INCLUDE_DIRECTORIES(${FFTW3_INCLUDE_DIR}) |
| 117 |
> |
LINK_LIBRARIES(${FFTW3_LIBRARIES}) |
| 118 |
> |
endif (FFTW3_FOUND) |
| 119 |
|
|
| 120 |
+ |
|
| 121 |
|
# add a target to generate API documentation with Doxygen |
| 122 |
|
find_package(Doxygen) |
| 123 |
|
if(DOXYGEN_FOUND) |
| 151 |
|
) |
| 152 |
|
include_directories("${PROJECT_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/src") |
| 153 |
|
|
| 151 |
– |
|
| 154 |
|
#Add executables for build |
| 155 |
|
set (PROGRAMS |
| 156 |
|
openmd |
| 607 |
|
INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/doc/OpenMDmanual.pdf" |
| 608 |
|
DESTINATION doc |
| 609 |
|
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) |
| 610 |
+ |
|
| 611 |
+ |
message( STATUS) |
| 612 |
+ |
message( STATUS "========== OpenMD Build Information ==========") |
| 613 |
+ |
message( STATUS "Current revision ........... = ${SVN_REV}") |
| 614 |
+ |
message( STATUS "CMAKE_SYSTEM ............... = ${CMAKE_SYSTEM}") |
| 615 |
+ |
message( STATUS "==============================================") |
| 616 |
+ |
message( STATUS "CMAKE_BUILD_TYPE ........... = ${CMAKE_BUILD_TYPE}") |
| 617 |
+ |
message( STATUS "CMAKE_INSTALL_PREFIX ....... = ${CMAKE_INSTALL_PREFIX}") |
| 618 |
+ |
message( STATUS "CMAKE_CXX_COMPILER ......... = ${CMAKE_CXX_COMPILER}") |
| 619 |
+ |
message( STATUS "MPI_CXX_COMPILER ........... = ${MPI_CXX_COMPILER}") |
| 620 |
+ |
message( STATUS "MPI_CXX_INCLUDE_PATH ....... = ${MPI_CXX_INCLUDE_PATH}") |
| 621 |
+ |
message( STATUS "MPI_CXX_LIBRARIES .......... = ${MPI_CXX_LIBRARIES}") |
| 622 |
+ |
message( STATUS "Build as SINGLE_PRECISION .. = ${SINGLE_PRECISION}") |
| 623 |
+ |
message( STATUS "OPENBABEL2_INCLUDE_DIR ..... = ${OPENBABEL2_INCLUDE_DIR}") |
| 624 |
+ |
message( STATUS "OPENBABEL2_LIBRARIES ....... = ${OPENBABEL2_LIBRARIES}") |
| 625 |
+ |
message( STATUS "QHULL_INCLUDE_DIR .......... = ${QHULL_INCLUDE_DIR}") |
| 626 |
+ |
message( STATUS "QHULL_LIBRARIES ............ = ${QHULL_LIBRARIES}") |
| 627 |
+ |
message( STATUS "ZLIB_INCLUDE_DIR ........... = ${ZLIB_INCLUDE_DIR}") |
| 628 |
+ |
message( STATUS "ZLIB_LIBRARIES ............. = ${ZLIB_LIBRARIES}") |
| 629 |
+ |
message( STATUS "FFTW3_INCLUDE_DIR .......... = ${FFTW3_INCLUDE_DIR}") |
| 630 |
+ |
message( STATUS "FFTW3_LIBRARIES ............ = ${FFTW3_LIBRARIES}") |
| 631 |
+ |
message( STATUS "DOXYGEN_EXECUTABLE ......... = ${DOXYGEN_EXECUTABLE}") |
| 632 |
+ |
message( STATUS "PERL_EXECUTABLE ............ = ${PERL}") |
| 633 |
+ |
message( STATUS "PYTHON_EXECUTABLE .......... = ${PYTHON}") |
| 634 |
+ |
message( STATUS "To override these options, add -D{OPTION_NAME}=... to the cmake command") |
| 635 |
+ |
message(STATUS) |
| 636 |
+ |
message(STATUS "To build and install OpenMD, enter \"make\" and \"make install\"") |