Skip man/html/completion generation if not needed
authorTeemu Murtola <teemu.murtola@gmail.com>
Sun, 21 Sep 2014 03:59:08 +0000 (06:59 +0300)
committerTeemu Murtola <teemu.murtola@gmail.com>
Sun, 21 Sep 2014 03:59:08 +0000 (06:59 +0300)
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

docs/man/CMakeLists.txt
docs/old-html/CMakeLists.txt
src/programs/CMakeLists.txt

index 372c797a4c6561332af02d7890b3fd303ea1e42f..cf193662e445c047ee3e6a7eae0cce157d796de6 100644 (file)
 # 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}
-    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)
index 176901b7ed0189ac6bb9688c3e2bb266e9c38857..c407467e7c387a26663139a54af2b1122052edbf 100644 (file)
 # 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(OUTPUT_DIR final)
-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}
-    -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
index 8bc5eb7b067fe34967ba13c2019f0e72c1d44284..50573b2977a96ac8d711b696336a05e97e5af29d 100644 (file)
@@ -79,16 +79,19 @@ else()
     ########################
     # 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).
+    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