diff options
author | Maik Nijhuis <maik.nijhuis@triopsys.nl> | 2022-08-04 14:09:20 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2022-08-09 12:27:11 (GMT) |
commit | 81fd0d6e265985213ec3d0c1db4b8a6f314481ea (patch) | |
tree | 7f6d7b2e759e4e40729a9e3404d4996db9097dce /Modules/ExternalProject.cmake | |
parent | d9e88721ad22f47196dfcdd1e05d153d28536bc9 (diff) | |
download | CMake-81fd0d6e265985213ec3d0c1db4b8a6f314481ea.zip CMake-81fd0d6e265985213ec3d0c1db4b8a6f314481ea.tar.gz CMake-81fd0d6e265985213ec3d0c1db4b8a6f314481ea.tar.bz2 |
ExternalProject: Fix install on BUILD_ALWAYS+BUILD_BYPRODUCTS with Ninja
The `BUILD_BYPRODUCTS` option causes the ExternalProject's `build` step
in `build.ninja` to have `restat = 1`, so its "always out-of-date"
status caused by `BUILD_ALWAYS` does not propagate to the `install`
step. Mark the latter step as explicitly always out-of-date too.
Fixes: #23820
Diffstat (limited to 'Modules/ExternalProject.cmake')
-rw-r--r-- | Modules/ExternalProject.cmake | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake index c7948cd..2520cf3 100644 --- a/Modules/ExternalProject.cmake +++ b/Modules/ExternalProject.cmake @@ -3829,6 +3829,19 @@ function(_ep_add_install_command name) set(uses_terminal "") endif() + # With BUILD_ALWAYS+BUILD_BYPRODUCTS, Ninja restats the + # build step outputs and may not consider this step to + # be out-of-date. Explicitly mark it out-of-date too. + get_property(build_always + TARGET ${name} + PROPERTY _EP_BUILD_ALWAYS + ) + if(build_always) + set(always 1) + else() + set(always 0) + endif() + set(__cmdQuoted) foreach(__item IN LISTS cmd) string(APPEND __cmdQuoted " [==[${__item}]==]") @@ -3839,6 +3852,7 @@ function(_ep_add_install_command name) COMMAND ${__cmdQuoted} WORKING_DIRECTORY \${binary_dir} DEPENDEES build + ALWAYS \${always} ${log} ${uses_terminal} )" |