2 set(GMXPREPROCESS_SOURCES
39 gctio.c ionize.c runner.c
40 do_gct.c repl_ex.c xutils.c pme_loadbal.c
41 md.c mdrun.c genalg.c membed.c
44 add_library(gmxpreprocess ${GMXPREPROCESS_SOURCES})
45 target_link_libraries(gmxpreprocess md)
46 set_target_properties(gmxpreprocess PROPERTIES OUTPUT_NAME "gmxpreprocess${GMX_LIBS_SUFFIX}" SOVERSION ${SOVERSION} INSTALL_NAME_DIR "${LIB_INSTALL_DIR}"
47 COMPILE_FLAGS "${OpenMP_C_FLAGS}")
50 if(GMX_GPU OR GMX_OPENMM)
51 include_directories(${CMAKE_SOURCE_DIR}/src/gmxlib/gpu_utils)
55 include_directories(${OpenMM_INCLUDE_DIR})
56 link_directories(${OpenMM_LIBRARY_DIR})
57 # with this define no evn.var. is needed with OPENMM_PLUGIN_DIR
58 # if the same OpenMM installation is used for running and building
59 add_definitions( -DOPENMM_PLUGIN_DIR="${OpenMM_PLUGIN_DIR}" )
60 file(TO_CMAKE_PATH ${OpenMM_PLUGIN_DIR} _path)
61 add_library(openmm_api_wrapper STATIC openmm_wrapper.cpp)
62 target_link_libraries(openmm_api_wrapper ${OpenMM_LIBRARIES})
63 set(GMX_OPENMM_LIBRARIES openmm_api_wrapper ${OpenMM_LIBRARIES})
66 if(GMX_GPU OR GMX_OPENMM OR GMX_FORCE_CXX)
67 set_source_files_properties(main.c PROPERTIES LANGUAGE CXX)
68 if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
69 set_source_files_properties(main.c PROPERTIES COMPILE_FLAGS "-x c++")
74 add_library(fahcore ${MDRUN_SOURCES})
77 list(APPEND GMX_EXTRA_LIBRARIES gmxpreprocess md ${OpenMP_LINKER_FLAGS})
79 set(GMX_KERNEL_PROGRAMS
80 grompp tpbconv pdb2gmx g_protonate g_luck gmxdump g_x2top gmxcheck)
82 foreach(PROGRAM ${GMX_KERNEL_PROGRAMS})
83 add_executable(${PROGRAM} ${PROGRAM}.c main.c)
84 if (NOT ${PROGRAM} STREQUAL "g_luck")
85 gmx_add_man_page(${PROGRAM})
87 target_link_libraries(${PROGRAM} ${GMX_EXTRA_LIBRARIES})
88 set_target_properties(${PROGRAM} PROPERTIES OUTPUT_NAME "${PROGRAM}${GMX_BINARY_SUFFIX}")
91 add_executable(mdrun ${MDRUN_SOURCES} main.c)
92 gmx_add_man_page(mdrun)
93 target_link_libraries(mdrun ${GMX_EXTRA_LIBRARIES} ${GMX_OPENMM_LIBRARIES})
94 set_target_properties(mdrun PROPERTIES OUTPUT_NAME "mdrun${GMX_BINARY_SUFFIX}" COMPILE_FLAGS "${OpenMP_C_FLAGS}")
96 # this is to circumvent the following MSVC error:
97 # warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs
98 # fatal error LNK1169: one or more multiply defined symbols found
99 if(GMX_OPENMM AND MSVC)
100 set_target_properties(mdrun PROPERTIES LINK_FLAGS "/NODEFAULTLIB:LIBCMT")
103 # Construct component groups for installation; note that a component may
104 # belong to only one group
105 foreach(PROGRAM ${GMX_KERNEL_PROGRAMS})
106 set(CPACK_COMPONENT_${PROGRAM}_GROUP tools)
108 set(CPACK_COMPONENT_MDRUN_GROUP mdrun)
110 foreach(PROGRAM ${GMX_KERNEL_PROGRAMS} mdrun)
111 # Manage CPack component dependencies
112 set(CPACK_COMPONENT_${PROGRAM}_DEPENDS libraries libraries-gmxpreprocess)
114 # Create custom install-xxxx target
115 if (BUILD_SHARED_LIBS)
116 # If shared libraries are used, we need to install the libraries in
117 # addition to the mdrun binary.
118 add_custom_target(install-${PROGRAM}
119 COMMAND ${CMAKE_COMMAND} -DCOMPONENT=libraries
120 -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
121 COMMAND ${CMAKE_COMMAND} -DCOMPONENT=libraries-gmxpreprocess
122 -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
123 COMMAND ${CMAKE_COMMAND} -DCOMPONENT=${PROGRAM}
124 -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
125 COMMENT "Installing ${PROGRAM}")
127 add_custom_target(install-${PROGRAM}
128 COMMAND ${CMAKE_COMMAND} -DCOMPONENT=${PROGRAM}
129 -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
130 COMMENT "Installing ${PROGRAM}")
132 add_dependencies(install-${PROGRAM} ${PROGRAM})
134 # Finally, trigger installation
138 DESTINATION ${BIN_INSTALL_DIR}
142 install(TARGETS gmxpreprocess DESTINATION ${LIB_INSTALL_DIR} COMPONENT libraries-gmxpreprocess)
144 if (INSTALL_CUDART_LIB) #can be set manual by user
145 if (GMX_OPENMM OR GMX_GPU)
146 foreach(CUDA_LIB ${CUDA_LIBRARIES})
147 string(REGEX MATCH "cudart" IS_CUDART ${CUDA_LIB})
148 if(IS_CUDART) #libcuda should not be installed
149 #install also name-links (linker uses those)
150 file(GLOB CUDA_LIBS ${CUDA_LIB}*)
151 install(FILES ${CUDA_LIBS} DESTINATION
152 ${LIB_INSTALL_DIR} COMPONENT libraries)
156 message(WARNING "INSTALL_CUDART_LIB only makes sense with GMX_OPENMM or GMX_GPU")
161 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libgmxpreprocess.pc.cmakein ${CMAKE_CURRENT_BINARY_DIR}/libgmxpreprocess.pc @ONLY)
162 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libgmxpreprocess.pc
163 DESTINATION ${LIB_INSTALL_DIR}/pkgconfig
164 RENAME "libgmxpreprocess${GMX_LIBS_SUFFIX}.pc"
165 COMPONENT development)