2020-01-02 06:44:10 +01:00
# This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
2016-03-14 15:27:33 +01:00
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2024-07-18 12:42:31 +02:00
set ( BOOST_SEARCH_HINTS )
2015-01-19 00:06:15 +00:00
if ( WIN32 )
if ( DEFINED ENV{BOOST_ROOT} )
set ( BOOST_ROOT $ENV{ BOOST_ROOT } )
endif ()
2024-07-18 12:42:31 +02:00
if ( DEFINED BOOST_ROOT AND MSVC )
# insert a dot (.) character before last digit of MSVC_TOOLSET_VERSION
# turn 143 into 14.3
string ( LENGTH "${MSVC_TOOLSET_VERSION}" _BOOST_MSVC_TOOLSET_VERSION_LENGTH )
math ( EXPR _BOOST_MSVC_TOOLSET_VERSION_LENGTH "${_BOOST_MSVC_TOOLSET_VERSION_LENGTH} - 1" OUTPUT_FORMAT DECIMAL )
string ( SUBSTRING "${MSVC_TOOLSET_VERSION}" 0 ${ _BOOST_MSVC_TOOLSET_VERSION_LENGTH } _BOOST_MSVC_TOOLSET_VERSION_MAJOR )
string ( SUBSTRING "${MSVC_TOOLSET_VERSION}" ${ _BOOST_MSVC_TOOLSET_VERSION_LENGTH } -1 _BOOST_MSVC_TOOLSET_VERSION_MINOR )
2024-09-21 00:06:52 +02:00
file ( TO_CMAKE_PATH "${BOOST_ROOT}" BOOST_ROOT )
2025-12-23 13:38:26 +01:00
while ( _BOOST_MSVC_TOOLSET_VERSION_MINOR GREATER_EQUAL 0 )
list ( APPEND BOOST_SEARCH_HINTS "${BOOST_ROOT}/lib${PLATFORM}-msvc-${_BOOST_MSVC_TOOLSET_VERSION_MAJOR}.${_BOOST_MSVC_TOOLSET_VERSION_MINOR}/cmake" )
math ( EXPR _BOOST_MSVC_TOOLSET_VERSION_MINOR "${_BOOST_MSVC_TOOLSET_VERSION_MINOR} - 1" OUTPUT_FORMAT DECIMAL )
endwhile ()
2024-07-18 12:42:31 +02:00
unset ( _BOOST_MSVC_TOOLSET_VERSION_LENGTH )
unset ( _BOOST_MSVC_TOOLSET_VERSION_MAJOR )
unset ( _BOOST_MSVC_TOOLSET_VERSION_MINOR )
endif ()
2015-01-19 00:06:15 +00:00
set ( Boost_USE_STATIC_LIBS ON )
set ( Boost_USE_MULTITHREADED ON )
set ( Boost_USE_STATIC_RUNTIME OFF )
endif ()
2017-02-27 22:31:05 +01:00
if ( WIN32 )
# On windows the requirements are higher according to the wiki.
2023-10-13 21:10:01 +02:00
set ( BOOST_REQUIRED_VERSION 1.78 )
2017-02-27 22:31:05 +01:00
else ()
2024-04-22 11:52:58 +02:00
set ( BOOST_REQUIRED_VERSION 1.74 )
2017-02-27 22:31:05 +01:00
endif ()
2024-07-18 12:42:31 +02:00
find_package ( Boost ${ BOOST_REQUIRED_VERSION }
REQUIRED
COMPONENTS
filesystem
program_options
regex
locale
CONFIG
HINTS
${ BOOST_SEARCH_HINTS } )
2016-12-10 19:11:10 +01:00
2021-06-13 18:16:53 +02:00
if ( NOT Boost_FOUND )
if ( NOT DEFINED ENV{BOOST_ROOT} AND NOT DEFINED Boost_DIR AND NOT DEFINED BOOST_ROOT AND NOT DEFINED BOOSTROOT )
message ( FATAL_ERROR "No BOOST_ROOT environment variable could be found! Please make sure it is set and the points to your Boost installation." )
endif ()
endif ()
2016-03-14 15:27:33 +01:00
add_library ( boost INTERFACE )
target_link_libraries ( boost
INTERFACE
2026-07-16 00:30:27 +02:00
Boost::filesystem
Boost::program_options
Boost::regex
Boost::locale )
2016-03-14 15:27:33 +01:00
2016-12-10 19:11:10 +01:00
target_compile_definitions ( boost
INTERFACE
2024-07-15 15:24:35 +02:00
BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE
BOOST_ASIO_NO_DEPRECATED
BOOST_BIND_NO_PLACEHOLDERS
BOOST_SYSTEM_USE_UTF8 )
2016-12-10 19:11:10 +01:00
2021-02-21 22:16:13 +01:00
if ( WITH_BOOST_STACKTRACE AND NOT WIN32 )
2024-07-15 15:24:35 +02:00
message ( STATUS "libbacktrace will be linked" )
include ( CheckIncludeFile )
2021-02-21 22:16:13 +01:00
if ( BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE )
2024-07-15 15:24:35 +02:00
check_include_file ( "${BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE}" HAS_BACKTRACE )
target_compile_definitions ( boost
INTERFACE
BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE= ${ BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE } )
2021-02-21 22:16:13 +01:00
else ()
2024-07-15 15:24:35 +02:00
check_include_file ( "backtrace.h" HAS_BACKTRACE )
2021-02-21 22:16:13 +01:00
endif ()
if ( NOT HAS_BACKTRACE )
message ( FATAL_ERROR "Required header 'backtrace.h' not found. If building with a compiler other than GCC, please specify the full path in the CMake option BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE." )
endif ()
target_compile_definitions ( boost
INTERFACE
2024-07-15 15:24:35 +02:00
BOOST_STACKTRACE_USE_BACKTRACE )
2021-02-21 22:16:13 +01:00
target_link_libraries ( boost
INTERFACE
backtrace )
endif ()