mirror of
https://github.com/vale981/ray
synced 2025-03-06 02:21:39 -05:00
69 lines
3 KiB
CMake
69 lines
3 KiB
CMake
# Boost external project
|
|
# target:
|
|
# - boost_ep
|
|
# defines:
|
|
# - Boost_INCLUDE_DIR
|
|
# - Boost_SYSTEM_LIBRARY
|
|
# - Boost_FILESYSTEM_LIBRARY
|
|
# - Boost_THREAD_LIBRARY
|
|
|
|
option(RAY_BUILD_BOOST "Whether to build boost locally" ON)
|
|
|
|
# Set the required boost version.
|
|
set(BOOST_MAJOR_VERSION 1)
|
|
set(BOOST_MINOR_VERSION 68)
|
|
set(BOOST_SUBMINOR_VERSION 0)
|
|
set(TARGET_BOOST_VERSION ${BOOST_MAJOR_VERSION}.${BOOST_MINOR_VERSION}.${BOOST_SUBMINOR_VERSION})
|
|
|
|
# boost is a stable library in ray, and it supports to find
|
|
# the boost pre-built in environment to speed up build process
|
|
if (DEFINED ENV{RAY_BOOST_ROOT} AND EXISTS $ENV{RAY_BOOST_ROOT})
|
|
set(Boost_USE_STATIC_LIBS ON)
|
|
set(BOOST_ROOT "$ENV{RAY_BOOST_ROOT}")
|
|
find_package(Boost ${TARGET_BOOST_VERSION} COMPONENTS system filesystem thread)
|
|
if (Boost_FOUND)
|
|
# If there is a newer version of Boost, there will be a warning message and Boost_FOUND is true.
|
|
set(FOUND_BOOST_VERSION ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION})
|
|
if (${TARGET_BOOST_VERSION} STREQUAL ${FOUND_BOOST_VERSION})
|
|
set(RAY_BUILD_BOOST OFF)
|
|
set(Boost_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
|
|
# Boost_SYSTEM_LIBRARY, Boost_FILESYSTEM_LIBRARY, Boost_THREAD_LIBRARY will be set by find_package(Boost).
|
|
add_custom_target(boost_ep)
|
|
else()
|
|
message("Required Boost Version ${TARGET_BOOST_VERSION} does not match the path: $ENV{RAY_BOOST_ROOT}. Will build Boost Locally.")
|
|
endif()
|
|
endif(Boost_FOUND)
|
|
endif()
|
|
|
|
if (RAY_BUILD_BOOST)
|
|
set(Boost_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/external/boost-install)
|
|
|
|
set(Boost_INCLUDE_DIR ${Boost_INSTALL_PREFIX}/include)
|
|
set(BOOST_ROOT ${Boost_INSTALL_PREFIX})
|
|
set(Boost_LIBRARY_DIR ${Boost_INSTALL_PREFIX}/lib)
|
|
set(Boost_SYSTEM_LIBRARY ${Boost_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}boost_system${CMAKE_STATIC_LIBRARY_SUFFIX})
|
|
set(Boost_THREAD_LIBRARY ${Boost_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}boost_thread${CMAKE_STATIC_LIBRARY_SUFFIX})
|
|
set(Boost_FILESYSTEM_LIBRARY ${Boost_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}boost_filesystem${CMAKE_STATIC_LIBRARY_SUFFIX})
|
|
|
|
#set(boost_URL https://github.com/boostorg/boost.git)
|
|
#set(boost_TAG boost-1.68.0)
|
|
|
|
set(Boost_TAR_GZ_URL http://dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.tar.gz)
|
|
set(Boost_BUILD_PRODUCTS ${Boost_SYSTEM_LIBRARY} ${Boost_FILESYSTEM_LIBRARY})
|
|
set(Boost_URL_MD5 "5d8b4503582fffa9eefdb9045359c239")
|
|
|
|
set(Boost_USE_STATIC_LIBS ON)
|
|
|
|
ExternalProject_Add(boost_ep
|
|
PREFIX external/boost
|
|
URL ${Boost_TAR_GZ_URL}
|
|
URL_MD5 ${Boost_URL_MD5}
|
|
# GIT_REPOSITORY ${boost_URL}
|
|
# GIT_TAG ${boost_TAG}
|
|
# GIT_SUBMODULES ""
|
|
BUILD_IN_SOURCE 1
|
|
BUILD_BYPRODUCTS ${Boost_BUILD_PRODUCTS}
|
|
CONFIGURE_COMMAND ./bootstrap.sh
|
|
BUILD_COMMAND bash -c "./b2 cxxflags=\"-fPIC -D_GLIBCXX_USE_CXX11_ABI=0\" cflags=-fPIC variant=release link=static --with-filesystem --with-system --with-thread --with-atomic --with-chrono --with-date_time --with-regex -j8 install --prefix=${Boost_INSTALL_PREFIX} > /dev/null"
|
|
INSTALL_COMMAND "")
|
|
endif ()
|