mirror of
https://github.com/boostorg/boost_install.git
synced 2026-01-21 04:42:28 +00:00
106 lines
2.8 KiB
CMake
106 lines
2.8 KiB
CMake
# Copyright 2019 Peter Dimov
|
|
# Distributed under the Boost Software License, Version 1.0.
|
|
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
|
|
|
message(STATUS "Found Boost ${Boost_VERSION} at ${Boost_DIR}")
|
|
|
|
# Output requested configuration (f.ex. "REQUIRED COMPONENTS filesystem")
|
|
|
|
if(Boost_FIND_QUIETLY)
|
|
set(_BOOST_CONFIG "${_BOOST_CONFIG} QUIET")
|
|
endif()
|
|
|
|
if(Boost_FIND_REQUIRED)
|
|
set(_BOOST_CONFIG "${_BOOST_CONFIG} REQUIRED")
|
|
endif()
|
|
|
|
foreach(__boost_comp IN LISTS Boost_FIND_COMPONENTS)
|
|
if(${Boost_FIND_REQUIRED_${__boost_comp}})
|
|
list(APPEND _BOOST_COMPONENTS ${__boost_comp})
|
|
else()
|
|
list(APPEND _BOOST_OPTIONAL_COMPONENTS ${__boost_comp})
|
|
endif()
|
|
endforeach()
|
|
|
|
if(_BOOST_COMPONENTS)
|
|
set(_BOOST_CONFIG "${_BOOST_CONFIG} COMPONENTS ${_BOOST_COMPONENTS}")
|
|
endif()
|
|
|
|
if(_BOOST_OPTIONAL_COMPONENTS)
|
|
set(_BOOST_CONFIG "${_BOOST_CONFIG} OPTIONAL_COMPONENTS ${_BOOST_OPTIONAL_COMPONENTS}")
|
|
endif()
|
|
|
|
if(_BOOST_CONFIG)
|
|
message(STATUS " Requested configuration:${_BOOST_CONFIG}")
|
|
endif()
|
|
|
|
unset(_BOOST_CONFIG)
|
|
unset(_BOOST_COMPONENTS)
|
|
unset(_BOOST_OPTIONAL_COMPONENTS)
|
|
|
|
# find_dependency doesn't forward arguments until 3.9, so we have to roll our own
|
|
|
|
macro(boost_find_dependency dep req)
|
|
|
|
set(_BOOST_QUIET)
|
|
if(Boost_FIND_QUIETLY)
|
|
set(_BOOST_QUIET QUIET)
|
|
endif()
|
|
|
|
set(_BOOST_REQUIRED)
|
|
if(${req} AND Boost_FIND_REQUIRED)
|
|
set(_BOOST_REQUIRED REQUIRED)
|
|
endif()
|
|
|
|
get_filename_component(_BOOST_CMAKEDIR "${CMAKE_CURRENT_LIST_DIR}/../" ABSOLUTE)
|
|
|
|
if(Boost_DEBUG)
|
|
message(STATUS "BoostConfig: find_package(boost_${dep} ${Boost_VERSION} EXACT CONFIG ${_BOOST_REQUIRED} ${_BOOST_QUIET} HINTS ${_BOOST_CMAKEDIR})")
|
|
endif()
|
|
find_package(boost_${dep} ${Boost_VERSION} EXACT CONFIG ${_BOOST_REQUIRED} ${_BOOST_QUIET} HINTS ${_BOOST_CMAKEDIR})
|
|
|
|
string(TOUPPER ${dep} _BOOST_DEP)
|
|
set(Boost_${_BOOST_DEP}_FOUND ${boost_${dep}_FOUND})
|
|
|
|
unset(_BOOST_REQUIRED)
|
|
unset(_BOOST_QUIET)
|
|
unset(_BOOST_CMAKEDIR)
|
|
unset(_BOOST_DEP)
|
|
|
|
endmacro()
|
|
|
|
# Find boost_headers
|
|
|
|
boost_find_dependency(headers 1)
|
|
|
|
if(NOT boost_headers_FOUND)
|
|
|
|
set(Boost_FOUND 0)
|
|
set(Boost_NOT_FOUND_MESSAGE "A required dependency, boost_headers, has not been found.")
|
|
|
|
return()
|
|
|
|
endif()
|
|
|
|
# Find components
|
|
|
|
foreach(__boost_comp IN LISTS Boost_FIND_COMPONENTS)
|
|
|
|
boost_find_dependency(${__boost_comp} ${Boost_FIND_REQUIRED_${__boost_comp}})
|
|
|
|
endforeach()
|
|
|
|
# Compatibility targets
|
|
|
|
if(NOT TARGET Boost::boost)
|
|
|
|
add_library(Boost::boost INTERFACE IMPORTED)
|
|
set_property(TARGET Boost::boost APPEND PROPERTY INTERFACE_LINK_LIBRARIES Boost::headers)
|
|
|
|
# All Boost:: targets already disable autolink
|
|
add_library(Boost::diagnostic_definitions INTERFACE IMPORTED)
|
|
add_library(Boost::disable_autolinking INTERFACE IMPORTED)
|
|
add_library(Boost::dynamic_linking INTERFACE IMPORTED)
|
|
|
|
endif()
|