Warning, /acts/thirdparty/boost/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 message(STATUS "Building Boost ${_acts_boost_recommended_version}")
0002
0003 include(ExternalProject)
0004
0005 string(REPLACE "." "_" _acts_boost_recommended_version_ ${_acts_boost_recommended_version})
0006 set(Boost_URL "https://boostorg.jfrog.io/artifactory/main/release/${_acts_boost_recommended_version}/source/boost_${_acts_boost_recommended_version_}.tar.gz")
0007 set(Boost_LIBRARY_LIST "filesystem,program_options,test")
0008 set(Boost_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/boost-prefix/src/boost)
0009 set(Boost_INCLUDE_DIR ${Boost_SOURCE_DIR})
0010 set(Boost_LIBRARY_DIR ${Boost_SOURCE_DIR}/stage/lib)
0011 set(Boost_B2_CXXFLAGS -std=c++17\ -fPIC\ -O3)
0012 set(Boost_B2_FLAGS variant=release threading=multi runtime-link=shared link=shared cxxflags=${Boost_B2_CXXFLAGS})
0013
0014 # Target for boost headers
0015
0016 # Note: Since all builds below depend on the headers, use this step to
0017 # download the boost release
0018
0019 ExternalProject_Add(
0020 boost
0021 URL ${Boost_URL}
0022 CONFIGURE_COMMAND ""
0023 BUILD_COMMAND ""
0024 INSTALL_COMMAND ""
0025 )
0026
0027 add_library(Boost::boost INTERFACE IMPORTED GLOBAL)
0028 add_dependencies(Boost::boost boost)
0029 target_include_directories(Boost::boost INTERFACE ${Boost_INCLUDE_DIR})
0030 install(DIRECTORY ${Boost_INCLUDE_DIR}/boost DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
0031
0032 # Target for bootstrap step
0033
0034 # Note: Required by all builds but not by header-only target, so need
0035 # a separate target
0036
0037 # Note: Re-use ExternalProject_Add instead of Add_Step because I can't
0038 # figure out how to avoid race conditions and duplicate downloads with
0039 # Add_Step targets. From cmake's point of view they will all be
0040 # different project but they all use the same working directory, so it
0041 # does the right thing. (L-G)
0042
0043 ExternalProject_Add(
0044 boost_bootstrap
0045 DOWNLOAD_COMMAND ""
0046 CONFIGURE_COMMAND ""
0047 BUILD_COMMAND ./bootstrap.sh --with-libraries=${Boost_LIBRARY_LIST}
0048 INSTALL_COMMAND ""
0049 DEPENDS boost
0050 LOG_BUILD true
0051 SOURCE_DIR ${Boost_SOURCE_DIR}
0052 BUILD_IN_SOURCE true
0053 EXCLUDE_FROM_ALL true
0054 )
0055
0056 # Target for Boost::program_options
0057
0058 ExternalProject_Add(
0059 boost_build_program_options
0060 DOWNLOAD_COMMAND ""
0061 CONFIGURE_COMMAND ""
0062 BUILD_COMMAND ./b2 ${Boost_B2_FLAGS} --with-program_options
0063 INSTALL_COMMAND ""
0064 DEPENDS boost_bootstrap
0065 SOURCE_DIR ${Boost_SOURCE_DIR}
0066 LOG_BUILD true
0067 BUILD_IN_SOURCE true
0068 BUILD_BYPRODUCTS ${Boost_LIBRARY_DIR}/libboost_program_options.so.${_acts_boost_recommended_version}
0069 EXCLUDE_FROM_ALL true
0070 )
0071
0072 add_library(boost_program_options SHARED IMPORTED GLOBAL)
0073 target_link_libraries(boost_program_options INTERFACE Boost::boost)
0074 set_target_properties(boost_program_options PROPERTIES IMPORTED_LOCATION ${Boost_LIBRARY_DIR}/libboost_program_options.so.${_acts_boost_recommended_version})
0075 add_dependencies(boost_program_options boost_build_program_options)
0076 add_library(Boost::program_options ALIAS boost_program_options)
0077 install(FILES ${Boost_LIBRARY_DIR}/libboost_program_options.so.${_acts_boost_recommended_version} DESTINATION ${CMAKE_INSTALL_LIBDIR} OPTIONAL)
0078
0079 # Target for Boost::unit_test_framework
0080
0081 ExternalProject_Add(
0082 boost_build_unit_test_framework
0083 DOWNLOAD_COMMAND ""
0084 CONFIGURE_COMMAND ""
0085 BUILD_COMMAND ./b2 ${Boost_B2_FLAGS} --with-test
0086 INSTALL_COMMAND ""
0087 DEPENDS boost_bootstrap
0088 SOURCE_DIR ${Boost_SOURCE_DIR}
0089 LOG_BUILD true
0090 BUILD_IN_SOURCE true
0091 BUILD_BYPRODUCTS ${Boost_LIBRARY_DIR}/libboost_unit_test_framework.so.${_acts_boost_recommended_version}
0092 EXCLUDE_FROM_ALL true
0093 )
0094
0095 add_library(boost_unit_test_framework SHARED IMPORTED GLOBAL)
0096 target_link_libraries(boost_unit_test_framework INTERFACE Boost::boost)
0097 set_target_properties(boost_unit_test_framework PROPERTIES IMPORTED_LOCATION ${Boost_LIBRARY_DIR}/libboost_unit_test_framework.so.${_acts_boost_recommended_version})
0098 add_dependencies(boost_unit_test_framework boost_build_unit_test_framework)
0099 add_library(Boost::unit_test_framework ALIAS boost_unit_test_framework)
0100 install(FILES ${Boost_LIBRARY_DIR}/libboost_unit_test_framework.so.${_acts_boost_recommended_version} DESTINATION ${CMAKE_INSTALL_LIBDIR} OPTIONAL)