Make the man/html/completion targets use a stamp file to mark when they
were done, and do no rerun them if dependencies have not changed (most
notably, do not rerun them if nothing has changed, or if only test code
has changed).
Change-Id: I510e55cb4b4c798dfce2cc7d95d66d30e3e802c4
# To help us fund GROMACS development, we humbly ask that you cite
# the research papers on the package. Check out http://www.gromacs.org.
# To help us fund GROMACS development, we humbly ask that you cite
# the research papers on the package. Check out http://www.gromacs.org.
-add_custom_target(man
- ${CMAKE_COMMAND} -E make_directory man1
+include(gmxCustomCommandUtilities)
+
+gmx_add_custom_output_target(man OUTPUT STAMP
+ COMMAND ${CMAKE_COMMAND} -E make_directory man1
COMMAND ${CMAKE_COMMAND} -E make_directory man7
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/man7/gromacs.7.in" man7/
COMMAND gmx -quiet help -export man
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E make_directory man7
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/man7/gromacs.7.in" man7/
COMMAND gmx -quiet help -export man
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMENT "Generating man pages"
- VERBATIM)
+ DEPENDS gmx ${CMAKE_CURRENT_SOURCE_DIR}/man7/gromacs.7.in
+ COMMENT "Generating man pages")
set(MAN_PAGE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
if (GMX_BUILD_HELP)
set(MAN_PAGE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
if (GMX_BUILD_HELP)
# To help us fund GROMACS development, we humbly ask that you cite
# the research papers on the package. Check out http://www.gromacs.org.
# To help us fund GROMACS development, we humbly ask that you cite
# the research papers on the package. Check out http://www.gromacs.org.
+include(gmxCustomCommandUtilities)
+
-set(HTML_PAGE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${OUTPUT_DIR})
-add_custom_target(html
- ${CMAKE_COMMAND}
- -D SOURCE_HTML_DIR=${CMAKE_CURRENT_SOURCE_DIR}
- -D OUTPUT_DIR=${OUTPUT_DIR}
- -D STEP=PRE
- -P ${CMAKE_CURRENT_SOURCE_DIR}/BuildHtmlHelp.cmake
+file(GLOB_RECURSE deps
+ ${CMAKE_CURRENT_SOURCE_DIR}/images/*
+ ${CMAKE_CURRENT_SOURCE_DIR}/*.html
+ ${CMAKE_CURRENT_SOURCE_DIR}/*.css
+ )
+list(APPEND deps
+ ${CMAKE_CURRENT_SOURCE_DIR}/BuildHtmlHelp.cmake
+ ${CMAKE_CURRENT_SOURCE_DIR}/header.html.in
+ ${CMAKE_CURRENT_SOURCE_DIR}/links.dat
+ )
+
+gmx_add_custom_output_target(html OUTPUT STAMP
+ COMMAND ${CMAKE_COMMAND}
+ -D SOURCE_HTML_DIR=${CMAKE_CURRENT_SOURCE_DIR}
+ -D OUTPUT_DIR=${OUTPUT_DIR}
+ -D STEP=PRE
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/BuildHtmlHelp.cmake
COMMAND gmx -quiet help -export html
COMMAND ${CMAKE_COMMAND}
COMMAND gmx -quiet help -export html
COMMAND ${CMAKE_COMMAND}
- -D SOURCE_HTML_DIR=${CMAKE_CURRENT_SOURCE_DIR}
- -D OUTPUT_DIR=${OUTPUT_DIR}
- -D STEP=POST
- -P ${CMAKE_CURRENT_SOURCE_DIR}/BuildHtmlHelp.cmake
- COMMENT "Generating HTML help"
- VERBATIM)
+ -D SOURCE_HTML_DIR=${CMAKE_CURRENT_SOURCE_DIR}
+ -D OUTPUT_DIR=${OUTPUT_DIR}
+ -D STEP=POST
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/BuildHtmlHelp.cmake
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ DEPENDS gmx ${deps}
+ COMMENT "Generating HTML help")
+set(HTML_PAGE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${OUTPUT_DIR})
if (GMX_BUILD_HELP)
set_target_properties(html PROPERTIES EXCLUDE_FROM_ALL OFF)
set_directory_properties(PROPERTIES
if (GMX_BUILD_HELP)
set_target_properties(html PROPERTIES EXCLUDE_FROM_ALL OFF)
set_directory_properties(PROPERTIES
########################
# Completion generation
########################
# Completion generation
- set(COMPLETION_DIR ${CMAKE_CURRENT_SOURCE_DIR}/completion)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/completion)
- add_custom_target(completion
- gmx -quiet help -export completion
- COMMENT "Generating command-line completions for programs"
- WORKING_DIRECTORY completion
- VERBATIM)
+ include(gmxCustomCommandUtilities)
+
+ gmx_add_custom_output_target(completion OUTPUT STAMP
+ COMMAND ${CMAKE_COMMAND} -E make_directory completion
+ COMMAND ${CMAKE_COMMAND} -E chdir completion
+ $<TARGET_FILE:gmx> -quiet help -export completion
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ DEPENDS gmx
+ COMMENT "Generating command-line completions for programs")
# Using GMX_BUILD_HELP here is somewhat confusing, but the conditions when
# this can be done are exactly the same (ability to run the compiled
# binaries).
# Using GMX_BUILD_HELP here is somewhat confusing, but the conditions when
# this can be done are exactly the same (ability to run the compiled
# binaries).
+ set(COMPLETION_DIR ${CMAKE_CURRENT_SOURCE_DIR}/completion)
if (GMX_BUILD_HELP)
set_target_properties(completion PROPERTIES EXCLUDE_FROM_ALL OFF)
set_directory_properties(PROPERTIES
if (GMX_BUILD_HELP)
set_target_properties(completion PROPERTIES EXCLUDE_FROM_ALL OFF)
set_directory_properties(PROPERTIES