2019-06-06 18:47:55 +00:00
# all dependencies that are not directly included in the cpp-ethereum distribution are defined here
# for this to work, download the dependency via the cmake script in extdep or install them manually!
2016-08-01 05:25:37 +00:00
if ( DEFINED MSVC )
# by defining CMAKE_PREFIX_PATH variable, cmake will look for dependencies first in our own repository before looking in system paths like /usr/local/ ...
# this must be set to point to the same directory as $ETH_DEPENDENCY_INSTALL_DIR in /extdep directory
if ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0 )
set ( ETH_DEPENDENCY_INSTALL_DIR "${CMAKE_CURRENT_LIST_DIR}/../extdep/install/windows/x64" )
else ( )
get_filename_component ( DEPS_DIR "${CMAKE_CURRENT_LIST_DIR}/../deps/install" ABSOLUTE )
set ( ETH_DEPENDENCY_INSTALL_DIR
" $ { D E P S _ D I R } / x 6 4 " # Old location for deps.
" $ { D E P S _ D I R } / w i n 6 4 " # New location for deps.
" $ { D E P S _ D I R } / w i n 6 4 / R e l e a s e / s h a r e " # LLVM shared cmake files.
)
endif ( )
set ( CMAKE_PREFIX_PATH ${ ETH_DEPENDENCY_INSTALL_DIR } ${ CMAKE_PREFIX_PATH } )
endif ( )
# custom cmake scripts
set ( ETH_CMAKE_DIR ${ CMAKE_CURRENT_LIST_DIR } )
set ( ETH_SCRIPTS_DIR ${ ETH_CMAKE_DIR } /scripts )
## use multithreaded boost libraries, with -mt suffix
set ( Boost_USE_MULTITHREADED ON )
2017-08-21 18:42:06 +00:00
option ( Boost_USE_STATIC_LIBS "Link Boost statically" ON )
2021-09-24 12:17:13 +00:00
if ( WIN32 )
2020-09-15 12:16:22 +00:00
option ( Boost_USE_STATIC_RUNTIME "Link Boost against static C++ runtime libraries" ON )
endif ( )
2016-08-01 05:25:37 +00:00
2019-10-16 00:31:41 +00:00
set ( BOOST_COMPONENTS "filesystem;unit_test_framework;program_options;system" )
2019-06-06 15:18:48 +00:00
2021-09-24 12:17:13 +00:00
if ( WIN32 )
# Boost 1.77 fixes a bug that causes crashes on Windows for some relative paths in --allow-paths.
# See https://github.com/boostorg/filesystem/issues/201
find_package ( Boost 1.77.0 QUIET REQUIRED COMPONENTS ${ BOOST_COMPONENTS } )
else ( )
# Boost 1.65 is the first to also provide boost::get for rvalue-references (#5787).
find_package ( Boost 1.65.0 QUIET REQUIRED COMPONENTS ${ BOOST_COMPONENTS } )
endif ( )
2016-08-01 05:25:37 +00:00
2019-06-06 18:47:55 +00:00
# If cmake is older than boost and boost is older than 1.70,
# find_package does not define imported targets, so we have to
# define them manually.
2019-06-06 17:20:31 +00:00
if ( NOT TARGET Boost::boost ) # header only target
add_library ( Boost::boost INTERFACE IMPORTED )
2019-06-12 16:04:08 +00:00
set_property ( TARGET Boost::boost APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${ Boost_INCLUDE_DIRS } )
2019-06-06 17:20:31 +00:00
endif ( )
2019-06-06 18:47:55 +00:00
get_property ( LOCATION TARGET Boost::boost PROPERTY INTERFACE_INCLUDE_DIRECTORIES )
message ( STATUS "Found Boost headers in ${LOCATION}" )
2019-06-06 15:18:48 +00:00
foreach ( BOOST_COMPONENT IN LISTS BOOST_COMPONENTS )
if ( NOT TARGET Boost:: ${ BOOST_COMPONENT } )
2019-06-06 17:20:31 +00:00
add_library ( Boost:: ${ BOOST_COMPONENT } UNKNOWN IMPORTED )
string ( TOUPPER ${ BOOST_COMPONENT } BOOST_COMPONENT_UPPER )
set_property ( TARGET Boost:: ${ BOOST_COMPONENT } PROPERTY IMPORTED_LOCATION ${ Boost_${BOOST_COMPONENT_UPPER } _LIBRARY} )
set_property ( TARGET Boost:: ${ BOOST_COMPONENT } PROPERTY INTERFACE_LINK_LIBRARIES ${ Boost_${BOOST_COMPONENT_UPPER } _LIBRARIES} )
set_property ( TARGET Boost:: ${ BOOST_COMPONENT } PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${ Boost_INCLUDE_DIRS } )
2021-09-24 12:17:13 +00:00
endif ( )
2019-06-06 18:47:55 +00:00
get_property ( LOCATION TARGET Boost:: ${ BOOST_COMPONENT } PROPERTY IMPORTED_LOCATION )
message ( STATUS "Found Boost::${BOOST_COMPONENT} at ${LOCATION}" )
2019-06-06 15:18:48 +00:00
endforeach ( )