ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/CMakeLists.txt
(Generate patch)

Comparing branches/development/CMakeLists.txt (file contents):
Revision 1639 by gezelter, Sat Sep 24 20:18:07 2011 UTC vs.
Revision 1668 by gezelter, Fri Jan 6 19:03:05 2012 UTC

# Line 1 | Line 1
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" )
# Line 33 | Line 63 | IF ( Subversion_FOUND AND EXISTS ${PROJECT_SOURCE_DIR}
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)
# Line 53 | Line 97 | ENDIF(QHULL_FOUND)
97    LINK_LIBRARIES(${QHULL_LIBRARIES})
98   ENDIF(QHULL_FOUND)
99  
56
100   # zlib stuff
101   find_package(ZLIB)
102   if(ZLIB_FOUND)
# Line 64 | Line 107 | endif(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)
# Line 122 | Line 142 | SET(PERL_INSTALLDIRS "site" CACHE STRING "Perl install
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
# Line 356 | Line 371 | src/utils/ProgressBar.cpp
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)
# Line 390 | Line 405 | target_link_libraries(openmd_MPI openmd_parallel openm
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
# Line 415 | Line 436 | src/applications/dynamicProps/VCorrFunc.cpp
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
# Line 428 | Line 449 | src/applications/hydrodynamics/ShapeBuilder.cpp
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
# Line 457 | Line 478 | src/applications/staticProps/TwoDGofR.cpp
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})
# Line 505 | Line 526 | src/applications/atom2md/openmdformat.cpp
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  
# Line 518 | Line 541 | src/applications/utilities/waterRotator
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
# Line 534 | Line 562 | IF(PERL_FOUND)
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)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines