ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/CMakeLists.txt
Revision: 1969
Committed: Wed Feb 26 14:14:50 2014 UTC (11 years, 4 months ago) by gezelter
Content type: text/plain
File size: 28191 byte(s)
Log Message:
Fixes to deal with deprecation of MPI C++ bindings.  We've reverted back to the
C calls.

File Contents

# User Rev Content
1 chuckv 1466 # Top level cmake script for OpenMD.
2 gezelter 1694 project(OpenMD CXX)
3     cmake_minimum_required(VERSION 2.8.5)
4 chuckv 1466
5 gezelter 1668 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 gezelter 1767 IF(WIN32)
12     ADD_DEFINITIONS(/D _CRT_SECURE_NO_WARNINGS)
13     ENDIF(WIN32)
14    
15 gezelter 1694 find_package(MPI)
16     if (NOT MPI_CXX_FOUND)
17     message(STATUS "========== OpenMD Parallel Information ==========")
18     message(STATUS )
19     message(STATUS "No MPI compiler found. Perhaps you want to set one explicitly?")
20     message(STATUS "To override the default compiler, set the environment variable")
21     message(STATUS " export CXX=/full/path/to/mpic++")
22     message(STATUS "in bash or ksh or sh. In csh or tcsh, use:")
23     message(STATUS " setenv CXX /full/path/to/mpic++")
24     message(STATUS "before running the cmake command.")
25     message(STATUS )
26     message(STATUS "=================================================")
27     endif()
28     IF ( MPI_CXX_FOUND )
29     INCLUDE_DIRECTORIES(${MPI_CXX_INCLUDE_PATH})
30     ENDIF()
31    
32 gezelter 1668 include(CheckCXXCompilerFlag)
33 gezelter 1694 include(CheckIncludeFileCXX)
34     include(CheckCXXSymbolExists)
35 gezelter 1668
36 chuckv 1466 # OpenMD version number.
37 chuckv 1496 set (VERSION_MAJOR "2")
38 gezelter 1879 set (VERSION_MINOR "1")
39 chuckv 1496 set (VERSION_TINY "0")
40 gezelter 1668 option(SINGLE_PRECISION "Build Single precision (float) version" OFF)
41    
42 gezelter 1647 IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
43 gezelter 1790 IF(WIN32)
44     SET(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/openmd"
45     CACHE PATH "OpenMD install prefix" FORCE)
46     ELSE(WIN32)
47     SET(CMAKE_INSTALL_PREFIX "/usr/local/openmd"
48     CACHE PATH "OpenMD install prefix" FORCE)
49     ENDIF(WIN32)
50 gezelter 1647 ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
51 gezelter 1790 ADD_DEFINITIONS( -DFRC_PATH=${CMAKE_INSTALL_PREFIX}/forceFields )
52 chuckv 1466
53 gezelter 1647 # ---------- Setup output Directories -------------------------
54     SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY
55     ${PROJECT_BINARY_DIR}/lib
56     CACHE PATH
57     "Single directory for all shared libraries"
58     )
59     # --------- Setup the Executable output Directory -------------
60     SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY
61     ${PROJECT_BINARY_DIR}/bin
62     CACHE PATH
63     "Single directory for all Executables."
64     )
65     # --------- Setup the static library directory -------------
66     SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY
67     ${PROJECT_BINARY_DIR}/lib
68     CACHE PATH
69     "Single directory for all static libraries."
70     )
71    
72 gezelter 1636 FIND_PACKAGE(Subversion)
73     IF ( Subversion_FOUND AND EXISTS ${PROJECT_SOURCE_DIR}/.svn )
74     Subversion_WC_INFO(${PROJECT_SOURCE_DIR} Project)
75 gezelter 1694 MESSAGE(STATUS "Current revision is ${Project_WC_REVISION}")
76 gezelter 1636 Subversion_WC_LOG(${PROJECT_SOURCE_DIR} Project)
77     SET(SVN_REV ${Project_WC_REVISION})
78     ADD_DEFINITIONS( -DSVN_REV=${Project_WC_REVISION} )
79 gezelter 1652 SET(GENERATELOGS "${PROJECT_SOURCE_DIR}/doc/svn2cl")
80     ADD_CUSTOM_TARGET(ChangeLog
81     COMMAND ${GENERATELOGS} "--group-by-day" "--include-rev"
82     "--linelen=78" "--output=${PROJECT_BINARY_DIR}/ChangeLog" "${PROJECT_SOURCE_DIR}"
83     )
84 gezelter 1836 ELSE()
85     SET(SVN_REV Release)
86     ADD_DEFINITIONS( -DSVN_REV=Release )
87 gezelter 1636 ENDIF()
88    
89 gezelter 1694 check_include_file_cxx(conio.h HAVE_CONIO_H)
90     check_cxx_symbol_exists(strncasecmp "string.h" HAVE_STRNCASECMP)
91 gezelter 1668
92 chuckv 1466 # Optional libraries: If we can find these, we will build with them
93     # Look for OpenBabel libraries
94 chuckv 1496 find_package(OpenBabel2)
95     IF(OPENBABEL2_FOUND)
96     SET(USE_OPENBABEL)
97     include_directories(${OPENBABEL2_INCLUDE_DIR})
98 gezelter 1694 # link libraries are added only for targets that need them.
99 gezelter 1695 ELSE(OPENBABEL2_FOUND)
100 gezelter 1705 MESSAGE(STATUS "No OpenBabel found - will not build atom2md")
101 chuckv 1496 ENDIF(OPENBABEL2_FOUND)
102    
103 gezelter 1743 find_package(Eigen3)
104     if(EIGEN3_FOUND)
105     add_definitions(-DHAVE_EIGEN -DHAVE_EIGEN3)
106     include_directories(${EIGEN3_INCLUDE_DIR})
107     else()
108     find_package(Eigen2) # find and setup Eigen2
109     if(EIGEN2_FOUND)
110     add_definitions (-DHAVE_EIGEN)
111     include_directories(${EIGEN2_INCLUDE_DIR})
112     endif()
113     endif()
114    
115 chuckv 1466 #Look for QHULL Libraries
116 gezelter 1879 SET(QHULL_USE_STATIC 1)
117 gezelter 1694 find_package(Qhull)
118 chuckv 1496 IF(QHULL_FOUND)
119     SET(HAVE_QHULL 1)
120 chuckv 1500 include_directories(${QHULL_INCLUDE_DIR})
121 chuckv 1496 LINK_LIBRARIES(${QHULL_LIBRARIES})
122 gezelter 1695 ELSE(QHULL_FOUND)
123 gezelter 1705 MESSAGE(STATUS "No Qhull found - will be missing some features")
124 chuckv 1496 ENDIF(QHULL_FOUND)
125 chuckv 1466
126 chuckv 1496 # zlib stuff
127     find_package(ZLIB)
128     if(ZLIB_FOUND)
129     SET(HAVE_LIBZ 1)
130     add_definitions(-DHAVE_LIBZ)
131     include_directories(${ZLIB_INCLUDE_DIR})
132     LINK_LIBRARIES(${ZLIB_LIBRARIES})
133 gezelter 1695 ELSE(ZLIB_FOUND)
134 gezelter 1705 MESSAGE(STATUS "No zlib found - will be missing compressed dump files")
135 chuckv 1496 endif(ZLIB_FOUND)
136    
137 gezelter 1695 #FFTW3
138 gezelter 1694 IF(SINGLE_PRECISION)
139     find_package(FFTW3 COMPONENTS single)
140     else()
141     find_package(FFTW3 COMPONENTS double)
142     endif(SINGLE_PRECISION)
143     if (FFTW3_FOUND)
144     include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${FFTW3_INCLUDE_DIR})
145 chuckv 1496 SET(HAVE_LIBFFTW 1)
146 gezelter 1668 SET(HAVE_FFTW3_H 1)
147 gezelter 1694 INCLUDE_DIRECTORIES(${FFTW3_INCLUDE_DIR})
148     LINK_LIBRARIES(${FFTW3_LIBRARIES})
149 gezelter 1695 ELSE(FFTW3_FOUND)
150 gezelter 1705 MESSAGE(STATUS "No fftw3 found - will be missing some analysis modules")
151 gezelter 1694 endif (FFTW3_FOUND)
152 chuckv 1496
153 gezelter 1694
154 gezelter 1651 # add a target to generate API documentation with Doxygen
155     find_package(Doxygen)
156     if(DOXYGEN_FOUND)
157     configure_file("${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in" "${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile" @ONLY)
158     add_custom_target(doc
159     ${DOXYGEN_EXECUTABLE} "${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile"
160     WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/doc"
161     COMMENT "Generating API documentation with Doxygen" VERBATIM
162     )
163     endif(DOXYGEN_FOUND)
164 chuckv 1496
165 gezelter 1639 FIND_PACKAGE(Perl)
166     IF(PERL_FOUND)
167     SET(PERL ${PERL_EXECUTABLE})
168     ELSE(PERL_FOUND)
169 gezelter 1695 MESSAGE(STATUS "Failed to find perl - some scripts will not be made")
170 gezelter 1639 ENDIF(PERL_FOUND)
171    
172 gezelter 1695 SET(PERL_INSTALLDIRS "site" CACHE STRING "Perl installation
173     locations")
174    
175 gezelter 1639 FIND_PACKAGE(PythonInterp)
176     IF(PYTHON_EXECUTABLE)
177     SET(PYTHON ${PYTHON_EXECUTABLE})
178     ELSE(PYTHON_EXECUTABLE)
179 gezelter 1695 MESSAGE(STATUS "Failed to find python - some scripts will not be made")
180 gezelter 1639 ENDIF(PYTHON_EXECUTABLE)
181    
182 chuckv 1496 configure_file (
183     "${PROJECT_SOURCE_DIR}/src/config.h.cmake"
184 gezelter 1655 "${PROJECT_BINARY_DIR}/config.h"
185     )
186     include_directories("${PROJECT_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/src")
187 chuckv 1496
188 chuckv 1466 #Add executables for build
189 gezelter 1639 set (PROGRAMS
190     openmd
191     openmd_MPI
192     Dump2XYZ
193     simpleBuilder
194     StaticProps
195     DynamicProps
196     randomBuilder
197     nanoparticleBuilder
198     thermalizer
199 gezelter 1879 recenter
200 gezelter 1639 atom2md
201     Hydro)
202 chuckv 1466
203 gezelter 1639 set(SOURCE
204     src/antlr/ANTLRUtil.cpp
205     src/antlr/ASTFactory.cpp
206     src/antlr/ASTNULLType.cpp
207     src/antlr/ASTRefCount.cpp
208     src/antlr/BaseAST.cpp
209     src/antlr/BitSet.cpp
210     src/antlr/CommonAST.cpp
211     src/antlr/CommonASTWithHiddenTokens.cpp
212     src/antlr/CommonHiddenStreamToken.cpp
213     src/antlr/CommonToken.cpp
214     src/antlr/LLkParser.cpp
215     src/antlr/MismatchedCharException.cpp
216     src/antlr/MismatchedTokenException.cpp
217     src/antlr/NoViableAltException.cpp
218     src/antlr/NoViableAltForCharException.cpp
219     src/antlr/Parser.cpp
220     src/antlr/RecognitionException.cpp
221     src/antlr/String.cpp
222     src/antlr/Token.cpp
223     src/antlr/TokenRefCount.cpp
224     src/antlr/TokenStreamBasicFilter.cpp
225     src/antlr/TokenStreamHiddenTokenFilter.cpp
226     src/antlr/TokenStreamRewriteEngine.cpp
227     src/antlr/TokenStreamSelector.cpp
228     src/antlr/TreeParser.cpp
229     src/brains/BlockSnapshotManager.cpp
230     src/brains/DataStorage.cpp
231 gezelter 1725 src/brains/ForceField.cpp
232 gezelter 1639 src/brains/MoleculeCreator.cpp
233     src/brains/PairList.cpp
234     src/brains/Register.cpp
235     src/brains/SimSnapshotManager.cpp
236     src/brains/Snapshot.cpp
237     src/brains/Stats.cpp
238 gezelter 1748 src/constraints/Shake.cpp
239 gezelter 1639 src/constraints/Rattle.cpp
240     src/hydrodynamics/Ellipsoid.cpp
241     src/hydrodynamics/HydroProp.cpp
242     src/hydrodynamics/Sphere.cpp
243     src/integrators/DLM.cpp
244 gezelter 1766 src/flucq/FluctuatingChargeLangevin.cpp
245 gezelter 1743 src/flucq/FluctuatingChargeParameters.cpp
246 gezelter 1731 src/flucq/FluctuatingChargeNVT.cpp
247 gezelter 1743 src/flucq/FluctuatingChargePropagator.cpp
248 gezelter 1969 src/flucq/FluctuatingChargeForces.cpp
249 gezelter 1639 src/integrators/Integrator.cpp
250     src/integrators/IntegratorFactory.cpp
251     src/integrators/LangevinDynamics.cpp
252     src/integrators/LDForceManager.cpp
253     src/integrators/NgammaT.cpp
254     src/integrators/NPAT.cpp
255     src/integrators/NPrT.cpp
256     src/integrators/NPT.cpp
257     src/integrators/NPTf.cpp
258     src/integrators/NPTi.cpp
259     src/integrators/NPTsz.cpp
260     src/integrators/NPTxyz.cpp
261     src/integrators/NVE.cpp
262     src/integrators/NVT.cpp
263     src/integrators/VelocityVerletIntegrator.cpp
264     src/io/AtomTypesSectionParser.cpp
265     src/io/BaseAtomTypesSectionParser.cpp
266     src/io/BendTypesSectionParser.cpp
267     src/io/BondTypesSectionParser.cpp
268     src/io/ChargeAtomTypesSectionParser.cpp
269     src/io/DirectionalAtomTypesSectionParser.cpp
270     src/io/EAMAtomTypesSectionParser.cpp
271 gezelter 1710 src/io/FluctuatingChargeAtomTypesSectionParser.cpp
272 gezelter 1639 src/io/ForceFieldOptions.cpp
273     src/io/GayBerneAtomTypesSectionParser.cpp
274     src/io/Globals.cpp
275     src/io/InversionTypesSectionParser.cpp
276     src/io/LennardJonesAtomTypesSectionParser.cpp
277     src/io/MultipoleAtomTypesSectionParser.cpp
278     src/io/NonBondedInteractionsSectionParser.cpp
279     src/io/OptionSectionParser.cpp
280     src/io/ParamConstraint.cpp
281 gezelter 1710 src/io/PolarizableAtomTypesSectionParser.cpp
282 gezelter 1639 src/io/SCAtomTypesSectionParser.cpp
283     src/io/SectionParser.cpp
284     src/io/SectionParserManager.cpp
285     src/io/ShapeAtomTypesSectionParser.cpp
286     src/io/StickyAtomTypesSectionParser.cpp
287     src/io/StickyPowerAtomTypesSectionParser.cpp
288     src/io/TorsionTypesSectionParser.cpp
289     src/io/ZConsReader.cpp
290     src/lattice/CubicLattice.cpp
291     src/lattice/FCCLattice.cpp
292     src/lattice/Lattice.cpp
293     src/lattice/LatticeFactory.cpp
294     src/lattice/shapedLattice.cpp
295     src/math/ChebyshevT.cpp
296     src/math/ChebyshevU.cpp
297     src/math/CubicSpline.cpp
298     src/math/LegendrePolynomial.cpp
299     src/math/RealSphericalHarmonic.cpp
300     src/math/RMSD.cpp
301     src/math/SeqRandNumGen.cpp
302     src/math/SphericalHarmonic.cpp
303     src/math/Wigner3jm.cpp
304     src/mdParser/FilenameObserver.cpp
305 gezelter 1743 src/optimization/OptimizationFactory.cpp
306     src/optimization/Armijo.cpp
307     src/optimization/BFGS.cpp
308     src/optimization/ConjugateGradient.cpp
309     src/optimization/Constraint.cpp
310     src/optimization/EndCriteria.cpp
311     src/optimization/LineSearch.cpp
312     src/optimization/LineSearchBasedMethod.cpp
313     src/optimization/SteepestDescent.cpp
314     src/optimization/PotentialEnergyObjectiveFunction.cpp
315 gezelter 1746 src/optimization/MinimizerParameters.cpp
316 gezelter 1639 src/nonbonded/EAM.cpp
317     src/nonbonded/GB.cpp
318     src/nonbonded/InteractionManager.cpp
319     src/nonbonded/LJ.cpp
320     src/nonbonded/MAW.cpp
321     src/nonbonded/Morse.cpp
322     src/nonbonded/RepulsivePower.cpp
323     src/nonbonded/SC.cpp
324     src/nonbonded/Sticky.cpp
325     src/nonbonded/SwitchingFunction.cpp
326     src/primitives/Atom.cpp
327     src/primitives/Bend.cpp
328     src/primitives/DirectionalAtom.cpp
329     src/primitives/GhostBend.cpp
330     src/primitives/GhostTorsion.cpp
331     src/primitives/Inversion.cpp
332     src/primitives/Molecule.cpp
333     src/primitives/RigidBody.cpp
334     src/primitives/StuntDouble.cpp
335 gezelter 1954 src/primitives/ShortRangeInteraction.cpp
336 gezelter 1639 src/primitives/Torsion.cpp
337     src/primitives/UreyBradleyBend.cpp
338 jmarr 1780 src/perturbations/ElectricField.cpp
339 gezelter 1639 src/restraints/MolecularRestraint.cpp
340     src/restraints/ObjectRestraint.cpp
341     src/selection/HullFinder.cpp
342     src/selection/IndexFinder.cpp
343     src/selection/NameFinder.cpp
344     src/selection/SelectionCompiler.cpp
345     src/selection/SelectionEvaluator.cpp
346     src/selection/SelectionManager.cpp
347     src/selection/SelectionToken.cpp
348     src/selection/TokenMap.cpp
349 gezelter 1954 src/selection/SelectionSet.cpp
350 gezelter 1639 src/types/AtomStamp.cpp
351     src/types/AtomType.cpp
352     src/types/BendStamp.cpp
353     src/types/BondStamp.cpp
354     src/types/CharmmTorsionType.cpp
355     src/types/Component.cpp
356     src/types/CutoffGroupStamp.cpp
357 gezelter 1710 src/types/DirectionalAdapter.cpp
358     src/types/EAMAdapter.cpp
359     src/types/FixedChargeAdapter.cpp
360     src/types/FluctuatingChargeAdapter.cpp
361 gezelter 1639 src/types/FragmentStamp.cpp
362 gezelter 1710 src/types/GayBerneAdapter.cpp
363 gezelter 1639 src/types/ImproperCosineInversionType.cpp
364     src/types/InversionStamp.cpp
365 gezelter 1710 src/types/LennardJonesAdapter.cpp
366 gezelter 1639 src/types/MoleculeStamp.cpp
367 gezelter 1710 src/types/MultipoleAdapter.cpp
368 gezelter 1639 src/types/NonBondedInteractionType.cpp
369 gezelter 1710 src/types/PolarizableAdapter.cpp
370 gezelter 1639 src/types/RestraintStamp.cpp
371     src/types/RigidBodyStamp.cpp
372     src/types/ShapeAtomType.cpp
373 gezelter 1710 src/types/StickyAdapter.cpp
374     src/types/SuttonChenAdapter.cpp
375 gezelter 1639 src/types/TorsionStamp.cpp
376     src/types/ZconsStamp.cpp
377     src/utils/ElementsTable.cpp
378     src/utils/MoLocator.cpp
379     src/utils/PropertyMap.cpp
380     src/utils/StringTokenizer.cpp
381     src/utils/StringUtils.cpp
382     src/utils/Trim.cpp
383     src/utils/Utility.cpp
384     src/utils/wildcards.cpp
385     src/visitors/AtomNameVisitor.cpp
386     src/visitors/AtomVisitor.cpp
387     src/visitors/CompositeVisitor.cpp
388     src/visitors/LipidTransVisitor.cpp
389     src/visitors/OtherVisitor.cpp
390     src/visitors/ReplacementVisitor.cpp
391     src/visitors/RigidBodyVisitor.cpp
392     src/visitors/ZconsVisitor.cpp
393 gezelter 1731 src/rnemd/RNEMDParameters.cpp
394 gezelter 1879 src/clusters/Icosahedron.cpp
395     src/clusters/Decahedron.cpp
396 gezelter 1639 )
397 chuckv 1466
398 gezelter 1639 set( PARALLEL_SOURCE
399 gezelter 1969 src/antlr/CharBuffer.cpp
400     src/antlr/CharScanner.cpp
401     src/antlr/InputBuffer.cpp
402     src/antlr/TokenBuffer.cpp
403     src/mdParser/MDLexer.cpp
404     src/mdParser/MDParser.cpp
405     src/mdParser/MDTreeParser.cpp
406 gezelter 1639 src/brains/ForceManager.cpp
407     src/brains/SimCreator.cpp
408     src/brains/SimInfo.cpp
409     src/brains/Thermo.cpp
410     src/constraints/ZconstraintForceManager.cpp
411 gezelter 1743 src/flucq/FluctuatingChargeConstraints.cpp
412     src/flucq/FluctuatingChargeObjectiveFunction.cpp
413 gezelter 1730 src/integrators/LangevinHullForceManager.cpp
414 gezelter 1731 src/rnemd/RNEMD.cpp
415 gezelter 1639 src/integrators/Velocitizer.cpp
416     src/io/DumpReader.cpp
417     src/io/DumpWriter.cpp
418     src/io/RestReader.cpp
419     src/io/RestWriter.cpp
420     src/io/StatWriter.cpp
421     src/io/ZConsWriter.cpp
422     src/io/ifstrstream.cpp
423     src/math/ParallelRandNumGen.cpp
424 gezelter 1926 src/nonbonded/Electrostatic.cpp
425 gezelter 1639 src/parallel/ForceDecomposition.cpp
426     src/parallel/ForceMatrixDecomposition.cpp
427     src/restraints/RestraintForceManager.cpp
428     src/restraints/ThermoIntegrationForceManager.cpp
429 gezelter 1802 src/selection/DistanceFinder.cpp
430 gezelter 1639 src/utils/ProgressBar.cpp
431 gezelter 1668 src/utils/simError.cpp
432 gezelter 1802 src/utils/OpenMDBitSet.cpp
433 gezelter 1743 src/optimization/Problem.cpp
434 gezelter 1639 )
435    
436 gezelter 1767 IF(ZLIB_FOUND)
437     set(ZLIB_SOURCE
438     src/io/gzstream.cpp
439     )
440     ENDIF(ZLIB_FOUND)
441    
442 gezelter 1639 IF(QHULL_FOUND)
443     set(QHULL_SOURCE
444     src/integrators/LangevinHullDynamics.cpp
445     src/math/Triangle.cpp
446     )
447     set(QHULL_PARALLEL_SOURCE
448     src/integrators/LangevinHullForceManager.cpp
449     src/math/ConvexHull.cpp
450     src/math/AlphaHull.cpp
451     )
452     ENDIF(QHULL_FOUND)
453    
454 gezelter 1767 IF(WIN32)
455     set(GETOPT_SOURCE
456 gezelter 1795 src/utils/wingetopt.cpp
457 gezelter 1767 )
458     ENDIF(WIN32)
459    
460     add_library(openmd_core STATIC ${SOURCE} ${QHULL_SOURCE} ${ZLIB_SOURCE} )
461 gezelter 1639 add_library(openmd_single STATIC ${PARALLEL_SOURCE} ${QHULL_PARALLEL_SOURCE} )
462    
463     IF(MPI_FOUND)
464     add_library(openmd_parallel STATIC ${PARALLEL_SOURCE} ${QHULL_PARALLEL_SOURCE} )
465     set_target_properties(openmd_parallel PROPERTIES
466     COMPILE_DEFINITIONS IS_MPI
467     )
468     ENDIF(MPI_FOUND)
469    
470     add_executable(openmd src/applications/openmd/openmd.cpp)
471     target_link_libraries(openmd openmd_single openmd_core openmd_single openmd_core)
472    
473     if (MPI_FOUND)
474     add_executable(openmd_MPI src/applications/openmd/openmd.cpp)
475     set_target_properties(openmd_MPI PROPERTIES
476     COMPILE_DEFINITIONS IS_MPI
477     )
478     target_link_libraries(openmd_MPI openmd_parallel openmd_core openmd_parallel openmd_core)
479 gezelter 1647 INSTALL(TARGETS
480     openmd_parallel openmd_MPI
481     RUNTIME DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
482     LIBRARY DESTINATION lib PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
483     ARCHIVE DESTINATION lib PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
484     )
485 gezelter 1639 ENDIF (MPI_FOUND)
486    
487     set (DUMP2XYZSOURCE
488     src/applications/dump2Xyz/Dump2XYZ.cpp
489 gezelter 1655 src/applications/dump2Xyz/Dump2XYZCmd.cpp
490 gezelter 1639 )
491    
492     set (DYNAMICPROPSSOURCE
493     src/applications/dynamicProps/ActionCorrFunc.cpp
494     src/applications/dynamicProps/CrossTimeCorrFunc.cpp
495     src/applications/dynamicProps/DipoleCorrFunc.cpp
496     src/applications/dynamicProps/DirectionalRCorrFunc.cpp
497     src/applications/dynamicProps/DynamicProps.cpp
498     src/applications/dynamicProps/EnergyCorrFunc.cpp
499     src/applications/dynamicProps/FrameTimeCorrFunc.cpp
500     src/applications/dynamicProps/LegendreCorrFunc.cpp
501 gezelter 1915 src/applications/dynamicProps/LegendreCorrFuncZ.cpp
502 gezelter 1934 src/applications/dynamicProps/cOHz.cpp
503 gezelter 1639 src/applications/dynamicProps/MomentumCorrFunc.cpp
504     src/applications/dynamicProps/ParticleTimeCorrFunc.cpp
505 gezelter 1954 src/applications/dynamicProps/InteractionTimeCorrFunc.cpp
506 gezelter 1639 src/applications/dynamicProps/RadialRCorrFunc.cpp
507     src/applications/dynamicProps/RCorrFunc.cpp
508 gezelter 1811 src/applications/dynamicProps/SelectionCorrFunc.cpp
509 gezelter 1639 src/applications/dynamicProps/StressCorrFunc.cpp
510     src/applications/dynamicProps/SystemDipoleCorrFunc.cpp
511     src/applications/dynamicProps/ThetaCorrFunc.cpp
512     src/applications/dynamicProps/TimeCorrFunc.cpp
513     src/applications/dynamicProps/VCorrFunc.cpp
514 gezelter 1954 src/applications/dynamicProps/BondCorrFunc.cpp
515 gezelter 1655 src/applications/dynamicProps/DynamicPropsCmd.cpp
516 gezelter 1639 )
517    
518     set (HYDROSOURCE
519     src/applications/hydrodynamics/AnalyticalModel.cpp
520     src/applications/hydrodynamics/ApproximationModel.cpp
521     src/applications/hydrodynamics/BeadModel.cpp
522     src/applications/hydrodynamics/CompositeShape.cpp
523     src/applications/hydrodynamics/Hydro.cpp
524     src/applications/hydrodynamics/HydrodynamicsModel.cpp
525     src/applications/hydrodynamics/HydrodynamicsModelFactory.cpp
526     src/applications/hydrodynamics/RoughShell.cpp
527     src/applications/hydrodynamics/ShapeBuilder.cpp
528 gezelter 1655 src/applications/hydrodynamics/HydroCmd.cpp
529 gezelter 1639 )
530    
531     set (STATICPROPSSOURCE
532     src/applications/staticProps/AngleR.cpp
533     src/applications/staticProps/BondAngleDistribution.cpp
534     src/applications/staticProps/BondOrderParameter.cpp
535     src/applications/staticProps/BOPofR.cpp
536     src/applications/staticProps/DensityPlot.cpp
537     src/applications/staticProps/GofAngle2.cpp
538     src/applications/staticProps/GofR.cpp
539     src/applications/staticProps/GofRAngle.cpp
540     src/applications/staticProps/GofRZ.cpp
541     src/applications/staticProps/GofXyz.cpp
542     src/applications/staticProps/GofZ.cpp
543     src/applications/staticProps/Hxy.cpp
544     src/applications/staticProps/NanoLength.cpp
545     src/applications/staticProps/NanoVolume.cpp
546     src/applications/staticProps/ObjectCount.cpp
547     src/applications/staticProps/P2OrderParameter.cpp
548     src/applications/staticProps/pAngle.cpp
549     src/applications/staticProps/RadialDistrFunc.cpp
550     src/applications/staticProps/RhoR.cpp
551     src/applications/staticProps/RhoZ.cpp
552     src/applications/staticProps/RippleOP.cpp
553 gezelter 1879 src/applications/staticProps/RNEMDStats.cpp
554 gezelter 1639 src/applications/staticProps/SCDOrderParameter.cpp
555 gezelter 1879 src/applications/staticProps/SpatialStatistics.cpp
556 gezelter 1639 src/applications/staticProps/StaticProps.cpp
557     src/applications/staticProps/TetrahedralityParam.cpp
558 gezelter 1763 src/applications/staticProps/TetrahedralityParamZ.cpp
559 gezelter 1639 src/applications/staticProps/TwoDGofR.cpp
560 gezelter 1655 src/applications/staticProps/StaticPropsCmd.cpp
561 gezelter 1639 )
562    
563     set (NANOPARTICLEBUILDERSOURCE
564     src/applications/nanoparticleBuilder/nanoparticleBuilder.cpp
565     src/applications/nanoparticleBuilder/shapedLatticeSpherical.cpp
566 gezelter 1655 src/applications/nanoparticleBuilder/nanoparticleBuilderCmd.cpp
567 gezelter 1639 )
568    
569 kstocke1 1701 set (NANORODBUILDERSOURCE
570     src/applications/nanoparticleBuilder/nanorodBuilder.cpp
571     src/applications/nanoparticleBuilder/shapedLatticeRod.cpp
572 gezelter 1879 src/applications/nanoparticleBuilder/shapedLatticeEllipsoid.cpp
573 kstocke1 1701 src/applications/nanoparticleBuilder/nanorodBuilderCmd.cpp
574     )
575    
576     set (NANOROD_PENTBUILDERSOURCE
577     src/applications/nanoparticleBuilder/nanorod_pentBuilder.cpp
578     src/applications/nanoparticleBuilder/nanorod_pentBuilderCmd.cpp
579     src/applications/nanoparticleBuilder/shapedLatticePentRod.cpp
580     )
581    
582 gezelter 1879 set (ICOSAHEDRALBUILDERSOURCE
583     src/applications/nanoparticleBuilder/icosahedralBuilder.cpp
584     src/applications/nanoparticleBuilder/icosahedralBuilderCmd.cpp
585     )
586    
587 gezelter 1639 set (RANDOMBUILDERSOURCE
588     src/applications/randomBuilder/randomBuilder.cpp
589 gezelter 1655 src/applications/randomBuilder/randomBuilderCmd.cpp
590 gezelter 1639 )
591    
592     set(SIMPLEBUILDERSOURCE
593     src/applications/simpleBuilder/simpleBuilder.cpp
594 gezelter 1655 src/applications/simpleBuilder/simpleBuilderCmd.cpp
595 gezelter 1639 )
596    
597     set(THERMALIZERSOURCE
598     src/applications/thermalizer/thermalizer.cpp
599 gezelter 1655 src/applications/thermalizer/thermalizerCmd.cpp
600 gezelter 1639 )
601    
602 gezelter 1879 set(RECENTERSOURCE
603     src/applications/recenter/recenter.cpp
604     src/applications/recenter/recenterCmd.cpp
605     )
606    
607 gezelter 1767 add_executable(Dump2XYZ ${DUMP2XYZSOURCE} ${GETOPT_SOURCE})
608 gezelter 1639 target_link_libraries(Dump2XYZ openmd_single openmd_core openmd_single openmd_core)
609 gezelter 1767 add_executable(DynamicProps ${DYNAMICPROPSSOURCE} ${GETOPT_SOURCE})
610 gezelter 1639 target_link_libraries(DynamicProps openmd_single openmd_core openmd_single openmd_core)
611 gezelter 1767 add_executable(Hydro ${HYDROSOURCE} ${GETOPT_SOURCE})
612 gezelter 1639 target_link_libraries(Hydro openmd_single openmd_core openmd_single openmd_core)
613 gezelter 1767 add_executable(StaticProps ${STATICPROPSSOURCE} ${GETOPT_SOURCE})
614 gezelter 1639 target_link_libraries(StaticProps openmd_single openmd_core openmd_single openmd_core)
615 gezelter 1767 add_executable(nanoparticleBuilder ${NANOPARTICLEBUILDERSOURCE} ${GETOPT_SOURCE})
616 gezelter 1807 target_link_libraries(nanoparticleBuilder openmd_single openmd_core openmd_single openmd_core openmd_single)
617 gezelter 1767 add_executable(nanorodBuilder ${NANORODBUILDERSOURCE} ${GETOPT_SOURCE})
618 gezelter 1807 target_link_libraries(nanorodBuilder openmd_single openmd_core openmd_single openmd_core openmd_single)
619 gezelter 1767 add_executable(nanorod_pentBuilder ${NANOROD_PENTBUILDERSOURCE} ${GETOPT_SOURCE})
620 gezelter 1807 target_link_libraries(nanorod_pentBuilder openmd_single openmd_core openmd_single openmd_core openmd_single)
621 gezelter 1879 add_executable(icosahedralBuilder ${ICOSAHEDRALBUILDERSOURCE} ${GETOPT_SOURCE})
622     target_link_libraries(icosahedralBuilder openmd_single openmd_core openmd_single openmd_core openmd_single)
623 gezelter 1767 add_executable(randomBuilder ${RANDOMBUILDERSOURCE} ${GETOPT_SOURCE})
624 gezelter 1807 target_link_libraries(randomBuilder openmd_single openmd_core openmd_single openmd_core openmd_single)
625 gezelter 1767 add_executable(simpleBuilder ${SIMPLEBUILDERSOURCE} ${GETOPT_SOURCE})
626 gezelter 1807 target_link_libraries(simpleBuilder openmd_single openmd_core openmd_single openmd_core openmd_single)
627 gezelter 1767 add_executable(thermalizer ${THERMALIZERSOURCE} ${GETOPT_SOURCE})
628 gezelter 1807 target_link_libraries(thermalizer openmd_single openmd_core openmd_single openmd_core openmd_single)
629 gezelter 1879 add_executable(recenter ${RECENTERSOURCE} ${GETOPT_SOURCE})
630     target_link_libraries(recenter openmd_single openmd_core openmd_single openmd_core openmd_single)
631 gezelter 1639
632     if (OPENBABEL2_FOUND)
633     set (ATOM2MDSOURCE
634     src/applications/atom2md/atom2md.cpp
635     src/applications/atom2md/openmdformat.cpp
636     )
637 gezelter 1767 add_executable(atom2md ${ATOM2MDSOURCE} ${GETOPT_SOURCE})
638 gezelter 1699 target_link_libraries(atom2md openmd_single openmd_core openmd_single openmd_core ${OPENBABEL2_LIBRARIES})
639 gezelter 1647 INSTALL(TARGETS atom2md RUNTIME DESTINATION bin
640     PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
641 gezelter 1639 ENDIF (OPENBABEL2_FOUND)
642    
643    
644     set(PY_FILES
645     src/applications/hydrodynamics/diffExplainer
646     src/applications/utilities/affineScale
647     src/applications/utilities/dumpConverter
648     src/applications/utilities/md-solvator
649     src/applications/utilities/md2md
650     src/applications/utilities/mdSplit
651     src/applications/utilities/principalAxisCalculator
652 gezelter 1795 src/applications/utilities/stat2thcond
653 gezelter 1639 src/applications/utilities/stat2visco
654     src/applications/utilities/waterRotator
655 gezelter 1668 src/applications/utilities/waterReplacer
656 gezelter 1639 )
657    
658     IF(PYTHON_EXECUTABLE)
659 gezelter 1795 IF(WIN32)
660     SET(PYEXT ".py")
661     ELSE(WIN32)
662     SET(PYEXT "")
663     ENDIF(WIN32)
664    
665     foreach(PY_FILE ${PY_FILES})
666     GET_FILENAME_COMPONENT(filename "${PY_FILE}" NAME)
667     CONFIGURE_FILE(${PY_FILE}
668     "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${filename}${PYEXT}" @ONLY)
669     INSTALL(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${filename}${PYEXT}"
670     DESTINATION bin
671     PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
672     endforeach(PY_FILE)
673 gezelter 1639 ENDIF(PYTHON_EXECUTABLE)
674    
675     set(PERL_FILES
676     src/applications/utilities/solvator
677     src/applications/utilities/waterBoxer
678     )
679    
680     IF(PERL_FOUND)
681 gezelter 1795 IF(WIN32)
682     SET(PLEXT ".PL")
683     ELSE(WIN32)
684     SET(PLEXT "")
685     ENDIF(WIN32)
686 gezelter 1647
687 gezelter 1795 foreach(PERL_FILE ${PERL_FILES})
688     GET_FILENAME_COMPONENT(filename "${PERL_FILE}" NAME)
689     configure_file(${PERL_FILE} "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${filename}${PLEXT}" @ONLY)
690     INSTALL(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${filename}${PLEXT}"
691     DESTINATION bin
692     PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
693    
694     endforeach(PERL_FILE)
695 gezelter 1639 ENDIF(PERL_FOUND)
696 gezelter 1647
697 gezelter 1806
698 gezelter 1652 INSTALL(FILES AUTHORS LICENSE README INSTALL DESTINATION .
699 gezelter 1647 PERMISSIONS OWNER_READ GROUP_READ WORLD_READ)
700     INSTALL(TARGETS
701     openmd_core
702     openmd_single
703     openmd
704     Dump2XYZ
705     simpleBuilder
706     StaticProps
707     DynamicProps
708     randomBuilder
709     nanoparticleBuilder
710 gezelter 1806 nanorodBuilder
711     nanorod_pentBuilder
712 gezelter 1950 icosahedralBuilder
713 gezelter 1647 thermalizer
714 gezelter 1879 recenter
715 gezelter 1647 Hydro
716     RUNTIME DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
717     LIBRARY DESTINATION lib PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
718     ARCHIVE DESTINATION lib PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
719     )
720    
721     install(DIRECTORY forceFields/
722     DESTINATION forceFields
723 gezelter 1650 DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
724     PATTERN ".svn" EXCLUDE
725 gezelter 1647 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
726     install(DIRECTORY samples/
727     DESTINATION samples
728 gezelter 1650 DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
729     PATTERN ".svn" EXCLUDE
730 gezelter 1651 PATTERN "*.dump" EXCLUDE
731     PATTERN "*.stat" EXCLUDE
732 gezelter 1795 PATTERN "*.eor" EXCLUDE
733     PATTERN "*.rnemd" EXCLUDE
734 gezelter 1806 PATTERN "*.fz" EXCLUDE
735 gezelter 1647 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
736 gezelter 1806
737     configure_file( samples/builders/runMe.in
738     "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/runMe" @ONLY)
739     INSTALL(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/runMe"
740     DESTINATION samples/builders
741     PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
742    
743    
744 gezelter 1651 INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/doc/OpenMDmanual.pdf"
745     DESTINATION doc
746     PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
747 gezelter 1694
748     message( STATUS)
749     message( STATUS "========== OpenMD Build Information ==========")
750     message( STATUS "Current revision ........... = ${SVN_REV}")
751     message( STATUS "CMAKE_SYSTEM ............... = ${CMAKE_SYSTEM}")
752     message( STATUS "==============================================")
753     message( STATUS "CMAKE_BUILD_TYPE ........... = ${CMAKE_BUILD_TYPE}")
754     message( STATUS "CMAKE_INSTALL_PREFIX ....... = ${CMAKE_INSTALL_PREFIX}")
755 gezelter 1695 message( STATUS "Build as SINGLE_PRECISION .. = ${SINGLE_PRECISION}")
756 gezelter 1694 message( STATUS "CMAKE_CXX_COMPILER ......... = ${CMAKE_CXX_COMPILER}")
757     message( STATUS "MPI_CXX_COMPILER ........... = ${MPI_CXX_COMPILER}")
758     message( STATUS "MPI_CXX_INCLUDE_PATH ....... = ${MPI_CXX_INCLUDE_PATH}")
759     message( STATUS "MPI_CXX_LIBRARIES .......... = ${MPI_CXX_LIBRARIES}")
760 gezelter 1699 message( STATUS "OPENBABEL2_ROOT ............ = ${OPENBABEL2_ROOT}")
761 gezelter 1694 message( STATUS "OPENBABEL2_INCLUDE_DIR ..... = ${OPENBABEL2_INCLUDE_DIR}")
762     message( STATUS "OPENBABEL2_LIBRARIES ....... = ${OPENBABEL2_LIBRARIES}")
763 gezelter 1695 message( STATUS "QHULL_ROOT ................. = ${QHULL_ROOT}")
764 gezelter 1694 message( STATUS "QHULL_INCLUDE_DIR .......... = ${QHULL_INCLUDE_DIR}")
765     message( STATUS "QHULL_LIBRARIES ............ = ${QHULL_LIBRARIES}")
766 gezelter 1695 message( STATUS "ZLIB_ROOT .................. = ${ZLIB_ROOT}")
767 gezelter 1694 message( STATUS "ZLIB_INCLUDE_DIR ........... = ${ZLIB_INCLUDE_DIR}")
768     message( STATUS "ZLIB_LIBRARIES ............. = ${ZLIB_LIBRARIES}")
769 gezelter 1699 message( STATUS "FFTW3_ROOT ................. = ${FFTW3_ROOT}")
770 gezelter 1694 message( STATUS "FFTW3_INCLUDE_DIR .......... = ${FFTW3_INCLUDE_DIR}")
771     message( STATUS "FFTW3_LIBRARIES ............ = ${FFTW3_LIBRARIES}")
772 gezelter 1695 message( STATUS "PERL_EXECUTABLE ............ = ${PERL_EXECUTABLE}")
773     message( STATUS "PYTHON_EXECUTABLE .......... = ${PYTHON_EXECUTABLE}")
774 gezelter 1694 message( STATUS "DOXYGEN_EXECUTABLE ......... = ${DOXYGEN_EXECUTABLE}")
775 gezelter 1695 message( STATUS )
776 gezelter 1696 message( STATUS "To override these options, add -D{OPTION_NAME}=... to the cmake command" )
777     message( STATUS "Particularly useful defines are for:")
778     message( STATUS )
779 gezelter 1699 message( STATUS " -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} (where OpenMD will be installed)")
780     message( STATUS " -DOPENBABEL2_ROOT=/path/to/openbabel")
781     message( STATUS " -DQHULL_ROOT=/path/to/qhull")
782     message( STATUS " -DFFTW3_ROOT=/path/to/fftw3")
783 gezelter 1696 message( STATUS )
784 gezelter 1790 IF(WIN32)
785     message( STATUS "To build and install OpenMD, enter: ")
786     message( STATUS " msbuild /m ALL_BUILD.vcxproj /p:Configuration=${CMAKE_BUILD_TYPE}")
787     message( STATUS "followed by:")
788     message( STATUS " msbuild /m INSTALL.vcxproj /p:Configuration=${CMAKE_BUILD_TYPE}")
789     ELSE(WIN32)
790     message( STATUS "To build and install OpenMD, enter \"make\" and \"make install\"")
791     ENDIF(WIN32)
792 gezelter 1696 message( STATUS )
793 gezelter 1795
794     # build a CPack driven installer package
795     IF(NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
796     SET(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
797     ENDIF()
798     include (InstallRequiredSystemLibraries)
799     set (CPACK_RESOURCE_FILE_LICENSE
800     "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
801     set (CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
802     set (CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
803     include (CPack)