0ab4aec8168f866025d454c3e9220b67e3f64454
[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     resall.c        
20     sorting.c       
21     specbond.c      
22     ter_db.c        
23     tomorse.c       
24     topdirs.c       
25     topexcl.c       
26     topio.c         
27     toppush.c       
28     topshake.c      
29     toputil.c       
30     tpbcmp.c        
31     vsite_parm.c    
32     fflibutil.c
33     xlate.c)
34
35 set(MDRUN_SOURCES 
36     gctio.c    ionize.c runner.c
37     do_gct.c     repl_ex.c  xutils.c
38     md.c         mdrun.c    genalg.c md_openmm.c)
39
40 add_library(gmxpreprocess ${GMXPREPROCESS_SOURCES})
41 target_link_libraries(gmxpreprocess md)
42 set_target_properties(gmxpreprocess PROPERTIES OUTPUT_NAME "gmxpreprocess${GMX_BINARY_SUFFIX}")
43
44 if(GMX_OPENMM) 
45     add_subdirectory(gmx_gpu_utils)
46     include_directories(./gmx_gpu_utils ${OpenMM_INCLUDE_DIR})
47     link_directories(${OpenMM_LIBRARY_DIR}) 
48     # only define if this is a local build not a release 
49     # we assume that the auto-generated version is not used && 
50     # version string does not contain "-dev" => it's a release build
51     if(NOT USE_VERSION_H AND NOT PROJECT_VERSION MATCHES ".*-dev.*")  
52         add_definitions( -DOPENMM_PLUGIN_DIR="${OpenMM_PLUGIN_DIR}" ) 
53     else()
54         add_definitions( -DOPENMM_PLUGIN_DIR="" )
55     endif()
56     add_library(openmm_api_wrapper openmm_wrapper.cpp)
57 #    remove_definitions( -DOPENMM_PLUGIN_DIR="${OpenMM_PLUGIN_DIR}" )  # TODO where should this go?!
58     set(GMX_OPENMM_LIBRARIES openmm_api_wrapper gmx_gpu_utils OpenMM)   
59 endif(GMX_OPENMM)
60
61 if(GMX_FAHCORE)
62   add_library(fahcore ${MDRUN_SOURCES})
63 else(GMX_FAHCORE)
64
65 list(APPEND GMX_EXTRA_LIBRARIES gmxpreprocess md)
66
67 add_executable(grompp grompp.c)
68 target_link_libraries(grompp ${GMX_EXTRA_LIBRARIES})
69 set_target_properties(grompp PROPERTIES OUTPUT_NAME "grompp${GMX_BINARY_SUFFIX}")
70
71 add_executable(tpbconv tpbconv.c)
72 target_link_libraries(tpbconv ${GMX_EXTRA_LIBRARIES})
73 set_target_properties(tpbconv PROPERTIES OUTPUT_NAME "tpbconv${GMX_BINARY_SUFFIX}")
74
75 add_executable(pdb2gmx pdb2gmx.c)
76 target_link_libraries(pdb2gmx ${GMX_EXTRA_LIBRARIES})
77 set_target_properties(pdb2gmx PROPERTIES OUTPUT_NAME "pdb2gmx${GMX_BINARY_SUFFIX}")
78
79 add_executable(g_protonate g_protonate.c)
80 target_link_libraries(g_protonate ${GMX_EXTRA_LIBRARIES})
81 set_target_properties(g_protonate PROPERTIES OUTPUT_NAME "g_protonate${GMX_BINARY_SUFFIX}")
82
83 add_executable(g_luck g_luck.c)
84 target_link_libraries(g_luck ${GMX_EXTRA_LIBRARIES})
85 set_target_properties(g_luck PROPERTIES OUTPUT_NAME "g_luck${GMX_BINARY_SUFFIX}")
86
87 add_executable(gmxdump gmxdump.c)
88 target_link_libraries(gmxdump ${GMX_EXTRA_LIBRARIES})
89 set_target_properties(gmxdump PROPERTIES OUTPUT_NAME "gmxdump${GMX_BINARY_SUFFIX}")
90
91 add_executable(g_x2top g_x2top.c)
92 target_link_libraries(g_x2top ${GMX_EXTRA_LIBRARIES})
93 set_target_properties(g_x2top PROPERTIES OUTPUT_NAME "g_x2top${GMX_BINARY_SUFFIX}")
94
95 add_executable(gmxcheck gmxcheck.c)
96 target_link_libraries(gmxcheck ${GMX_EXTRA_LIBRARIES})
97 set_target_properties(gmxcheck PROPERTIES OUTPUT_NAME "gmxcheck${GMX_BINARY_SUFFIX}")
98
99 add_executable(mdrun ${MDRUN_SOURCES})
100 target_link_libraries(mdrun ${GMX_EXTRA_LIBRARIES} ${GMX_OPENMM_LIBRARIES})
101 # set binary name to mdrun-gpu
102 if(GMX_OPENMM)
103     set(_mdrun_exec_name "mdrun-gpu")    
104 else()
105     set(_mdrun_exec_name "mdrun${GMX_BINARY_SUFFIX}")
106 endif()
107 set_target_properties(mdrun PROPERTIES OUTPUT_NAME "${_mdrun_exec_name}")
108
109 # this is to circumvent the following MSVC error: 
110 # warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs
111 # fatal error LNK1169: one or more multiply defined symbols found
112 if(GMX_OPENMM AND MSVC)
113     set_target_properties(mdrun PROPERTIES LINK_FLAGS "/NODEFAULTLIB:LIBCMT")
114 endif()
115
116
117 install(TARGETS 
118         grompp
119         tpbconv
120         pdb2gmx
121         g_protonate
122         g_luck
123         gmxdump
124         g_x2top
125         gmxcheck
126         mdrun
127         gmxpreprocess DESTINATION ${LIB_INSTALL_DIR}
128         RUNTIME DESTINATION ${BIN_INSTALL_DIR})
129
130
131 get_target_property(MDRUN_PATH mdrun LOCATION)
132 add_custom_target(install-mdrun
133         COMMAND ${CMAKE_COMMAND} -E copy "${MDRUN_PATH}" 
134             "${CMAKE_INSTALL_PREFIX}/bin/${_mdrun_exec_name}"
135         DEPENDS mdrun
136         COMMENT "Installing mdrun")
137
138 endif(GMX_FAHCORE)
139