Generate man pages and completions by default if possible
[alexxy/gromacs.git] / docs / old-html / BuildHtmlHelp.cmake
index 8a4f169a5f751bdf747e3d641a67ea17895f941a..16c31da177a36e87c7aaa9003bf52ee14a590157 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.
 
-if (NOT DEFINED OUTPUT_DIR OR NOT DEFINED SOURCE_HTML_DIR)
+if (NOT DEFINED GMX_EXECUTABLE OR NOT DEFINED OUTPUT_DIR OR NOT DEFINED SOURCE_HTML_DIR)
     message(FATAL_ERROR "Required input parameter not set")
 endif()
 
-function(PRE_EXPORT_ACTIONS)
-    file(MAKE_DIRECTORY ${OUTPUT_DIR})
-    file(MAKE_DIRECTORY ${OUTPUT_DIR}/programs)
-    file(COPY ${SOURCE_HTML_DIR}/header.html.in DESTINATION .)
-    file(COPY ${SOURCE_HTML_DIR}/footer.html DESTINATION .)
-    file(COPY ${SOURCE_HTML_DIR}/links.dat   DESTINATION .)
-endfunction()
+file(MAKE_DIRECTORY ${OUTPUT_DIR})
+file(MAKE_DIRECTORY ${OUTPUT_DIR}/programs)
+file(COPY ${SOURCE_HTML_DIR}/header.html.in DESTINATION .)
+file(COPY ${SOURCE_HTML_DIR}/footer.html DESTINATION .)
+file(COPY ${SOURCE_HTML_DIR}/links.dat   DESTINATION .)
+
+# This is generated by gmx help -export html
+set(HEADER_FILE header.html)
 
-function(POST_EXPORT_ACTIONS)
-    # This is generated by gmx help -export html
-    set(HEADER_FILE header.html)
-    set(FOOTER_FILE ${SOURCE_HTML_DIR}/footer.html)
-    file(READ ${HEADER_FILE} HEADER_TEXT)
-    file(READ ${FOOTER_FILE} FOOTER_TEXT)
-    set(_title_re "[Tt][Ii][Tt][Ll][Ee]")
+execute_process(
+    COMMAND ${GMX_EXECUTABLE} -quiet help -export html
+    RESULT_VARIABLE exitcode)
+if (exitcode)
+    # Ensure that no partial output is left behind.
+    file(REMOVE_RECURSE ${OUTPUT_DIR})
+    file(REMOVE ${HEADER_FILE})
+    message(FATAL_ERROR
+        "Failed to generate HTML help. "
+        "Set GMX_BUILD_HELP=OFF or GMX_BUILD_HELP=AUTO if you want to skip them.\n"
+        "Error/exit code: ${exitcode}")
+endif()
 
-    function(CREATE_HTML_FILE SOURCE_FILE ROOTPATH)
-        file(RELATIVE_PATH _rel_path ${SOURCE_HTML_DIR} ${SOURCE_FILE})
-        file(READ ${SOURCE_FILE} _content)
-        string(REGEX REPLACE "^ *<${_title_re}>(.*)</${_title_re}>\n" "" _content "${_content}")
-        set(TITLE "${CMAKE_MATCH_1}")
-        string(CONFIGURE "${HEADER_TEXT}" _header @ONLY)
-        set(_content "${_header}${_content}${FOOTER_TEXT}")
-        file(WRITE ${OUTPUT_DIR}/${_rel_path} "${_content}")
-    endfunction()
+set(FOOTER_FILE ${SOURCE_HTML_DIR}/footer.html)
+file(READ ${HEADER_FILE} HEADER_TEXT)
+file(READ ${FOOTER_FILE} FOOTER_TEXT)
+set(_title_re "[Tt][Ii][Tt][Ll][Ee]")
 
-    create_html_file(${SOURCE_HTML_DIR}/online.html "")
-    file(COPY ${SOURCE_HTML_DIR}/images DESTINATION ${OUTPUT_DIR})
-    file(MAKE_DIRECTORY ${OUTPUT_DIR}/online)
-    file(COPY ${SOURCE_HTML_DIR}/online/style.css DESTINATION ${OUTPUT_DIR}/online)
-    file(GLOB _source_files ${SOURCE_HTML_DIR}/online/*.html)
-    foreach(_file ${_source_files})
-        create_html_file(${_file} "../")
-    endforeach()
+function(CREATE_HTML_FILE SOURCE_FILE ROOTPATH)
+    file(RELATIVE_PATH _rel_path ${SOURCE_HTML_DIR} ${SOURCE_FILE})
+    file(READ ${SOURCE_FILE} _content)
+    string(REGEX REPLACE "^ *<${_title_re}>(.*)</${_title_re}>\n" "" _content "${_content}")
+    set(TITLE "${CMAKE_MATCH_1}")
+    string(CONFIGURE "${HEADER_TEXT}" _header @ONLY)
+    set(_content "${_header}${_content}${FOOTER_TEXT}")
+    file(WRITE ${OUTPUT_DIR}/${_rel_path} "${_content}")
 endfunction()
 
-if (STEP STREQUAL "PRE")
-    pre_export_actions()
-elseif (STEP STREQUAL "POST")
-    post_export_actions()
-else()
-    message(FATAL_ERROR "Unknown parameter STEP=${STEP}")
-endif()
+create_html_file(${SOURCE_HTML_DIR}/online.html "")
+file(COPY ${SOURCE_HTML_DIR}/images DESTINATION ${OUTPUT_DIR})
+file(MAKE_DIRECTORY ${OUTPUT_DIR}/online)
+file(COPY ${SOURCE_HTML_DIR}/online/style.css DESTINATION ${OUTPUT_DIR}/online)
+file(GLOB _source_files ${SOURCE_HTML_DIR}/online/*.html)
+foreach(_file ${_source_files})
+    create_html_file(${_file} "../")
+endforeach()