comparison Framework/Orthanc/Resources/CMake/BoostConfiguration.cmake @ 1:2dbe613f6c93

add orthanc core
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 14 Oct 2016 15:39:01 +0200
parents
children 9220cf4a63d5
comparison
equal deleted inserted replaced
0:351ab0da0150 1:2dbe613f6c93
1 if (STATIC_BUILD OR NOT USE_SYSTEM_BOOST)
2 set(BOOST_STATIC 1)
3 else()
4 include(FindBoost)
5
6 set(BOOST_STATIC 0)
7 #set(Boost_DEBUG 1)
8 #set(Boost_USE_STATIC_LIBS ON)
9
10 find_package(Boost
11 COMPONENTS filesystem thread system date_time regex locale ${ORTHANC_BOOST_COMPONENTS})
12
13 if (NOT Boost_FOUND)
14 message(FATAL_ERROR "Unable to locate Boost on this system")
15 endif()
16
17 # Boost releases 1.44 through 1.47 supply both V2 and V3 filesystem
18 # http://www.boost.org/doc/libs/1_46_1/libs/filesystem/v3/doc/index.htm
19 if (${Boost_VERSION} LESS 104400)
20 add_definitions(
21 -DBOOST_HAS_FILESYSTEM_V3=0
22 )
23 else()
24 add_definitions(
25 -DBOOST_HAS_FILESYSTEM_V3=1
26 -DBOOST_FILESYSTEM_VERSION=3
27 )
28 endif()
29
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})
37 link_libraries(${Boost_LIBRARIES})
38 endif()
39
40
41 if (BOOST_STATIC)
42 # Parameters for Boost 1.60.0
43 set(BOOST_NAME boost_1_60_0)
44 set(BOOST_BCP_SUFFIX bcpdigest-1.0.1)
45 set(BOOST_MD5 "a789f8ec2056ad1c2d5f0cb64687cc7b")
46 set(BOOST_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/${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})
49
50 DownloadPackage(${BOOST_MD5} ${BOOST_URL} "${BOOST_SOURCES_DIR}")
51
52 set(BOOST_SOURCES)
53
54 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR
55 ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" OR
56 ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR
57 ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR
58 ${CMAKE_SYSTEM_NAME} STREQUAL "PNaCl" OR
59 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl32" OR
60 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl64")
61 list(APPEND BOOST_SOURCES
62 ${BOOST_SOURCES_DIR}/libs/atomic/src/lockpool.cpp
63 ${BOOST_SOURCES_DIR}/libs/thread/src/pthread/once.cpp
64 ${BOOST_SOURCES_DIR}/libs/thread/src/pthread/thread.cpp
65 )
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
72 if ("${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase" OR
73 ${CMAKE_SYSTEM_NAME} STREQUAL "PNaCl" OR
74 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl32" OR
75 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl64")
76 add_definitions(-DBOOST_HAS_SCHED_YIELD=1)
77 endif()
78
79 elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
80 list(APPEND BOOST_SOURCES
81 ${BOOST_SOURCES_DIR}/libs/thread/src/win32/tss_dll.cpp
82 ${BOOST_SOURCES_DIR}/libs/thread/src/win32/thread.cpp
83 ${BOOST_SOURCES_DIR}/libs/thread/src/win32/tss_pe.cpp
84 ${BOOST_FILESYSTEM_SOURCES_DIR}/windows_file_codecvt.cpp
85 )
86
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 else()
103 message(FATAL_ERROR "Support your platform here")
104 endif()
105
106 if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
107 list(APPEND BOOST_SOURCES
108 ${BOOST_SOURCES_DIR}/libs/filesystem/src/utf8_codecvt_facet.cpp
109 )
110 endif()
111
112 aux_source_directory(${BOOST_SOURCES_DIR}/libs/regex/src BOOST_REGEX_SOURCES)
113
114 list(APPEND BOOST_SOURCES
115 ${BOOST_REGEX_SOURCES}
116 ${BOOST_SOURCES_DIR}/libs/date_time/src/gregorian/greg_month.cpp
117 ${BOOST_SOURCES_DIR}/libs/locale/src/encoding/codepage.cpp
118 ${BOOST_SOURCES_DIR}/libs/system/src/error_code.cpp
119 )
120
121 if (${CMAKE_SYSTEM_NAME} STREQUAL "PNaCl" OR
122 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl32" OR
123 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl64")
124 # boost::filesystem is not available on PNaCl
125 add_definitions(
126 -DBOOST_HAS_FILESYSTEM_V3=0
127 -D__INTEGRITY=1
128 -DORTHANC_SANDBOXED=1
129 )
130 else()
131 add_definitions(-DBOOST_HAS_FILESYSTEM_V3=1)
132 list(APPEND BOOST_SOURCES
133 ${BOOST_FILESYSTEM_SOURCES_DIR}/codecvt_error_category.cpp
134 ${BOOST_FILESYSTEM_SOURCES_DIR}/operations.cpp
135 ${BOOST_FILESYSTEM_SOURCES_DIR}/path.cpp
136 ${BOOST_FILESYSTEM_SOURCES_DIR}/path_traits.cpp
137 )
138 endif()
139
140 if (USE_BOOST_LOCALE_BACKENDS)
141 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR
142 ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" OR
143 ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR
144 ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR
145 ${CMAKE_SYSTEM_NAME} STREQUAL "PNaCl" OR
146 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl32" OR
147 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl64")
148 list(APPEND BOOST_SOURCES
149 ${BOOST_SOURCES_DIR}/libs/locale/src/posix/codecvt.cpp
150 ${BOOST_SOURCES_DIR}/libs/locale/src/posix/collate.cpp
151 ${BOOST_SOURCES_DIR}/libs/locale/src/posix/converter.cpp
152 ${BOOST_SOURCES_DIR}/libs/locale/src/posix/numeric.cpp
153 ${BOOST_SOURCES_DIR}/libs/locale/src/posix/posix_backend.cpp
154 )
155 elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
156 list(APPEND BOOST_SOURCES
157 ${BOOST_SOURCES_DIR}/libs/locale/src/win32/collate.cpp
158 ${BOOST_SOURCES_DIR}/libs/locale/src/win32/converter.cpp
159 ${BOOST_SOURCES_DIR}/libs/locale/src/win32/lcid.cpp
160 ${BOOST_SOURCES_DIR}/libs/locale/src/win32/numeric.cpp
161 ${BOOST_SOURCES_DIR}/libs/locale/src/win32/win_backend.cpp
162 )
163 else()
164 message(FATAL_ERROR "Support your platform here")
165 endif()
166
167 list(APPEND BOOST_SOURCES
168 ${BOOST_REGEX_SOURCES}
169 ${BOOST_SOURCES_DIR}/libs/date_time/src/gregorian/greg_month.cpp
170 ${BOOST_SOURCES_DIR}/libs/system/src/error_code.cpp
171
172 ${BOOST_FILESYSTEM_SOURCES_DIR}/codecvt_error_category.cpp
173 ${BOOST_FILESYSTEM_SOURCES_DIR}/operations.cpp
174 ${BOOST_FILESYSTEM_SOURCES_DIR}/path.cpp
175 ${BOOST_FILESYSTEM_SOURCES_DIR}/path_traits.cpp
176
177 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/generator.cpp
178 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/date_time.cpp
179 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/formatting.cpp
180 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/ids.cpp
181 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/localization_backend.cpp
182 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/message.cpp
183 ${BOOST_SOURCES_DIR}/libs/locale/src/shared/mo_lambda.cpp
184 ${BOOST_SOURCES_DIR}/libs/locale/src/util/codecvt_converter.cpp
185 ${BOOST_SOURCES_DIR}/libs/locale/src/util/default_locale.cpp
186 ${BOOST_SOURCES_DIR}/libs/locale/src/util/gregorian.cpp
187 ${BOOST_SOURCES_DIR}/libs/locale/src/util/info.cpp
188 ${BOOST_SOURCES_DIR}/libs/locale/src/util/locale_data.cpp
189 )
190 endif()
191
192 add_definitions(
193 # Static build of Boost
194 -DBOOST_ALL_NO_LIB
195 -DBOOST_ALL_NOLIB
196 -DBOOST_DATE_TIME_NO_LIB
197 -DBOOST_THREAD_BUILD_LIB
198 -DBOOST_PROGRAM_OPTIONS_NO_LIB
199 -DBOOST_REGEX_NO_LIB
200 -DBOOST_SYSTEM_NO_LIB
201 -DBOOST_LOCALE_NO_LIB
202 -DBOOST_HAS_LOCALE=1
203 )
204
205 if (CMAKE_COMPILER_IS_GNUCXX)
206 add_definitions(-isystem ${BOOST_SOURCES_DIR})
207 endif()
208
209 include_directories(
210 ${BOOST_SOURCES_DIR}
211 )
212
213 source_group(ThirdParty\\Boost REGULAR_EXPRESSION ${BOOST_SOURCES_DIR}/.*)
214 else()
215 add_definitions(
216 -DBOOST_HAS_LOCALE=1
217 )
218 endif()
219
220
221 add_definitions(
222 -DBOOST_HAS_DATE_TIME=1
223 -DBOOST_HAS_REGEX=1
224 )