summaryrefslogtreecommitdiffstats
path: root/Modules/ExternalProject.cmake
Commit message (Collapse)AuthorAgeFilesLines
* ExternalProject: Fix environment modification ops named with underscoresBrad King2025-11-241-1/+1
| | | | | | | | | | Extend commit e301cbffcc (ExternalProject: Set environment variables, 2025-04-09, v4.2.0-rc1~480^2) and commit 9cb590b843 (ExternalProject: Fix lists and empty commands with environment modification, 2025-09-11, v4.2.0-rc1~9^2) to match `_` in environment modification operation names. Fixes: #27409
* Help: Fix typos and formatting for 4.2 releaseCraig Scott2025-11-141-1/+1
|
* ExternalProject: Fix lists and empty commands with environment modificationEvan Wilde2025-10-131-45/+35
| | | | | | | | | | | | | Fix two bugs from commit e301cbffcc (ExternalProject: Set environment variables, 2025-04-09): * Do not flatten lists in command arguments when adding env mods. * Remove empty `COMMAND`s without injecting corresponding env mods. Fixes: #27125 Fixes: #27126 Co-authored-by: Brad King <brad.king@kitware.com>
* Help: Fix typos in versionadded directivesPeter Kokot2025-09-231-5/+5
|
* ExternalProject: Document module inclusion in project modePeter Kokot2025-09-121-1/+1
| | | | | | | This module can be only included in project mode (when `CMAKE_ROLE` is `PROJECT`). Issue: #26555
* FASTBuild: Add generatorEduard Voronkin2025-08-261-3/+3
| | | | Fixes: #15294
* Help: Add remaining intro code blocks to modulesPeter Kokot2025-08-181-0/+9
| | | | | | | This is a follow-up to add intro code blocks to all remaining utility and find modules. Fixes: #26555
* ExternalProject: Fix env mods with empty commandEvan Wilde2025-08-061-7/+10
| | | | | | | | | Fixes a bug when working with external projects with empty commands and environment modifications. This change ensures that we are only applying environment modifications when there is a command to apply the modification to. Fixes: #27113
* ExternalProject: Set environment variablesEvan Wilde2025-07-221-1/+177
| | | | | | | | | | | | | Add the ability to modify the environment of the various steps running as part of an external project build. This specifically adds the ability to set them on the configure , build , install, and test steps, as well as exposing the `ENVIRONMENT_MODIFICATION` keyword arguments to `ExternalProject_Add_Step`, allowing customization of the environment of custom steps. The values of the environment variable respect the `LIST_SEPARATOR`. Fixes: #26963
* ExternalProject: Remove explicit list of supported archive typesJavier Martín2025-04-291-0/+4
| | | | | | | | | - Do not try to guess the flags to pass to "cmake -E tar" ("z" or not) based on the extension. It is not necessary, as the archive type is autodetected since we switched to libarchive. - Add new tests for .tar.zst archives, which would fail without the change. Fixes: #25062
* LICENSE: Replace references to Copyright.txt with LICENSE.rstKitware Robot2025-03-031-1/+1
| | | | | | | | | | ``` git grep -lz 'Copyright.txt or https://cmake.org/licensing ' | while IFS= read -r -d $'\0' f ; do sed -i '/Copyright.txt or https:\/\/cmake.org\/licensing / { s/Copyright.txt/LICENSE.rst/ }' "$f" ; done ```
* CMP0057: Remove support for OLD behaviorBrad King2025-01-221-5/+0
|
* Merge topic 'remove-old-compatibility'Brad King2025-01-211-1/+0
|\ | | | | | | | | | | | | | | | | | | | | | | | | 381c446ff7 VS: Remove support for appending a platform to the generator name dc24d88062 Remove compatibility with CMake versions older than 3.1 90d814f024 CMP0054: Remove support for OLD behavior 292aaffb78 Source: Remove unused cmCommandArgument{Lexer,Parser} 1150fae89a CMP0053: Remove support for OLD behavior f0b1ca4d70 CMP0052: Remove support for OLD behavior e4fddc8e37 CMP0051: Remove support for OLD behavior Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !10205
| * CMP0054: Remove support for OLD behaviorBrad King2025-01-201-1/+0
| |
* | ExternalProject: Preserve colons and semicolons in the pathCraig Scott2025-01-191-5/+25
|/ | | | | | | | | | The _ep_set_directories() function needs to ensure paths passed in are in the expected CMake path form. The special character that file(TO_CMAKE_PATH) interprets as a path separator must be masked to prevent it splitting paths that contain that character (semicolons on Windows, colons on other platforms). Fixes: #26490
* Renumber post-3.31 development from 3.32 to 4.0Brad King2025-01-161-1/+1
| | | | Issue: #26613
* ExternalProject: Optionally integrate 'make' job server with INSTALL_COMMANDBrad King2024-11-191-0/+19
| | | | | | | | | | | | | | | | | Add an `INSTALL_JOB_SERVER_AWARE` option to `ExternalProject_Add`. When using an explicit `INSTALL_COMMAND`, the generated commands won't use `$(MAKE)` thus failing to connect to the outer make's job server. Add an option enable explicit job server integration. This is the install step's equivalent to the build step's `BUILD_JOB_SERVER_AWARE` option added by commit bc43398e72 (ExternalProject: Enable Make Job Server with Explicit Build Command, 2023-08-09, v3.28.0-rc1~217^2). It is useful when the external project's installation is driven by its build system. Note that with Makefile generators, our default install command does use `$(MAKE)` to connect to the outer make's job server. Issue: #26398
* ExternalProject: Enable all policies in internal scriptsBrad King2024-10-031-1/+1
|
* ExternalProject: Ensure keywords requiring an argument have oneCraig Scott2024-08-301-7/+13
| | | Issue: #21089
* Merge topic 'fetchcontent-direct'Craig Scott2024-05-181-1520/+16
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | 7bf15e49a8 ExternalProject: Fix misleading git update output b2496bf14c FetchContent: Populate directly without a sub-build 173daad58d ExternalProject: Move more internal commands out of main file 462e583267 ExternalProject: Switch download, update and patch to use _EP_ vars 0ccc8e340d ExternalProject: Provide ExternalProject_Add keywords through a macro 91e1015722 ExternalProject: Don't treat YES as a keyword a1743ce1ef ExternalProject: Fix minor formatting error Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: scivision <michael@scivision.dev> Merge-request: !9513
| * ExternalProject: Move more internal commands out of main fileCraig Scott2024-05-131-1517/+8
| | | | | | | | | | | | | | | | | | The commands moved to shared_internal_commands.cmake will soon be used directly by FetchContent, which cannot always include the full ExternalProject.cmake file (e.g. it may be used in CMake script mode). Issue: #21703
| * ExternalProject: Switch download, update and patch to use _EP_ varsCraig Scott2024-05-131-186/+185
| | | | | | | | | | | | | | | | | | | | | | This refactoring prepares for the download, update, and patch steps being called directly from FetchContent instead of always being in a sub-build. When there is no sub-build, there will be no targets to read properties from. This commit moves the information to _EP_... variables, which will always be readable. Issue: #21703
| * ExternalProject: Provide ExternalProject_Add keywords through a macroCraig Scott2024-05-121-49/+54
| | | | | | | | | | | | | | | | This allows things outside of ExternalProject to have access to the list of supported keywords. This will be used by FetchContent in an upcoming change. Issue: #21703
| * ExternalProject: Don't treat YES as a keywordCraig Scott2024-05-121-1/+1
| | | | | | | | | | | | | | | | This ultimately won't change behavior, since YES should never be listed in the "keywords" argument. The original code looks like a bug though, since YES satisfies the criteria for being interpreted as a keyword, and there is logic to short-circuit on TRUE and FALSE. Add YES to that condition to avoid any potential confusion.
| * ExternalProject: Fix minor formatting errorCraig Scott2024-05-121-1/+2
| |
* | Merge topic 'ExternalProject-xcode-effective-platform'Brad King2024-05-141-1/+10
|\ \ | |/ |/| | | | | | | | | 0a3caf0878 ExternalProject: Restore support for Xcode with an effective platform Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !9517
| * ExternalProject: Restore support for Xcode with an effective platformBrad King2024-05-131-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | Revert commit cabad8a37f (ExternalProject: Always use $<CONFIG> for source files, 2023-02-02, v3.27.0-rc1~550^2~3) and restore Xcode-specific behavior intentionally preserved by commit c111d440ce (ExternalProject: Express per-config step stamp file paths using CONFIG genex, 2022-06-08, v3.24.0-rc1~15^2). Unfortunately we still do not have a test case, so leave a comment to avoid reverting this. Issue: #23645 Issue: #23652
* | ExternalProject: Honor CMAKE_TLS_VERIFY environment variableBrad King2024-03-301-9/+19
| | | | | | | | Issue: #23608
* | ExternalProject: Revise TLS_VERIFY wording to use TLS_VERSION patternBrad King2024-03-301-11/+14
| |
* | Merge topic 'ExternalProject-list-separator-docs-example'Brad King2024-03-281-4/+15
|\ \ | | | | | | | | | | | | | | | | | | | | | 5d33f41e23 ExternalProject: reword `LIST_SEPARATOR` to indicate what it *does* 611ffce98c ExternalProject: add an example of `LIST_SEPARATOR` usage Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !9376
| * | ExternalProject: reword `LIST_SEPARATOR` to indicate what it *does*Ben Boeckel2024-03-281-7/+7
| | | | | | | | | | | | | | | | | | | | | Also remove the (IMO) confusing suggestion to have ` ` as a separator as it interferes with things like spaces in argument values (e.g., paths) or generated arguments such as `-GUnix Makefiles`. The new example is likely more common usage of the facility.
| * | ExternalProject: add an example of `LIST_SEPARATOR` usageBen Boeckel2024-03-281-1/+12
| | |
* | | ExternalProject: Add TLS version options for https connectionsBrad King2024-02-291-0/+59
| | | | | | | | | | | | | | | | | | | | | Add a `TLS_VERSION` option and honor `CMAKE_TLS_VERSION` variables. Also map the version to Git options as we already do for `TLS_VERIFY`. Issue: #25701
* | | ExternalProject: Factor out helper to get NETRC optionsBrad King2024-02-291-21/+22
| | |
* | | ExternalProject: Factor out helper to get TLS_CAINFO optionBrad King2024-02-291-9/+13
| | |
* | | ExternalProject: Factor out helper to get TLS_VERIFY optionBrad King2024-02-281-17/+15
| | |
* | | ExternalProject: Revise wording of TLS_VERIFY documentationBrad King2024-02-281-7/+6
| | |
* | | ExternalProject: Prepare for multiple git submodule config optionsBrad King2024-02-281-15/+15
|/ /
* | ExternalProject: Prevent URL list-splitting on special charactersCraig Scott2024-01-271-0/+8
| | | | | | | | | | | | | | | | | | | | | | If a URL contains special characters like parentheses and a few others, they would previously have caused a foreach() call that iterates over the URLs to parse those special characters as separate, unquoted arguments. They would then have effectively split the list of URLs at unexpected places. Prepare the arguments for the foreach() call by using use bracket syntax to robustly handle any URLs that do have unescaped special characters. Issue: #25148
* | ExternalProject: Catch empty REMOTE or LOCAL earlierCraig Scott2024-01-271-0/+7
| | | | | | | | | | | | | | If we are given an empty string for URL, or we have a logic error that leads to the file we download to being an empty string, we will now catch this at CMake configure time instead of whenever the download is attempted at build time.
* | ExternalProject: Update foreach() calls to use IN LISTS and IN ITEMSCraig Scott2024-01-271-13/+13
| |
* | ExternalProject: Remove N^2 add_dependencies() callsCraig Scott2024-01-271-5/+3
| | | | | | | | | | | | | | | | | | | | ExternalProject_Add_StepDependencies() contained a foreach() loop that had another foreach() loop inside it iterating over the same set of values (the dependencies). This resulted in add_dependencies() calls that added the same dependencies to the step target N^2 times. A single call to add_dependencies() with the list of dependencies provides the necessary relationships without the N^2 behavior, and it removes the inner foreach() loop.
* | Merge topic 'revert-ExternalProject-download-byproducts'Brad King2024-01-041-9/+5
|\ \ | |/ | | | | | | | | | | fd3c9876c6 ExternalProject: revert `BYPRODUCTS` for download outputs Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !9097
| * ExternalProject: revert `BYPRODUCTS` for download outputsBen Boeckel2024-01-031-9/+5
| | | | | | | | | | | | | | | | | | | | | | Xcode has been reported to not work at all with this when ExternalProject projects share download files. Revert commit 872daff159 (ExternalProject: declare byproducts for the download step, 2023-09-21, v3.28.0-rc1~27^2) pending further investigation. Fixes: #25525
* | Merge branch 'backport-ci-fedora-39' into ci-fedora-39Brad King2023-11-171-2/+2
|\ \ | |/
| * codespell: Fix typosBrad King2023-11-171-2/+2
| |
* | FetchContent: Pass GHS Variables to subbuildWilliam Sciaroni2023-11-041-0/+3
| | | | | | | | Fixes: #24244
* | ExternalProject: Fix INSTALL step for GHS generatorWilliam Sciaroni2023-10-161-3/+14
|/ | | | Fixes: #25267
* ExternalProject: declare byproducts for the download stepBen Boeckel2023-09-301-5/+9
| | | | | This can surface a conflict where two projects download the same file and get scheduled against each other.
* ExternalProject: Ensure svn --trust-server-cert has dependent optionsCraig Scott2023-08-201-2/+4
| | | | | | | | | | | | If the --trust-server-cert option is given to svn without the --non-interactive option, the command fails with an error. Previously, --non-interactive was always added, but b1c2cb0436a (ExternalProject: Make SVN interactive with USES_TERMINAL_{DOWNLOAD,UPDATE}, 2022-05-06) changed the behavior to only add it if the relevant USES_TERMINAL_... option was set to true. Fixes: #25197