diff options
author | Robert Maynard <robert.maynard@kitware.com> | 2019-07-25 16:00:50 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-07-25 16:59:21 (GMT) |
commit | cf04da7e702014c7cc163dd4a78bccdeff813210 (patch) | |
tree | dfedba5f466fc6dcacc85f51bf20d8275c8cfb99 /Modules | |
parent | 39c572c9c932802595eb50594e24c961cfa1151b (diff) | |
download | CMake-cf04da7e702014c7cc163dd4a78bccdeff813210.zip CMake-cf04da7e702014c7cc163dd4a78bccdeff813210.tar.gz CMake-cf04da7e702014c7cc163dd4a78bccdeff813210.tar.bz2 |
FindMPI: make sure computed link flags are not de-duplicated
In commit f7eaa342de (FindMPI: Store imported target link flags as a
list instead of a string, 2019-06-14, v3.15.0-rc2~2^2) we used
`separate_arguments` to parse the extracted link flags and add them to
`INTERFACE_LINK_LIBRARIES`. That property is not meant for link flags
and CMake may de-duplicate them. This is particularly problematic for
flags like `-Wl,-rpath -Wl,/path1 -Wl,-rpath -Wl,/path2`.
In commit 39c572c9c9 (FindMPI: Updated to use INTERFACE_LINK_OPTIONS,
2019-06-24) we moved the parsed flags over to `INTERFACE_LINK_OPTIONS`,
but that may still perform de-duplication. Avoid the parsing and
de-duplication of flags by passing the original string via `SHELL:`
instead.
Fixes: #19516
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/FindMPI.cmake | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/Modules/FindMPI.cmake b/Modules/FindMPI.cmake index fc9810c..9471be8 100644 --- a/Modules/FindMPI.cmake +++ b/Modules/FindMPI.cmake @@ -1143,9 +1143,7 @@ macro(_MPI_create_imported_target LANG) set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_COMPILE_DEFINITIONS "${MPI_${LANG}_COMPILE_DEFINITIONS}") if(MPI_${LANG}_LINK_FLAGS) - separate_arguments(_MPI_${LANG}_LINK_FLAGS NATIVE_COMMAND "${MPI_${LANG}_LINK_FLAGS}") - set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_LINK_OPTIONS "${_MPI_${LANG}_LINK_FLAGS}") - unset(_MPI_${LANG}_LINK_FLAGS) + set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_LINK_OPTIONS "SHELL:${MPI_${LANG}_LINK_FLAGS}") endif() # If the compiler links MPI implicitly, no libraries will be found as they're contained within # CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES already. |