comparison Orthanc/Resources/CMake/BoostConfiguration.cmake @ 167:bd5597966b3d

sync
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 22 Aug 2017 21:46:50 +0200
parents 5dc54316d68b
children af724b1d8440
comparison
equal deleted inserted replaced
166:e5ac1fd6cf7d 167:bd5597966b3d
5 5
6 set(BOOST_STATIC 0) 6 set(BOOST_STATIC 0)
7 #set(Boost_DEBUG 1) 7 #set(Boost_DEBUG 1)
8 #set(Boost_USE_STATIC_LIBS ON) 8 #set(Boost_USE_STATIC_LIBS ON)
9 9
10 if (ENABLE_LOCALE)
11 list(APPEND ORTHANC_BOOST_COMPONENTS locale)
12 endif()
13
10 find_package(Boost 14 find_package(Boost
11 COMPONENTS filesystem thread system date_time regex locale ${ORTHANC_BOOST_COMPONENTS}) 15 COMPONENTS filesystem thread system date_time regex ${ORTHANC_BOOST_COMPONENTS})
12 16
13 if (NOT Boost_FOUND) 17 if (NOT Boost_FOUND)
14 message(FATAL_ERROR "Unable to locate Boost on this system") 18 message(FATAL_ERROR "Unable to locate Boost on this system")
15 endif() 19 endif()
16 20
25 -DBOOST_HAS_FILESYSTEM_V3=1 29 -DBOOST_HAS_FILESYSTEM_V3=1
26 -DBOOST_FILESYSTEM_VERSION=3 30 -DBOOST_FILESYSTEM_VERSION=3
27 ) 31 )
28 endif() 32 endif()
29 33
30 #if (${Boost_VERSION} LESS 104800)
31 # boost::locale is only available from 1.48.00
32 #message("Too old version of Boost (${Boost_LIB_VERSION}): Building the static version")
33 # set(BOOST_STATIC 1)
34 #endif()
35
36 include_directories(${Boost_INCLUDE_DIRS}) 34 include_directories(${Boost_INCLUDE_DIRS})
37 link_libraries(${Boost_LIBRARIES}) 35 link_libraries(${Boost_LIBRARIES})
38 endif() 36 endif()
39 37
40 38
41 if (BOOST_STATIC) 39 if (BOOST_STATIC)
42 # Parameters for Boost 1.60.0 40 ##
43 set(BOOST_NAME boost_1_60_0) 41 ## Parameters for static compilation of Boost
44 set(BOOST_BCP_SUFFIX bcpdigest-1.0.1) 42 ##
45 set(BOOST_MD5 "a789f8ec2056ad1c2d5f0cb64687cc7b") 43
44 set(BOOST_NAME boost_1_64_0)
45 set(BOOST_BCP_SUFFIX bcpdigest-1.3.0)
46 set(BOOST_MD5 "ecb266cf46adcc7f695ad12685871174")
46 set(BOOST_URL "http://www.orthanc-server.com/downloads/third-party/${BOOST_NAME}_${BOOST_BCP_SUFFIX}.tar.gz") 47 set(BOOST_URL "http://www.orthanc-server.com/downloads/third-party/${BOOST_NAME}_${BOOST_BCP_SUFFIX}.tar.gz")
47 set(BOOST_FILESYSTEM_SOURCES_DIR "${BOOST_NAME}/libs/filesystem/src")
48 set(BOOST_SOURCES_DIR ${CMAKE_BINARY_DIR}/${BOOST_NAME}) 48 set(BOOST_SOURCES_DIR ${CMAKE_BINARY_DIR}/${BOOST_NAME})
49 49
50 DownloadPackage(${BOOST_MD5} ${BOOST_URL} "${BOOST_SOURCES_DIR}") 50 DownloadPackage(${BOOST_MD5} ${BOOST_URL} "${BOOST_SOURCES_DIR}")
51 51
52 set(BOOST_SOURCES) 52
53 53 ##
54 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR 54 ## Generic configuration of Boost
55 ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" OR 55 ##
56 ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR 56
57 ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR 57 if (CMAKE_COMPILER_IS_GNUCXX)
58 ${CMAKE_SYSTEM_NAME} STREQUAL "PNaCl" OR 58 add_definitions(-isystem ${BOOST_SOURCES_DIR})
59 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl32" OR 59 endif()
60 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl64") 60
61 include_directories(
62 ${BOOST_SOURCES_DIR}
63 )
64
65 add_definitions(
66 # Static build of Boost
67 -DBOOST_ALL_NO_LIB
68 -DBOOST_ALL_NOLIB
69 -DBOOST_DATE_TIME_NO_LIB
70 -DBOOST_THREAD_BUILD_LIB
71 -DBOOST_PROGRAM_OPTIONS_NO_LIB
72 -DBOOST_REGEX_NO_LIB
73 -DBOOST_SYSTEM_NO_LIB
74 -DBOOST_LOCALE_NO_LIB
75 )
76
77 set(BOOST_SOURCES
78 ${BOOST_SOURCES_DIR}/libs/system/src/error_code.cpp
79 )
80
81
82 ##
83 ## Configuration of boost::thread
84 ##
85
86 if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR
87 CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR
88 CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR
89 CMAKE_SYSTEM_NAME STREQUAL "kFreeBSD" OR
90 CMAKE_SYSTEM_NAME STREQUAL "OpenBSD" OR
91 CMAKE_SYSTEM_NAME STREQUAL "PNaCl" OR
92 CMAKE_SYSTEM_NAME STREQUAL "NaCl32" OR
93 CMAKE_SYSTEM_NAME STREQUAL "NaCl64")
61 list(APPEND BOOST_SOURCES 94 list(APPEND BOOST_SOURCES
62 ${BOOST_SOURCES_DIR}/libs/atomic/src/lockpool.cpp 95 ${BOOST_SOURCES_DIR}/libs/atomic/src/lockpool.cpp
63 ${BOOST_SOURCES_DIR}/libs/thread/src/pthread/once.cpp 96 ${BOOST_SOURCES_DIR}/libs/thread/src/pthread/once.cpp
64 ${BOOST_SOURCES_DIR}/libs/thread/src/pthread/thread.cpp 97 ${BOOST_SOURCES_DIR}/libs/thread/src/pthread/thread.cpp
65 ) 98 )
66 add_definitions(
67 -DBOOST_LOCALE_WITH_ICONV=1
68 -DBOOST_LOCALE_NO_WINAPI_BACKEND=1
69 -DBOOST_LOCALE_NO_STD_BACKEND=1
70 )
71 99
72 if ("${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase" OR 100 if ("${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase" OR
73 ${CMAKE_SYSTEM_NAME} STREQUAL "PNaCl" OR 101 CMAKE_SYSTEM_NAME STREQUAL "PNaCl" OR
74 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl32" OR 102 CMAKE_SYSTEM_NAME STREQUAL "NaCl32" OR
75 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl64") 103 CMAKE_SYSTEM_NAME STREQUAL "NaCl64")
76 add_definitions(-DBOOST_HAS_SCHED_YIELD=1) 104 add_definitions(-DBOOST_HAS_SCHED_YIELD=1)
77 endif() 105 endif()
78 106
79 elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") 107 elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
80 list(APPEND BOOST_SOURCES 108 list(APPEND BOOST_SOURCES
81 ${BOOST_SOURCES_DIR}/libs/thread/src/win32/tss_dll.cpp 109 ${BOOST_SOURCES_DIR}/libs/thread/src/win32/tss_dll.cpp
82 ${BOOST_SOURCES_DIR}/libs/thread/src/win32/thread.cpp 110 ${BOOST_SOURCES_DIR}/libs/thread/src/win32/thread.cpp
83 ${BOOST_SOURCES_DIR}/libs/thread/src/win32/tss_pe.cpp 111 ${BOOST_SOURCES_DIR}/libs/thread/src/win32/tss_pe.cpp
84 ${BOOST_FILESYSTEM_SOURCES_DIR}/windows_file_codecvt.cpp 112 )
85 ) 113
86 114 elseif (CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
87 # Starting with release 0.8.2, Orthanc statically links against
88 # libiconv, even on Windows. Indeed, the "WCONV" library of
89 # Windows XP seems not to support properly several codepages
90 # (notably "Latin3", "Hebrew", and "Arabic").
91
92 if (USE_BOOST_ICONV)
93 include(${ORTHANC_ROOT}/Resources/CMake/LibIconvConfiguration.cmake)
94 else()
95 add_definitions(-DBOOST_LOCALE_WITH_WCONV=1)
96 endif()
97
98 add_definitions(
99 -DBOOST_LOCALE_NO_POSIX_BACKEND=1
100 -DBOOST_LOCALE_NO_STD_BACKEND=1
101 )
102
103 elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Emscripten")
104 add_definitions(
105 -DBOOST_LOCALE_NO_POSIX_BACKEND=1
106 -DBOOST_LOCALE_NO_STD_BACKEND=1
107 )
108 115
109 else() 116 else()
110 message(FATAL_ERROR "Support your platform here") 117 message(FATAL_ERROR "Support your platform here")
111 endif() 118 endif()
112 119
113 if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") 120
114 list(APPEND BOOST_SOURCES 121 ##
115 ${BOOST_SOURCES_DIR}/libs/filesystem/src/utf8_codecvt_facet.cpp 122 ## Configuration of boost::regex
116 ) 123 ##
117 endif() 124
118
119 aux_source_directory(${BOOST_SOURCES_DIR}/libs/regex/src BOOST_REGEX_SOURCES) 125 aux_source_directory(${BOOST_SOURCES_DIR}/libs/regex/src BOOST_REGEX_SOURCES)
120 126
121 list(APPEND BOOST_SOURCES 127 list(APPEND BOOST_SOURCES
122 ${BOOST_REGEX_SOURCES} 128 ${BOOST_REGEX_SOURCES}
129 )
130
131
132 ##
133 ## Configuration of boost::datetime
134 ##
135
136 list(APPEND BOOST_SOURCES
123 ${BOOST_SOURCES_DIR}/libs/date_time/src/gregorian/greg_month.cpp 137 ${BOOST_SOURCES_DIR}/libs/date_time/src/gregorian/greg_month.cpp
124 ${BOOST_SOURCES_DIR}/libs/system/src/error_code.cpp 138 )
125 ) 139
126 140
127 if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Emscripten") 141 ##
128 list(APPEND BOOST_SOURCES 142 ## Configuration of boost::filesystem
129 ${BOOST_SOURCES_DIR}/libs/locale/src/encoding/codepage.cpp 143 ##
130 ) 144
131 endif() 145 if (CMAKE_SYSTEM_NAME STREQUAL "PNaCl" OR
132 146 CMAKE_SYSTEM_NAME STREQUAL "NaCl32" OR
133 if (${CMAKE_SYSTEM_NAME} STREQUAL "PNaCl" OR 147 CMAKE_SYSTEM_NAME STREQUAL "NaCl64")
134 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl32" OR
135 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl64")
136 # boost::filesystem is not available on PNaCl 148 # boost::filesystem is not available on PNaCl
137 add_definitions( 149 add_definitions(
138 -DBOOST_HAS_FILESYSTEM_V3=0 150 -DBOOST_HAS_FILESYSTEM_V3=0
139 -D__INTEGRITY=1 151 -D__INTEGRITY=1
140 ) 152 )
141 else() 153 else()
142 add_definitions( 154 add_definitions(
143 -DBOOST_HAS_FILESYSTEM_V3=1 155 -DBOOST_HAS_FILESYSTEM_V3=1
144 ) 156 )
145 list(APPEND BOOST_SOURCES 157 list(APPEND BOOST_SOURCES
146 ${BOOST_FILESYSTEM_SOURCES_DIR}/codecvt_error_category.cpp 158 ${BOOST_NAME}/libs/filesystem/src/codecvt_error_category.cpp
147 ${BOOST_FILESYSTEM_SOURCES_DIR}/operations.cpp 159 ${BOOST_NAME}/libs/filesystem/src/operations.cpp
148 ${BOOST_FILESYSTEM_SOURCES_DIR}/path.cpp 160 ${BOOST_NAME}/libs/filesystem/src/path.cpp
149 ${BOOST_FILESYSTEM_SOURCES_DIR}/path_traits.cpp 161 ${BOOST_NAME}/libs/filesystem/src/path_traits.cpp
150 ) 162 )
151 endif() 163
152 164 if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR
153 if (USE_BOOST_LOCALE_BACKENDS) 165 CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
154 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR 166 list(APPEND BOOST_SOURCES
155 ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" OR 167 ${BOOST_SOURCES_DIR}/libs/filesystem/src/utf8_codecvt_facet.cpp
156 ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR 168 )
157 ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR 169
158 ${CMAKE_SYSTEM_NAME} STREQUAL "PNaCl" OR 170 elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")
159 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl32" OR 171 list(APPEND BOOST_SOURCES
160 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl64") 172 ${BOOST_NAME}/libs/filesystem/src/windows_file_codecvt.cpp
161 list(APPEND BOOST_SOURCES 173 )
162 ${BOOST_SOURCES_DIR}/libs/locale/src/posix/codecvt.cpp
163 ${BOOST_SOURCES_DIR}/libs/locale/src/posix/collate.cpp
164 ${BOOST_SOURCES_DIR}/libs/locale/src/posix/converter.cpp
165 ${BOOST_SOURCES_DIR}/libs/locale/src/posix/numeric.cpp
166 ${BOOST_SOURCES_DIR}/libs/locale/src/posix/posix_backend.cpp
167 )
168 elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
169 list(APPEND BOOST_SOURCES
170 ${BOOST_SOURCES_DIR}/libs/locale/src/win32/collate.cpp
171 ${BOOST_SOURCES_DIR}/libs/locale/src/win32/converter.cpp
172 ${BOOST_SOURCES_DIR}/libs/locale/src/win32/lcid.cpp
173 ${BOOST_SOURCES_DIR}/libs/locale/src/win32/numeric.cpp
174 ${BOOST_SOURCES_DIR}/libs/locale/src/win32/win_backend.cpp
175 )
176 else()
177 message(FATAL_ERROR "Support your platform here")
178 endif() 174 endif()
179 175 endif()
180 list(APPEND BOOST_SOURCES 176
181 ${BOOST_REGEX_SOURCES} 177
182 ${BOOST_SOURCES_DIR}/libs/date_time/src/gregorian/greg_month.cpp 178 ##
183 ${BOOST_SOURCES_DIR}/libs/system/src/error_code.cpp 179 ## Configuration of boost::locale
184 180 ##
185 ${BOOST_FILESYSTEM_SOURCES_DIR}/codecvt_error_category.cpp 181
186 ${BOOST_FILESYSTEM_SOURCES_DIR}/operations.cpp 182 if (NOT ENABLE_LOCALE)
187 ${BOOST_FILESYSTEM_SOURCES_DIR}/path.cpp 183 message("boost::locale is disabled")
188 ${BOOST_FILESYSTEM_SOURCES_DIR}/path_traits.cpp 184 else()
189 185 list(APPEND BOOST_SOURCES
186 ${BOOST_SOURCES_DIR}/libs/locale/src/encoding/codepage.cpp
190 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/generator.cpp 187 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/generator.cpp
191 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/date_time.cpp 188 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/date_time.cpp
192 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/formatting.cpp 189 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/formatting.cpp
193 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/ids.cpp 190 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/ids.cpp
194 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/localization_backend.cpp 191 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/localization_backend.cpp
198 ${BOOST_SOURCES_DIR}/libs/locale/src/util/default_locale.cpp 195 ${BOOST_SOURCES_DIR}/libs/locale/src/util/default_locale.cpp
199 ${BOOST_SOURCES_DIR}/libs/locale/src/util/gregorian.cpp 196 ${BOOST_SOURCES_DIR}/libs/locale/src/util/gregorian.cpp
200 ${BOOST_SOURCES_DIR}/libs/locale/src/util/info.cpp 197 ${BOOST_SOURCES_DIR}/libs/locale/src/util/info.cpp
201 ${BOOST_SOURCES_DIR}/libs/locale/src/util/locale_data.cpp 198 ${BOOST_SOURCES_DIR}/libs/locale/src/util/locale_data.cpp
202 ) 199 )
203 endif() 200
204 201 if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR
205 add_definitions( 202 CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR
206 # Static build of Boost 203 CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR
207 -DBOOST_ALL_NO_LIB 204 CMAKE_SYSTEM_NAME STREQUAL "kFreeBSD" OR
208 -DBOOST_ALL_NOLIB 205 CMAKE_SYSTEM_NAME STREQUAL "PNaCl" OR
209 -DBOOST_DATE_TIME_NO_LIB 206 CMAKE_SYSTEM_NAME STREQUAL "NaCl32" OR
210 -DBOOST_THREAD_BUILD_LIB 207 CMAKE_SYSTEM_NAME STREQUAL "NaCl64")
211 -DBOOST_PROGRAM_OPTIONS_NO_LIB 208 list(APPEND BOOST_SOURCES
212 -DBOOST_REGEX_NO_LIB 209 ${BOOST_SOURCES_DIR}/libs/locale/src/posix/codecvt.cpp
213 -DBOOST_SYSTEM_NO_LIB 210 ${BOOST_SOURCES_DIR}/libs/locale/src/posix/collate.cpp
214 -DBOOST_LOCALE_NO_LIB 211 ${BOOST_SOURCES_DIR}/libs/locale/src/posix/converter.cpp
215 -DBOOST_HAS_LOCALE=1 212 ${BOOST_SOURCES_DIR}/libs/locale/src/posix/numeric.cpp
216 ) 213 ${BOOST_SOURCES_DIR}/libs/locale/src/posix/posix_backend.cpp
217 214 )
218 if (CMAKE_COMPILER_IS_GNUCXX) 215
219 add_definitions(-isystem ${BOOST_SOURCES_DIR}) 216 add_definitions(
220 endif() 217 -DBOOST_LOCALE_WITH_ICONV=1
221 218 -DBOOST_LOCALE_NO_WINAPI_BACKEND=1
222 include_directories( 219 -DBOOST_LOCALE_NO_STD_BACKEND=1
223 ${BOOST_SOURCES_DIR} 220 )
224 ) 221
225 222 elseif (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
223 list(APPEND BOOST_SOURCES
224 ${BOOST_SOURCES_DIR}/libs/locale/src/std/codecvt.cpp
225 ${BOOST_SOURCES_DIR}/libs/locale/src/std/collate.cpp
226 ${BOOST_SOURCES_DIR}/libs/locale/src/std/converter.cpp
227 ${BOOST_SOURCES_DIR}/libs/locale/src/std/numeric.cpp
228 ${BOOST_SOURCES_DIR}/libs/locale/src/std/std_backend.cpp
229 )
230
231 add_definitions(
232 -DBOOST_LOCALE_WITH_ICONV=1
233 -DBOOST_LOCALE_NO_WINAPI_BACKEND=1
234 -DBOOST_LOCALE_NO_POSIX_BACKEND=1
235 )
236
237 elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")
238 list(APPEND BOOST_SOURCES
239 ${BOOST_SOURCES_DIR}/libs/locale/src/win32/collate.cpp
240 ${BOOST_SOURCES_DIR}/libs/locale/src/win32/converter.cpp
241 ${BOOST_SOURCES_DIR}/libs/locale/src/win32/lcid.cpp
242 ${BOOST_SOURCES_DIR}/libs/locale/src/win32/numeric.cpp
243 ${BOOST_SOURCES_DIR}/libs/locale/src/win32/win_backend.cpp
244 )
245
246 add_definitions(
247 -DBOOST_LOCALE_NO_POSIX_BACKEND=1
248 -DBOOST_LOCALE_NO_STD_BACKEND=1
249 )
250
251 # Starting with release 0.8.2, Orthanc statically links against
252 # libiconv, even on Windows. Indeed, the "WCONV" library of
253 # Windows XP seems not to support properly several codepages
254 # (notably "Latin3", "Hebrew", and "Arabic"). Set
255 # "USE_BOOST_ICONV" to "OFF" to use WCONV anyway.
256
257 if (USE_BOOST_ICONV)
258 add_definitions(-DBOOST_LOCALE_WITH_ICONV=1)
259 else()
260 add_definitions(-DBOOST_LOCALE_WITH_WCONV=1)
261 endif()
262
263 else()
264 message(FATAL_ERROR "Support your platform here")
265 endif()
266 endif()
267
268
226 source_group(ThirdParty\\boost REGULAR_EXPRESSION ${BOOST_SOURCES_DIR}/.*) 269 source_group(ThirdParty\\boost REGULAR_EXPRESSION ${BOOST_SOURCES_DIR}/.*)
227 270
228 else()
229 add_definitions(
230 -DBOOST_HAS_LOCALE=1
231 )
232 endif() 271 endif()
233
234
235 add_definitions(
236 -DBOOST_HAS_DATE_TIME=1
237 -DBOOST_HAS_REGEX=1
238 )