Mercurial > hg > orthanc-stone
annotate OrthancStone/Resources/CMake/PixmanConfiguration.cmake @ 2169:fe5406abd43f
added separate class Windowing
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 21 Oct 2024 15:40:34 +0200 |
parents | 16c01cc201e7 |
children |
rev | line source |
---|---|
47 | 1 # Stone of Orthanc |
2 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics | |
3 # Department, University Hospital of Liege, Belgium | |
2124
16c01cc201e7
updated copyright, as Osimis is not active on Orthanc anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2114
diff
changeset
|
4 # Copyright (C) 2017-2023 Osimis S.A., Belgium |
2114
c23eef785569
update year to 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2111
diff
changeset
|
5 # Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
47 | 6 # |
7 # This program is free software: you can redistribute it and/or | |
1598
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1597
diff
changeset
|
8 # modify it under the terms of the GNU Lesser General Public License |
47 | 9 # as published by the Free Software Foundation, either version 3 of |
10 # the License, or (at your option) any later version. | |
11 # | |
12 # This program is distributed in the hope that it will be useful, but | |
13 # WITHOUT ANY WARRANTY; without even the implied warranty of | |
1598
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1597
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1597
diff
changeset
|
15 # Lesser General Public License for more details. |
1597
f9e3a9c21c0f
removed annoying whitespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
16 # |
1598
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1597
diff
changeset
|
17 # You should have received a copy of the GNU Lesser General Public |
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1597
diff
changeset
|
18 # License along with this program. If not, see |
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1597
diff
changeset
|
19 # <http://www.gnu.org/licenses/>. |
47 | 20 |
21 | |
0 | 22 if (STATIC_BUILD OR NOT USE_SYSTEM_PIXMAN) |
23 SET(PIXMAN_SOURCES_DIR ${CMAKE_BINARY_DIR}/pixman-0.34.0) | |
2111
f8f80e432abc
third party downloads from uclouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2077
diff
changeset
|
24 SET(PIXMAN_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/pixman-0.34.0.tar.gz") |
0 | 25 SET(PIXMAN_MD5 "e80ebae4da01e77f68744319f01d52a3") |
26 | |
27 if (IS_DIRECTORY "${PIXMAN_SOURCES_DIR}") | |
28 set(FirstRun OFF) | |
29 else() | |
30 set(FirstRun ON) | |
31 endif() | |
32 | |
33 DownloadPackage(${PIXMAN_MD5} ${PIXMAN_URL} "${PIXMAN_SOURCES_DIR}") | |
34 | |
35 # Apply a patch for NaCl32: This bypasses the custom implementation of | |
36 # "cpuid" that makes use of assembly code leading to "unrecognized | |
37 # instruction" when validating ".nexe" files using "ncval" | |
38 execute_process( | |
39 COMMAND ${PATCH_EXECUTABLE} -p0 -N -i ${CMAKE_CURRENT_LIST_DIR}/PixmanConfiguration.patch | |
40 WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
41 RESULT_VARIABLE Failure | |
42 ) | |
43 | |
44 if (Failure AND FirstRun) | |
45 message(FATAL_ERROR "Error while patching a file") | |
46 endif() | |
47 | |
48 set(PIXMAN_VERSION_MAJOR 0) | |
49 set(PIXMAN_VERSION_MINOR 34) | |
50 set(PIXMAN_VERSION_MICRO 0) | |
51 configure_file( | |
52 ${PIXMAN_SOURCES_DIR}/pixman/pixman-version.h.in | |
53 ${PIXMAN_SOURCES_DIR}/pixman/pixman-version.h) | |
54 | |
55 list(APPEND PIXMAN_SOURCES | |
56 ${PIXMAN_SOURCES_DIR}/pixman/pixman-access-accessors.c | |
57 ${PIXMAN_SOURCES_DIR}/pixman/pixman-access.c | |
58 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm.c | |
59 #${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon.c | |
60 #${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd.c | |
61 ${PIXMAN_SOURCES_DIR}/pixman/pixman-bits-image.c | |
62 ${PIXMAN_SOURCES_DIR}/pixman/pixman.c | |
63 ${PIXMAN_SOURCES_DIR}/pixman/pixman-combine32.c | |
64 ${PIXMAN_SOURCES_DIR}/pixman/pixman-combine-float.c | |
65 ${PIXMAN_SOURCES_DIR}/pixman/pixman-conical-gradient.c | |
66 ${PIXMAN_SOURCES_DIR}/pixman/pixman-edge-accessors.c | |
67 ${PIXMAN_SOURCES_DIR}/pixman/pixman-edge.c | |
68 ${PIXMAN_SOURCES_DIR}/pixman/pixman-fast-path.c | |
69 ${PIXMAN_SOURCES_DIR}/pixman/pixman-filter.c | |
70 ${PIXMAN_SOURCES_DIR}/pixman/pixman-general.c | |
71 ${PIXMAN_SOURCES_DIR}/pixman/pixman-glyph.c | |
72 ${PIXMAN_SOURCES_DIR}/pixman/pixman-gradient-walker.c | |
73 ${PIXMAN_SOURCES_DIR}/pixman/pixman-image.c | |
74 ${PIXMAN_SOURCES_DIR}/pixman/pixman-implementation.c | |
75 ${PIXMAN_SOURCES_DIR}/pixman/pixman-linear-gradient.c | |
76 ${PIXMAN_SOURCES_DIR}/pixman/pixman-matrix.c | |
77 ${PIXMAN_SOURCES_DIR}/pixman/pixman-mips.c | |
78 #${PIXMAN_SOURCES_DIR}/pixman/pixman-mips-dspr2.c | |
79 ${PIXMAN_SOURCES_DIR}/pixman/pixman-mmx.c | |
80 ${PIXMAN_SOURCES_DIR}/pixman/pixman-noop.c | |
81 ${PIXMAN_SOURCES_DIR}/pixman/pixman-ppc.c | |
82 ${PIXMAN_SOURCES_DIR}/pixman/pixman-radial-gradient.c | |
83 ${PIXMAN_SOURCES_DIR}/pixman/pixman-region16.c | |
84 ${PIXMAN_SOURCES_DIR}/pixman/pixman-region32.c | |
85 #${PIXMAN_SOURCES_DIR}/pixman/pixman-region.c | |
86 ${PIXMAN_SOURCES_DIR}/pixman/pixman-solid-fill.c | |
87 #${PIXMAN_SOURCES_DIR}/pixman/pixman-sse2.c | |
88 #${PIXMAN_SOURCES_DIR}/pixman/pixman-ssse3.c | |
89 ${PIXMAN_SOURCES_DIR}/pixman/pixman-timer.c | |
90 ${PIXMAN_SOURCES_DIR}/pixman/pixman-trap.c | |
91 ${PIXMAN_SOURCES_DIR}/pixman/pixman-utils.c | |
92 #${PIXMAN_SOURCES_DIR}/pixman/pixman-vmx.c | |
93 ${PIXMAN_SOURCES_DIR}/pixman/pixman-x86.c | |
94 ) | |
95 | |
96 set(PIXMAN_DEFINITIONS "PACKAGE=\"pixman\"") | |
97 | |
98 if (CMAKE_SYSTEM_PROCESSOR) | |
99 message("Processor: ${CMAKE_SYSTEM_PROCESSOR}") | |
100 else() | |
101 message("Processor: Not applicable") | |
102 endif() | |
103 | |
104 | |
39 | 105 ########################## |
106 ## Portable Google NaCl | |
107 ########################## | |
108 | |
109 if (CMAKE_SYSTEM_NAME STREQUAL "PNaCl") | |
110 # No hardware acceleration | |
111 set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};TLS=__thread") | |
112 | |
263
38c795cc7c48
primitives for android ndk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
134
diff
changeset
|
113 elseif (CMAKE_SYSTEM_NAME STREQUAL "Emscripten" OR |
38c795cc7c48
primitives for android ndk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
134
diff
changeset
|
114 CMAKE_SYSTEM_NAME STREQUAL "Android") |
39 | 115 ########################## |
116 ## Emscripten (asm.js) | |
117 ########################## | |
118 | |
119 # No threading support | |
120 set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};PIXMAN_NO_TLS=1;HAVE_GCC_VECTOR_EXTENSIONS") | |
121 | |
122 elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows") | |
0 | 123 |
124 ########################## | |
125 ## Windows 32 or 64 | |
126 ########################## | |
127 | |
128 if (CMAKE_COMPILER_IS_GNUCXX) | |
129 set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};TLS=__thread;HAVE_GCC_VECTOR_EXTENSIONS;HAVE_BUILTIN_CLZ;HAVE_FEDIVBYZERO=1;HAVE_FENV_H=1;HAVE_MPROTECT=1;HAVE_FLOAT128;HAVE_POSIX_MEMALIGN;USE_GCC_INLINE_ASM=1;HAVE_GETPAGESIZE=1") | |
130 | |
131 # The option "-mstackrealign" is necessary to avoid a crash on | |
132 # Windows if enabling SSE2. As an alternative, it is possible to | |
133 # fully disable hardware acceleration. | |
134 # https://bugs.freedesktop.org/show_bug.cgi?id=68300#c4 | |
135 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2 -mssse3 -mstackrealign") | |
136 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -mssse3 -mstackrealign") | |
137 endif() | |
138 | |
139 list(APPEND PIXMAN_SOURCES | |
140 ${PIXMAN_SOURCES_DIR}/pixman/pixman-sse2.c | |
141 ${PIXMAN_SOURCES_DIR}/pixman/pixman-ssse3.c | |
142 ) | |
26
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
143 |
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
144 if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "4") |
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
145 # Only enable MMX on Windows 32 |
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
146 add_definitions( |
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
147 -DUSE_X86_MMX=1 |
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
148 ) |
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
149 endif() |
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
150 |
0 | 151 add_definitions( |
152 -DUSE_SSE2=1 | |
153 -DUSE_SSSE3=1 | |
154 ) | |
155 | |
156 | |
157 ########################## | |
158 ## Generic x86 processor | |
159 ########################## | |
160 | |
161 elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86" OR | |
162 CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR | |
163 CMAKE_SYSTEM_NAME STREQUAL "NaCl32" OR | |
3
490347621f42
attempt to build for OS X
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
164 CMAKE_SYSTEM_NAME STREQUAL "NaCl64" OR |
490347621f42
attempt to build for OS X
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
165 CMAKE_SYSTEM_NAME STREQUAL "Darwin") |
0 | 166 |
167 set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};TLS=__thread;HAVE_GCC_VECTOR_EXTENSIONS;HAVE_BUILTIN_CLZ;HAVE_MPROTECT=1;HAVE_FLOAT128;HAVE_POSIX_MEMALIGN;USE_GCC_INLINE_ASM;HAVE_GETPAGESIZE=1") | |
168 | |
169 if (${CMAKE_SYSTEM_NAME} STREQUAL "NaCl32" OR | |
170 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl64") | |
171 # The MMX instructions lead to "unrecognized instruction" when | |
172 # validating ".nexe" files using "ncval", disable them | |
173 else() | |
174 #add_definitions(-DUSE_X86_MMX=1) | |
175 endif() | |
176 | |
177 list(APPEND PIXMAN_SOURCES | |
178 ${PIXMAN_SOURCES_DIR}/pixman/pixman-sse2.c | |
179 ${PIXMAN_SOURCES_DIR}/pixman/pixman-ssse3.c | |
180 ) | |
181 add_definitions( | |
182 -DUSE_SSE2=1 | |
183 -DUSE_SSSE3=1 | |
184 ) | |
185 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2 -mssse3") | |
186 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -mssse3") | |
187 | |
188 | |
189 ########################## | |
190 ## ARM processor | |
191 ########################## | |
192 | |
193 elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv5te" OR | |
194 CMAKE_SYSTEM_PROCESSOR STREQUAL "armv6" OR | |
283 | 195 CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l" OR |
0 | 196 CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a" OR |
197 CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") | |
198 | |
199 set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};TLS=__thread") | |
200 | |
201 if (NEON) | |
202 message("Processor with NEON instructions") | |
203 list(APPEND PIXMAN_SOURCES | |
204 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon.c | |
205 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon-asm.S | |
206 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon-asm-bilinear.S | |
207 ) | |
208 add_definitions( | |
209 -DUSE_ARM_NEON=1 | |
210 ) | |
211 elseif() | |
212 message("Processor without NEON instructions") | |
213 endif() | |
214 | |
215 add_definitions( | |
216 -DUSE_ARM_SIMD=1 | |
217 ) | |
218 list(APPEND PIXMAN_SOURCES | |
219 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm.c | |
220 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd-asm.S | |
221 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd-asm-scaled.S | |
222 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd.c | |
223 ) | |
224 | |
225 else() | |
226 message(FATAL_ERROR "Support your platform here") | |
227 endif() | |
228 | |
229 | |
230 include_directories( | |
231 ${PIXMAN_SOURCES_DIR}/pixman | |
232 ) | |
233 | |
234 set_property( | |
235 SOURCE ${PIXMAN_SOURCES} | |
236 PROPERTY COMPILE_DEFINITIONS ${PIXMAN_DEFINITIONS} | |
237 ) | |
238 | |
239 else() | |
240 | |
241 pkg_search_module(PIXMAN REQUIRED pixman-1) | |
242 include_directories(${PIXMAN_INCLUDE_DIRS}) | |
243 link_libraries(${PIXMAN_LIBRARIES}) | |
244 | |
245 endif() |