diff options
author | Kitware Robot <kwrobot@kitware.com> | 2013-10-15 15:17:36 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-10-15 18:12:03 (GMT) |
commit | f051814ed0e63badbfd68049354f36259dbf4b49 (patch) | |
tree | f4e6f885f86c882d723a7dd53d2b702d0c7fdffb /Modules/ExternalData.cmake | |
parent | e94958e99c4dec26c86ce8b76d744c04ba960675 (diff) | |
download | CMake-f051814ed0e63badbfd68049354f36259dbf4b49.zip CMake-f051814ed0e63badbfd68049354f36259dbf4b49.tar.gz CMake-f051814ed0e63badbfd68049354f36259dbf4b49.tar.bz2 |
Convert builtin help to reStructuredText source files
Run the convert-help.bash script to convert documentation:
./convert-help.bash "/path/to/CMake-build/bin"
Then remove it.
Diffstat (limited to 'Modules/ExternalData.cmake')
-rw-r--r-- | Modules/ExternalData.cmake | 280 |
1 files changed, 164 insertions, 116 deletions
diff --git a/Modules/ExternalData.cmake b/Modules/ExternalData.cmake index 50669bd..86a42ae 100644 --- a/Modules/ExternalData.cmake +++ b/Modules/ExternalData.cmake @@ -1,146 +1,194 @@ -# - Manage data files stored outside source tree -# Use this module to unambiguously reference data files stored outside the -# source tree and fetch them at build time from arbitrary local and remote -# content-addressed locations. Functions provided by this module recognize -# arguments with the syntax "DATA{<name>}" as references to external data, -# replace them with full paths to local copies of those data, and create build -# rules to fetch and update the local copies. +#.rst: +# ExternalData +# ------------ +# +# Manage data files stored outside source tree +# +# Use this module to unambiguously reference data files stored outside +# the source tree and fetch them at build time from arbitrary local and +# remote content-addressed locations. Functions provided by this module +# recognize arguments with the syntax "DATA{<name>}" as references to +# external data, replace them with full paths to local copies of those +# data, and create build rules to fetch and update the local copies. # # The DATA{} syntax is literal and the <name> is a full or relative path -# within the source tree. The source tree must contain either a real data -# file at <name> or a "content link" at <name><ext> containing a hash of the -# real file using a hash algorithm corresponding to <ext>. 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" file containing its MD5 sum. -# -# The 'ExternalData_Expand_Arguments' function evaluates DATA{} references -# in its arguments and constructs a new list of arguments: -# ExternalData_Expand_Arguments( -# <target> # Name of data management target -# <outVar> # Output variable -# [args...] # Input arguments, DATA{} allowed -# ) -# 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. +# within the source tree. The source tree must contain either a real +# data file at <name> or a "content link" at <name><ext> containing a +# hash of the real file using a hash algorithm corresponding to <ext>. +# 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" +# file containing its MD5 sum. +# +# The 'ExternalData_Expand_Arguments' function evaluates DATA{} +# references in its arguments and constructs a new list of arguments: +# +# :: +# +# ExternalData_Expand_Arguments( +# <target> # Name of data management target +# <outVar> # Output variable +# [args...] # Input arguments, DATA{} allowed +# ) +# +# 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. # # The 'ExternalData_Add_Test' function wraps around the CMake add_test() # command but supports DATA{} references in its arguments: -# ExternalData_Add_Test( -# <target> # Name of data management target -# ... # Arguments of add_test(), DATA{} allowed -# ) +# +# :: +# +# ExternalData_Add_Test( +# <target> # Name of data management target +# ... # Arguments of add_test(), DATA{} allowed +# ) +# # It passes its arguments through ExternalData_Expand_Arguments and then # invokes add_test() using the results. # -# 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 must 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)". +# 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 must +# 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)". # # The following hash algorithms are supported: -# %(algo) <ext> Description -# ------- ----- ----------- -# MD5 .md5 Message-Digest Algorithm 5, RFC 1321 -# SHA1 .sha1 US Secure Hash Algorithm 1, RFC 3174 -# SHA224 .sha224 US Secure Hash Algorithms, RFC 4634 -# SHA256 .sha256 US Secure Hash Algorithms, RFC 4634 -# SHA384 .sha384 US Secure Hash Algorithms, RFC 4634 -# SHA512 .sha512 US Secure Hash Algorithms, RFC 4634 +# +# :: +# +# %(algo) <ext> Description +# ------- ----- ----------- +# MD5 .md5 Message-Digest Algorithm 5, RFC 1321 +# SHA1 .sha1 US Secure Hash Algorithm 1, RFC 3174 +# SHA224 .sha224 US Secure Hash Algorithms, RFC 4634 +# SHA256 .sha256 US Secure Hash Algorithms, RFC 4634 +# SHA384 .sha384 US Secure Hash Algorithms, RFC 4634 +# SHA512 .sha512 US Secure Hash Algorithms, RFC 4634 +# # Note that the hashes are used only for unique data identification and # download verification. This is not security software. # # Example usage: -# include(ExternalData) -# set(ExternalData_URL_TEMPLATES "file:///local/%(algo)/%(hash)" -# "http://data.org/%(algo)/%(hash)") -# ExternalData_Add_Test(MyData -# NAME MyTest -# COMMAND MyExe DATA{MyInput.png} -# ) -# ExternalData_Add_Target(MyData) -# When test "MyTest" runs the "DATA{MyInput.png}" argument will be replaced by -# the full path to a real instance of the data file "MyInput.png" on disk. If -# the source tree contains a content link such as "MyInput.png.md5" then the -# "MyData" target creates a real "MyInput.png" in the build tree. +# +# :: +# +# include(ExternalData) +# set(ExternalData_URL_TEMPLATES "file:///local/%(algo)/%(hash)" +# "http://data.org/%(algo)/%(hash)") +# ExternalData_Add_Test(MyData +# NAME MyTest +# COMMAND MyExe DATA{MyInput.png} +# ) +# ExternalData_Add_Target(MyData) +# +# When test "MyTest" runs the "DATA{MyInput.png}" argument will be +# replaced by the full path to a real instance of the data file +# "MyInput.png" on disk. If the source tree contains a content link +# such as "MyInput.png.md5" then the "MyData" target creates a real +# "MyInput.png" in the build tree. # # The DATA{} syntax can be told to fetch a file series using the form -# "DATA{<name>,:}", where the ":" is literal. If the source tree contains a -# group of files or content links named like a series then a reference to one -# member adds rules to fetch all of them. Although all members of a series -# are fetched, only the file originally named by the DATA{} argument is -# substituted for it. The default configuration recognizes file series names -# ending with "#.ext", "_#.ext", ".#.ext", or "-#.ext" where "#" is a sequence -# of decimal digits and ".ext" is any single extension. Configure it with a -# regex that parses <number> and <suffix> parts from the end of <name>: -# ExternalData_SERIES_PARSE = regex of the form (<number>)(<suffix>)$ +# "DATA{<name>,:}", where the ":" is literal. If the source tree +# contains a group of files or content links named like a series then a +# reference to one member adds rules to fetch all of them. Although all +# members of a series are fetched, only the file originally named by the +# DATA{} argument is substituted for it. The default configuration +# recognizes file series names ending with "#.ext", "_#.ext", ".#.ext", +# or "-#.ext" where "#" is a sequence of decimal digits and ".ext" is +# any single extension. Configure it with a regex that parses <number> +# and <suffix> parts from the end of <name>: +# +# :: +# +# ExternalData_SERIES_PARSE = regex of the form (<number>)(<suffix>)$ +# # For more complicated cases set: -# ExternalData_SERIES_PARSE = regex with at least two () groups -# ExternalData_SERIES_PARSE_PREFIX = <prefix> regex group number, if any -# ExternalData_SERIES_PARSE_NUMBER = <number> regex group number -# ExternalData_SERIES_PARSE_SUFFIX = <suffix> regex group number +# +# :: +# +# ExternalData_SERIES_PARSE = regex with at least two () groups +# ExternalData_SERIES_PARSE_PREFIX = <prefix> regex group number, if any +# ExternalData_SERIES_PARSE_NUMBER = <number> regex group number +# ExternalData_SERIES_PARSE_SUFFIX = <suffix> regex group number +# # Configure series number matching with a regex that matches the # <number> part of series members named <prefix><number><suffix>: -# ExternalData_SERIES_MATCH = regex matching <number> in all series members +# +# :: +# +# ExternalData_SERIES_MATCH = regex matching <number> in all series members +# # Note that the <suffix> of a series does not include a hash-algorithm # extension. # -# The DATA{} syntax can alternatively match files associated with the named -# file and contained in the same directory. Associated files may be specified -# by options using the syntax DATA{<name>,<opt1>,<opt2>,...}. Each option may -# specify one file by name or specify a regular expression to match file names -# using the syntax REGEX:<regex>. For example, the arguments -# DATA{MyData/MyInput.mhd,MyInput.img} # File pair -# DATA{MyData/MyFrames00.png,REGEX:MyFrames[0-9]+\\.png} # Series -# will pass MyInput.mha and MyFrames00.png on the command line but ensure -# that the associated files are present next to them. -# -# The DATA{} syntax may reference a directory using a trailing slash and 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 associated -# file options. For example, the argument DATA{MyDataDir/,REGEX:.*} will pass -# the full path to a MyDataDir directory on the command line and ensure that -# the directory contains files corresponding to every file or content link in -# the MyDataDir 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 DATA{} syntax can alternatively match files associated with the +# named file and contained in the same directory. Associated files may +# be specified by options using the syntax +# DATA{<name>,<opt1>,<opt2>,...}. Each option may specify one file by +# name or specify a regular expression to match file names using the +# syntax REGEX:<regex>. For example, the arguments +# +# :: +# +# DATA{MyData/MyInput.mhd,MyInput.img} # File pair +# DATA{MyData/MyFrames00.png,REGEX:MyFrames[0-9]+\\.png} # Series +# +# will pass MyInput.mha and MyFrames00.png on the command line but +# ensure that the associated files are present next to them. +# +# The DATA{} syntax may reference a directory using a trailing slash and +# 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 +# associated file options. For example, the argument +# DATA{MyDataDir/,REGEX:.*} will pass the full path to a MyDataDir +# directory on the command line and ensure that the directory contains +# files corresponding to every file or content link in the MyDataDir +# 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. +# 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. +# 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. #============================================================================= # Copyright 2010-2013 Kitware, Inc. |