2024-06-14 21:37:46 +00:00
|
|
|
#
|
|
|
|
# Loads the boost library giving the priority to the system package first, with a fallback to FetchContent.
|
|
|
|
#
|
|
|
|
include_guard(GLOBAL)
|
|
|
|
|
2024-10-04 01:42:16 +00:00
|
|
|
set(BOOST_VERSION 1.86)
|
2024-06-14 21:37:46 +00:00
|
|
|
set(BOOST_COMPONENTS
|
|
|
|
filesystem
|
|
|
|
locale
|
|
|
|
log
|
|
|
|
program_options
|
|
|
|
system) # system is not used by Sunshine, but by Simple-Web-Server, added here for convenience
|
|
|
|
|
|
|
|
if(BOOST_USE_STATIC)
|
|
|
|
set(Boost_USE_STATIC_LIBS ON) # cmake-lint: disable=C0103
|
|
|
|
endif()
|
|
|
|
|
2024-10-04 01:42:16 +00:00
|
|
|
find_package(Boost CONFIG ${BOOST_VERSION} COMPONENTS ${BOOST_COMPONENTS})
|
2024-06-14 21:37:46 +00:00
|
|
|
if(NOT Boost_FOUND)
|
|
|
|
message(STATUS "Boost v${BOOST_VERSION}.x package not found in the system. Falling back to FetchContent.")
|
|
|
|
include(FetchContent)
|
|
|
|
|
|
|
|
# Avoid warning about DOWNLOAD_EXTRACT_TIMESTAMP in CMake 3.24:
|
|
|
|
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
|
|
|
|
cmake_policy(SET CMP0135 NEW)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# more components required for compiling boost targets
|
|
|
|
list(APPEND BOOST_COMPONENTS
|
|
|
|
asio
|
|
|
|
crc
|
|
|
|
format
|
|
|
|
process
|
|
|
|
property_tree)
|
|
|
|
|
|
|
|
set(BOOST_ENABLE_CMAKE ON)
|
|
|
|
|
|
|
|
# Limit boost to the required libraries only
|
|
|
|
set(BOOST_INCLUDE_LIBRARIES
|
|
|
|
${BOOST_COMPONENTS})
|
|
|
|
set(BOOST_URL
|
2024-10-04 01:42:16 +00:00
|
|
|
"https://github.com/boostorg/boost/releases/download/boost-1.86.0/boost-1.86.0-cmake.tar.xz")
|
2024-06-14 21:37:46 +00:00
|
|
|
set(BOOST_HASH
|
2024-10-04 01:42:16 +00:00
|
|
|
"MD5=D02759931CEDC02ADED80402906C5EB6")
|
2024-06-14 21:37:46 +00:00
|
|
|
|
|
|
|
if(CMAKE_VERSION VERSION_LESS "3.24.0")
|
|
|
|
FetchContent_Declare(
|
|
|
|
Boost
|
|
|
|
URL ${BOOST_URL}
|
|
|
|
URL_HASH ${BOOST_HASH}
|
|
|
|
)
|
|
|
|
elseif(APPLE AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.25.0")
|
|
|
|
# add SYSTEM to FetchContent_Declare, this fails on debian bookworm
|
|
|
|
FetchContent_Declare(
|
|
|
|
Boost
|
|
|
|
URL ${BOOST_URL}
|
|
|
|
URL_HASH ${BOOST_HASH}
|
|
|
|
SYSTEM # requires CMake 3.25+
|
|
|
|
OVERRIDE_FIND_PACKAGE # requires CMake 3.24+, but we have a macro to handle it for other versions
|
|
|
|
)
|
|
|
|
elseif(CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
|
|
|
|
FetchContent_Declare(
|
|
|
|
Boost
|
|
|
|
URL ${BOOST_URL}
|
|
|
|
URL_HASH ${BOOST_HASH}
|
|
|
|
OVERRIDE_FIND_PACKAGE # requires CMake 3.24+, but we have a macro to handle it for other versions
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
FetchContent_MakeAvailable(Boost)
|
|
|
|
set(FETCH_CONTENT_BOOST_USED TRUE)
|
|
|
|
|
|
|
|
set(Boost_FOUND TRUE) # cmake-lint: disable=C0103
|
|
|
|
set(Boost_INCLUDE_DIRS # cmake-lint: disable=C0103
|
|
|
|
"$<BUILD_INTERFACE:${Boost_SOURCE_DIR}/libs/headers/include>;$<INSTALL_INTERFACE:include/boost-1_85>")
|
|
|
|
|
|
|
|
if(WIN32)
|
|
|
|
# Windows build is failing to create .h file in this directory
|
|
|
|
file(MAKE_DIRECTORY ${Boost_BINARY_DIR}/libs/log/src/windows)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(Boost_LIBRARIES "") # cmake-lint: disable=C0103
|
|
|
|
foreach(component ${BOOST_COMPONENTS})
|
|
|
|
list(APPEND Boost_LIBRARIES "Boost::${component}")
|
|
|
|
endforeach()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
message(STATUS "Boost include dirs: ${Boost_INCLUDE_DIRS}")
|
|
|
|
message(STATUS "Boost libraries: ${Boost_LIBRARIES}")
|