mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-04 12:49:36 -06:00
FindBoost: Unwrap compatibility INTERFACE targets for legacy variables
Since commit 0dd6772a89 (FindBoost: Add legacy variables and targets for
compatibility, 2019-06-14, v3.15.0-rc2~3^2~1) we extract information
from imported targets provided by upstream `BoostConfig.cmake` files.
However, upstream Boost 1.71 provides some imported targets only for
compatibility. They are just INTERFACE libraries that wrap around the
real target named by `INTERFACE_LINK_LIBRARIES`. Unwrap this layer so
we can extract the real imported location.
Fixes: #19656
This commit is contained in:
@@ -266,6 +266,21 @@ function(_boost_get_existing_target component target_var)
|
||||
foreach(prefix Boost boost)
|
||||
foreach(name IN LISTS names)
|
||||
if(TARGET "${prefix}::${name}")
|
||||
# The target may be an INTERFACE library that wraps around a single other
|
||||
# target for compatibility. Unwrap this layer so we can extract real info.
|
||||
if("${name}" MATCHES "^(python|numpy|mpi_python)([1-9])([0-9])$")
|
||||
set(name_nv "${CMAKE_MATCH_1}")
|
||||
if(TARGET "${prefix}::${name_nv}")
|
||||
get_property(type TARGET "${prefix}::${name}" PROPERTY TYPE)
|
||||
if(type STREQUAL "INTERFACE_LIBRARY")
|
||||
get_property(lib TARGET "${prefix}::${name}" PROPERTY INTERFACE_LINK_LIBRARIES)
|
||||
if("${lib}" STREQUAL "${prefix}::${name_nv}")
|
||||
set(${target_var} "${prefix}::${name_nv}" PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
set(${target_var} "${prefix}::${name}" PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
@@ -8,6 +8,7 @@ set_target_properties(Boost::date_time PROPERTIES
|
||||
IMPORTED_CONFIGURATIONS RELEASE
|
||||
IMPORTED_LOCATION_RELEASE "${CMAKE_CURRENT_LIST_DIR}/lib/libboost_date_time.a"
|
||||
)
|
||||
|
||||
set(Boost_python37_FOUND 1)
|
||||
add_library(Boost::python UNKNOWN IMPORTED)
|
||||
set_target_properties(Boost::python PROPERTIES
|
||||
@@ -15,6 +16,10 @@ set_target_properties(Boost::python PROPERTIES
|
||||
IMPORTED_LOCATION_RELEASE "${CMAKE_CURRENT_LIST_DIR}/lib/libboost_python_release.a"
|
||||
IMPORTED_LOCATION_DEBUG "${CMAKE_CURRENT_LIST_DIR}/lib/libboost_python.a"
|
||||
)
|
||||
# Versioned target alias for compatibility (added by upstream BoostConfig).
|
||||
add_library(Boost::python37 INTERFACE IMPORTED)
|
||||
set_property(TARGET Boost::python37 APPEND PROPERTY INTERFACE_LINK_LIBRARIES Boost::python)
|
||||
|
||||
set(Boost_mpi_python2_FOUND 1)
|
||||
add_library(Boost::mpi_python UNKNOWN IMPORTED)
|
||||
set_target_properties(Boost::mpi_python PROPERTIES
|
||||
|
||||
Reference in New Issue
Block a user