Merge branch 'rotation-4-5' into rotation
[alexxy/gromacs.git] / src / kernel / CMakeLists.txt
1
2 set(GMXPREPROCESS_SOURCES 
3     add_par.c       
4     compute_io.c    
5     convparm.c      
6     gen_ad.c        
7     gen_vsite.c     
8     genhydro.c   
9     gpp_atomtype.c  
10     gpp_bond_atomtype.c     
11     h_db.c          
12     hackblock.c             
13     hizzie.c        
14     nm2type.c
15     pdb2top.c       
16     pgutil.c        
17     readir.c        
18     readpull.c      
19     readrot.c
20     resall.c        
21     sorting.c       
22     specbond.c      
23     ter_db.c        
24     tomorse.c       
25     topdirs.c       
26     topexcl.c       
27     topio.c         
28     toppush.c       
29     topshake.c      
30     toputil.c       
31     tpbcmp.c        
32     vsite_parm.c    
33     fflibutil.c
34     xlate.c)
35
36 set(MDRUN_SOURCES 
37     gctio.c    ionize.c runner.c
38     do_gct.c     repl_ex.c  xutils.c
39     md.c         mdrun.c    genalg.c membed.c
40     md_openmm.c)
41
42 add_library(gmxpreprocess ${GMXPREPROCESS_SOURCES})
43 target_link_libraries(gmxpreprocess md)
44 set_target_properties(gmxpreprocess PROPERTIES OUTPUT_NAME "gmxpreprocess${GMX_LIBS_SUFFIX}" SOVERSION ${SOVERSION} INSTALL_NAME_DIR "${LIB_INSTALL_DIR}")
45
46
47 if(GMX_OPENMM) 
48     add_subdirectory(gmx_gpu_utils)
49     include_directories(./gmx_gpu_utils ${OpenMM_INCLUDE_DIR})
50     link_directories(${OpenMM_LIBRARY_DIR}) 
51     # with this define no evn.var. is needed with OPENMM_PLUGIN_DIR
52     # if the same OpenMM installation is used for running and building 
53     add_definitions( -DOPENMM_PLUGIN_DIR="${OpenMM_PLUGIN_DIR}" ) 
54     file(TO_CMAKE_PATH ${OpenMM_PLUGIN_DIR} _path)
55     add_library(openmm_api_wrapper STATIC openmm_wrapper.cpp)
56     target_link_libraries(openmm_api_wrapper gmx_gpu_utils ${OpenMM_LIBRARIES})
57     set(GMX_OPENMM_LIBRARIES openmm_api_wrapper gmx_gpu_utils ${OpenMM_LIBRARIES})   
58 endif(GMX_OPENMM)
59
60 if(GMX_FAHCORE)
61   add_library(fahcore ${MDRUN_SOURCES})
62 else(GMX_FAHCORE)
63
64 list(APPEND GMX_EXTRA_LIBRARIES gmxpreprocess md)
65
66 add_executable(grompp grompp.c)
67 target_link_libraries(grompp ${GMX_EXTRA_LIBRARIES})
68 set_target_properties(grompp PROPERTIES OUTPUT_NAME "grompp${GMX_BINARY_SUFFIX}")
69
70 add_executable(tpbconv tpbconv.c)
71 target_link_libraries(tpbconv ${GMX_EXTRA_LIBRARIES})
72 set_target_properties(tpbconv PROPERTIES OUTPUT_NAME "tpbconv${GMX_BINARY_SUFFIX}")
73
74 add_executable(pdb2gmx pdb2gmx.c)
75 target_link_libraries(pdb2gmx ${GMX_EXTRA_LIBRARIES})
76 set_target_properties(pdb2gmx PROPERTIES OUTPUT_NAME "pdb2gmx${GMX_BINARY_SUFFIX}")
77
78 add_executable(g_protonate g_protonate.c)
79 target_link_libraries(g_protonate ${GMX_EXTRA_LIBRARIES})
80 set_target_properties(g_protonate PROPERTIES OUTPUT_NAME "g_protonate${GMX_BINARY_SUFFIX}")
81
82 add_executable(g_luck g_luck.c)
83 target_link_libraries(g_luck ${GMX_EXTRA_LIBRARIES})
84 set_target_properties(g_luck PROPERTIES OUTPUT_NAME "g_luck${GMX_BINARY_SUFFIX}")
85
86 add_executable(gmxdump gmxdump.c)
87 target_link_libraries(gmxdump ${GMX_EXTRA_LIBRARIES})
88 set_target_properties(gmxdump PROPERTIES OUTPUT_NAME "gmxdump${GMX_BINARY_SUFFIX}")
89
90 add_executable(g_x2top g_x2top.c)
91 target_link_libraries(g_x2top ${GMX_EXTRA_LIBRARIES})
92 set_target_properties(g_x2top PROPERTIES OUTPUT_NAME "g_x2top${GMX_BINARY_SUFFIX}")
93
94 add_executable(gmxcheck gmxcheck.c)
95 target_link_libraries(gmxcheck ${GMX_EXTRA_LIBRARIES})
96 set_target_properties(gmxcheck PROPERTIES OUTPUT_NAME "gmxcheck${GMX_BINARY_SUFFIX}")
97
98 add_executable(mdrun ${MDRUN_SOURCES})
99 target_link_libraries(mdrun ${GMX_EXTRA_LIBRARIES} ${GMX_OPENMM_LIBRARIES})
100 set_target_properties(mdrun PROPERTIES OUTPUT_NAME "mdrun${GMX_BINARY_SUFFIX}")
101
102 # this is to circumvent the following MSVC error: 
103 # warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs
104 # fatal error LNK1169: one or more multiply defined symbols found
105 if(GMX_OPENMM AND MSVC)
106     set_target_properties(mdrun PROPERTIES LINK_FLAGS "/NODEFAULTLIB:LIBCMT")
107 endif()
108
109
110 install(TARGETS gmxpreprocess DESTINATION ${LIB_INSTALL_DIR} COMPONENT libraries)
111 install(TARGETS mdrun DESTINATION ${BIN_INSTALL_DIR} COMPONENT mdrun)
112 install(TARGETS 
113         grompp
114         tpbconv
115         pdb2gmx
116         g_protonate
117         g_luck
118         gmxdump
119         g_x2top
120         gmxcheck
121         COMPONENT runtime
122         RUNTIME DESTINATION ${BIN_INSTALL_DIR})
123
124 # Create the custom install-mdrun target
125 if (BUILD_SHARED_LIBS)
126     # If shared libraries are used, we need to install the libraries in
127     # addition to the mdrun binary.
128     add_custom_target(install-mdrun
129         COMMAND ${CMAKE_COMMAND} -DCOMPONENT=libraries
130                 -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
131         COMMAND ${CMAKE_COMMAND} -DCOMPONENT=mdrun
132                 -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
133         COMMENT "Installing mdrun")
134 else (BUILD_SHARED_LIBS)
135     add_custom_target(install-mdrun
136         COMMAND ${CMAKE_COMMAND} -DCOMPONENT=mdrun
137                 -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
138         COMMENT "Installing mdrun")
139 endif (BUILD_SHARED_LIBS)
140 add_dependencies(install-mdrun mdrun)
141
142 endif(GMX_FAHCORE)
143
144 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libgmxpreprocess.pc.cmakein ${CMAKE_CURRENT_BINARY_DIR}/libgmxpreprocess.pc @ONLY)
145 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libgmxpreprocess.pc
146         DESTINATION ${LIB_INSTALL_DIR}/pkgconfig
147         RENAME "libgmxpreprocess${GMX_LIBS_SUFFIX}.pc"
148         COMPONENT development)