Imported Upstream version 1.9.0
[platform/core/ml/nnfw.git] / infra / nnfw / cmake / packages / BoostConfig.cmake
1 # Let's build and install Boost libraries
2 function(_Boost_Build Boost_PREFIX)
3   nnas_find_package(BoostSource QUIET)
4
5   if(NOT BoostSource_FOUND)
6     return()
7   endif(NOT BoostSource_FOUND)
8
9   #### Generic configurations
10   if(NOT EXISTS ${BoostSource_DIR}/b2)
11     execute_process(COMMAND "${BoostSource_DIR}/bootstrap.sh"
12                     WORKING_DIRECTORY ${BoostSource_DIR}
13                     RESULT_VARIABLE Boost_BUILD)
14   endif()
15
16   set(BoostBuild_DIR ${CMAKE_BINARY_DIR}/externals/boost)
17   set(BoostInstall_DIR ${Boost_PREFIX})
18
19   unset(Boost_Options)
20
21   list(APPEND Boost_Options --build-dir=${BoostBuild_DIR})
22   list(APPEND Boost_Options --prefix=${BoostInstall_DIR})
23   list(APPEND Boost_Options --with-log)
24   list(APPEND Boost_Options --with-program_options)
25   list(APPEND Boost_Options --with-system)
26   list(APPEND Boost_Options --with-filesystem)
27
28   set(JAM_FILENAME ${BoostBuild_DIR}/user-config.jam)
29
30   if(ANDROID)
31     set(NDK_CXX ${NDK_DIR}/toolchains/llvm/prebuilt/linux-x86_64/bin/${TARGET_ARCH}-linux-android${ANDROID_API_LEVEL}-clang++)
32     file(WRITE ${JAM_FILENAME} "using clang : arm64v8a : ${NDK_CXX} ;")
33     list(APPEND Boost_Options toolset=clang-arm64v8a)
34     # without target-os=android, it complains it cannot find -lrt.
35     list(APPEND Boost_Options target-os=android)
36   else()
37     file(WRITE ${JAM_FILENAME} "using gcc : local : ${CMAKE_CXX_COMPILER} ;\n")
38     list(APPEND Boost_Options toolset=gcc-local)
39   endif(ANDROID)
40
41   # Install Boost libraries
42   execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory "${BoostInstall_DIR}")
43   execute_process(COMMAND /usr/bin/env BOOST_BUILD_PATH="${BoostBuild_DIR}" ${BoostSource_DIR}/b2 install ${Boost_Options}
44                   WORKING_DIRECTORY ${BoostSource_DIR})
45
46 endfunction(_Boost_Build)
47
48 # Find pre-installed boost library and update Boost variables.
49 if (NOT BUILD_BOOST)
50   # BoostConfig.cmake does not honor QUIET argument at least till cmake 1.70.0.
51   # Thus, don't try to find_package if you're not entirely sure you have boost.
52   find_package(Boost 1.58.0 QUIET COMPONENTS log program_options filesystem system)
53   if(Boost_FOUND)
54     return()
55   endif()
56 endif()
57
58 set(Boost_PREFIX ${EXT_OVERLAY_DIR})
59
60 if(BUILD_BOOST)
61   _Boost_Build("${Boost_PREFIX}")
62
63   # Without Boost_INCLUDE_DIR, it complains the variable is missing during find_package.
64   set(Boost_INCLUDE_DIR ${Boost_PREFIX}/include)
65
66   # 1) without static build, it will complain it cannot find libc++_shared.so.
67   # 2) We uses static libraries for other libraries.
68   set(Boost_USE_STATIC_LIBS ON)
69
70   # We built boost library so update Boost variables.
71   find_package(Boost 1.58.0 QUIET COMPONENTS log program_options filesystem system)
72 endif(BUILD_BOOST)