- message(STATUS "BUILDING Boost Libraries at j ${BOOST_J}")
- # 1. prep w/required components
- set(BOOST_SOURCE_DIR "${PROJECT_SOURCE_DIR}/src/boost")
- set(BOOST_PREFIX "${PROJECT_BINARY_DIR}/boost")
- set(BOOST_BUILD "${PROJECT_BINARY_DIR}/boost-build")
- string(REPLACE ";" "," BOOST_WITH_LIBS "${BOOST_COMPONENTS}")
- execute_process(COMMAND "./bootstrap.sh"
- "--prefix=${BOOST_PREFIX}"
- "--with-libraries=${BOOST_WITH_LIBS}"
- WORKING_DIRECTORY ${BOOST_SOURCE_DIR})
- set(BOOST_ROOT "${BOOST_PREFIX}")
- set(b2 ./b2
- --build-dir=${BOOST_BUILD} -j${BOOST_J})
- if(CMAKE_VERBOSE_MAKEFILE)
- list(APPEND b2 -d1)
- else()
- list(APPEND b2 -d0)
- endif()
- list(APPEND b2
- variant=release link=static threading=multi cxxflags=${BOOST_CFLAGS})
- if(NOT CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL CMAKE_SYSTEM_PROCESSOR)
- # we are crosscompiling
- if(CMAKE_CXX_COMPILER_ID STREQUAL GNU)
- set(b2_cc gcc)
- elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
- set(b2_cc clang)
- else()
- message(SEND_ERROR "unknown compiler: ${CMAKE_CXX_COMPILER_ID}")
- endif()
- # edit the config.jam so, b2 will be able to use the specified toolset
- execute_process(
- COMMAND
- sed -i
- "s|using ${b2_cc} ;|using ${b2_cc} : ${CMAKE_SYSTEM_PROCESSOR} : ${CMAKE_CXX_COMPILER} ;|"
- ${PROJECT_SOURCE_DIR}/src/boost/project-config.jam)
- # use ${CMAKE_SYSTEM_PROCESSOR} as the version identifier of compiler
- list(APPEND b2 toolset=${b2_cc}-${CMAKE_SYSTEM_PROCESSOR})
- endif()
- # 2. install headers
- execute_process(COMMAND
- ${b2}
- headers
- WORKING_DIRECTORY ${BOOST_SOURCE_DIR})
- # 3. build and install libs
- execute_process(COMMAND
- ${b2}
- install
- WORKING_DIRECTORY ${BOOST_SOURCE_DIR})
- # 4. set hints for FindBoost.cmake