mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-10 23:07:59 +00:00
cmake: get and use only actual boost dependencies of libtorrent
With pkg-config we can get a list of Boost components from Libtorrent dependencies and make qBittorrent depend only on these libraries in turn. For Windows user may provide a custom list via LibtorrentRasterbar_CUSTOM_BOOST_DEPENDENCIES variable or use generic list which consists of date_time, system, chrono, random, thread. As a note: in case of using fully C++11 build, the actual list contains only boost system library.
This commit is contained in:
parent
68e8f565e2
commit
0cb9884965
@ -14,6 +14,11 @@
|
|||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
|
|
||||||
|
macro(_detect_boost_components _outComponets librariesList)
|
||||||
|
string(REGEX MATCHALL "boost_[a-z_]+[-a-z]*" _boost_libraries "${librariesList}")
|
||||||
|
string(REGEX REPLACE "boost_([a-z_]+)[-a-z]*" "\\1" ${_outComponets} "${_boost_libraries}")
|
||||||
|
endmacro()
|
||||||
|
|
||||||
if(PKG_CONFIG_FOUND)
|
if(PKG_CONFIG_FOUND)
|
||||||
pkg_check_modules(PC_LIBTORRENT_RASTERBAR QUIET libtorrent-rasterbar)
|
pkg_check_modules(PC_LIBTORRENT_RASTERBAR QUIET libtorrent-rasterbar)
|
||||||
endif()
|
endif()
|
||||||
@ -62,13 +67,34 @@ endif()
|
|||||||
set(LibtorrentRasterbar_LIBRARIES ${LibtorrentRasterbar_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
|
set(LibtorrentRasterbar_LIBRARIES ${LibtorrentRasterbar_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
|
||||||
set(LibtorrentRasterbar_INCLUDE_DIRS ${LibtorrentRasterbar_INCLUDE_DIR})
|
set(LibtorrentRasterbar_INCLUDE_DIRS ${LibtorrentRasterbar_INCLUDE_DIR})
|
||||||
|
|
||||||
if(NOT Boost_SYSTEM_FOUND OR NOT Boost_CHRONO_FOUND OR NOT Boost_RANDOM_FOUND)
|
# Without pkg-config, we can't possibly figure out the correct boost dependencies
|
||||||
find_package(Boost REQUIRED COMPONENTS date_time system chrono random thread)
|
if (LibtorrentRasterbar_CUSTOM_BOOST_DEPENDENCIES)
|
||||||
set(LibtorrentRasterbar_LIBRARIES
|
string(REPLACE ";" " " _boost_components "${LibtorrentRasterbar_CUSTOM_BOOST_DEPENDENCIES}")
|
||||||
${LibtorrentRasterbar_LIBRARIES} ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
else(LibtorrentRasterbar_CUSTOM_BOOST_DEPENDENCIES)
|
||||||
set(LibtorrentRasterbar_INCLUDE_DIRS
|
if(PC_LIBTORRENT_RASTERBAR_FOUND)
|
||||||
${LibtorrentRasterbar_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS})
|
_detect_boost_components(_boost_cmpnts "${PC_LIBTORRENT_RASTERBAR_LIBRARIES}")
|
||||||
endif()
|
else()
|
||||||
|
# all possible boost dependencies
|
||||||
|
set(_boost_cmpnts
|
||||||
|
date_time
|
||||||
|
system
|
||||||
|
chrono
|
||||||
|
random
|
||||||
|
thread
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
list(SORT _boost_cmpnts)
|
||||||
|
message(STATUS "Libtorrent Boost dependencies: ${_boost_cmpnts}")
|
||||||
|
string(REPLACE ";" " " _boost_components "${_boost_cmpnts}")
|
||||||
|
endif(LibtorrentRasterbar_CUSTOM_BOOST_DEPENDENCIES)
|
||||||
|
|
||||||
|
find_package(Boost REQUIRED COMPONENTS ${_boost_components})
|
||||||
|
set(LibtorrentRasterbar_LIBRARIES ${LibtorrentRasterbar_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||||
|
foreach(_boost_cmpnt IN LISTS _boost_components)
|
||||||
|
list(APPEND LibtorrentRasterbar_LIBRARIES "Boost::${_boost_cmpnt}")
|
||||||
|
endforeach(_boost_cmpnt)
|
||||||
|
|
||||||
|
set(LibtorrentRasterbar_INCLUDE_DIRS ${LibtorrentRasterbar_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS})
|
||||||
|
|
||||||
list(FIND LibtorrentRasterbar_DEFINITIONS -DTORRENT_USE_OPENSSL LibtorrentRasterbar_ENCRYPTION_INDEX)
|
list(FIND LibtorrentRasterbar_DEFINITIONS -DTORRENT_USE_OPENSSL LibtorrentRasterbar_ENCRYPTION_INDEX)
|
||||||
if(LibtorrentRasterbar_ENCRYPTION_INDEX GREATER -1)
|
if(LibtorrentRasterbar_ENCRYPTION_INDEX GREATER -1)
|
||||||
@ -83,10 +109,7 @@ include(FindPackageHandleStandardArgs)
|
|||||||
# if all listed variables are TRUE
|
# if all listed variables are TRUE
|
||||||
find_package_handle_standard_args(LibtorrentRasterbar DEFAULT_MSG
|
find_package_handle_standard_args(LibtorrentRasterbar DEFAULT_MSG
|
||||||
LibtorrentRasterbar_LIBRARY
|
LibtorrentRasterbar_LIBRARY
|
||||||
LibtorrentRasterbar_INCLUDE_DIR
|
LibtorrentRasterbar_INCLUDE_DIR)
|
||||||
Boost_SYSTEM_FOUND
|
|
||||||
Boost_CHRONO_FOUND
|
|
||||||
Boost_RANDOM_FOUND)
|
|
||||||
|
|
||||||
mark_as_advanced(LibtorrentRasterbar_INCLUDE_DIR LibtorrentRasterbar_LIBRARY
|
mark_as_advanced(LibtorrentRasterbar_INCLUDE_DIR LibtorrentRasterbar_LIBRARY
|
||||||
LibtorrentRasterbar_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES
|
LibtorrentRasterbar_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES
|
||||||
|
Loading…
Reference in New Issue
Block a user