c5be93178bfd0191590cb2cd164c2e76969e164e
[alexxy/gromacs.git] / src / tools / CMakeLists.txt
1
2 add_library(gmxana 
3             autocorr.c      expfit.c        polynomials.c   levenmar.c      
4             anadih.c        pp2shift.c      dlist.c         
5             eigio.c         cmat.c          
6             eigensolver.c   nsc.c           
7             hxprops.c       fitahx.c        
8             geminate.c      nsfactor.c
9             gmx_analyze.c   gmx_anaeig.c    gmx_angle.c     gmx_bond.c      
10             gmx_bundle.c    gmx_chi.c       gmx_cluster.c   gmx_confrms.c   
11             gmx_covar.c     gmx_current.c   
12             gmx_density.c   gmx_densmap.c   gmx_dih.c       
13             gmx_dielectric.c        
14             gmx_kinetics.c  gmx_spatial.c   gmx_tune_pme.c
15             gmx_dipoles.c   gmx_disre.c     gmx_dist.c      gmx_dyndom.c    
16             gmx_enemat.c    gmx_energy.c    gmx_lie.c       gmx_filter.c    
17             gmx_gyrate.c    gmx_h2order.c   gmx_hbond.c     gmx_helix.c     
18             gmx_mindist.c   gmx_msd.c       gmx_morph.c     gmx_nmeig.c     
19             gmx_nmens.c     gmx_order.c     gmx_principal.c 
20             gmx_polystat.c  gmx_potential.c gmx_rama.c      
21             gmx_rdf.c       gmx_rms.c       gmx_rmsf.c      
22             gmx_rotacf.c    gmx_saltbr.c    gmx_sas.c       gmx_sans.c
23             gmx_select.c    gmx_rmsdist.c   gmx_rotmat.c
24             gmx_sgangle.c   gmx_sorient.c   gmx_spol.c      gmx_tcaf.c      
25             gmx_traj.c      gmx_velacc.c    gmx_helixorient.c 
26             gmx_clustsize.c gmx_mdmat.c     gmx_wham.c      
27             correl.c        gmx_sham.c      gmx_nmtraj.c    
28             gmx_trjconv.c   gmx_trjcat.c    gmx_trjorder.c  gmx_xpm2ps.c    
29             gmx_editconf.c  gmx_genbox.c    gmx_genion.c    gmx_genconf.c   
30             gmx_genpr.c     gmx_eneconv.c   gmx_vanhove.c   gmx_wheel.c     
31             addconf.c       calcpot.c       edittop.c       gmx_bar.c
32             gmx_membed.c    gmx_pme_error.c gmx_options.c   gmx_dos.c
33             gmx_hydorder.c  gmx_densorder.c powerspect.c    dens_filter.c
34             binsearch.c     gmx_dyecoupl.c  gmx_make_edi.c  gmx_sigeps.c
35             gmx_do_dssp.c   gmx_anadock.c   gmx_make_ndx.c  gmx_mk_angndx.c
36             )
37
38
39 target_link_libraries(gmxana md gmx ${GSL_LIBRARIES})
40 set_target_properties(gmxana PROPERTIES OUTPUT_NAME "gmxana${GMX_LIBS_SUFFIX}" SOVERSION ${SOVERSION} INSTALL_NAME_DIR "${LIB_INSTALL_DIR}"
41     COMPILE_FLAGS "${OpenMP_C_FLAGS}")
42
43 # List of programs with single corresponding .c source file,
44 # used to create build rules automatically.
45 #
46 set(GMX_TOOLS_PROGRAMS
47     do_dssp editconf eneconv genbox genconf genrestr g_nmtraj 
48     make_ndx mk_angndx trjcat trjconv trjorder g_wheel 
49     xpm2ps genion g_anadock make_edi g_analyze g_anaeig
50     g_angle g_bond g_bundle g_chi g_cluster g_confrms g_covar
51     g_current g_density g_densmap g_dih g_dielectric
52     g_helixorient g_principal g_dipoles g_disre g_dist
53     g_dyndom g_enemat g_energy g_lie g_filter g_gyrate
54     g_h2order g_hbond g_helix g_mindist g_msd g_morph g_nmeig
55     g_nmens g_order g_kinetics g_polystat g_potential g_rama g_rdf g_rms
56     g_rmsf g_rotacf g_saltbr g_sas g_select g_sgangle g_sham g_sorient
57     g_spol g_spatial g_tcaf g_traj g_tune_pme g_vanhove
58     g_velacc g_clustsize g_mdmat g_wham g_sigeps g_bar
59     g_membed g_pme_error g_rmsdist g_rotmat g_options
60     g_dos    g_hydorder  g_densorder g_dyecoupl g_sans
61     )
62
63 set(GMX_TOOLS_PROGRAMS_NOT_FOR_INSTALLATION
64   # names of any executables that should be built but not installed can go here
65     )
66
67
68 foreach(TOOL ${GMX_TOOLS_PROGRAMS} ${GMX_TOOLS_PROGRAMS_NOT_FOR_INSTALLATION})
69     if(GMX_GPU OR GMX_OPENMM OR GMX_FORCE_CXX)
70         set_source_files_properties(${TOOL}.c PROPERTIES LANGUAGE CXX)
71         if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
72             set_source_files_properties(${TOOL}.c PROPERTIES COMPILE_FLAGS "-x c++")
73         endif()
74     endif()
75     add_executable(${TOOL} ${TOOL}.c)
76     target_link_libraries(${TOOL} gmxana ${OpenMP_LINKER_FLAGS})
77     set_target_properties(${TOOL} PROPERTIES OUTPUT_NAME "${TOOL}${GMX_BINARY_SUFFIX}")
78 endforeach()
79
80 foreach(TOOL ${GMX_TOOLS_PROGRAMS})
81     if (NOT ${TOOL} STREQUAL "g_options")
82         gmx_add_man_page(${TOOL})
83     endif()
84
85     # Manage CPack component dependencies, and group membership; note that
86     # a component may belong to only one group
87     set(CPACK_COMPONENT_${TOOL}_DEPENDS libraries libraries-gmxana)
88     set(CPACK_COMPONENT_${TOOL}_GROUP tools)
89
90     # Create custom install-xxxx target
91     if (BUILD_SHARED_LIBS)
92     # If shared libraries are used, we need to install the libraries in
93     # addition to the tool binary.
94        add_custom_target(install-${TOOL}
95            COMMAND ${CMAKE_COMMAND} -DCOMPONENT=libraries
96                    -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
97            COMMAND ${CMAKE_COMMAND} -DCOMPONENT=libraries-gmxana
98                    -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
99            COMMAND ${CMAKE_COMMAND} -DCOMPONENT=${TOOL}
100                    -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
101            COMMENT "Installing ${TOOL}")
102     else()
103        add_custom_target(install-${TOOL}
104            COMMAND ${CMAKE_COMMAND} -DCOMPONENT=${TOOL}
105                    -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
106            COMMENT "Installing ${TOOL}")
107     endif()
108     add_dependencies(install-${TOOL} ${TOOL})
109
110     # Finally, trigger installation
111     install(
112       TARGETS ${TOOL}
113       COMPONENT ${TOOL}
114       DESTINATION ${BIN_INSTALL_DIR}
115       )
116 endforeach()
117
118 install(TARGETS gmxana DESTINATION ${LIB_INSTALL_DIR} COMPONENT libraries-gmxana)
119
120 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libgmxana.pc.cmakein ${CMAKE_CURRENT_BINARY_DIR}/libgmxana.pc @ONLY)
121 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libgmxana.pc
122         DESTINATION ${LIB_INSTALL_DIR}/pkgconfig
123         RENAME "libgmxana${GMX_LIBS_SUFFIX}.pc"
124         COMPONENT development)