| 1 |
|
# Top level cmake script for OpenMD. |
| 2 |
– |
|
| 3 |
– |
cmake_minimum_required (VERSION 2.6) |
| 2 |
|
project(OpenMD) |
| 3 |
+ |
# project(OpenMD CXX) |
| 4 |
|
|
| 5 |
+ |
CMAKE_MINIMUM_REQUIRED(VERSION 2.6) |
| 6 |
|
|
| 7 |
+ |
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules") |
| 8 |
+ |
|
| 9 |
+ |
if (NOT CMAKE_BUILD_TYPE) |
| 10 |
+ |
set(CMAKE_BUILD_TYPE "Release") |
| 11 |
+ |
endif() |
| 12 |
+ |
|
| 13 |
+ |
include(CheckCXXCompilerFlag) |
| 14 |
+ |
|
| 15 |
|
# OpenMD version number. |
| 16 |
|
set (VERSION_MAJOR "2") |
| 17 |
|
set (VERSION_MINOR "0") |
| 18 |
|
set (VERSION_TINY "0") |
| 19 |
|
|
| 20 |
< |
# cmake modules that are needed to build oopse |
| 21 |
< |
SET(CMAKE_MODULE_PATH ${OpenMD_SOURCE_DIR}/cmake/modules) |
| 14 |
< |
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) |
| 15 |
< |
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) |
| 20 |
> |
# Should |
| 21 |
> |
option(SINGLE_PRECISION "Build Single precision (float) version" OFF) |
| 22 |
|
|
| 17 |
– |
enable_language(CXX C) |
| 23 |
|
|
| 24 |
+ |
IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) |
| 25 |
+ |
SET(CMAKE_INSTALL_PREFIX |
| 26 |
+ |
"/usr/local/openmd" CACHE PATH "OpenMD install prefix" FORCE |
| 27 |
+ |
) |
| 28 |
+ |
ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) |
| 29 |
+ |
|
| 30 |
+ |
# ---------- Setup output Directories ------------------------- |
| 31 |
+ |
SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY |
| 32 |
+ |
${PROJECT_BINARY_DIR}/lib |
| 33 |
+ |
CACHE PATH |
| 34 |
+ |
"Single directory for all shared libraries" |
| 35 |
+ |
) |
| 36 |
+ |
# --------- Setup the Executable output Directory ------------- |
| 37 |
+ |
SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY |
| 38 |
+ |
${PROJECT_BINARY_DIR}/bin |
| 39 |
+ |
CACHE PATH |
| 40 |
+ |
"Single directory for all Executables." |
| 41 |
+ |
) |
| 42 |
+ |
# --------- Setup the static library directory ------------- |
| 43 |
+ |
SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY |
| 44 |
+ |
${PROJECT_BINARY_DIR}/lib |
| 45 |
+ |
CACHE PATH |
| 46 |
+ |
"Single directory for all static libraries." |
| 47 |
+ |
) |
| 48 |
+ |
|
| 49 |
|
if ( APPLE ) |
| 50 |
|
set(MPI_COMPILER /opt/local/lib/openmpi/bin/mpic++) |
| 51 |
|
set(MPI_LIBRARY "MPI_LIBRARY-NOTFOUND" ) |
| 63 |
|
Subversion_WC_LOG(${PROJECT_SOURCE_DIR} Project) |
| 64 |
|
SET(SVN_REV ${Project_WC_REVISION}) |
| 65 |
|
ADD_DEFINITIONS( -DSVN_REV=${Project_WC_REVISION} ) |
| 66 |
+ |
SET(GENERATELOGS "${PROJECT_SOURCE_DIR}/doc/svn2cl") |
| 67 |
+ |
ADD_CUSTOM_TARGET(ChangeLog |
| 68 |
+ |
COMMAND ${GENERATELOGS} "--group-by-day" "--include-rev" |
| 69 |
+ |
"--linelen=78" "--output=${PROJECT_BINARY_DIR}/ChangeLog" "${PROJECT_SOURCE_DIR}" |
| 70 |
+ |
) |
| 71 |
|
ENDIF() |
| 72 |
|
|
| 73 |
+ |
|
| 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) |
| 82 |
|
# Optional libraries: If we can find these, we will build with them |
| 83 |
|
# Look for OpenBabel libraries |
| 84 |
|
find_package(OpenBabel2) |
| 97 |
|
LINK_LIBRARIES(${QHULL_LIBRARIES}) |
| 98 |
|
ENDIF(QHULL_FOUND) |
| 99 |
|
|
| 56 |
– |
|
| 100 |
|
# zlib stuff |
| 101 |
|
find_package(ZLIB) |
| 102 |
|
if(ZLIB_FOUND) |
| 107 |
|
endif(ZLIB_FOUND) |
| 108 |
|
|
| 109 |
|
#FFTW |
| 110 |
< |
INCLUDE(${CMAKE_MODULE_PATH}/FindFFTW.cmake) |
| 110 |
> |
FIND_PACKAGE(FFTW) |
| 111 |
|
IF(FFTW_FOUND) |
| 112 |
|
SET(HAVE_LIBFFTW 1) |
| 113 |
< |
SET(HAVE_FFTW3_H) |
| 113 |
> |
SET(HAVE_FFTW3_H 1) |
| 114 |
|
INCLUDE_DIRECTORIES(${FFTW_INCLUDE_DIR}) |
| 115 |
|
LINK_LIBRARIES(${FFTW_LIBRARIES}) |
| 116 |
|
ENDIF(FFTW_FOUND) |
| 117 |
|
|
| 118 |
< |
|
| 119 |
< |
#include checks |
| 120 |
< |
include(CheckIncludeFile) |
| 121 |
< |
CHECK_INCLUDE_FILE(fftw3.h HAVE_FFTW3_H) |
| 122 |
< |
CHECK_INCLUDE_FILE(fftw.h HAVE_FFWT_H) |
| 123 |
< |
CHECK_INCLUDE_FILE(dfftw.h HAVE_DFFTW_H) |
| 124 |
< |
CHECK_INCLUDE_FILE(cmath.h HAVE_CMATH_H) |
| 125 |
< |
check_include_file(limits.h HAVE_LIMITS_H) |
| 126 |
< |
check_include_file(stdlib.h HAVE_STDLIB_H) |
| 127 |
< |
check_include_file(string.h HAVE_STRING_H) |
| 85 |
< |
check_include_file("sys/ioctl.h" HAVE_SYS_IOCTL_H) |
| 86 |
< |
check_include_file(unistd.h HAVE_UNISTD_H) |
| 87 |
< |
|
| 88 |
< |
#symbol checks |
| 89 |
< |
include(CheckSymbolExists) |
| 90 |
< |
|
| 91 |
< |
#function checks |
| 92 |
< |
include(CheckFunctionExists) |
| 93 |
< |
check_function_exists(atexit HAVE_ATEXIT) |
| 94 |
< |
check_function_exists(floor HAVE_FLOOR) |
| 95 |
< |
check_function_exists(pow HAVE_POW) |
| 96 |
< |
check_function_exists(select HAVE_SELECT) |
| 97 |
< |
check_function_exists(sqrt HAVE_SQRT) |
| 98 |
< |
check_function_exists(strcasecmp HAVE_STRCASECMP) |
| 99 |
< |
check_function_exists(strchr HAVE_STRCHR) |
| 100 |
< |
check_function_exists(strdup HAVE_STRDUP) |
| 101 |
< |
check_function_exists(strncasecmp HAVE_STRNCASECMP) |
| 102 |
< |
check_function_exists(strstr HAVE_STRSTR) |
| 103 |
< |
check_function_exists(strtol HAVE_STRTOL) |
| 104 |
< |
check_function_exists(strtoull HAVE_STRTOULL) |
| 105 |
< |
check_function_exists(sysmp HAVE_SYSMP) |
| 106 |
< |
check_function_exists(table HAVE_TABLE) |
| 107 |
< |
|
| 118 |
> |
# add a target to generate API documentation with Doxygen |
| 119 |
> |
find_package(Doxygen) |
| 120 |
> |
if(DOXYGEN_FOUND) |
| 121 |
> |
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in" "${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile" @ONLY) |
| 122 |
> |
add_custom_target(doc |
| 123 |
> |
${DOXYGEN_EXECUTABLE} "${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile" |
| 124 |
> |
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/doc" |
| 125 |
> |
COMMENT "Generating API documentation with Doxygen" VERBATIM |
| 126 |
> |
) |
| 127 |
> |
endif(DOXYGEN_FOUND) |
| 128 |
|
|
| 129 |
|
FIND_PACKAGE(Perl) |
| 130 |
|
IF(PERL_FOUND) |
| 142 |
|
|
| 143 |
|
SET(PERL_INSTALLDIRS "site" CACHE STRING "Perl installation locations") |
| 144 |
|
|
| 125 |
– |
|
| 126 |
– |
include(CMakePrintSystemInformation) |
| 127 |
– |
|
| 145 |
|
configure_file ( |
| 146 |
|
"${PROJECT_SOURCE_DIR}/src/config.h.cmake" |
| 147 |
< |
"${PROJECT_SOURCE_DIR}/src/config.h" |
| 148 |
< |
) |
| 149 |
< |
include_directories (${PROJECT_SOURCE_DIR}/src) |
| 133 |
< |
|
| 134 |
< |
#CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) |
| 147 |
> |
"${PROJECT_BINARY_DIR}/config.h" |
| 148 |
> |
) |
| 149 |
> |
include_directories("${PROJECT_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/src") |
| 150 |
|
|
| 151 |
|
|
| 152 |
|
#Add executables for build |
| 371 |
|
src/restraints/RestraintForceManager.cpp |
| 372 |
|
src/restraints/ThermoIntegrationForceManager.cpp |
| 373 |
|
src/utils/ProgressBar.cpp |
| 374 |
< |
src/utils/simError.c |
| 374 |
> |
src/utils/simError.cpp |
| 375 |
|
) |
| 376 |
|
|
| 377 |
|
IF(QHULL_FOUND) |
| 405 |
|
COMPILE_DEFINITIONS IS_MPI |
| 406 |
|
) |
| 407 |
|
target_link_libraries(openmd_MPI openmd_parallel openmd_core openmd_parallel openmd_core) |
| 408 |
+ |
INSTALL(TARGETS |
| 409 |
+ |
openmd_parallel openmd_MPI |
| 410 |
+ |
RUNTIME DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE |
| 411 |
+ |
LIBRARY DESTINATION lib PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ |
| 412 |
+ |
ARCHIVE DESTINATION lib PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ |
| 413 |
+ |
) |
| 414 |
|
ENDIF (MPI_FOUND) |
| 415 |
|
|
| 416 |
|
set (DUMP2XYZSOURCE |
| 417 |
|
src/applications/dump2Xyz/Dump2XYZ.cpp |
| 418 |
< |
src/applications/dump2Xyz/Dump2XYZCmd.c |
| 418 |
> |
src/applications/dump2Xyz/Dump2XYZCmd.cpp |
| 419 |
|
) |
| 420 |
|
|
| 421 |
|
set (DYNAMICPROPSSOURCE |
| 436 |
|
src/applications/dynamicProps/ThetaCorrFunc.cpp |
| 437 |
|
src/applications/dynamicProps/TimeCorrFunc.cpp |
| 438 |
|
src/applications/dynamicProps/VCorrFunc.cpp |
| 439 |
< |
src/applications/dynamicProps/DynamicPropsCmd.c |
| 439 |
> |
src/applications/dynamicProps/DynamicPropsCmd.cpp |
| 440 |
|
) |
| 441 |
|
|
| 442 |
|
set (HYDROSOURCE |
| 449 |
|
src/applications/hydrodynamics/HydrodynamicsModelFactory.cpp |
| 450 |
|
src/applications/hydrodynamics/RoughShell.cpp |
| 451 |
|
src/applications/hydrodynamics/ShapeBuilder.cpp |
| 452 |
< |
src/applications/hydrodynamics/HydroCmd.c |
| 452 |
> |
src/applications/hydrodynamics/HydroCmd.cpp |
| 453 |
|
) |
| 454 |
|
|
| 455 |
|
set (STATICPROPSSOURCE |
| 478 |
|
src/applications/staticProps/StaticProps.cpp |
| 479 |
|
src/applications/staticProps/TetrahedralityParam.cpp |
| 480 |
|
src/applications/staticProps/TwoDGofR.cpp |
| 481 |
< |
src/applications/staticProps/StaticPropsCmd.c |
| 481 |
> |
src/applications/staticProps/StaticPropsCmd.cpp |
| 482 |
|
) |
| 483 |
|
|
| 484 |
|
set (NANOPARTICLEBUILDERSOURCE |
| 485 |
|
src/applications/nanoparticleBuilder/nanoparticleBuilder.cpp |
| 486 |
|
src/applications/nanoparticleBuilder/shapedLatticeSpherical.cpp |
| 487 |
< |
src/applications/nanoparticleBuilder/nanoparticleBuilderCmd.c |
| 487 |
> |
src/applications/nanoparticleBuilder/nanoparticleBuilderCmd.cpp |
| 488 |
|
) |
| 489 |
|
|
| 490 |
|
set (RANDOMBUILDERSOURCE |
| 491 |
|
src/applications/randomBuilder/randomBuilder.cpp |
| 492 |
< |
src/applications/randomBuilder/randomBuilderCmd.c |
| 492 |
> |
src/applications/randomBuilder/randomBuilderCmd.cpp |
| 493 |
|
) |
| 494 |
|
|
| 495 |
|
set(SIMPLEBUILDERSOURCE |
| 496 |
|
src/applications/simpleBuilder/simpleBuilder.cpp |
| 497 |
< |
src/applications/simpleBuilder/simpleBuilderCmd.c |
| 497 |
> |
src/applications/simpleBuilder/simpleBuilderCmd.cpp |
| 498 |
|
) |
| 499 |
|
|
| 500 |
|
set(THERMALIZERSOURCE |
| 501 |
|
src/applications/thermalizer/thermalizer.cpp |
| 502 |
< |
src/applications/thermalizer/thermalizerCmd.c |
| 502 |
> |
src/applications/thermalizer/thermalizerCmd.cpp |
| 503 |
|
) |
| 504 |
|
|
| 505 |
|
add_executable(Dump2XYZ ${DUMP2XYZSOURCE}) |
| 526 |
|
) |
| 527 |
|
add_executable(atom2md ${ATOM2MDSOURCE}) |
| 528 |
|
target_link_libraries(atom2md openmd_single openmd_core openmd_single openmd_core ${OPENBABEL2_LIBRARIES}) |
| 529 |
+ |
INSTALL(TARGETS atom2md RUNTIME DESTINATION bin |
| 530 |
+ |
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) |
| 531 |
|
ENDIF (OPENBABEL2_FOUND) |
| 532 |
|
|
| 533 |
|
|
| 541 |
|
src/applications/utilities/principalAxisCalculator |
| 542 |
|
src/applications/utilities/stat2visco |
| 543 |
|
src/applications/utilities/waterRotator |
| 544 |
+ |
src/applications/utilities/waterReplacer |
| 545 |
|
) |
| 546 |
|
|
| 547 |
|
IF(PYTHON_EXECUTABLE) |
| 548 |
|
foreach(PY_FILE ${PY_FILES}) |
| 549 |
< |
configure_file(${PY_FILE} "${EXECUTABLE_OUTPUT_PATH}"/${PY_FILE} @ONLY) |
| 549 |
> |
GET_FILENAME_COMPONENT(filename "${PY_FILE}" NAME) |
| 550 |
> |
CONFIGURE_FILE(${PY_FILE} |
| 551 |
> |
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${filename}" @ONLY) |
| 552 |
> |
INSTALL(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${filename}" |
| 553 |
> |
DESTINATION bin |
| 554 |
> |
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) |
| 555 |
|
endforeach(PY_FILE) |
| 527 |
– |
#INSTALL(FILES ${PY_FILES} DESTINATION ${EXECUTABLE_OUTPUT_PATH}) |
| 556 |
|
ENDIF(PYTHON_EXECUTABLE) |
| 557 |
|
|
| 558 |
|
set(PERL_FILES |
| 562 |
|
|
| 563 |
|
IF(PERL_FOUND) |
| 564 |
|
foreach(PERL_FILE ${PERL_FILES}) |
| 565 |
< |
configure_file(${PERL_FILE} "${EXECUTABLE_OUTPUT_PATH}"/${PERL_FILE} @ONLY) |
| 565 |
> |
GET_FILENAME_COMPONENT(filename "${PERL_FILE}" NAME) |
| 566 |
> |
configure_file(${PERL_FILE} "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${filename}" @ONLY) |
| 567 |
> |
INSTALL(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${filename}" |
| 568 |
> |
DESTINATION bin |
| 569 |
> |
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) |
| 570 |
> |
|
| 571 |
|
endforeach(PERL_FILE) |
| 539 |
– |
#INSTALL(FILES ${PERL_FILES} DESTINATION ${EXECUTABLE_OUTPUT_PATH}) |
| 572 |
|
ENDIF(PERL_FOUND) |
| 573 |
+ |
|
| 574 |
+ |
INSTALL(FILES AUTHORS LICENSE README INSTALL DESTINATION . |
| 575 |
+ |
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ) |
| 576 |
+ |
INSTALL(TARGETS |
| 577 |
+ |
openmd_core |
| 578 |
+ |
openmd_single |
| 579 |
+ |
openmd |
| 580 |
+ |
Dump2XYZ |
| 581 |
+ |
simpleBuilder |
| 582 |
+ |
StaticProps |
| 583 |
+ |
DynamicProps |
| 584 |
+ |
randomBuilder |
| 585 |
+ |
nanoparticleBuilder |
| 586 |
+ |
thermalizer |
| 587 |
+ |
Hydro |
| 588 |
+ |
RUNTIME DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE |
| 589 |
+ |
LIBRARY DESTINATION lib PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ |
| 590 |
+ |
ARCHIVE DESTINATION lib PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ |
| 591 |
+ |
) |
| 592 |
+ |
|
| 593 |
+ |
install(DIRECTORY forceFields/ |
| 594 |
+ |
DESTINATION forceFields |
| 595 |
+ |
DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE |
| 596 |
+ |
PATTERN ".svn" EXCLUDE |
| 597 |
+ |
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) |
| 598 |
+ |
install(DIRECTORY samples/ |
| 599 |
+ |
DESTINATION samples |
| 600 |
+ |
DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE |
| 601 |
+ |
PATTERN ".svn" EXCLUDE |
| 602 |
+ |
PATTERN "*.dump" EXCLUDE |
| 603 |
+ |
PATTERN "*.stat" EXCLUDE |
| 604 |
+ |
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) |
| 605 |
+ |
INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/doc/OpenMDmanual.pdf" |
| 606 |
+ |
DESTINATION doc |
| 607 |
+ |
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) |