comparison Orthanc/Resources/CMake/BoostConfiguration.cmake @ 3:d5027f9f676a

fix build
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 01 Jun 2015 15:12:22 +0200
parents
children
comparison
equal deleted inserted replaced
2:8f22ed9d48d5 3:d5027f9f676a
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)
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.55.0
43 set(BOOST_NAME boost_1_55_0)
44 set(BOOST_BCP_SUFFIX bcpdigest-0.7.4)
45 set(BOOST_MD5 "409f7a0e4fb1f5659d07114f3133b67b")
46 set(BOOST_FILESYSTEM_SOURCES_DIR "${BOOST_NAME}/libs/filesystem/src")
47
48 set(BOOST_SOURCES_DIR ${CMAKE_BINARY_DIR}/${BOOST_NAME})
49 DownloadPackage(
50 "${BOOST_MD5}"
51 "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/${BOOST_NAME}_${BOOST_BCP_SUFFIX}.tar.gz"
52 "${BOOST_SOURCES_DIR}"
53 )
54
55 set(BOOST_SOURCES)
56
57 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR
58 ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" OR
59 ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR
60 ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD")
61 list(APPEND BOOST_SOURCES
62 ${BOOST_SOURCES_DIR}/libs/thread/src/pthread/once.cpp
63 ${BOOST_SOURCES_DIR}/libs/thread/src/pthread/thread.cpp
64 )
65 add_definitions(
66 -DBOOST_LOCALE_WITH_ICONV=1
67 )
68
69 if ("${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase")
70 add_definitions(-DBOOST_HAS_SCHED_YIELD=1)
71 endif()
72
73 elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
74 list(APPEND BOOST_SOURCES
75 ${BOOST_SOURCES_DIR}/libs/thread/src/win32/tss_dll.cpp
76 ${BOOST_SOURCES_DIR}/libs/thread/src/win32/thread.cpp
77 ${BOOST_SOURCES_DIR}/libs/thread/src/win32/tss_pe.cpp
78 ${BOOST_FILESYSTEM_SOURCES_DIR}/windows_file_codecvt.cpp
79 )
80
81 # Starting with release 0.8.2, Orthanc statically links against
82 # libiconv, even on Windows. Indeed, the "WCONV" library of
83 # Windows XP seems not to support properly several codepages
84 # (notably "Latin3", "Hebrew", and "Arabic").
85
86 if (USE_BOOST_ICONV)
87 include(${ORTHANC_ROOT}/Resources/CMake/LibIconvConfiguration.cmake)
88 else()
89 add_definitions(-DBOOST_LOCALE_WITH_WCONV=1)
90 endif()
91
92 else()
93 message(FATAL_ERROR "Support your platform here")
94 endif()
95
96 if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
97 list(APPEND BOOST_SOURCES
98 ${BOOST_SOURCES_DIR}/libs/filesystem/src/utf8_codecvt_facet.cpp
99 )
100 endif()
101
102 if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
103 # This is a patch to compile Boost 1.55.0 with Clang 3.4 and later
104 # (including XCode 5.1). Fixes issue 14 of Orthanc.
105 # https://trac.macports.org/ticket/42282#comment:10
106 execute_process(
107 COMMAND patch -p0 -N -i ${ORTHANC_ROOT}/Resources/Patches/boost-1.55.0-clang-atomic.patch
108 WORKING_DIRECTORY ${BOOST_SOURCES_DIR}
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_FILESYSTEM_SOURCES_DIR}/codecvt_error_category.cpp
118 ${BOOST_FILESYSTEM_SOURCES_DIR}/operations.cpp
119 ${BOOST_FILESYSTEM_SOURCES_DIR}/path.cpp
120 ${BOOST_FILESYSTEM_SOURCES_DIR}/path_traits.cpp
121 ${BOOST_SOURCES_DIR}/libs/locale/src/encoding/codepage.cpp
122 ${BOOST_SOURCES_DIR}/libs/system/src/error_code.cpp
123 )
124
125 list(APPEND THIRD_PARTY_SOURCES ${BOOST_SOURCES})
126
127 add_definitions(
128 # Static build of Boost
129 -DBOOST_ALL_NO_LIB
130 -DBOOST_ALL_NOLIB
131 -DBOOST_DATE_TIME_NO_LIB
132 -DBOOST_THREAD_BUILD_LIB
133 -DBOOST_PROGRAM_OPTIONS_NO_LIB
134 -DBOOST_REGEX_NO_LIB
135 -DBOOST_SYSTEM_NO_LIB
136 -DBOOST_LOCALE_NO_LIB
137 -DBOOST_HAS_LOCALE=1
138 -DBOOST_HAS_FILESYSTEM_V3=1
139 )
140
141 if (${CMAKE_COMPILER_IS_GNUCXX})
142 add_definitions(-isystem ${BOOST_SOURCES_DIR})
143 endif()
144
145 include_directories(
146 ${BOOST_SOURCES_DIR}
147 )
148
149 source_group(ThirdParty\\Boost REGULAR_EXPRESSION ${BOOST_SOURCES_DIR}/.*)
150 else()
151 add_definitions(
152 -DBOOST_HAS_LOCALE=1
153 )
154 endif()
155
156
157 add_definitions(
158 -DBOOST_HAS_DATE_TIME=1
159 -DBOOST_HAS_REGEX=1
160 )