Browse Source

ExternalData: Split documentation into sections

Also explicitly mark functions and variables.
Brad King 11 years ago
parent
commit
f3884b47ec
1 changed files with 111 additions and 67 deletions
  1. 111 67
      Modules/ExternalData.cmake

+ 111 - 67
Modules/ExternalData.cmake

@@ -2,8 +2,15 @@
 ExternalData
 ExternalData
 ------------
 ------------
 
 
+.. only:: html
+
+   .. contents::
+
 Manage data files stored outside source tree
 Manage data files stored outside source tree
 
 
+Introduction
+^^^^^^^^^^^^
+
 Use this module to unambiguously reference data files stored outside
 Use this module to unambiguously reference data files stored outside
 the source tree and fetch them at build time from arbitrary local and
 the source tree and fetch them at build time from arbitrary local and
 remote content-addressed locations.  Functions provided by this module
 remote content-addressed locations.  Functions provided by this module
@@ -19,50 +26,56 @@ For example, the argument ``DATA{img.png}`` may be satisfied by either a
 real ``img.png`` file in the current source directory or a ``img.png.md5``
 real ``img.png`` file in the current source directory or a ``img.png.md5``
 file containing its MD5 sum.
 file containing its MD5 sum.
 
 
-The ``ExternalData_Expand_Arguments`` function evaluates ``DATA{}``
-references in its arguments and constructs a new list of arguments:
+Module Functions
+^^^^^^^^^^^^^^^^
 
 
-.. code-block:: cmake
+.. command:: ExternalData_Expand_Arguments
 
 
- ExternalData_Expand_Arguments(
-   <target>   # Name of data management target
-   <outVar>   # Output variable
-   [args...]  # Input arguments, DATA{} allowed
-   )
+  The ``ExternalData_Expand_Arguments`` function evaluates ``DATA{}``
+  references in its arguments and constructs a new list of arguments::
 
 
-It replaces each ``DATA{}`` reference in an argument with the full path of
-a real data file on disk that will exist after the ``<target>`` builds.
+    ExternalData_Expand_Arguments(
+      <target>   # Name of data management target
+      <outVar>   # Output variable
+      [args...]  # Input arguments, DATA{} allowed
+      )
 
 
-The ``ExternalData_Add_Test`` function wraps around the CMake
-:command:`add_test` command but supports ``DATA{}`` references in
-its arguments:
+  It replaces each ``DATA{}`` reference in an argument with the full path of
+  a real data file on disk that will exist after the ``<target>`` builds.
 
 
-.. code-block:: cmake
+.. command:: ExternalData_Add_Test
 
 
- ExternalData_Add_Test(
-   <target>   # Name of data management target
-   ...        # Arguments of add_test(), DATA{} allowed
-   )
+  The ``ExternalData_Add_Test`` function wraps around the CMake
+  :command:`add_test` command but supports ``DATA{}`` references in
+  its arguments::
 
 
-It passes its arguments through ``ExternalData_Expand_Arguments`` and then
-invokes the :command:`add_test` command using the results.
+    ExternalData_Add_Test(
+      <target>   # Name of data management target
+      ...        # Arguments of add_test(), DATA{} allowed
+      )
 
 
-The ``ExternalData_Add_Target`` function creates a custom target to
-manage local instances of data files stored externally:
+  It passes its arguments through ``ExternalData_Expand_Arguments`` and then
+  invokes the :command:`add_test` command using the results.
 
 
-.. code-block:: cmake
+.. command:: ExternalData_Add_Target
 
 
- ExternalData_Add_Target(
-   <target>   # Name of data management target
-   )
+  The ``ExternalData_Add_Target`` function creates a custom target to
+  manage local instances of data files stored externally::
+
+    ExternalData_Add_Target(
+      <target>   # Name of data management target
+      )
+
+  It creates custom commands in the target as necessary to make data
+  files available for each ``DATA{}`` reference previously evaluated by
+  other functions provided by this module.  A list of URL templates may
+  be provided in the variable ``ExternalData_URL_TEMPLATES`` using the
+  placeholders ``%(algo)`` and ``%(hash)`` in each template.  Data fetch
+  rules try each URL template in order by substituting the hash
+  algorithm name for ``%(algo)`` and the hash value for ``%(hash)``.
 
 
-It creates custom commands in the target as necessary to make data
-files available for each ``DATA{}`` reference previously evaluated by
-other functions provided by this module.  A list of URL templates may
-be provided in the variable ``ExternalData_URL_TEMPLATES`` using the
-placeholders ``%(algo)`` and ``%(hash)`` in each template.  Data fetch
-rules try each URL template in order by substituting the hash
-algorithm name for ``%(algo)`` and the hash value for ``%(hash)``.
+Hash Algorithms
+^^^^^^^^^^^^^^^
 
 
 The following hash algorithms are supported::
 The following hash algorithms are supported::
 
 
@@ -78,7 +91,8 @@ The following hash algorithms are supported::
 Note that the hashes are used only for unique data identification and
 Note that the hashes are used only for unique data identification and
 download verification.
 download verification.
 
 
-Example usage:
+Example Usage
+^^^^^^^^^^^^^
 
 
 .. code-block:: cmake
 .. code-block:: cmake
 
 
@@ -98,6 +112,9 @@ replaced by the full path to a real instance of the data file
 such as ``MyInput.png.md5`` then the ``MyData`` target creates a real
 such as ``MyInput.png.md5`` then the ``MyData`` target creates a real
 ``MyInput.png`` in the build tree.
 ``MyInput.png`` in the build tree.
 
 
+Referencing File Series
+^^^^^^^^^^^^^^^^^^^^^^^
+
 The ``DATA{}`` syntax can be told to fetch a file series using the form
 The ``DATA{}`` syntax can be told to fetch a file series using the form
 ``DATA{<name>,:}``, where the ``:`` is literal.  If the source tree
 ``DATA{<name>,:}``, where the ``:`` is literal.  If the source tree
 contains a group of files or content links named like a series then a
 contains a group of files or content links named like a series then a
@@ -126,6 +143,9 @@ Configure series number matching with a regex that matches the
 Note that the ``<suffix>`` of a series does not include a hash-algorithm
 Note that the ``<suffix>`` of a series does not include a hash-algorithm
 extension.
 extension.
 
 
+Referencing Associated Files
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
 The ``DATA{}`` syntax can alternatively match files associated with the
 The ``DATA{}`` syntax can alternatively match files associated with the
 named file and contained in the same directory.  Associated files may
 named file and contained in the same directory.  Associated files may
 be specified by options using the syntax
 be specified by options using the syntax
@@ -139,6 +159,9 @@ syntax ``REGEX:<regex>``.  For example, the arguments::
 will pass ``MyInput.mha`` and ``MyFrames00.png`` on the command line but
 will pass ``MyInput.mha`` and ``MyFrames00.png`` on the command line but
 ensure that the associated files are present next to them.
 ensure that the associated files are present next to them.
 
 
+Referencing Directories
+^^^^^^^^^^^^^^^^^^^^^^^
+
 The ``DATA{}`` syntax may reference a directory using a trailing slash and
 The ``DATA{}`` syntax may reference a directory using a trailing slash and
 a list of associated files.  The form ``DATA{<name>/,<opt1>,<opt2>,...}``
 a list of associated files.  The form ``DATA{<name>/,<opt1>,<opt2>,...}``
 adds rules to fetch any files in the directory that match one of the
 adds rules to fetch any files in the directory that match one of the
@@ -148,39 +171,60 @@ directory on the command line and ensure that the directory contains
 files corresponding to every file or content link in the ``MyDataDir``
 files corresponding to every file or content link in the ``MyDataDir``
 source directory.
 source directory.
 
 
-The variable ``ExternalData_LINK_CONTENT`` may be set to the name of a
-supported hash algorithm to enable automatic conversion of real data
-files referenced by the ``DATA{}`` syntax into content links.  For each
-such ``<file>`` a content link named ``<file><ext>`` is created.  The
-original file is renamed to the form ``.ExternalData_<algo>_<hash>`` to
-stage it for future transmission to one of the locations in the list
-of URL templates (by means outside the scope of this module).  The
-data fetch rule created for the content link will use the staged
-object if it cannot be found using any URL template.
-
-The variable ``ExternalData_OBJECT_STORES`` may be set to a list of local
-directories that store objects using the layout ``<dir>/%(algo)/%(hash)``.
-These directories will be searched first for a needed object.  If the
-object is not available in any store then it will be fetched remotely
-using the URL templates and added to the first local store listed.  If
-no stores are specified the default is a location inside the build
-tree.
-
-The variable ``ExternalData_SOURCE_ROOT`` may be set to the highest source
-directory containing any path named by a ``DATA{}`` reference.  The
-default is ``CMAKE_SOURCE_DIR``.  ``ExternalData_SOURCE_ROOT`` and
-``CMAKE_SOURCE_DIR`` must refer to directories within a single source
-distribution (e.g.  they come together in one tarball).
-
-The variable ``ExternalData_BINARY_ROOT`` may be set to the directory to
-hold the real data files named by expanded ``DATA{}`` references.  The
-default is ``CMAKE_BINARY_DIR``.  The directory layout will mirror that of
-content links under ``ExternalData_SOURCE_ROOT``.
-
-Variables ``ExternalData_TIMEOUT_INACTIVITY`` and
-``ExternalData_TIMEOUT_ABSOLUTE`` set the download inactivity and absolute
-timeouts, in seconds.  The defaults are 60 seconds and 300 seconds,
-respectively.  Set either timeout to 0 seconds to disable enforcement.
+Module Variables
+^^^^^^^^^^^^^^^^
+
+The following variables configure behavior.  They should be set before
+calling any of the functions provided by this module.
+
+.. variable:: ExternalData_LINK_CONTENT
+
+  The ``ExternalData_LINK_CONTENT`` variable may be set to the name of a
+  supported hash algorithm to enable automatic conversion of real data
+  files referenced by the ``DATA{}`` syntax into content links.  For each
+  such ``<file>`` a content link named ``<file><ext>`` is created.  The
+  original file is renamed to the form ``.ExternalData_<algo>_<hash>`` to
+  stage it for future transmission to one of the locations in the list
+  of URL templates (by means outside the scope of this module).  The
+  data fetch rule created for the content link will use the staged
+  object if it cannot be found using any URL template.
+
+.. variable:: ExternalData_OBJECT_STORES
+
+  The ``ExternalData_OBJECT_STORES`` variable may be set to a list of local
+  directories that store objects using the layout ``<dir>/%(algo)/%(hash)``.
+  These directories will be searched first for a needed object.  If the
+  object is not available in any store then it will be fetched remotely
+  using the URL templates and added to the first local store listed.  If
+  no stores are specified the default is a location inside the build
+  tree.
+
+.. variable:: ExternalData_SOURCE_ROOT
+
+  The ``ExternalData_SOURCE_ROOT`` variable may be set to the highest source
+  directory containing any path named by a ``DATA{}`` reference.  The
+  default is ``CMAKE_SOURCE_DIR``.  ``ExternalData_SOURCE_ROOT`` and
+  ``CMAKE_SOURCE_DIR`` must refer to directories within a single source
+  distribution (e.g.  they come together in one tarball).
+
+.. variable:: ExternalData_BINARY_ROOT
+
+  The ``ExternalData_BINARY_ROOT`` variable may be set to the directory to
+  hold the real data files named by expanded ``DATA{}`` references.  The
+  default is ``CMAKE_BINARY_DIR``.  The directory layout will mirror that of
+  content links under ``ExternalData_SOURCE_ROOT``.
+
+.. variable:: ExternalData_TIMEOUT_INACTIVITY
+
+  The ``ExternalData_TIMEOUT_INACTIVITY`` variable sets the download
+  inactivity timeout, in seconds, with a default of ``60`` seconds.
+  Set to ``0`` to disable enforcement.
+
+.. variable:: ExternalData_TIMEOUT_ABSOLUTE
+
+  The ``ExternalData_TIMEOUT_ABSOLUTE`` variable sets the download
+  absolute timeout, in seconds, with a default of ``300`` seconds.
+  Set to ``0`` to disable enforcement.
 #]=======================================================================]
 #]=======================================================================]
 
 
 #=============================================================================
 #=============================================================================