diff options
Diffstat (limited to 'infra/cmake/packages/BoostConfig.cmake')
-rw-r--r-- | infra/cmake/packages/BoostConfig.cmake | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/infra/cmake/packages/BoostConfig.cmake b/infra/cmake/packages/BoostConfig.cmake index 0023b6b20..c4d7d5857 100644 --- a/infra/cmake/packages/BoostConfig.cmake +++ b/infra/cmake/packages/BoostConfig.cmake @@ -27,8 +27,16 @@ function(_Boost_Build Boost_PREFIX) set(JAM_FILENAME ${BoostBuild_DIR}/user-config.jam) - file(WRITE ${JAM_FILENAME} "using gcc : local : ${CMAKE_CXX_COMPILER} ;\n") - list(APPEND Boost_Options toolset=gcc-local) + if(ANDROID) + set(NDK_CXX ${NDK_DIR}/toolchains/llvm/prebuilt/linux-x86_64/bin/${TARGET_ARCH}-linux-android${ANDROID_API_LEVEL}-clang++) + file(WRITE ${JAM_FILENAME} "using clang : arm64v8a : ${NDK_CXX} ;") + list(APPEND Boost_Options toolset=clang-arm64v8a) + # without target-os=android, it complains it cannot find -lrt. + list(APPEND Boost_Options target-os=android) + else() + file(WRITE ${JAM_FILENAME} "using gcc : local : ${CMAKE_CXX_COMPILER} ;\n") + list(APPEND Boost_Options toolset=gcc-local) + endif(ANDROID) # Install Boost libraries execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory "${BoostInstall_DIR}") @@ -38,9 +46,13 @@ function(_Boost_Build Boost_PREFIX) endfunction(_Boost_Build) # Find pre-installed boost library and update Boost variables. -find_package(Boost 1.58.0 QUIET COMPONENTS log program_options filesystem system) -if(Boost_FOUND) - return() +if (NOT BUILD_BOOST) + # BoostConfig.cmake does not honor QUIET argument at least till cmake 1.70.0. + # Thus, don't try to find_package if you're not entirely sure you have boost. + find_package(Boost 1.58.0 QUIET COMPONENTS log program_options filesystem system) + if(Boost_FOUND) + return() + endif() endif() set(Boost_PREFIX ${CMAKE_INSTALL_PREFIX}) @@ -53,6 +65,13 @@ if(BUILD_BOOST) # in ${Boost_PREFIX} directory list(APPEND CMAKE_PREFIX_PATH "${Boost_PREFIX}") + # Without Boost_INCLUDE_DIR, it complains the variable is missing during find_package. + set(Boost_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/include) + + # 1) without static build, it will complain it cannot find libc++_shared.so. + # 2) We uses static libraries for other libraries. + set(Boost_USE_STATIC_LIBS ON) + # We built boost library so update Boost variables. find_package(Boost 1.58.0 QUIET COMPONENTS log program_options filesystem system) endif(BUILD_BOOST) |