OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 | 5 |
6 # This gyp file contains the platform-specific optimizations for Skia | 6 # This gyp file contains the platform-specific optimizations for Skia |
7 { | 7 { |
8 'targets': [ | 8 'targets': [ |
9 # Due to an unfortunate intersection of lameness between gcc and gyp, | 9 # Due to an unfortunate intersection of lameness between gcc and gyp, |
10 # we have to build the *_SSE2.cpp files in a separate target. The | 10 # we have to build the *_SSE2.cpp files in a separate target. The |
11 # gcc lameness is that, in order to compile SSE2 intrinsics code, it | 11 # gcc lameness is that, in order to compile SSE2 intrinsics code, it |
12 # must be passed the -msse2 flag. However, with this flag, it may | 12 # must be passed the -msse2 flag. However, with this flag, it may |
13 # emit SSE2 instructions even for scalar code, such as the CPUID | 13 # emit SSE2 instructions even for scalar code, such as the CPUID |
14 # test used to test for the presence of SSE2. So that, and all other | 14 # test used to test for the presence of SSE2. So that, and all other |
15 # code must be compiled *without* -msse2. The gyp lameness is that it | 15 # code must be compiled *without* -msse2. The gyp lameness is that it |
16 # does not allow file-specific CFLAGS, so we must create this extra | 16 # does not allow file-specific CFLAGS, so we must create this extra |
17 # target for those files to be compiled with -msse2. | 17 # target for those files to be compiled with -msse2. |
18 # | 18 # |
19 # This is actually only a problem on 32-bit Linux (all Intel Macs have | 19 # This is actually only a problem on 32-bit Linux (all Intel Macs have |
20 # SSE2, Linux x86_64 has SSE2 by definition, and MSC will happily emit | 20 # SSE2, Linux x86_64 has SSE2 by definition, and MSC will happily emit |
21 # SSE2 from instrinsics, which generating plain ol' 386 for everything | 21 # SSE2 from instrinsics, which generating plain ol' 386 for everything |
22 # else). However, to keep the .gyp file simple and avoid platform-specific | 22 # else). However, to keep the .gyp file simple and avoid platform-specific |
23 # build breakage, we do this on all platforms. | 23 # build breakage, we do this on all platforms. |
24 | 24 |
25 # For about the same reason, we need to compile the ARM opts files | 25 # For about the same reason, we need to compile the ARM opts files |
26 # separately as well. | 26 # separately as well. |
27 { | 27 { |
28 'target_name': 'skia_opts', | 28 'target_name': 'skia_opts', |
29 'type': 'static_library', | 29 'type': 'static_library', |
| 30 'includes': [ |
| 31 'skia_common.gypi', |
| 32 ], |
30 'include_dirs': [ | 33 'include_dirs': [ |
31 'config', | |
32 '../third_party/skia/include/config', | |
33 '../third_party/skia/include/core', | 34 '../third_party/skia/include/core', |
34 '../third_party/skia/src/core', | 35 '../third_party/skia/src/core', |
35 '../third_party/skia/src/opts', | 36 '../third_party/skia/src/opts', |
36 ], | 37 ], |
37 'conditions': [ | 38 'conditions': [ |
38 [ 'os_posix == 1 and OS != "mac" and OS != "android" and \ | 39 [ 'os_posix == 1 and OS != "mac" and OS != "android" and \ |
39 target_arch != "arm" and target_arch != "mipsel"', { | 40 target_arch != "arm" and target_arch != "mipsel"', { |
40 'cflags': [ | 41 'cflags': [ |
41 '-msse2', | 42 '-msse2', |
42 ], | 43 ], |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 }], | 132 }], |
132 ], | 133 ], |
133 }, | 134 }, |
134 # For the same lame reasons as what is done for skia_opts, we have to | 135 # For the same lame reasons as what is done for skia_opts, we have to |
135 # create another target specifically for SSSE3 code as we would not want | 136 # create another target specifically for SSSE3 code as we would not want |
136 # to compile the SSE2 code with -mssse3 which would potentially allow | 137 # to compile the SSE2 code with -mssse3 which would potentially allow |
137 # gcc to generate SSSE3 code. | 138 # gcc to generate SSSE3 code. |
138 { | 139 { |
139 'target_name': 'skia_opts_ssse3', | 140 'target_name': 'skia_opts_ssse3', |
140 'type': 'static_library', | 141 'type': 'static_library', |
| 142 'includes': [ |
| 143 'skia_common.gypi', |
| 144 ], |
141 'include_dirs': [ | 145 'include_dirs': [ |
142 '..', | |
143 'config', | |
144 '../third_party/skia/include/config', | |
145 '../third_party/skia/include/core', | 146 '../third_party/skia/include/core', |
146 '../third_party/skia/src/core', | 147 '../third_party/skia/src/core', |
147 ], | 148 ], |
148 'conditions': [ | 149 'conditions': [ |
149 [ 'OS in ["linux", "freebsd", "openbsd", "solaris", "android"]', { | 150 [ 'OS in ["linux", "freebsd", "openbsd", "solaris", "android"]', { |
150 'cflags': [ | 151 'cflags': [ |
151 '-mssse3', | 152 '-mssse3', |
152 ], | 153 ], |
153 }], | 154 }], |
154 [ 'OS == "mac"', { | 155 [ 'OS == "mac"', { |
(...skipping 14 matching lines...) Expand all Loading... |
169 [ 'target_arch != "arm" and target_arch != "mipsel"', { | 170 [ 'target_arch != "arm" and target_arch != "mipsel"', { |
170 'sources': [ | 171 'sources': [ |
171 '../third_party/skia/src/opts/SkBitmapProcState_opts_SSSE3.cpp', | 172 '../third_party/skia/src/opts/SkBitmapProcState_opts_SSSE3.cpp', |
172 ], | 173 ], |
173 }], | 174 }], |
174 ], | 175 ], |
175 }, | 176 }, |
176 { | 177 { |
177 'target_name': 'skia_opts_none', | 178 'target_name': 'skia_opts_none', |
178 'type': 'static_library', | 179 'type': 'static_library', |
| 180 'includes': [ |
| 181 'skia_common.gypi', |
| 182 ], |
179 'include_dirs': [ | 183 'include_dirs': [ |
180 '..', | |
181 'config', | |
182 '../third_party/skia/include/config', | |
183 '../third_party/skia/include/core', | 184 '../third_party/skia/include/core', |
184 '../third_party/skia/src/core', | 185 '../third_party/skia/src/core', |
185 ], | 186 ], |
186 'sources': [ | 187 'sources': [ |
187 '../third_party/skia/src/opts/SkBitmapProcState_opts_none.cpp', | 188 '../third_party/skia/src/opts/SkBitmapProcState_opts_none.cpp', |
188 '../third_party/skia/src/opts/SkBlitMask_opts_none.cpp', | 189 '../third_party/skia/src/opts/SkBlitMask_opts_none.cpp', |
189 '../third_party/skia/src/opts/SkBlitRow_opts_none.cpp', | 190 '../third_party/skia/src/opts/SkBlitRow_opts_none.cpp', |
190 '../third_party/skia/src/opts/SkUtils_opts_none.cpp', | 191 '../third_party/skia/src/opts/SkUtils_opts_none.cpp', |
191 '../third_party/skia/src/opts/SkXfermode_opts_none.cpp', | 192 '../third_party/skia/src/opts/SkXfermode_opts_none.cpp', |
192 ], | 193 ], |
193 }, | 194 }, |
194 ], | 195 ], |
195 'conditions': [ | 196 'conditions': [ |
196 # NEON code must be compiled with -mfpu=neon which also affects scalar | 197 # NEON code must be compiled with -mfpu=neon which also affects scalar |
197 # code. To support dynamic NEON code paths, we need to build all | 198 # code. To support dynamic NEON code paths, we need to build all |
198 # NEON-specific sources in a separate static library. The situation | 199 # NEON-specific sources in a separate static library. The situation |
199 # is very similar to the SSSE3 one. | 200 # is very similar to the SSSE3 one. |
200 ['target_arch == "arm" and (arm_neon == 1 or arm_neon_optional == 1)', { | 201 ['target_arch == "arm" and (arm_neon == 1 or arm_neon_optional == 1)', { |
201 'targets': [ | 202 'targets': [ |
202 { | 203 { |
203 'target_name': 'skia_opts_neon', | 204 'target_name': 'skia_opts_neon', |
204 'type': 'static_library', | 205 'type': 'static_library', |
| 206 'includes': [ |
| 207 'skia_common.gypi', |
| 208 ], |
205 'include_dirs': [ | 209 'include_dirs': [ |
206 '..', | |
207 'config', | |
208 '../third_party/skia/include/core', | 210 '../third_party/skia/include/core', |
209 '../third_party/skia/src/core', | 211 '../third_party/skia/src/core', |
210 '../third_party/skia/src/opts', | 212 '../third_party/skia/src/opts', |
211 ], | 213 ], |
212 'cflags!': [ | 214 'cflags!': [ |
213 '-fno-omit-frame-pointer', | 215 '-fno-omit-frame-pointer', |
214 '-mfpu=vfp', # remove them all, just in case. | 216 '-mfpu=vfp', # remove them all, just in case. |
215 '-mfpu=vfpv3', | 217 '-mfpu=vfpv3', |
216 '-mfpu=vfpv3-d16', | 218 '-mfpu=vfpv3-d16', |
217 ], | 219 ], |
(...skipping 25 matching lines...) Expand all Loading... |
243 'defines': [ | 245 'defines': [ |
244 '__ARM_HAVE_OPTIONAL_NEON_SUPPORT', | 246 '__ARM_HAVE_OPTIONAL_NEON_SUPPORT', |
245 ], | 247 ], |
246 }], | 248 }], |
247 ], | 249 ], |
248 }, | 250 }, |
249 ], | 251 ], |
250 }], | 252 }], |
251 ], | 253 ], |
252 } | 254 } |
OLD | NEW |