# Keep CMake suitably quiet on Cygwin
set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required
+# Allows CPack to act differently for normal tools and mdrun (e.g. because of MPI)
+set(CPACK_COMPONENT_GROUP_TOOLS_DESCRIPTION "All GROMACS executable tools")
+set(CPACK_COMPONENT_GROUP_MDRUN_DESCRIPTION "GROMACS executable for running simulations")
+
# override bugs on OS X where Cmake picks gcc (GNU) for C instead of system default cc (Clang).
if(APPLE)
set(CMAKE_C_COMPILER_INIT "cc")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/GMXRC.csh.cmakein ${CMAKE_CURRENT_BINARY_DIR}/GMXRC.csh @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/GMXRC.zsh.cmakein ${CMAKE_CURRENT_BINARY_DIR}/GMXRC.zsh @ONLY)
-install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/GMXRC DESTINATION ${BIN_INSTALL_DIR} COMPONENT runtime)
-install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/GMXRC.bash DESTINATION ${BIN_INSTALL_DIR} COMPONENT runtime)
-install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/GMXRC.zsh DESTINATION ${BIN_INSTALL_DIR} COMPONENT runtime)
-install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/GMXRC.csh DESTINATION ${BIN_INSTALL_DIR} COMPONENT runtime)
+install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/GMXRC DESTINATION ${BIN_INSTALL_DIR} COMPONENT scripts)
+install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/GMXRC.bash DESTINATION ${BIN_INSTALL_DIR} COMPONENT scripts)
+install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/GMXRC.zsh DESTINATION ${BIN_INSTALL_DIR} COMPONENT scripts)
+install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/GMXRC.csh DESTINATION ${BIN_INSTALL_DIR} COMPONENT scripts)
file(GLOB EXTRA_SCRIPTS completion.*)
-install(FILES ${EXTRA_SCRIPTS} DESTINATION ${BIN_INSTALL_DIR} COMPONENT runtime)
+install(FILES ${EXTRA_SCRIPTS} DESTINATION ${BIN_INSTALL_DIR} COMPONENT scripts)
-install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/demux.pl DESTINATION ${BIN_INSTALL_DIR} COMPONENT runtime)
-install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/xplor2gmx.pl DESTINATION ${BIN_INSTALL_DIR} COMPONENT runtime)
+install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/demux.pl DESTINATION ${BIN_INSTALL_DIR} COMPONENT scripts)
+install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/xplor2gmx.pl DESTINATION ${BIN_INSTALL_DIR} COMPONENT scripts)
+set(CPACK_COMPONENT_SCRIPTS_GROUP tools)
set_target_properties(mdrun PROPERTIES LINK_FLAGS "/NODEFAULTLIB:LIBCMT")
endif()
+# Construct component groups for installation
+foreach(PROGRAM ${GMX_KERNEL_PROGRAMS} mdrun)
+ set(CPACK_COMPONENT_${PROGRAM}_GROUP tools)
+endforeach()
+set(CPACK_COMPONENT_MDRUN_GROUP mdrun)
-install(TARGETS gmxpreprocess DESTINATION ${LIB_INSTALL_DIR} COMPONENT libraries)
-install(TARGETS mdrun DESTINATION ${BIN_INSTALL_DIR} COMPONENT mdrun)
-install(TARGETS ${GMX_KERNEL_PROGRAMS} COMPONENT runtime
- RUNTIME DESTINATION ${BIN_INSTALL_DIR})
-
-# Create the custom install-mdrun target
-if (BUILD_SHARED_LIBS)
+# Create custom install-xxxx targets, component dependences,
+# and trigger the installation
+foreach(PROGRAM ${GMX_KERNEL_PROGRAMS} mdrun)
+ set(CPACK_COMPONENT_${PROGRAM}_DEPENDS libraries)
+ if (BUILD_SHARED_LIBS)
# If shared libraries are used, we need to install the libraries in
# addition to the mdrun binary.
- add_custom_target(install-mdrun
- COMMAND ${CMAKE_COMMAND} -DCOMPONENT=libraries
- -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
- COMMAND ${CMAKE_COMMAND} -DCOMPONENT=mdrun
- -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
- COMMENT "Installing mdrun")
-else (BUILD_SHARED_LIBS)
- add_custom_target(install-mdrun
- COMMAND ${CMAKE_COMMAND} -DCOMPONENT=mdrun
- -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
- COMMENT "Installing mdrun")
-endif (BUILD_SHARED_LIBS)
-add_dependencies(install-mdrun mdrun)
+ add_custom_target(install-${PROGRAM}
+ COMMAND ${CMAKE_COMMAND} -DCOMPONENT=libraries
+ -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
+ COMMAND ${CMAKE_COMMAND} -DCOMPONENT=${PROGRAM}
+ -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
+ COMMENT "Installing ${PROGRAM}")
+ else()
+ add_custom_target(install-${PROGRAM}
+ COMMAND ${CMAKE_COMMAND} -DCOMPONENT=${PROGRAM}
+ -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
+ COMMENT "Installing ${PROGRAM}")
+ endif()
+ add_dependencies(install-${PROGRAM} ${PROGRAM})
+ install(
+ TARGETS ${PROGRAM}
+ COMPONENT ${PROGRAM}
+ DESTINATION ${BIN_INSTALL_DIR}
+ )
+endforeach()
+
+install(TARGETS gmxpreprocess DESTINATION ${LIB_INSTALL_DIR} COMPONENT libraries)
endif(GMX_FAHCORE)
foreach(TOOL ${GMX_TOOLS_PROGRAMS} ${GMX_TOOLS_PROGRAMS_NOT_FOR_INSTALLATION})
add_executable(${TOOL} ${TOOL}.c)
+ target_link_libraries(${TOOL} gmxana ${OpenMP_LINKER_FLAGS})
+ set_target_properties(${TOOL} PROPERTIES OUTPUT_NAME "${TOOL}${GMX_BINARY_SUFFIX}")
+endforeach()
+
+foreach(TOOL ${GMX_TOOLS_PROGRAMS})
if (NOT ${TOOL} STREQUAL "g_options")
gmx_add_man_page(${TOOL})
endif()
- target_link_libraries(${TOOL} gmxana ${OpenMP_LINKER_FLAGS})
- set_target_properties(${TOOL} PROPERTIES OUTPUT_NAME "${TOOL}${GMX_BINARY_SUFFIX}")
-endforeach(TOOL ${GMX_TOOLS_PROGRAMS})
+ # Create custom install-xxxx targets, manage components and
+ # component groups, and trigger the installation
+ set(CPACK_COMPONENT_${TOOL}_DEPENDS libraries)
+ set(CPACK_COMPONENT_${TOOL}_GROUP tools)
+ if (BUILD_SHARED_LIBS)
+ # If shared libraries are used, we need to install the libraries in
+ # addition to the tool binary.
+ add_custom_target(install-${TOOL}
+ COMMAND ${CMAKE_COMMAND} -DCOMPONENT=libraries
+ -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
+ COMMAND ${CMAKE_COMMAND} -DCOMPONENT=${TOOL}
+ -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
+ COMMENT "Installing ${TOOL}")
+ else()
+ add_custom_target(install-${TOOL}
+ COMMAND ${CMAKE_COMMAND} -DCOMPONENT=${TOOL}
+ -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
+ COMMENT "Installing ${TOOL}")
+ endif()
+ add_dependencies(install-${TOOL} ${TOOL})
+ install(
+ TARGETS ${TOOL}
+ COMPONENT ${TOOL}
+ DESTINATION ${BIN_INSTALL_DIR}
+ )
+endforeach()
-install(TARGETS gmxana DESTINATION ${LIB_INSTALL_DIR} COMPONENT runtime)
-install(TARGETS ${GMX_TOOLS_PROGRAMS}
- DESTINATION ${BIN_INSTALL_DIR}
- COMPONENT runtime)
+install(TARGETS gmxana DESTINATION ${LIB_INSTALL_DIR} COMPONENT libraries)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libgmxana.pc.cmakein ${CMAKE_CURRENT_BINARY_DIR}/libgmxana.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libgmxana.pc