Mercurial > hg > orthanc-stone
annotate Resources/CMake/PixmanConfiguration.cmake @ 26:99b833843ba9
fix MSVC 64bit builds
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 23 Nov 2016 17:07:15 +0100 |
parents | 490347621f42 |
children | 22ab2d8566fa |
rev | line source |
---|---|
0 | 1 if (STATIC_BUILD OR NOT USE_SYSTEM_PIXMAN) |
2 SET(PIXMAN_SOURCES_DIR ${CMAKE_BINARY_DIR}/pixman-0.34.0) | |
3 SET(PIXMAN_URL "http://www.montefiore.ulg.ac.be/~jodogne/Orthanc/ThirdPartyDownloads/Stone/pixman-0.34.0.tar.gz") | |
4 SET(PIXMAN_MD5 "e80ebae4da01e77f68744319f01d52a3") | |
5 | |
6 if (IS_DIRECTORY "${PIXMAN_SOURCES_DIR}") | |
7 set(FirstRun OFF) | |
8 else() | |
9 set(FirstRun ON) | |
10 endif() | |
11 | |
12 DownloadPackage(${PIXMAN_MD5} ${PIXMAN_URL} "${PIXMAN_SOURCES_DIR}") | |
13 | |
14 # Apply a patch for NaCl32: This bypasses the custom implementation of | |
15 # "cpuid" that makes use of assembly code leading to "unrecognized | |
16 # instruction" when validating ".nexe" files using "ncval" | |
17 execute_process( | |
18 COMMAND ${PATCH_EXECUTABLE} -p0 -N -i ${CMAKE_CURRENT_LIST_DIR}/PixmanConfiguration.patch | |
19 WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
20 RESULT_VARIABLE Failure | |
21 ) | |
22 | |
23 if (Failure AND FirstRun) | |
24 message(FATAL_ERROR "Error while patching a file") | |
25 endif() | |
26 | |
27 set(PIXMAN_VERSION_MAJOR 0) | |
28 set(PIXMAN_VERSION_MINOR 34) | |
29 set(PIXMAN_VERSION_MICRO 0) | |
30 configure_file( | |
31 ${PIXMAN_SOURCES_DIR}/pixman/pixman-version.h.in | |
32 ${PIXMAN_SOURCES_DIR}/pixman/pixman-version.h) | |
33 | |
34 list(APPEND PIXMAN_SOURCES | |
35 ${PIXMAN_SOURCES_DIR}/pixman/pixman-access-accessors.c | |
36 ${PIXMAN_SOURCES_DIR}/pixman/pixman-access.c | |
37 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm.c | |
38 #${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon.c | |
39 #${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd.c | |
40 ${PIXMAN_SOURCES_DIR}/pixman/pixman-bits-image.c | |
41 ${PIXMAN_SOURCES_DIR}/pixman/pixman.c | |
42 ${PIXMAN_SOURCES_DIR}/pixman/pixman-combine32.c | |
43 ${PIXMAN_SOURCES_DIR}/pixman/pixman-combine-float.c | |
44 ${PIXMAN_SOURCES_DIR}/pixman/pixman-conical-gradient.c | |
45 ${PIXMAN_SOURCES_DIR}/pixman/pixman-edge-accessors.c | |
46 ${PIXMAN_SOURCES_DIR}/pixman/pixman-edge.c | |
47 ${PIXMAN_SOURCES_DIR}/pixman/pixman-fast-path.c | |
48 ${PIXMAN_SOURCES_DIR}/pixman/pixman-filter.c | |
49 ${PIXMAN_SOURCES_DIR}/pixman/pixman-general.c | |
50 ${PIXMAN_SOURCES_DIR}/pixman/pixman-glyph.c | |
51 ${PIXMAN_SOURCES_DIR}/pixman/pixman-gradient-walker.c | |
52 ${PIXMAN_SOURCES_DIR}/pixman/pixman-image.c | |
53 ${PIXMAN_SOURCES_DIR}/pixman/pixman-implementation.c | |
54 ${PIXMAN_SOURCES_DIR}/pixman/pixman-linear-gradient.c | |
55 ${PIXMAN_SOURCES_DIR}/pixman/pixman-matrix.c | |
56 ${PIXMAN_SOURCES_DIR}/pixman/pixman-mips.c | |
57 #${PIXMAN_SOURCES_DIR}/pixman/pixman-mips-dspr2.c | |
58 ${PIXMAN_SOURCES_DIR}/pixman/pixman-mmx.c | |
59 ${PIXMAN_SOURCES_DIR}/pixman/pixman-noop.c | |
60 ${PIXMAN_SOURCES_DIR}/pixman/pixman-ppc.c | |
61 ${PIXMAN_SOURCES_DIR}/pixman/pixman-radial-gradient.c | |
62 ${PIXMAN_SOURCES_DIR}/pixman/pixman-region16.c | |
63 ${PIXMAN_SOURCES_DIR}/pixman/pixman-region32.c | |
64 #${PIXMAN_SOURCES_DIR}/pixman/pixman-region.c | |
65 ${PIXMAN_SOURCES_DIR}/pixman/pixman-solid-fill.c | |
66 #${PIXMAN_SOURCES_DIR}/pixman/pixman-sse2.c | |
67 #${PIXMAN_SOURCES_DIR}/pixman/pixman-ssse3.c | |
68 ${PIXMAN_SOURCES_DIR}/pixman/pixman-timer.c | |
69 ${PIXMAN_SOURCES_DIR}/pixman/pixman-trap.c | |
70 ${PIXMAN_SOURCES_DIR}/pixman/pixman-utils.c | |
71 #${PIXMAN_SOURCES_DIR}/pixman/pixman-vmx.c | |
72 ${PIXMAN_SOURCES_DIR}/pixman/pixman-x86.c | |
73 ) | |
74 | |
75 set(PIXMAN_DEFINITIONS "PACKAGE=\"pixman\"") | |
76 | |
77 if (CMAKE_SYSTEM_PROCESSOR) | |
78 message("Processor: ${CMAKE_SYSTEM_PROCESSOR}") | |
79 else() | |
80 message("Processor: Not applicable") | |
81 endif() | |
82 | |
83 | |
84 if (CMAKE_SYSTEM_NAME STREQUAL "Windows") | |
85 | |
86 ########################## | |
87 ## Windows 32 or 64 | |
88 ########################## | |
89 | |
90 if (CMAKE_COMPILER_IS_GNUCXX) | |
91 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") | |
92 | |
93 # The option "-mstackrealign" is necessary to avoid a crash on | |
94 # Windows if enabling SSE2. As an alternative, it is possible to | |
95 # fully disable hardware acceleration. | |
96 # https://bugs.freedesktop.org/show_bug.cgi?id=68300#c4 | |
97 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2 -mssse3 -mstackrealign") | |
98 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -mssse3 -mstackrealign") | |
99 endif() | |
100 | |
101 list(APPEND PIXMAN_SOURCES | |
102 ${PIXMAN_SOURCES_DIR}/pixman/pixman-sse2.c | |
103 ${PIXMAN_SOURCES_DIR}/pixman/pixman-ssse3.c | |
104 ) | |
26
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
105 |
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
106 if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "4") |
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
107 # Only enable MMX on Windows 32 |
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
108 add_definitions( |
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
109 -DUSE_X86_MMX=1 |
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
110 ) |
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
111 endif() |
99b833843ba9
fix MSVC 64bit builds
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3
diff
changeset
|
112 |
0 | 113 add_definitions( |
114 -DUSE_SSE2=1 | |
115 -DUSE_SSSE3=1 | |
116 ) | |
117 | |
118 | |
119 ########################## | |
120 ## Generic x86 processor | |
121 ########################## | |
122 | |
123 elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86" OR | |
124 CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR | |
125 CMAKE_SYSTEM_NAME STREQUAL "NaCl32" OR | |
3
490347621f42
attempt to build for OS X
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
126 CMAKE_SYSTEM_NAME STREQUAL "NaCl64" OR |
490347621f42
attempt to build for OS X
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
127 CMAKE_SYSTEM_NAME STREQUAL "Darwin") |
0 | 128 |
129 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") | |
130 | |
131 if (${CMAKE_SYSTEM_NAME} STREQUAL "NaCl32" OR | |
132 ${CMAKE_SYSTEM_NAME} STREQUAL "NaCl64") | |
133 # The MMX instructions lead to "unrecognized instruction" when | |
134 # validating ".nexe" files using "ncval", disable them | |
135 else() | |
136 #add_definitions(-DUSE_X86_MMX=1) | |
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 ) | |
143 add_definitions( | |
144 -DUSE_SSE2=1 | |
145 -DUSE_SSSE3=1 | |
146 ) | |
147 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2 -mssse3") | |
148 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -mssse3") | |
149 | |
150 | |
151 ########################## | |
152 ## ARM processor | |
153 ########################## | |
154 | |
155 elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv5te" OR | |
156 CMAKE_SYSTEM_PROCESSOR STREQUAL "armv6" OR | |
157 CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a" OR | |
158 CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") | |
159 | |
160 set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};TLS=__thread") | |
161 | |
162 if (NEON) | |
163 message("Processor with NEON instructions") | |
164 list(APPEND PIXMAN_SOURCES | |
165 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon.c | |
166 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon-asm.S | |
167 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-neon-asm-bilinear.S | |
168 ) | |
169 add_definitions( | |
170 -DUSE_ARM_NEON=1 | |
171 ) | |
172 elseif() | |
173 message("Processor without NEON instructions") | |
174 endif() | |
175 | |
176 add_definitions( | |
177 -DUSE_ARM_SIMD=1 | |
178 ) | |
179 list(APPEND PIXMAN_SOURCES | |
180 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm.c | |
181 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd-asm.S | |
182 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd-asm-scaled.S | |
183 ${PIXMAN_SOURCES_DIR}/pixman/pixman-arm-simd.c | |
184 ) | |
185 | |
186 ########################## | |
187 ## Portable Google NaCl | |
188 ########################## | |
189 | |
190 elseif (CMAKE_SYSTEM_NAME STREQUAL "PNaCl") | |
191 # No hardware acceleration | |
192 set(PIXMAN_DEFINITIONS "${PIXMAN_DEFINITIONS};TLS=__thread") | |
193 | |
194 else() | |
195 message(FATAL_ERROR "Support your platform here") | |
196 endif() | |
197 | |
198 | |
199 include_directories( | |
200 ${PIXMAN_SOURCES_DIR}/pixman | |
201 ) | |
202 | |
203 set_property( | |
204 SOURCE ${PIXMAN_SOURCES} | |
205 PROPERTY COMPILE_DEFINITIONS ${PIXMAN_DEFINITIONS} | |
206 ) | |
207 | |
208 else() | |
209 | |
210 pkg_search_module(PIXMAN REQUIRED pixman-1) | |
211 include_directories(${PIXMAN_INCLUDE_DIRS}) | |
212 link_libraries(${PIXMAN_LIBRARIES}) | |
213 | |
214 endif() |