Skip to content
Snippets Groups Projects
Forked from Main Repositories / otb
16587 commits behind the upstream repository.
External_boost.cmake 4.98 KiB
set(proj BOOST)

# Use boost 1.54. There was previously incompatibilities between boost and Qt which leads
# to compilation errors for OTB.  We could increase boost version to last stable
# release in future version of superbuild as we've patchedOTB code to
# support both libraries. See the related changeset in OTB trunk:
# http://hg.orfeo-toolbox.org/OTB/r# ev/8da67e36c78d

if(NOT __EXTERNAL_${proj}__)
set(__EXTERNAL_${proj}__ 1)

message(STATUS "Setup Boost ...")

if(USE_SYSTEM_BOOST)
  # Required
  find_package ( Boost
    1.35.0
    )
  # Optional components
  find_package ( Boost
    1.35.0
    COMPONENTS unit_test_framework
    )
  add_custom_target(${proj})
  message(STATUS "  Using Boost system version")
else()
  SETUP_SUPERBUILD(PROJECT ${proj})
  
  option(SUPERBUILD_BOOST_HEADER_ONLY "Only use Boost headers" ON)
  mark_as_advanced(SUPERBUILD_BOOST_HEADER_ONLY)
  
  if(UNIX)
    if(SUPERBUILD_BOOST_HEADER_ONLY)
      ExternalProject_Add(${proj}
        PREFIX ${proj}
        URL "http://sourceforge.net/projects/boost/files/boost/1.54.0/boost_1_54_0.tar.gz/download"
        URL_MD5 efbfbff5a85a9330951f243d0a46e4b9
        BINARY_DIR ${BOOST_SB_BUILD_DIR}
        INSTALL_DIR ${SB_INSTALL_PREFIX}
        CMAKE_CACHE_ARGS
        -DCMAKE_INSTALL_PREFIX:STRING=${SB_INSTALL_PREFIX}
        -DCMAKE_BUILD_TYPE:STRING=Release
        -DBUILD_SHARED_LIBS:BOOL=ON
        PATCH_COMMAND ${CMAKE_COMMAND} -E copy 
        ${CMAKE_SOURCE_DIR}/patches/${proj}/CMakeLists.txt 
        ${BOOST_SB_SRC}
      )
    else()
      ExternalProject_Add(${proj}
        PREFIX ${proj}
        URL "http://sourceforge.net/projects/boost/files/boost/1.54.0/boost_1_54_0.tar.gz/download"
        URL_MD5 efbfbff5a85a9330951f243d0a46e4b9
        BINARY_DIR ${BOOST_SB_BUILD_DIR}
        INSTALL_DIR ${SB_INSTALL_PREFIX}
        CONFIGURE_COMMAND
          ${BOOST_SB_BUILD_DIR}/bootstrap.sh
            --prefix=${SB_INSTALL_PREFIX}
            --with-libraries=graph,test,regex
        BUILD_COMMAND ./b2
        INSTALL_COMMAND ./b2 install
        PATCH_COMMAND ${CMAKE_COMMAND} -E copy_directory
          ${CMAKE_SOURCE_DIR}/patches/${proj}/1.54.0
          ${BOOST_SB_SRC}
      )
      
      ExternalProject_Add_Step(${proj} copy_source
        COMMAND ${CMAKE_COMMAND} -E copy_directory
          ${BOOST_SB_SRC} ${BOOST_SB_BUILD_DIR}
        DEPENDEES patch update
        DEPENDERS configure
      )
    endif()
    
    message(STATUS "  Using Boost SuperBuild version")
    
  else(MSVC)
    #TODO: find hash for archives properly
    set(BOOST_HEADERS_URL_HASH 1605dc6085cb2dc778ef5ab6c0e59083)
    set(BOOST_GRAPH_URL_HASH c246516ca84a3c79ae8a0b22fceb0344)
    set(BOOST_REGEX_URL_HASH a3bfc2dc9a3ebe3c050518ecb29d6f8b)
    set(BOOST_UTF_URL_HASH 75971963a74c76d32e01974a8e48be11)
    
    if(MSVC10)
        set(BOOST_HEADERS_URL_HASH 1605dc6085cb2dc778ef5ab6c0e59083)
        set(BOOST_GRAPH_URL_HASH c246516ca84a3c79ae8a0b22fceb0344)
        set(BOOST_REGEX_URL_HASH a3bfc2dc9a3ebe3c050518ecb29d6f8b)
        set(BOOST_UTF_URL_HASH 75971963a74c76d32e01974a8e48be11)
    else(MSVC80)
 
    else(CMAKE_COMPILER_2005)
   
    endif()

    set(BOOST_HEADERS_URL "http://sourceforge.net/projects/boost/files/boost-binaries/1.50.0/boost_1_50_headers.zip/download")
    set(BOOST_GRAPH_URL "http://sourceforge.net/projects/boost/files/boost-binaries/1.50.0/libboost_graph-vc100-mt-1_50.zip/download")
    set(BOOST_UTF_URL "http://sourceforge.net/projects/boost/files/boost-binaries/1.50.0/boost_unit_test_framework-vc100-mt-1_50.zip/download")
    set(BOOST_REGEX_URL "http://sourceforge.net/projects/boost/files/boost-binaries/1.50.0/libboost_regex-vc100-mt-1_50.zip/download")

    ExternalProject_Add(${proj}_HEADERS
        PREFIX ${proj}/_HEADERS
        URL ${BOOST_HEADERS_URL}
        URL_MD5 ${BOOST_HEADERS_URL_HASH}
        SOURCE_DIR ${BOOST_SB_SRC}/include/boost
        CONFIGURE_COMMAND ""
        BUILD_COMMAND ""
        INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory ${BOOST_SB_SRC}/include/ ${SB_INSTALL_PREFIX}/include/
     )
    set(BOOSTLIBS)
    foreach(BOOSTLIB "REGEX" "GRAPH" "UTF")
        ExternalProject_Add(${proj}_${BOOSTLIB}
            PREFIX ${proj}/_${BOOSTLIB}
            URL ${BOOST_${BOOSTLIB}_URL}
            URL_MD5 ${BOOST_${BOOSTLIB}_URL_HASH} 
            SOURCE_DIR ${BOOST_SB_SRC}/lib
            DEPENDS ${proj}_HEADERS
            CONFIGURE_COMMAND ""
            BUILD_COMMAND ""
            INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory ${BOOST_SB_SRC}/lib ${SB_INSTALL_PREFIX}/lib
        )
    list(APPEND BOOSTLIBS ${proj}_${BOOSTLIB})
    endforeach()
    
    ExternalProject_Add(${proj}
      PREFIX ${proj}
      DOWNLOAD_COMMAND ""
      SOURCE_DIR ${BOOST_SB_SRC}
      DEPENDS ${BOOSTLIBS}
      CONFIGURE_COMMAND ""
      BUILD_COMMAND ""
      INSTALL_COMMAND ""
    )

    message(STATUS "  Using Boost SuperBuild version (prebuilt binaries)")
    
  endif() #end else MSVC
  
  set(_SB_Boost_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
  set(_SB_Boost_LIBRARY_DIR ${SB_INSTALL_PREFIX}/lib)
  
  
endif()
endif()