blob: ad8da337698fe8e578f4da29db2cb183d99a9e13 [file] [log] [blame]
scroggo3e562272015-03-25 10:22:41 -07001# Copyright 2015 Google Inc.
2#
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
scroggodf1c3372015-02-12 10:48:25 -08005# Gyp file for building opts target.
epoger@google.comae85aea2011-05-31 13:50:51 +00006{
mtkleinf7069d52015-01-26 18:55:58 -08007 # Source lists live in opts.gypi. This makes it easier to maintain our Chrome GYP/GN setup.
8 # (To be honest, I'm not sure why we need to include common.gypi. I thought it was automatic.)
9 'variables': {
10 'includes': [ 'common.gypi', 'opts.gypi' ],
11 },
mtklein09337252015-01-26 18:15:31 -080012
mtkleinf7069d52015-01-26 18:55:58 -080013 # Generally we shove things into one 'opts' target conditioned on platform.
14 # If a particular platform needs some files built with different flags,
15 # those become separate targets: opts_ssse3, opts_sse41, opts_neon.
16
17 'targets': [
epoger@google.comae85aea2011-05-31 13:50:51 +000018 {
19 'target_name': 'opts',
borenet@google.comefb1d772012-10-10 19:45:51 +000020 'product_name': 'skia_opts',
epoger@google.comae85aea2011-05-31 13:50:51 +000021 'type': 'static_library',
borenet@google.comefb1d772012-10-10 19:45:51 +000022 'standalone_static_library': 1,
bungeman@google.comb8f36552013-07-22 14:39:45 +000023 'dependencies': [
24 'core.gyp:*',
senorblanco@chromium.org0ded88d2014-01-24 15:43:50 +000025 'effects.gyp:*'
bungeman@google.comb8f36552013-07-22 14:39:45 +000026 ],
epoger@google.comae85aea2011-05-31 13:50:51 +000027 'include_dirs': [
mtkleincd1f2da2015-07-28 08:55:14 -070028 '../include/private',
epoger@google.comae85aea2011-05-31 13:50:51 +000029 '../src/core',
djsollen@google.coma44e6c62012-01-09 14:38:25 +000030 '../src/opts',
krajcevski630598c2014-07-14 12:00:04 -070031 '../src/utils',
mtkleinf7069d52015-01-26 18:55:58 -080032 '../include/utils',
epoger@google.comae85aea2011-05-31 13:50:51 +000033 ],
34 'conditions': [
scroggodf1c3372015-02-12 10:48:25 -080035 [ '"x86" in skia_arch_type and skia_os != "ios"', {
mtkleinf7069d52015-01-26 18:55:58 -080036 'cflags': [ '-msse2' ],
mtklein5141d902015-08-24 10:32:02 -070037 'dependencies': [ 'opts_ssse3', 'opts_sse41', 'opts_sse42', 'opts_avx', 'opts_avx2' ],
mtkleinf7069d52015-01-26 18:55:58 -080038 'sources': [ '<@(sse2_sources)' ],
mtkleinc98fe3a2015-01-26 18:05:37 -080039 }],
mtkleinf7069d52015-01-26 18:55:58 -080040
41 [ 'skia_arch_type == "mips"', {
42 'conditions': [
43 [ '(mips_arch_variant == "mips32r2") and (mips_dsp == 1 or mips_dsp == 2)', {
44 'sources': [ '<@(mips_dsp_sources)' ],
45 },{
46 'sources': [ '<@(none_sources)' ],
47 }],
48 ]
49 }],
50
51 [ '(skia_arch_type == "arm" and arm_version < 7) \
mtkleinf3f94402015-04-17 14:02:40 -070052 or (skia_os == "ios") \
scroggodf1c3372015-02-12 10:48:25 -080053 or (skia_os == "android" \
mtkleinf3f94402015-04-17 14:02:40 -070054 and skia_arch_type not in ["x86", "x86_64", "arm", "mips", \
55 "arm64"])', {
mtkleinf7069d52015-01-26 18:55:58 -080056 'sources': [ '<@(none_sources)' ],
57 }],
58
djsollen@google.comf7542ba2013-07-31 12:57:27 +000059 [ 'skia_arch_type == "arm" and arm_version >= 7', {
djsollen@google.com58629292011-11-03 13:08:29 +000060 # The assembly uses the frame pointer register (r7 in Thumb/r11 in
61 # ARM), the compiler doesn't like that.
mtkleinf7069d52015-01-26 18:55:58 -080062 'cflags!': [ '-fno-omit-frame-pointer', '-mapcs-frame', '-mapcs' ],
63 'cflags': [ '-fomit-frame-pointer' ],
mtkleinf7069d52015-01-26 18:55:58 -080064 'sources': [ '<@(armv7_sources)' ],
digit@google.comeec9dbc2012-05-30 13:54:41 +000065 'conditions': [
mtklein809ccf32016-05-05 10:58:39 -070066 [ 'arm_neon == 1', {
mtkleinf7069d52015-01-26 18:55:58 -080067 'dependencies': [ 'opts_neon' ]
caryclark@google.com867cbd82012-09-20 15:45:41 +000068 }],
digit@google.comeec9dbc2012-05-30 13:54:41 +000069 ],
djsollen@google.com58629292011-11-03 13:08:29 +000070 }],
mtkleinf7069d52015-01-26 18:55:58 -080071
72 [ 'skia_arch_type == "arm64"', {
73 'sources': [ '<@(arm64_sources)' ],
djordje.pesut632a4542014-06-11 06:56:10 -070074 }],
mtkleinf7069d52015-01-26 18:55:58 -080075
commit-bot@chromium.orge72a4082014-02-28 16:07:39 +000076 [ 'skia_android_framework', {
77 'cflags!': [
78 '-msse2',
79 '-mfpu=neon',
80 '-fomit-frame-pointer',
commit-bot@chromium.orge72a4082014-02-28 16:07:39 +000081 ]
82 }],
epoger@google.comae85aea2011-05-31 13:50:51 +000083 ],
84 },
tomhudson@google.com95ad1552012-02-14 18:28:54 +000085 {
86 'target_name': 'opts_ssse3',
borenet@google.comefb1d772012-10-10 19:45:51 +000087 'product_name': 'skia_opts_ssse3',
tomhudson@google.com95ad1552012-02-14 18:28:54 +000088 'type': 'static_library',
borenet@google.comefb1d772012-10-10 19:45:51 +000089 'standalone_static_library': 1,
mtkleinf7069d52015-01-26 18:55:58 -080090 'dependencies': [ 'core.gyp:*' ],
mtkleincd1f2da2015-07-28 08:55:14 -070091 'include_dirs': [
92 '../include/private',
93 '../src/core',
mtkleinb6394742015-08-06 08:17:16 -070094 '../src/utils',
mtkleincd1f2da2015-07-28 08:55:14 -070095 ],
mtkleinf7069d52015-01-26 18:55:58 -080096 'sources': [ '<@(ssse3_sources)' ],
tomhudson@google.com95ad1552012-02-14 18:28:54 +000097 'conditions': [
mtklein85533962015-08-25 06:30:07 -070098 [ 'skia_os == "win"', { 'defines' : [ 'SK_CPU_SSE_LEVEL=31' ] }],
99 [ 'not skia_android_framework', { 'cflags': [ '-mssse3' ] }],
tomhudson@google.com95ad1552012-02-14 18:28:54 +0000100 ],
101 },
henrik.smiding3bb195e2014-06-27 08:03:17 -0700102 {
mtkleinf7069d52015-01-26 18:55:58 -0800103 'target_name': 'opts_sse41',
104 'product_name': 'skia_opts_sse41',
henrik.smiding3bb195e2014-06-27 08:03:17 -0700105 'type': 'static_library',
106 'standalone_static_library': 1,
mtkleinf7069d52015-01-26 18:55:58 -0800107 'dependencies': [ 'core.gyp:*' ],
mtkleincd1f2da2015-07-28 08:55:14 -0700108 'include_dirs': [
109 '../include/private',
110 '../src/core',
mtkleinb6394742015-08-06 08:17:16 -0700111 '../src/utils',
mtkleincd1f2da2015-07-28 08:55:14 -0700112 ],
mtkleinf7069d52015-01-26 18:55:58 -0800113 'sources': [ '<@(sse41_sources)' ],
mtklein85533962015-08-25 06:30:07 -0700114 'xcode_settings': { 'GCC_ENABLE_SSE41_EXTENSIONS': 'YES' },
henrik.smiding3bb195e2014-06-27 08:03:17 -0700115 'conditions': [
mtklein85533962015-08-25 06:30:07 -0700116 [ 'skia_os == "win"', { 'defines' : [ 'SK_CPU_SSE_LEVEL=41' ] }],
117 [ 'not skia_android_framework', { 'cflags': [ '-msse4.1' ] }],
henrik.smiding3bb195e2014-06-27 08:03:17 -0700118 ],
119 },
digit@google.comeec9dbc2012-05-30 13:54:41 +0000120 {
mtklein5141d902015-08-24 10:32:02 -0700121 'target_name': 'opts_sse42',
122 'product_name': 'skia_opts_sse42',
123 'type': 'static_library',
124 'standalone_static_library': 1,
125 'dependencies': [ 'core.gyp:*' ],
126 'include_dirs': [
127 '../include/private',
128 '../src/core',
129 '../src/utils',
130 ],
131 'sources': [ '<@(sse42_sources)' ],
mtklein85533962015-08-25 06:30:07 -0700132 'xcode_settings': { 'GCC_ENABLE_SSE42_EXTENSIONS': 'YES' },
mtklein5141d902015-08-24 10:32:02 -0700133 'conditions': [
mtklein85533962015-08-25 06:30:07 -0700134 [ 'skia_os == "win"', { 'defines' : [ 'SK_CPU_SSE_LEVEL=42' ] }],
135 [ 'not skia_android_framework', { 'cflags': [ '-msse4.2' ] }],
mtklein5141d902015-08-24 10:32:02 -0700136 ],
137 },
138 {
139 'target_name': 'opts_avx',
140 'product_name': 'skia_opts_avx',
141 'type': 'static_library',
142 'standalone_static_library': 1,
143 'dependencies': [ 'core.gyp:*' ],
144 'include_dirs': [
145 '../include/private',
146 '../src/core',
147 '../src/utils',
148 ],
149 'sources': [ '<@(avx_sources)' ],
mtklein85533962015-08-25 06:30:07 -0700150 'msvs_settings': { 'VCCLCompilerTool': { 'EnableEnhancedInstructionSet': '3' } },
mtklein20473342016-01-25 09:26:54 -0800151 'xcode_settings': { 'OTHER_CPLUSPLUSFLAGS': [ '-mavx' ] },
mtklein5141d902015-08-24 10:32:02 -0700152 'conditions': [
mtklein85533962015-08-25 06:30:07 -0700153 [ 'not skia_android_framework', { 'cflags': [ '-mavx' ] }],
mtklein5141d902015-08-24 10:32:02 -0700154 ],
155 },
156 {
157 'target_name': 'opts_avx2',
158 'product_name': 'skia_opts_avx2',
159 'type': 'static_library',
160 'standalone_static_library': 1,
161 'dependencies': [ 'core.gyp:*' ],
162 'include_dirs': [
163 '../include/private',
164 '../src/core',
165 '../src/utils',
166 ],
167 'sources': [ '<@(avx2_sources)' ],
mtklein85533962015-08-25 06:30:07 -0700168 'msvs_settings': { 'VCCLCompilerTool': { 'EnableEnhancedInstructionSet': '5' } },
mtklein20473342016-01-25 09:26:54 -0800169 'xcode_settings': { 'OTHER_CPLUSPLUSFLAGS': [ '-mavx2' ] },
mtklein5141d902015-08-24 10:32:02 -0700170 'conditions': [
mtklein85533962015-08-25 06:30:07 -0700171 [ 'not skia_android_framework', { 'cflags': [ '-mavx2' ] }],
mtklein5141d902015-08-24 10:32:02 -0700172 ],
173 },
174 {
digit@google.comeec9dbc2012-05-30 13:54:41 +0000175 'target_name': 'opts_neon',
borenet@google.comefb1d772012-10-10 19:45:51 +0000176 'product_name': 'skia_opts_neon',
digit@google.comeec9dbc2012-05-30 13:54:41 +0000177 'type': 'static_library',
borenet@google.comefb1d772012-10-10 19:45:51 +0000178 'standalone_static_library': 1,
bungeman@google.comb8f36552013-07-22 14:39:45 +0000179 'dependencies': [
180 'core.gyp:*',
senorblanco@chromium.org0ded88d2014-01-24 15:43:50 +0000181 'effects.gyp:*'
bungeman@google.comb8f36552013-07-22 14:39:45 +0000182 ],
digit@google.comeec9dbc2012-05-30 13:54:41 +0000183 'include_dirs': [
mtkleincd1f2da2015-07-28 08:55:14 -0700184 '../include/private',
digit@google.comeec9dbc2012-05-30 13:54:41 +0000185 '../src/core',
digit@google.comfce02ac2012-08-01 14:25:07 +0000186 '../src/opts',
krajcevski630598c2014-07-14 12:00:04 -0700187 '../src/utils',
digit@google.comeec9dbc2012-05-30 13:54:41 +0000188 ],
mtkleinf7069d52015-01-26 18:55:58 -0800189 'sources': [ '<@(neon_sources)' ],
digit@google.comeec9dbc2012-05-30 13:54:41 +0000190 'cflags!': [
191 '-fno-omit-frame-pointer',
192 '-mfpu=vfp', # remove them all, just in case.
193 '-mfpu=vfpv3',
194 '-mfpu=vfpv3-d16',
195 ],
commit-bot@chromium.orge72a4082014-02-28 16:07:39 +0000196 'conditions': [
197 [ 'not skia_android_framework', {
198 'cflags': [
199 '-mfpu=neon',
200 '-fomit-frame-pointer',
201 ],
202 }],
digit@google.comeec9dbc2012-05-30 13:54:41 +0000203 ],
djsollen@google.com4dcc6242013-01-23 18:56:38 +0000204 'ldflags': [
205 '-march=armv7-a',
206 '-Wl,--fix-cortex-a8',
207 ],
digit@google.comeec9dbc2012-05-30 13:54:41 +0000208 },
epoger@google.comae85aea2011-05-31 13:50:51 +0000209 ],
210}