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) |