From d9c2c17b29467367ddefbc86cf7e1759c7df27cc Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 28 Oct 2014 12:44:00 -0400 Subject: ExternalProject: Use explicit markup and definition lists in docs Convert ExternalProject module documentation to use explicit markup blocks for each command. Enumerate command options with definition lists instead of a literal block. This will allow more detail to be added later. Also fix the logic that parses options out of the documentation to be aware of the new layout. --- Modules/ExternalProject.cmake | 366 ++++++++++++++++++++++++++---------------- 1 file changed, 227 insertions(+), 139 deletions(-) diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake index 54432e3..a92f20c 100644 --- a/Modules/ExternalProject.cmake +++ b/Modules/ExternalProject.cmake @@ -4,132 +4,216 @@ ExternalProject Create custom targets to build projects in external trees -The ``ExternalProject_Add`` function creates a custom target to drive -download, update/patch, configure, build, install and test steps of an -external project: - -.. code-block:: cmake - - ExternalProject_Add( # Name for custom target - [DEPENDS projects...] # Targets on which the project depends - [PREFIX dir] # Root dir for entire project - [LIST_SEPARATOR sep] # Sep to be replaced by ; in cmd lines - [TMP_DIR dir] # Directory to store temporary files - [STAMP_DIR dir] # Directory to store step timestamps - [EXCLUDE_FROM_ALL 1] # The "all" target does not depend on this - #--Download step-------------- - [DOWNLOAD_NAME fname] # File name to store (if not end of URL) - [DOWNLOAD_DIR dir] # Directory to store downloaded files - [DOWNLOAD_COMMAND cmd...] # Command to download source tree - [DOWNLOAD_NO_PROGRESS 1] # Disable download progress reports - [CVS_REPOSITORY cvsroot] # CVSROOT of CVS repository - [CVS_MODULE mod] # Module to checkout from CVS repo - [CVS_TAG tag] # Tag to checkout from CVS repo - [SVN_REPOSITORY url] # URL of Subversion repo - [SVN_REVISION -r] # Revision to checkout from Subversion repo - [SVN_USERNAME john ] # Username for Subversion checkout and update - [SVN_PASSWORD doe ] # Password for Subversion checkout and update - [SVN_TRUST_CERT 1 ] # Trust the Subversion server site certificate - [GIT_REPOSITORY url] # URL of git repo - [GIT_TAG tag] # Git branch name, commit id or tag - [GIT_SUBMODULES modules...] # Git submodules that shall be updated, all if empty - [HG_REPOSITORY url] # URL of mercurial repo - [HG_TAG tag] # Mercurial branch name, commit id or tag - [URL /.../src.tgz] # Full path or URL of source - [URL_HASH ALGO=value] # Hash of file at URL - [URL_MD5 md5] # Equivalent to URL_HASH MD5=md5 - [TLS_VERIFY bool] # Should certificate for https be checked - [TLS_CAINFO file] # Path to a certificate authority file - [TIMEOUT seconds] # Time allowed for file download operations - #--Update/Patch step---------- - [UPDATE_COMMAND cmd...] # Source work-tree update command - [PATCH_COMMAND cmd...] # Command to patch downloaded source - #--Configure step------------- - [SOURCE_DIR dir] # Source dir to be used for build - [CONFIGURE_COMMAND cmd...] # Build tree configuration command - [CMAKE_COMMAND /.../cmake] # Specify alternative cmake executable - [CMAKE_GENERATOR gen] # Specify generator for native build - [CMAKE_GENERATOR_PLATFORM p] # Generator-specific platform name - [CMAKE_GENERATOR_TOOLSET t] # Generator-specific toolset name - [CMAKE_ARGS args...] # Arguments to CMake command line - [CMAKE_CACHE_ARGS args...] # Initial cache arguments, of the form -Dvar:string=on - #--Build step----------------- - [BINARY_DIR dir] # Specify build dir location - [BUILD_COMMAND cmd...] # Command to drive the native build - [BUILD_IN_SOURCE 1] # Use source dir for build dir - [BUILD_ALWAYS 1] # No stamp file, build step always runs - #--Install step--------------- - [INSTALL_DIR dir] # Installation prefix - [INSTALL_COMMAND cmd...] # Command to drive install after build - #--Test step------------------ - [TEST_BEFORE_INSTALL 1] # Add test step executed before install step - [TEST_AFTER_INSTALL 1] # Add test step executed after install step - [TEST_COMMAND cmd...] # Command to drive test - #--Output logging------------- - [LOG_DOWNLOAD 1] # Wrap download in script to log output - [LOG_UPDATE 1] # Wrap update in script to log output - [LOG_CONFIGURE 1] # Wrap configure in script to log output - [LOG_BUILD 1] # Wrap build in script to log output - [LOG_TEST 1] # Wrap test in script to log output - [LOG_INSTALL 1] # Wrap install in script to log output - #--Custom targets------------- - [STEP_TARGETS st1 st2 ...] # Generate custom targets for these steps - ) - -The ``*_DIR`` options specify directories for the project, with default -directories computed as follows. If the ``PREFIX`` option is given to -``ExternalProject_Add()`` or the ``EP_PREFIX`` directory property is set, -then an external project is built and installed under the specified prefix:: - - TMP_DIR = /tmp - STAMP_DIR = /src/-stamp - DOWNLOAD_DIR = /src - SOURCE_DIR = /src/ - BINARY_DIR = /src/-build - INSTALL_DIR = - -Otherwise, if the ``EP_BASE`` directory property is set then components -of an external project are stored under the specified base:: - - TMP_DIR = /tmp/ - STAMP_DIR = /Stamp/ - DOWNLOAD_DIR = /Download/ - SOURCE_DIR = /Source/ - BINARY_DIR = /Build/ - INSTALL_DIR = /Install/ - -If no ``PREFIX``, ``EP_PREFIX``, or ``EP_BASE`` is specified then the -default is to set ``PREFIX`` to ``-prefix``. Relative paths are -interpreted with respect to the build directory corresponding to the -source directory in which ``ExternalProject_Add`` is invoked. - -If ``SOURCE_DIR`` is explicitly set to an existing directory the project -will be built from it. Otherwise a download step must be specified -using one of the ``DOWNLOAD_COMMAND``, ``CVS_*``, ``SVN_*``, or ``URL`` -options. The ``URL`` option may refer locally to a directory or source -tarball, or refer to a remote tarball (e.g. ``http://.../src.tgz``). - -The ``ExternalProject_Add_Step`` function adds a custom step to an -external project: - -.. code-block:: cmake - - ExternalProject_Add_Step( # Names of project and custom step - [COMMAND cmd...] # Command line invoked by this step - [COMMENT "text..."] # Text printed when step executes - [DEPENDEES steps...] # Steps on which this step depends - [DEPENDERS steps...] # Steps that depend on this step - [DEPENDS files...] # Files on which this step depends - [ALWAYS 1] # No stamp file, step always runs - [EXCLUDE_FROM_MAIN 1] # Main target does not depend on this step - [WORKING_DIRECTORY dir] # Working directory for command - [LOG 1] # Wrap step in script to log output - ) - -The command line, comment, and working directory of every standard and -custom step is processed to replace tokens ````, -````, ````, and ```` with -corresponding property values. +.. command:: ExternalProject_Add + + The ``ExternalProject_Add`` function creates a custom target to drive + download, update/patch, configure, build, install and test steps of an + external project:: + + ExternalProject_Add( [