|
24 | 24 | # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
25 | 25 | # DEALINGS IN THE SOFTWARE. |
26 | 26 |
|
27 | | -# Borrowed CMake code from the MaidSafe Boost CMake build |
28 | | -# found at https://github.com/maidsafe/MaidSafe/blob/master/cmake_modules/add_boost.cmake |
29 | | -# and code borrowed from ITK4 HDFMacros.cmake |
30 | 27 |
|
31 | | -SET_PROPERTY(DIRECTORY PROPERTY "EP_BASE" ${ep_base}) |
| 28 | +set(_boost_git_url "https://github.com/CIBC-Internal/boost.git") |
| 29 | +set(_boost_git_tag "v1.90.0") |
32 | 30 |
|
33 | | -# disable auto linking |
34 | | -# also set in Seg3D? |
35 | | -SET(boost_CXX_Flags "-DBOOST_ALL_NO_LIB=1") |
36 | | -IF(APPLE) |
37 | | - LIST(APPEND boost_CXX_Flag "-DBOOST_LCAST_NO_WCHAR_T" "-DBOOST_THREAD_DONT_USE_ATOMIC") |
38 | | -ENDIF() |
39 | | -IF(WIN32) |
40 | | - LIST(APPEND boost_CXX_Flag "-DBOOST_BIND_ENABLE_STDCALL") |
41 | | -ENDIF() |
42 | | - |
43 | | -SET( boost_DEPENDENCIES ) |
44 | | - |
45 | | -# explicitly set library list |
46 | | -SET(boost_Libraries |
47 | | - "atomic" |
48 | | - "chrono" |
49 | | - "date_time" |
50 | | - "exception" |
51 | | - "filesystem" |
52 | | - "program_options" |
53 | | - "regex" |
54 | | - "serialization" |
55 | | - "system" |
56 | | - "thread" |
57 | | - CACHE INTERNAL "Boost library name.") |
58 | | - |
59 | | -IF(BUILD_WITH_PYTHON) |
60 | | - ADD_DEFINITIONS(-DBOOST_PYTHON_STATIC_LIB=1) |
61 | | - LIST(APPEND boost_Libraries python) |
62 | | - LIST(APPEND boost_DEPENDENCIES Python_external) |
63 | | - LIST(APPEND boost_CXX_Flag "-DBOOST_PYTHON_STATIC_MODULE" "-DBOOST_PYTHON_STATIC_LIB") |
64 | | -ENDIF() |
65 | | - |
66 | | -# for travis clang builds--need a narrower test |
67 | | -IF(UNIX) |
68 | | - ADD_DEFINITIONS(-DBOOST_NO_CXX11_ALLOCATOR) |
69 | | -ENDIF() |
70 | | - |
71 | | -SET(boost_GIT_TAG "origin/v1.75.0") |
72 | | - |
73 | | -# TODO: set up 64-bit build detection |
74 | | -# Boost Jam needs to have 64-bit build explicitly configured |
75 | | -IF(WIN32) |
76 | | - SET(FORCE_64BIT_BUILD ON) |
77 | | -ENDIF() |
78 | | - |
79 | | - |
80 | | -SET(boost_GIT_URL "https://github.com/CIBC-Internal/boost.git") |
81 | | - |
82 | | -# TODO: fix install step |
83 | | -# |
84 | | -# If CMake ever allows overriding the checkout command or adding flags, |
85 | | -# git checkout -q will silence message about detached head (harmless). |
86 | 31 | ExternalProject_Add(Boost_external |
87 | | - DEPENDS ${boost_DEPENDENCIES} |
88 | | - GIT_REPOSITORY ${boost_GIT_URL} |
89 | | - GIT_TAG ${boost_GIT_TAG} |
90 | | - BUILD_IN_SOURCE ON |
91 | | - PATCH_COMMAND "" |
92 | | - INSTALL_COMMAND "" |
93 | | - CMAKE_CACHE_ARGS |
94 | | - -DCMAKE_VERBOSE_MAKEFILE:BOOL=${CMAKE_VERBOSE_MAKEFILE} |
95 | | - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON |
96 | | - -DBUILD_PYTHON:BOOL=${BUILD_WITH_PYTHON} |
97 | | - -DPython_DIR:PATH=${Python_DIR} |
98 | | - -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} |
99 | | - -DFORCE_64BIT_BUILD:BOOL=${FORCE_64BIT_BUILD} |
100 | | - -DSCI_BOOST_LIBRARIES:STATIC=${boost_Libraries} |
101 | | - -DSCI_BOOST_CXX_FLAGS:STRING=${boost_CXX_Flags} |
| 32 | + GIT_REPOSITORY ${_boost_git_url} |
| 33 | + GIT_TAG ${_boost_git_tag} |
| 34 | + GIT_SHALLOW FALSE |
| 35 | + GIT_PROGRESS TRUE |
| 36 | + |
| 37 | + # Ensure all modular libraries are present |
| 38 | + UPDATE_COMMAND ${CMAKE_COMMAND} -E chdir <SOURCE_DIR> git submodule update --init --recursive |
| 39 | + |
| 40 | + # Build out of source (let ExternalProject choose dirs) |
| 41 | + BUILD_IN_SOURCE OFF |
| 42 | + |
| 43 | + # Configure using Boost's official CMake support (tools/cmake in the repo) |
| 44 | + CONFIGURE_COMMAND |
| 45 | + ${CMAKE_COMMAND} |
| 46 | + -S <SOURCE_DIR> |
| 47 | + -B <BINARY_DIR> |
| 48 | + -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> |
| 49 | + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} |
| 50 | + -DCMAKE_POSITION_INDEPENDENT_CODE=ON |
| 51 | + -DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE_MAKEFILE} |
| 52 | + -DSCI_BOOST_CXX_FLAGS=${boost_CXX_Flags} |
| 53 | + # Optional: build static by default |
| 54 | + # -DBUILD_SHARED_LIBS=OFF |
| 55 | + # Optional: enforce Boost.Python if your build requires it |
| 56 | + # -DBoost_ENABLE_PYTHON=$<IF:${BUILD_WITH_PYTHON},ON,OFF> |
| 57 | + |
| 58 | + BUILD_COMMAND |
| 59 | + ${CMAKE_COMMAND} --build <BINARY_DIR> --config ${CMAKE_BUILD_TYPE} --parallel |
| 60 | + |
| 61 | + INSTALL_COMMAND |
| 62 | + ${CMAKE_COMMAND} --build <BINARY_DIR> --target install --config ${CMAKE_BUILD_TYPE} |
102 | 63 | ) |
103 | 64 |
|
104 | 65 | ExternalProject_Get_Property(Boost_external INSTALL_DIR) |
105 | 66 | ExternalProject_Get_Property(Boost_external SOURCE_DIR) |
106 | | -SET(SCI_BOOST_INCLUDE ${SOURCE_DIR}) |
107 | | -SET(SCI_BOOST_LIBRARY_DIR ${SOURCE_DIR}/lib) |
108 | | -SET(SCI_BOOST_USE_FILE ${INSTALL_DIR}/UseBoost.cmake) |
109 | | - |
110 | | -SET(BOOST_PREFIX "boost_") |
111 | | -SET(THREAD_POSTFIX "-mt") |
112 | 67 |
|
113 | | -SET(SCI_BOOST_LIBRARY) |
| 68 | +# Export the *installed* paths (not the source tree) |
| 69 | +set(SCI_BOOST_INCLUDE ${INSTALL_DIR}/include) |
| 70 | +set(SCI_BOOST_LIBRARY_DIR ${INSTALL_DIR}/lib) |
| 71 | +set(SCI_BOOST_USE_FILE ${INSTALL_DIR}/UseBoost.cmake) |
114 | 72 |
|
115 | | -FOREACH(lib ${boost_Libraries}) |
116 | | - SET(LIB_NAME "${BOOST_PREFIX}${lib}${THREAD_POSTFIX}") |
117 | | - LIST(APPEND SCI_BOOST_LIBRARY ${LIB_NAME}) |
118 | | -ENDFOREACH() |
| 73 | +set(BOOST_PREFIX "boost_") |
| 74 | +set(THREAD_POSTFIX "-mt") |
119 | 75 |
|
120 | | -# Boost is special case - normally this should be handled in external library repo |
121 | | -CONFIGURE_FILE(${SUPERBUILD_DIR}/BoostConfig.cmake.in ${INSTALL_DIR}/BoostConfig.cmake @ONLY) |
122 | | -CONFIGURE_FILE(${SUPERBUILD_DIR}/UseBoost.cmake ${SCI_BOOST_USE_FILE} COPYONLY) |
| 76 | +set(SCI_BOOST_LIBRARY) |
| 77 | +foreach(lib ${boost_Libraries}) |
| 78 | + set(LIB_NAME "${BOOST_PREFIX}${lib}${THREAD_POSTFIX}") |
| 79 | + list(APPEND SCI_BOOST_LIBRARY ${LIB_NAME}) |
| 80 | +endforeach() |
123 | 81 |
|
124 | | -SET(Boost_DIR ${INSTALL_DIR} CACHE PATH "") |
| 82 | +# If you still need your custom config/use files for SCIRun, keep these lines; |
| 83 | +# otherwise consider relying on Boost's installed BoostConfig.cmake. |
| 84 | +configure_file(${SUPERBUILD_DIR}/BoostConfig.cmake.in ${INSTALL_DIR}/BoostConfig.cmake @ONLY) |
| 85 | +configure_file(${SUPERBUILD_DIR}/UseBoost.cmake ${SCI_BOOST_USE_FILE} COPYONLY) |
125 | 86 |
|
126 | | -MESSAGE(STATUS "Boost_DIR: ${Boost_DIR}") |
| 87 | +set(Boost_DIR ${INSTALL_DIR} CACHE PATH "") |
| 88 | +message(STATUS "Boost_DIR: ${Boost_DIR}") |
0 commit comments