ThirdPartyBoost.cmake 6.25 KB
Newer Older
1
OPTION(THIRDPARTY_BUILD_BOOST "Build Boost libraries" OFF)
2 3 4
SET(Boost_USE_MULTITHREADED ON CACHE BOOL
    "Search for multithreaded boost libraries")
MARK_AS_ADVANCED(Boost_USE_MULTITHREADED)
5 6 7

IF (THIRDPARTY_BUILD_BOOST)
    INCLUDE(ExternalProject)
8
   
9 10 11
    IF (NOT WIN32)
        # Only build the libraries we need
        SET(BOOST_LIB_LIST --with-system --with-iostreams --with-filesystem 
12 13
                           --with-program_options --with-date_time --with-thread
                           --with-regex)
14 15 16 17 18 19 20
                           
        # We need -fPIC for 64-bit builds
        IF( CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" )
            SET(BOOST_FLAGS cxxflags=-fPIC cflags=-fPIC linkflags=-fPIC)
        ENDIF ()
        
        # Build Boost
21 22 23 24 25
        IF (APPLE)
            SET(TOOLSET darwin)
        ELSE(APPLE)
            SET(TOOLSET gcc)
        ENDIF(APPLE)
26 27 28
        EXTERNALPROJECT_ADD(
            boost
            PREFIX ${TPSRC}
Chris Cantwell's avatar
Chris Cantwell committed
29 30
            URL ${TPURL}/boost_1_55_0.tar.bz2
            URL_MD5 "d6eef4b4cacb2183f2bf265a5a03a354"
31
            DOWNLOAD_DIR ${TPSRC}
32
            CONFIGURE_COMMAND CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} ./bootstrap.sh --prefix=${TPSRC}/dist
33 34 35 36 37 38
            BUILD_COMMAND NO_BZIP2=1 ./b2
                            variant=release
                            link=shared 
                            include=${TPSRC}/dist/include
                            linkflags="-L${TPSRC}/dist/lib"
                            ${BOOST_FLAGS} ${BOOST_LIB_LIST} 
39
                            --layout=system toolset=${TOOLSET} install
40 41 42
            INSTALL_COMMAND ""
            BUILD_IN_SOURCE 1
        )
43
    
44 45 46 47 48 49 50
        IF (APPLE)
            EXTERNALPROJECT_ADD_STEP(boost patch-install-path
                COMMAND sed -i ".bak" "s|-install_name \"|&${TPSRC}/dist/lib/|" ${TPSRC}/src/boost/tools/build/v2/tools/darwin.jam
                DEPENDERS build
                DEPENDEES download)
        ENDIF (APPLE)

51 52
        # If building ThirdParty zlib, force zlib build before boost
        IF (THIRDPARTY_BUILD_ZLIB)
53
             ADD_DEPENDENCIES(boost zlib-1.2.7)
54 55
        ENDIF(THIRDPARTY_BUILD_ZLIB)

56
        # Set up CMake variables
57 58 59 60 61 62 63 64 65 66 67 68
        SET(Boost_DATE_TIME_LIBRARY boost_date_time)
        SET(Boost_DATE_TIME_LIBRARY_DEBUG boost_date_time)
        SET(Boost_DATE_TIME_LIBRARY_RELEASE boost_date_time)
        SET(Boost_FILESYSTEM_LIBRARY boost_filesystem)
        SET(Boost_FILESYSTEM_LIBRARY_DEBUG boost_filesystem)
        SET(Boost_FILESYSTEM_LIBRARY_RELEASE boost_filesystem)
        SET(Boost_IOSTREAMS_LIBRARY boost_iostreams)
        SET(Boost_IOSTREAMS_LIBRARY_DEBUG boost_iostreams)
        SET(Boost_IOSTREAMS_LIBRARY_RELEASE boost_iostreams)
        SET(Boost_PROGRAM_OPTIONS_LIBRARY boost_program_options)
        SET(Boost_PROGRAM_OPTIONS_LIBRARY_DEBUG boost_program_options)
        SET(Boost_PROGRAM_OPTIONS_LIBRARY_RELEASE boost_program_options)
69 70 71
        SET(Boost_REGEX_LIBRARY boost_regex)
        SET(Boost_REGEX_LIBRARY_DEBUG boost_regex)
        SET(Boost_REGEX_LIBRARY_RELEASE boost_regex)
72 73 74 75 76 77
        SET(Boost_SYSTEM_LIBRARY boost_system)
        SET(Boost_SYSTEM_LIBRARY_DEBUG boost_system)
        SET(Boost_SYSTEM_LIBRARY_RELEASE boost_system)
        SET(Boost_THREAD_LIBRARY boost_thread)
        SET(Boost_THREAD_LIBRARY_DEBUG boost_thread)
        SET(Boost_THREAD_LIBRARY_RELEASE boost_thread)
78 79
        SET(Boost_INCLUDE_DIRS ${TPSRC}/dist/include 
                               ${TPSRC}/dist/include/boost-1_49)
80 81
        SET(Boost_LIBRARY_DIRS ${TPSRC}/dist/lib)
        LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
82 83 84 85
    ELSE ()
        EXTERNALPROJECT_ADD(
            boost
            PREFIX ${TPSRC}
Chris Cantwell's avatar
Chris Cantwell committed
86 87
            URL ${TPURL}/boost_1_55_0.tar.bz2
            URL_MD5 "d6eef4b4cacb2183f2bf265a5a03a354"
88 89 90 91 92 93 94 95
            DOWNLOAD_DIR ${TPSRC}
            CONFIGURE_COMMAND bootstrap.bat --prefix=${TPSRC}/boost
            BUILD_COMMAND b2 --layout=system install
            INSTALL_COMMAND ""
            BUILD_IN_SOURCE 1
        )
    ENDIF ()
ELSE (THIRDPARTY_BUILD_BOOST)
96
    SET(Boost_DEBUG 0)
97
    SET(Boost_NO_BOOST_CMAKE ON)
98
    #If the user has not set BOOST_ROOT, look in a couple common places first.
99
    IF( NOT BOOST_ROOT )
100 101 102
        SET(TEST_ENV1 $ENV{BOOST_HOME})
        SET(TEST_ENV2 $ENV{BOOST_DIR})
        IF (DEFINED TEST_ENV1)
103
            SET(BOOST_ROOT $ENV{BOOST_HOME})
104
            FIND_PACKAGE( Boost QUIET COMPONENTS thread iostreams date_time
105
                filesystem system program_options regex )
106 107 108 109
        ELSEIF (DEFINED TEST_ENV2)
            SET(BOOST_ROOT $ENV{BOOST_DIR})
            FIND_PACKAGE( Boost QUIET COMPONENTS thread iostreams date_time
                filesystem system program_options regex )
110 111
        ELSE ()
            SET(BOOST_ROOT ${CMAKE_SOURCE_DIR}/ThirdParty/boost)
112
            FIND_PACKAGE( Boost QUIET COMPONENTS thread iostreams date_time filesystem system program_options regex)
113
            SET(BOOST_ROOT ${CMAKE_SOURCE_DIR}/../ThirdParty/boost)
114
            FIND_PACKAGE( Boost QUIET COMPONENTS thread iostreams date_time filesystem system program_options regex)
115
            SET(BOOST_ROOT ${CMAKE_SOURCE_DIR}/ThirdParty/dist)
116
            FIND_PACKAGE( Boost QUIET COMPONENTS thread iostreams date_time filesystem system program_options regex)
117
        ENDIF()
118
    ELSE()
119
        FIND_PACKAGE( Boost COMPONENTS thread iostreams zlib date_time filesystem system program_options regex)
120
    ENDIF()
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
    IF (Boost_IOSTREAMS_FOUND)
        MESSAGE(STATUS "Found Boost iostreams library: ${Boost_IOSTREAMS_LIBRARY}")
    ENDIF ()
    IF (Boost_THREAD_FOUND)
        MESSAGE(STATUS "Found Boost thread library: ${Boost_THREAD_LIBRARY}")
    ENDIF ()
    IF (Boost_DATE_TIME_FOUND)
        MESSAGE(STATUS "Found Boost date_time library: ${Boost_DATE_TIME_LIBRARY}")
    ENDIF ()
    IF (Boost_FILESYSTEM_FOUND)
        MESSAGE(STATUS "Found Boost filesystem library: ${Boost_FILESYSTEM_LIBRARY}")
    ENDIF ()
    IF (Boost_SYSTEM_FOUND)
        MESSAGE(STATUS "Found Boost system library: ${Boost_SYSTEM_LIBRARY}")
    ENDIF ()
    IF (Boost_PROGRAM_OPTIONS_FOUND)
        MESSAGE(STATUS "Found Boost program_options library: ${Boost_PROGRAM_OPTIONS_LIBRARY}")
    ENDIF ()
    IF (Boost_REGEX_FOUND)
        MESSAGE(STATUS "Found Boost regex library: ${Boost_REGEX_LIBRARY}")
    ENDIF ()
142
ENDIF (THIRDPARTY_BUILD_BOOST)
143

144
INCLUDE_DIRECTORIES(SYSTEM ${Boost_INCLUDE_DIRS})