summaryrefslogtreecommitdiffstats
path: root/Modules/ExternalProject.cmake
Commit message (Collapse)AuthorAgeFilesLines
* ExternalProject: add LOG_OUTPUT_ON_FAILURE optionWouter Klouwen2018-12-201-4/+47
| | | | | | | | This option only has an effect if at least one of the other LOG_<step> options is enabled. If an error occurs for a step which has logging to file enabled, that step's output will be printed to the console. For cases where a large amount of output is recorded, just the end of that output may be printed to the console.
* ExternalProject: add LOG_PATCH option to log the patch commandWouter Klouwen2018-10-261-0/+11
| | | | | | Most steps support the logging into a file but the patch command is a notable exception. This commit adds the LOG_PATCH options that acts as the other LOG_* options.
* ExternalProject: option LOG_MERGED_STDOUTERR to combine stdout and stderrWouter Klouwen2018-10-191-3/+14
| | | | | | | | | | | | In some circumstances the user of ExternalProject may not desire the split log files for stdout and stderr. In particular with a project has many errors it can be difficult to correlate the output error with the command that it resulted from. This commit adds the LOG_MERGED_STDOUTERR option that when enabled outputs into a unified <name>-<step>.log for each step. If disabled it will default to the previous behaviour of <name>-<step>-out.log and <name>-<step>-err.log.
* ExternalProject: add LOG_DIR option that allows overriding of log locationWouter Klouwen2018-10-191-7/+17
| | | | | | | | | | | | In some situations it can be helpful to separate out the location of the log files from the location of the stamp files. For instance if you have a continuous integration that exposes the location where log files are stored. This commit adds an option that allows a user to override the default behaviour of putting the log files in STAMP_DIR called LOG_DIR. The previous behaviour of putting the log files into the STAMP_DIR applies if LOG_DIR is not specified.
* Help: Override pygments CMakeLexer to support <..> and [..]Joachim Wuttke (o)2018-10-181-6/+18
| | | | | | | | | | | | | | | | | | | | | | * The code snippets in the docs consist of CMake code mixed with syntax definition punctuation like < > [ ] ... Therefore a pure CMake lexer is inadequate. Here it is replaced by a CMake syntax definition parser. * Fixed syntax definition snippets in FindPkgConfig.cmake to make best use of syntax highlighting. This source file is the hardest to support because it contains comparison operators <= = >=, which need special attention to avoid confusion with the placeholder indicators <...>. * Fixed syntax in execute_process.rst (there were unbalanced brackets). * Disabled syntax highlighting for long string examples in cmake-language.7.rst. * No highlighting of removed syntax in CMP0049 * To inspect the outcome of this patch, see e.g. the pages * manual/cmake-buildsystem.7.html * module/ExternalProject.html * module/FindPkgConfig.html which are particularly rich in complex code snippets.
* ExternalProject: Report error if local variables are not definedJean-Christophe Fillion-Robin2018-09-061-0/+5
| | | | | | | | | | | | | Since in some situations, ExternalProject module may be included in a sub-directory, functions will be available in the global scope but local variables like "_ep_keywords_<keyword>" will not be defined, this commit checks and reports an error indicating that the ExternalProject module must be explicitly included before using any of the ExternalProject_* functions that require the module's inclusion within the current scope or above. Co-authored-by: Pablo Hernandez <pablo.hernandez@kitware.com> Co-authored-by: Craig Scott <craig.scott@crascit.com>
* Merge topic 'ep-support-passing-var-ending-with-notfound'Brad King2018-06-051-1/+1
|\ | | | | | | | | | | | | 7ad5165c67 ExternalProject: Fix cache generation when args end with "-NOTFOUND" Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !2127
| * ExternalProject: Fix cache generation when args end with "-NOTFOUND"Jean-Christophe Fillion-Robin2018-06-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | Generalize the fix in commit v3.11.0-rc4~8^2 (ExternalProject: Fix cache generation when last args ends with "-NOTFOUND", 2018-03-10) to work for any argument rather than just the last one. ExternalProject can now successfully generate the cache file when any (not only the last one) cache variable associated with either `CMAKE_CACHE_ARGS` or `CMAKE_DEFAULT_CACHE_ARGS` configure step option is set to a `<value>` ending with `-NOTFOUND`.
* | ExternalProject: Improve URL_HASH argument descriptionMatt McCormick2018-06-041-3/+3
|/ | | | | | | | The previous documentation suggested ALGO=MD5=d7a3dc7757a35df3dbb890f7dee0976b for example.
* ExternalProject: Fix cache generation when last args ends with "-NOTFOUND"Jean-Christophe Fillion-Robin2018-03-121-4/+14
|
* Merge topic 'use_generator_is_multi_config'Brad King2018-01-081-4/+7
|\ | | | | | | | | | | | | | | 3c413e2a GENERATOR_IS_MULTI_CONFIG: Use for multi-config checks in Modules c267ea1c GENERATOR_IS_MULTI_CONFIG: Use for multi-config checks in Tests Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1627
| * GENERATOR_IS_MULTI_CONFIG: Use for multi-config checks in ModulesCraig Scott2017-12-291-4/+7
| |
* | Various typo fixesLuz Paz2018-01-031-1/+1
|/ | | | Some are user-facing. Others are source comments.
* ExternalProject: Support substituting <DOWNLOAD_DIR>Craig Scott2017-12-061-3/+4
|
* ExternalProject: Propagate the generator instanceBrad King2017-10-191-0/+15
| | | | | | | | When the `CMAKE_GENERATOR` option is given to `ExternalProject_Add`, look also for option `CMAKE_GENERATOR_INSTANCE` to pass on to cmake as a cache definition. When no `CMAKE_GENERATOR` option is given explicitly then use the current project's `CMAKE_GENERATOR_INSTANCE` (since we already use its CMAKE_GENERATOR).
* Merge topic 'curl_netrc_options'Brad King2017-10-191-2/+44
|\ | | | | | | | | | | | | | | | | | | | | d45aa38a Add dev notes for topic 'curl_netrc_options' 60c272b6 ExternalProject: Add support for NETRC and NETRC_FILE suboption 754e39dd Add testcases for file(DOWNLOAD|UPLOAD) netrc options 5d67e902 file(DOWNLOAD|UPLOAD): Add 'NETRC' and 'NETRC_FILE' suboption Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Ruslan Baratov <ruslan_baratov@yahoo.com> Merge-request: !1376
| * ExternalProject: Add support for NETRC and NETRC_FILE suboptionShane Parris2017-10-181-2/+44
| |
* | ExternalProject: Avoid if() auto-dereferene in quoted argumentsBrad King2017-10-111-0/+5
|/ | | | | | | | The implementation of this module doesn't expect such dereferences to happen, but can when a project sets a variable called `x`. Set `CMP0054` explicitly to get its NEW behavior. Fixes: #17335
* ExternalProject: Refactor code introducing _ep_get_complete_stampfileJean-Christophe Fillion-Robin2017-09-281-5/+11
|
* ExternalProject: Prevent COMMAND from being treated as a true keywordCraig Scott2017-09-021-0/+8
| | | | | | | | | | | | | | | The known keywords for each function are obtained by scraping the documentation for lines matching a particular regular expression. In commit 8842a027 (ExternalProject: Improve documentation, 2017-07-09), the docs were overhauled and the COMMAND docs subsequently matched the regular expression when they shouldn't have. This made COMMAND appear as a true keyword, which thwarted the special handling logic elsewhere for the intended use of COMMAND arguments. This commit contains a workaround for issue #17229 to force a dependency of the patch step on the update step to ensure a predictable step order. Fixes: #17198
* ExternalProject: Improve documentationCraig Scott2017-07-171-374/+821
| | | | | | | | | | | - Added clearer structure by grouping the options into logical sections. - Expanded the details for many of the options. - Added Examples section to show how to use the various commands. - Specifically highlighted that the contents of SOURCE_DIR may be lost if a download method is also provided. - Updated argument-matching regex to be more robust and account for the varying leading spaces before keywords in the docs. - Updated tests to account for slightly changed error messages.
* Use string(APPEND) in ModulesDaniel Pfeifer2017-05-171-4/+4
| | | | | | | Automate with: find Modules -type f -print0 | xargs -0 perl -i -0pe \ 's/set\(([a-zA-Z0-9_\$\{\}]+)(\s+)"\$\{\1\}([^"])/string(APPEND \1\2"\3/g'
* ExternalProject: Run `git checkout` with `--` to clarify argumentsBrad King2017-04-031-4/+10
| | | | | | | | | Fix the case when the tag name to be checked out also happens to match a path name. Unfortunately we cannot do this for Git versions prior to 1.8.5 because they do not "do what I mean" to checkout remote branches when the `--` argument is given. Fixes: #16678
* Merge topic 'ExternalProject-fix-remote-branch'Brad King2017-04-031-1/+4
|\ | | | | | | | | | | | | 6f3838c0 ExternalProject: Fix regression in GIT_TAG with remote branch name Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !649
| * ExternalProject: Fix regression in GIT_TAG with remote branch nameBrad King2017-03-311-1/+4
| | | | | | | | | | | | | | | | | | | | The change in commit v3.8.0-rc2~7^2 (ExternalProject: Run `git checkout` with `--` to clarify arguments, 2017-02-24) broke the case of `GIT_TAG some-remote-branch` because an explicit `--` means that the preceding argument is a tree-ish instead of a branch. Revert the change and leave a comment. Fixes: #16763
| * Merge branch 'ExternalProject-checkout-clarify' into releaseBrad King2017-02-241-1/+1
| |\
* | | ExternalProject: only append `COMMAND` if actually adding a commandBen Boeckel2017-02-271-3/+2
| | | | | | | | | | | | Fixes #16544.
* | | Merge topic 'ExternalProject-checkout-clarify'Brad King2017-02-271-1/+1
|\ \ \ | |/ / |/| / | |/ | | a9fa6a2c ExternalProject: Run `git checkout` with `--` to clarify arguments
| * ExternalProject: Run `git checkout` with `--` to clarify argumentsBrad King2017-02-241-1/+1
| | | | | | | | | | | | | | Fix the case when the tag name to be checked out also happens to match a path name. Fixes: #16678
* | ExternalProject: Clarify documented role of `INSTALL_DIR`Brad King2017-02-211-1/+4
| | | | | | | | | | | | It does not actually configure the project to install to the given location. That must be done by passing the `<INSTALL_DIR>` placeholder to the external project configuration step.
* | ExternalProject: Clarify documented role of `INSTALL_COMMAND`Wilfried Goesgens2017-02-211-1/+5
|/ | | | | It is for the install step of the external project and does not affect installation of the calling project.
* ExternalProject: Restore case-insensitive download hash checkBrad King2017-01-171-1/+1
| | | | | | | | | | Refactoring in commit v3.6.0-rc1~47^2 (ExternalProject: Re-implement download logic as a dedicated script, 2016-05-19) accidentally made the download hash check case-sensitive. The hash comparison is done in hex strings, so restore case-insensitive comparison since the case of the hex digits does not matter. Fixes: #16568
* ExternalProject: Do not trip over pre-existing 'cmd' variableKarsten Sperling2016-11-171-68/+65
| | | | | | | | | Callers of `_ep_get_build_command` do not initialize the output variable they pass and expect the function to unconditionally set it. Revise the function to not check its own output variable. Otherwise if a `cmd` variable happens to be set when `ExternalProject_Add` is called then it will be erroneously used as the default `BUILD`, `TEST`, and `INSTALL` command.
* Merge topic 'add-SHA-3'Brad King2016-11-151-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f636d1e7 Help: Add notes for topic 'add-SHA-3' cb5dba8e Tests: Add SHA-3 algorithm coverage to CPack checksum test a9fa6099 ExternalProject: Add support for SHA-3 algorithms b4ffd26f ExternalData: Add support for SHA-3 algorithms 60939702 file: Add support for SHA-3 algorithms 92f95aed string: Add support for SHA-3 algorithms c326209f cmCryptoHash: Add support for SHA-3 algorithms 979e8ba6 Help: De-duplicate and spell out supported hash algorithms 7a79f7e3 librhash: Activate SHA-3 implementation 87584b5e Merge branch 'upstream-librhash' into add-SHA-3 7fcbd47e librhash 2016-11-06 (de79828d) c50c32a3 librhash: Update import script to add SHA-3 implementation
| * ExternalProject: Add support for SHA-3 algorithmsBrad King2016-11-111-1/+1
| |
* | ExternalProject: Fix UPDATE_DISCONNECTED with empty update stepsBrad King2016-11-151-2/+2
| | | | | | | | | | | | | | | | | | When `UPDATE_DISCONNECTED` is enabled the post-update steps unconditionally depend on a `skip-update` step instead of `update`. Make `skip-update` available whenever `UPDATE_DISCONNECTED` is enabled, whether there is a real update step or not. Closes: #16428
* | ExternalProject: Allow passing config flags to git cloneChristian Fetzer2016-11-091-2/+12
|/ | | | | | | Add a `GIT_CONFIG` parameter that allows to specify `--config` flags that are passed to the git clone command. This can be used to specify for example `core.autocrlf=true`. The `--config` parameter is supported since Git 1.7.7.
* Merge topic 'external-project-clone-progress'Brad King2016-10-201-3/+14
|\ | | | | | | | | | | e89fbfaf ExternalProject: support GIT_PROGRESS argument 64aa29b7 ExternalProject: fix typo
| * ExternalProject: support GIT_PROGRESS argumentBen Boeckel2016-10-181-2/+13
| |
| * ExternalProject: fix typoBen Boeckel2016-10-181-1/+1
| |
* | ExternalProject: support extracting the configure commandBen Boeckel2016-10-191-20/+27
| | | | | | | | | | | | | | | | | | Previously, the configure command generated by ExternalProject was not accessible prior to actually adding the targets. This makes the CMake configure command accessible with just a call to _ep_parse_arguments. Future work will leverage this to support custom environment settings on a per-project basis.
* | Merge topic 'external-project-source-subdir-usage'Brad King2016-10-191-8/+9
|\ \ | |/ |/| | | | | | | 615f3ed2 ExternalProject: make SOURCE_SUBDIR directly appendable fdce782b ExternalProject: error out only if the property is unset
| * ExternalProject: make SOURCE_SUBDIR directly appendableBen Boeckel2016-10-181-6/+6
| | | | | | | | | | This allows it to be used in expansions without being conditional based on its value.
| * ExternalProject: error out only if the property is unsetBen Boeckel2016-10-181-2/+3
| | | | | | | | | | Property values may be empty; instead make sure they exist and allow for empty values.
* | ExternalProject: Fix regression in passing list to CMAKE_CACHE_ARGSMax Smolens2016-10-101-1/+1
|/ | | | | | | | | | Fix passing a list to the CMAKE_CACHE_ARGS and CMAKE_CACHE_DEFAULT_ARGS options of ExternalProject_Add. Following commit v3.7.0-rc1~273^2~1 (prefer list(APPEND) over string(APPEND) where appropriate, 2016-08-08), the semicolon list separator after the first list element was missing in the generated cache.
* Simplify CMake per-source license noticesBrad King2016-09-271-14/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | Per-source copyright/license notice headers that spell out copyright holder names and years are hard to maintain and often out-of-date or plain wrong. Precise contributor information is already maintained automatically by the version control tool. Ultimately it is the receiver of a file who is responsible for determining its licensing status, and per-source notices are merely a convenience. Therefore it is simpler and more accurate for each source to have a generic notice of the license name and references to more detailed information on copyright holders and full license terms. Our `Copyright.txt` file now contains a list of Contributors whose names appeared source-level copyright notices. It also references version control history for more precise information. Therefore we no longer need to spell out the list of Contributors in each source file notice. Replace CMake per-source copyright/license notice headers with a short description of the license and links to `Copyright.txt` and online information available from "https://cmake.org/licensing". The online URL also handles cases of modules being copied out of our source into other projects, so we can drop our notices about replacing links with full license text. Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority of the replacements mechanically. Manually fix up shebang lines and trailing newlines in a few files. Manually update the notices in a few files that the script does not handle.
* ExternalProject: Add HTTP_HEADERRuslan Baratov2016-09-191-2/+16
|
* ExternalProject: Add HTTP_{USERNAME,PASSWORD}Ruslan Baratov2016-09-151-2/+15
|
* Merge topic 'ExternalProject-SOURCE_SUBDIR'Brad King2016-08-161-5/+23
|\ | | | | | | | | a8345d65 ExternalProject: Add SOURCE_SUBDIR option
| * ExternalProject: Add SOURCE_SUBDIR optionMatthew Woehlke2016-08-161-5/+23
| | | | | | | | | | | | | | | | | | | | | | | | Add a new SOURCE_SUBDIR option to ExternalProject_Add that allows specifying the location of the CMakeLists.txt to use as the project root relative to the SOURCE_DIR. This is helpful for projects that have unusual layouts, or projects that provide both a superbuild and project-only build depending on which CMakeLists.txt is used. Fixes: #15118