blob: 388a5112d0ce9234fc99a7237117eaece49f3460 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
## Download Boost.
## SOURCE_DIR is typically the cmake source directory
## BINARY_DIR is the build directory, typically 'build'
## Sets BOOST_ROOT, search prefix for FindBoost.
function(download_boost SOURCE_DIR BUILD_DIR BOOST_LIBS)
set(BOOST_DOWNLOAD_DIR "${BUILD_DIR}/dependencies/boost-download")
set(BOOST_SOURCE_DIR "${BUILD_DIR}/dependencies/boost-src")
set(BOOST_INSTALL_DIR "${BUILD_DIR}/dependencies/boost-install")
set(CFLAGS "-fPIC")
set(CXXFLAGS "${CMAKE_CXX_FLAGS} -fPIC")
# Only compile and install the needed libs.
set(LIBS_TO_COMPILE "")
foreach(lib ${BOOST_LIBS})
string(APPEND LIBS_TO_COMPILE --with-${lib} " ")
endforeach()
separate_arguments(BUILD_CMD UNIX_COMMAND
"./b2 cflags='${CFLAGS}' cxxflags='${CXXFLAGS}' variant=release link=static threading=multi ${LIBS_TO_COMPILE} install")
ExternalProject_Add(boost
URL "https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz"
PREFIX "${BUILD_DIR}/dependencies"
DOWNLOAD_DIR ${BOOST_DOWNLOAD_DIR}
BUILD_IN_SOURCE true
SOURCE_DIR ${BOOST_SOURCE_DIR}
INSTALL_DIR ${BOOST_INSTALL_DIR}
CONFIGURE_COMMAND ./bootstrap.sh --prefix=${BOOST_INSTALL_DIR}
BUILD_COMMAND ${BUILD_CMD}
INSTALL_COMMAND ""
)
set(BOOST_ROOT ${BOOST_INSTALL_DIR} PARENT_SCOPE)
endfunction(download_boost)