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 # This gyp file contains the platform-specific optimizations for Skia | 5 # This gyp file contains the platform-specific optimizations for Skia |
6 { | 6 { |
7 'variables': { | 7 'variables': { |
8 'skia_src_path': '../third_party/skia/src', | 8 'skia_src_path': '../third_party/skia/src', |
9 'includes': [ '../third_party/skia/gyp/opts.gypi' ], | 9 'includes': [ '../third_party/skia/gyp/opts.gypi' ], |
10 'include_dirs': [ | 10 'include_dirs': [ |
11 '../third_party/skia/include/core', | 11 '../third_party/skia/include/core', |
12 '../third_party/skia/include/effects', | 12 '../third_party/skia/include/effects', |
13 '../third_party/skia/include/utils', | 13 '../third_party/skia/include/utils', |
14 '../third_party/skia/src/core', | 14 '../third_party/skia/src/core', |
15 '../third_party/skia/src/opts', | 15 '../third_party/skia/src/opts', |
16 '../third_party/skia/src/utils', | 16 '../third_party/skia/src/utils', |
17 ], | 17 ], |
18 }, | 18 }, |
19 | 19 |
20 'targets': [ | 20 'targets': [ |
21 # Due to an unfortunate intersection of lameness between gcc and gyp, | 21 # SSE files have to be built in a separate target, because gcc needs |
22 # we have to build the *_SSE2.cpp files in a separate target. The | 22 # different -msse flags for different SSE levels which enable use of SSE |
23 # gcc lameness is that, in order to compile SSE2 intrinsics code, it | 23 # intrinsics but also allow emission of SSE2 instructions for scalar code. |
24 # must be passed the -msse2 flag. However, with this flag, it may | 24 # gyp does not allow per-file compiler flags. |
25 # emit SSE2 instructions even for scalar code, such as the CPUID | |
26 # test used to test for the presence of SSE2. So that, and all other | |
27 # code must be compiled *without* -msse2. The gyp lameness is that it | |
28 # does not allow file-specific CFLAGS, so we must create this extra | |
29 # target for those files to be compiled with -msse2. | |
30 # | |
31 # This is actually only a problem on 32-bit Linux (all Intel Macs have | |
32 # SSE2, Linux x86_64 has SSE2 by definition, and MSC will happily emit | |
33 # SSE2 from instrinsics, which generating plain ol' 386 for everything | |
34 # else). However, to keep the .gyp file simple and avoid platform-specific | |
35 # build breakage, we do this on all platforms. | |
36 | |
37 # 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 |
38 # separately as well. | 26 # separately as well. |
39 { | 27 { |
40 'target_name': 'skia_opts', | 28 'target_name': 'skia_opts', |
41 'type': 'static_library', | 29 'type': 'static_library', |
42 'includes': [ | 30 'includes': [ |
43 'skia_common.gypi', | 31 'skia_common.gypi', |
44 '../build/android/increase_size_for_speed.gypi', | 32 '../build/android/increase_size_for_speed.gypi', |
45 # Disable LTO due to compiler error | 33 # Disable LTO due to compiler error |
46 # in mems_in_disjoint_alias_sets_p, at alias.c:393 | 34 # in mems_in_disjoint_alias_sets_p, at alias.c:393 |
47 # crbug.com/422255 | 35 # crbug.com/422255 |
48 '../build/android/disable_lto.gypi', | 36 '../build/android/disable_lto.gypi', |
49 ], | 37 ], |
50 'include_dirs': [ '<@(include_dirs)' ], | 38 'include_dirs': [ '<@(include_dirs)' ], |
51 'conditions': [ | 39 'conditions': [ |
52 [ 'os_posix == 1 and OS != "mac" and OS != "android" and \ | |
53 target_arch != "arm" and target_arch != "arm64" and \ | |
54 target_arch != "mipsel" and target_arch != "mips64el"', { | |
55 'cflags': [ '-msse2' ], | |
56 }], | |
57 [ 'target_arch != "arm" and target_arch != "mipsel" and \ | 40 [ 'target_arch != "arm" and target_arch != "mipsel" and \ |
58 target_arch != "arm64" and target_arch != "mips64el"', { | 41 target_arch != "arm64" and target_arch != "mips64el"', { |
| 42 # Chrome builds with -msse2 locally, so sse2_sources could in theory |
| 43 # be in the regular skia target. But we need skia_opts for arm |
| 44 # anyway, so putting sse2_sources here is simpler than making this |
| 45 # conditionally a type none target on x86. |
59 'sources': [ '<@(sse2_sources)' ], | 46 'sources': [ '<@(sse2_sources)' ], |
60 'dependencies': [ | 47 'dependencies': [ |
61 'skia_opts_ssse3', | 48 'skia_opts_ssse3', |
62 'skia_opts_sse41', | 49 'skia_opts_sse41', |
63 ], | 50 ], |
64 }], | 51 }], |
65 [ 'target_arch == "arm"', { | 52 [ 'target_arch == "arm"', { |
66 'conditions': [ | 53 'conditions': [ |
67 [ 'arm_version >= 7', { | 54 [ 'arm_version >= 7', { |
68 'sources': [ '<@(armv7_sources)' ], | 55 'sources': [ '<@(armv7_sources)' ], |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 'ldflags': [ | 207 'ldflags': [ |
221 '-march=armv7-a', | 208 '-march=armv7-a', |
222 '-Wl,--fix-cortex-a8', | 209 '-Wl,--fix-cortex-a8', |
223 ], | 210 ], |
224 'sources': [ '<@(neon_sources)' ], | 211 'sources': [ '<@(neon_sources)' ], |
225 }, | 212 }, |
226 ], | 213 ], |
227 }], | 214 }], |
228 ], | 215 ], |
229 } | 216 } |
OLD | NEW |