Browse Source

Utilities/Sphinx: Add undocumented option to build docs for cmake.org

Brad King 3 years ago
parent
commit
cca73b54ae

+ 2 - 1
.gitlab/os-linux.yml

@@ -490,5 +490,6 @@
         - *before_script_linux
         - mkdir -p build/
         - cd build/
-        - cmake ../Utilities/Sphinx -GNinja -DSPHINX_HTML=ON -DSPHINX_FLAGS="-A versionswitch=1"
+        - cmake ../Utilities/Sphinx -GNinja -DSPHINX_HTML=ON
+          -DCMake_SPHINX_CMAKE_ORG=ON
         - ninja

+ 30 - 3
Utilities/Sphinx/CMakeLists.txt

@@ -49,6 +49,12 @@ else()
   set(conf_copyright "Kitware, Inc.")
 endif()
 
+if(CMake_SPHINX_CMAKE_ORG)
+  set(conf_baseurl "https://cmake.org/cmake/help/latest")
+else()
+  set(conf_baseurl "")
+endif()
+
 set(conf_docs "${CMake_SOURCE_DIR}/Help")
 set(conf_path "${CMAKE_CURRENT_SOURCE_DIR}")
 set(conf_version "${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}.${CMake_VERSION_PATCH}")
@@ -129,11 +135,24 @@ if(SPHINX_LATEXPDF)
   list(APPEND doc_formats latexpdf)
 endif()
 
+set(doc_html_opts "")
+if(CMake_SPHINX_CMAKE_ORG)
+  list(APPEND doc_html_opts
+    -A googleanalytics=1
+    -A versionswitch=1
+    )
+endif()
+
 set(doc_format_outputs "")
 set(doc_format_last "")
 foreach(format ${doc_formats})
   set(doc_format_output "doc_format_${format}")
   set(doc_format_log "build-${format}.log")
+  if(CMake_SPHINX_CMAKE_ORG)
+    set(doctrees "doctrees/${format}")
+  else()
+    set(doctrees "doctrees")
+  endif()
   if(format STREQUAL "latexpdf")
     # This format does not use builder (-b) but make_mode (-M) which expects
     # arguments in peculiar order
@@ -144,8 +163,9 @@ foreach(format ${doc_formats})
               ${CMake_SOURCE_DIR}/Help
               ${CMAKE_CURRENT_BINARY_DIR}/${format}
               -c ${CMAKE_CURRENT_BINARY_DIR}
-              -d ${CMAKE_CURRENT_BINARY_DIR}/doctrees
+              -d ${CMAKE_CURRENT_BINARY_DIR}/${doctrees}
               ${sphinx_flags}
+              ${doc_${format}_opts}
               > ${doc_format_log} # log stdout, pass stderr
       ${${format}_extra_commands}
       DEPENDS ${doc_format_last}
@@ -158,9 +178,10 @@ foreach(format ${doc_formats})
       OUTPUT ${doc_format_output}
       COMMAND ${SPHINX_EXECUTABLE}
               -c ${CMAKE_CURRENT_BINARY_DIR}
-              -d ${CMAKE_CURRENT_BINARY_DIR}/doctrees
+              -d ${CMAKE_CURRENT_BINARY_DIR}/${doctrees}
               -b ${format}
               ${sphinx_flags}
+              ${doc_${format}_opts}
               ${CMake_SOURCE_DIR}/Help
               ${CMAKE_CURRENT_BINARY_DIR}/${format}
               > ${doc_format_log} # log stdout, pass stderr
@@ -172,7 +193,9 @@ foreach(format ${doc_formats})
   endif()
   set_property(SOURCE ${doc_format_output} PROPERTY SYMBOLIC 1)
   list(APPEND doc_format_outputs ${doc_format_output})
-  set(doc_format_last ${doc_format_output})
+  if(NOT CMake_SPHINX_CMAKE_ORG)
+    set(doc_format_last ${doc_format_output})
+  endif()
 endforeach()
 
 add_custom_target(documentation ALL DEPENDS ${doc_format_outputs})
@@ -192,6 +215,10 @@ if(CMake_SPHINX_DEPEND_ON_EXECUTABLES)
   endforeach()
 endif()
 
+if(CMake_SPHINX_CMAKE_ORG)
+  return()
+endif()
+
 if(SPHINX_INFO)
   CMake_OPTIONAL_COMPONENT(sphinx-info)
   install(FILES ${CMAKE_CURRENT_BINARY_DIR}/texinfo/cmake.info

+ 1 - 0
Utilities/Sphinx/conf.py.in

@@ -55,6 +55,7 @@ for fpath in cmake_manuals:
 man_show_urls = False
 man_make_section_directory = False
 
+html_baseurl = '@conf_baseurl@'
 html_show_sourcelink = True
 html_static_path = ['@conf_path@/static']
 html_style = 'cmake.css'

+ 19 - 3
Utilities/Sphinx/templates/layout.html

@@ -18,9 +18,9 @@
 {% endblock %}
 
 {% block extrahead %}
-  {% if versionswitch is defined %}
-  <script type="text/javascript" src="{{ pathto('../version_switch.js', 1) }}"></script>
-  {% endif %}
+  {%- if versionswitch is defined %}
+    <script type="text/javascript" src="{{ pathto('../version_switch.js', 1) }}"></script>
+  {%- endif %}
 {{ super() }}
 {% endblock %}
 
@@ -29,3 +29,19 @@
 {% block htmltitle %}
   <title>{{ title|striptags|e }} {{ "&mdash;"|safe }} {{ docstitle|e }}</title>
 {% endblock %}
+
+{%- block footer %}
+{{ super() }}
+{%- if googleanalytics is defined %}
+<script type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script>
+<script type="text/javascript">
+try {
+var pageTracker = _gat._getTracker("UA-6042509-4");
+pageTracker._trackPageview();
+} catch(err) {}
+</script>
+{%- endif %}
+{%- endblock %}