blob: 679d2d621cc2549bd60e2eb07cf56bf18a3fb501 [file] [log] [blame]
msarett1c8a5872015-07-07 08:50:01 -07001# Copyright (c) 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5{
6 'xcode_settings': {
7 'SYMROOT': '<(DEPTH)/xcodebuild',
8 },
9 'variables': {
10 'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/externals/libjpeg-turbo',
11 'conditions': [
12 [ 'skia_os == "win"', {
13 'object_suffix': 'obj',
14 }, {
15 'object_suffix': 'o',
16 }],
17 ],
18 },
19 'targets': [
20 {
msarett718e41d2015-07-10 10:59:47 -070021 'target_name': 'yasm-win',
bsalomon81ce4a92016-07-27 12:07:43 -070022 'type': 'none',
msarett718e41d2015-07-10 10:59:47 -070023 'sources': [
24 '../third_party/externals/yasm/binaries/win/yasm.exe',
25 ],
26 'copies' : [{
27 'destination': '<(PRODUCT_DIR)',
28 'files': [ '../third_party/externals/yasm/binaries/win/yasm.exe' ],
29 }],
30 },
31 {
msarettdc2257b2016-07-26 11:24:28 -070032 'target_name': 'yasm-android',
bsalomon81ce4a92016-07-27 12:07:43 -070033 'type': 'none',
msarettdc2257b2016-07-26 11:24:28 -070034 'sources': [
msarett75a5ff62016-07-26 13:33:46 -070035 '../third_party/yasm/android/yasm-android',
msarettdc2257b2016-07-26 11:24:28 -070036 ],
37 'copies' : [{
38 'destination': '<(PRODUCT_DIR)',
msarett75a5ff62016-07-26 13:33:46 -070039 'files': [ '../third_party/yasm/android/yasm-android' ],
msarettdc2257b2016-07-26 11:24:28 -070040 }],
41 },
42 {
msarett1c8a5872015-07-07 08:50:01 -070043 'target_name': 'libjpeg-turbo',
44 'type': 'static_library',
45 'include_dirs': [
46 '../third_party/externals/libjpeg-turbo/',
47 ],
48 'defines': [
49 'WITH_SIMD',
50 'MOTION_JPEG_SUPPORTED',
51 'NO_GETENV',
52 ],
53 'cflags': [
54 '-w', # supresses warnings
55 ],
56 'msvs_settings': {
57 'VCCLCompilerTool': {
msarett718e41d2015-07-10 10:59:47 -070058 'WarningLevel': '0',
msarett1c8a5872015-07-07 08:50:01 -070059 },
60 },
61 'xcode_settings': {
62 'WARNING_CFLAGS': [
63 '-w',
64 ],
65 },
66 'sources': [
msarett1c8a5872015-07-07 08:50:01 -070067 '../third_party/externals/libjpeg-turbo/jcapimin.c',
68 '../third_party/externals/libjpeg-turbo/jcapistd.c',
msarett1c8a5872015-07-07 08:50:01 -070069 '../third_party/externals/libjpeg-turbo/jccoefct.c',
70 '../third_party/externals/libjpeg-turbo/jccolor.c',
71 '../third_party/externals/libjpeg-turbo/jcdctmgr.c',
72 '../third_party/externals/libjpeg-turbo/jchuff.c',
73 '../third_party/externals/libjpeg-turbo/jchuff.h',
74 '../third_party/externals/libjpeg-turbo/jcinit.c',
75 '../third_party/externals/libjpeg-turbo/jcmainct.c',
76 '../third_party/externals/libjpeg-turbo/jcmarker.c',
77 '../third_party/externals/libjpeg-turbo/jcmaster.c',
78 '../third_party/externals/libjpeg-turbo/jcomapi.c',
79 '../third_party/externals/libjpeg-turbo/jconfig.h',
msarett1c8a5872015-07-07 08:50:01 -070080 '../third_party/externals/libjpeg-turbo/jcparam.c',
81 '../third_party/externals/libjpeg-turbo/jcphuff.c',
82 '../third_party/externals/libjpeg-turbo/jcprepct.c',
83 '../third_party/externals/libjpeg-turbo/jcsample.c',
84 '../third_party/externals/libjpeg-turbo/jdapimin.c',
85 '../third_party/externals/libjpeg-turbo/jdapistd.c',
msarett1c8a5872015-07-07 08:50:01 -070086 '../third_party/externals/libjpeg-turbo/jdcoefct.c',
87 '../third_party/externals/libjpeg-turbo/jdcolor.c',
88 '../third_party/externals/libjpeg-turbo/jdct.h',
89 '../third_party/externals/libjpeg-turbo/jddctmgr.c',
90 '../third_party/externals/libjpeg-turbo/jdhuff.c',
91 '../third_party/externals/libjpeg-turbo/jdhuff.h',
92 '../third_party/externals/libjpeg-turbo/jdinput.c',
93 '../third_party/externals/libjpeg-turbo/jdmainct.c',
94 '../third_party/externals/libjpeg-turbo/jdmarker.c',
95 '../third_party/externals/libjpeg-turbo/jdmaster.c',
96 '../third_party/externals/libjpeg-turbo/jdmerge.c',
97 '../third_party/externals/libjpeg-turbo/jdphuff.c',
98 '../third_party/externals/libjpeg-turbo/jdpostct.c',
99 '../third_party/externals/libjpeg-turbo/jdsample.c',
100 '../third_party/externals/libjpeg-turbo/jerror.c',
101 '../third_party/externals/libjpeg-turbo/jerror.h',
102 '../third_party/externals/libjpeg-turbo/jfdctflt.c',
103 '../third_party/externals/libjpeg-turbo/jfdctfst.c',
104 '../third_party/externals/libjpeg-turbo/jfdctint.c',
105 '../third_party/externals/libjpeg-turbo/jidctflt.c',
106 '../third_party/externals/libjpeg-turbo/jidctfst.c',
107 '../third_party/externals/libjpeg-turbo/jidctint.c',
108 '../third_party/externals/libjpeg-turbo/jidctred.c',
109 '../third_party/externals/libjpeg-turbo/jinclude.h',
110 '../third_party/externals/libjpeg-turbo/jmemmgr.c',
111 '../third_party/externals/libjpeg-turbo/jmemnobs.c',
112 '../third_party/externals/libjpeg-turbo/jmemsys.h',
113 '../third_party/externals/libjpeg-turbo/jmorecfg.h',
114 '../third_party/externals/libjpeg-turbo/jpegint.h',
115 '../third_party/externals/libjpeg-turbo/jpeglib.h',
msarett1c8a5872015-07-07 08:50:01 -0700116 '../third_party/externals/libjpeg-turbo/jquant1.c',
117 '../third_party/externals/libjpeg-turbo/jquant2.c',
118 '../third_party/externals/libjpeg-turbo/jutils.c',
119 '../third_party/externals/libjpeg-turbo/jversion.h',
120 ],
121 'direct_dependent_settings': {
122 'include_dirs': [
123 '../third_party/externals/libjpeg-turbo/',
124 ],
125 },
126 'msvs_disabled_warnings': [4018, 4101],
127 # VS2010 does not correctly incrementally link obj files generated
128 # from asm files. This flag disables UseLibraryDependencyInputs to
129 # avoid this problem.
130 'msvs_2010_disable_uldi_when_referenced': 1,
msarett72394ef2015-07-09 07:55:01 -0700131
msarett1c8a5872015-07-07 08:50:01 -0700132 # Add target-specific source files.
133 'conditions': [
msarettcf2a6a42015-07-21 12:01:48 -0700134 # TODO (msarett): Is it possible to enable cross compiling for Android on other platforms?
135 [ 'skia_os == "android" and host_os != "linux" and "x86" in skia_arch_type', {
136 'sources': [
137 '../third_party/externals/libjpeg-turbo/jsimd_none.c',
138 ],
msarett72394ef2015-07-09 07:55:01 -0700139 }],
msarettcf2a6a42015-07-21 12:01:48 -0700140 [ 'skia_arch_type == "x86" and (skia_os != "android" or host_os == "linux")', {
msarett1c8a5872015-07-07 08:50:01 -0700141 'sources': [
142 '../third_party/externals/libjpeg-turbo/simd/jsimd_i386.c',
mtklein809ccf32016-05-05 10:58:39 -0700143 '../third_party/externals/libjpeg-turbo/simd/jccolor-mmx.asm',
msarett266f24a2015-11-23 11:09:14 -0800144 '../third_party/externals/libjpeg-turbo/simd/jccolor-sse2.asm',
mtklein809ccf32016-05-05 10:58:39 -0700145 '../third_party/externals/libjpeg-turbo/simd/jcgray-mmx.asm',
msarettb917e042016-05-02 10:43:22 -0700146 '../third_party/externals/libjpeg-turbo/simd/jcgray-sse2.asm',
mtklein809ccf32016-05-05 10:58:39 -0700147 '../third_party/externals/libjpeg-turbo/simd/jchuff-sse2.asm',
msarett266f24a2015-11-23 11:09:14 -0800148 '../third_party/externals/libjpeg-turbo/simd/jcsample-mmx.asm',
149 '../third_party/externals/libjpeg-turbo/simd/jcsample-sse2.asm',
mtklein809ccf32016-05-05 10:58:39 -0700150 '../third_party/externals/libjpeg-turbo/simd/jdcolor-mmx.asm',
msarett266f24a2015-11-23 11:09:14 -0800151 '../third_party/externals/libjpeg-turbo/simd/jdcolor-sse2.asm',
mtklein809ccf32016-05-05 10:58:39 -0700152 '../third_party/externals/libjpeg-turbo/simd/jdmerge-mmx.asm',
msarett266f24a2015-11-23 11:09:14 -0800153 '../third_party/externals/libjpeg-turbo/simd/jdmerge-sse2.asm',
154 '../third_party/externals/libjpeg-turbo/simd/jdsample-mmx.asm',
155 '../third_party/externals/libjpeg-turbo/simd/jdsample-sse2.asm',
156 '../third_party/externals/libjpeg-turbo/simd/jfdctflt-3dn.asm',
157 '../third_party/externals/libjpeg-turbo/simd/jfdctflt-sse.asm',
158 '../third_party/externals/libjpeg-turbo/simd/jfdctfst-mmx.asm',
159 '../third_party/externals/libjpeg-turbo/simd/jfdctfst-sse2.asm',
160 '../third_party/externals/libjpeg-turbo/simd/jfdctint-mmx.asm',
161 '../third_party/externals/libjpeg-turbo/simd/jfdctint-sse2.asm',
162 '../third_party/externals/libjpeg-turbo/simd/jidctflt-3dn.asm',
163 '../third_party/externals/libjpeg-turbo/simd/jidctflt-sse2.asm',
164 '../third_party/externals/libjpeg-turbo/simd/jidctflt-sse.asm',
165 '../third_party/externals/libjpeg-turbo/simd/jidctfst-mmx.asm',
166 '../third_party/externals/libjpeg-turbo/simd/jidctfst-sse2.asm',
167 '../third_party/externals/libjpeg-turbo/simd/jidctint-mmx.asm',
168 '../third_party/externals/libjpeg-turbo/simd/jidctint-sse2.asm',
169 '../third_party/externals/libjpeg-turbo/simd/jidctred-mmx.asm',
170 '../third_party/externals/libjpeg-turbo/simd/jidctred-sse2.asm',
mtklein809ccf32016-05-05 10:58:39 -0700171 '../third_party/externals/libjpeg-turbo/simd/jquant-3dn.asm',
msarett266f24a2015-11-23 11:09:14 -0800172 '../third_party/externals/libjpeg-turbo/simd/jquantf-sse2.asm',
173 '../third_party/externals/libjpeg-turbo/simd/jquanti-sse2.asm',
mtklein809ccf32016-05-05 10:58:39 -0700174 '../third_party/externals/libjpeg-turbo/simd/jquant-mmx.asm',
175 '../third_party/externals/libjpeg-turbo/simd/jquant-sse.asm',
msarett1c8a5872015-07-07 08:50:01 -0700176 '../third_party/externals/libjpeg-turbo/simd/jsimdcpu.asm',
177 ],
178 }],
msarettcf2a6a42015-07-21 12:01:48 -0700179 [ 'skia_arch_type == "x86_64" and (skia_os != "android" or host_os == "linux")', {
msarett1c8a5872015-07-07 08:50:01 -0700180 'sources': [
181 '../third_party/externals/libjpeg-turbo/simd/jsimd_x86_64.c',
msarett266f24a2015-11-23 11:09:14 -0800182 '../third_party/externals/libjpeg-turbo/simd/jccolor-sse2-64.asm',
183 '../third_party/externals/libjpeg-turbo/simd/jcgray-sse2-64.asm',
msarettb917e042016-05-02 10:43:22 -0700184 '../third_party/externals/libjpeg-turbo/simd/jchuff-sse2-64.asm',
msarett266f24a2015-11-23 11:09:14 -0800185 '../third_party/externals/libjpeg-turbo/simd/jcsample-sse2-64.asm',
186 '../third_party/externals/libjpeg-turbo/simd/jdcolor-sse2-64.asm',
187 '../third_party/externals/libjpeg-turbo/simd/jdmerge-sse2-64.asm',
188 '../third_party/externals/libjpeg-turbo/simd/jdsample-sse2-64.asm',
189 '../third_party/externals/libjpeg-turbo/simd/jfdctflt-sse-64.asm',
190 '../third_party/externals/libjpeg-turbo/simd/jfdctfst-sse2-64.asm',
191 '../third_party/externals/libjpeg-turbo/simd/jfdctint-sse2-64.asm',
192 '../third_party/externals/libjpeg-turbo/simd/jidctflt-sse2-64.asm',
193 '../third_party/externals/libjpeg-turbo/simd/jidctfst-sse2-64.asm',
194 '../third_party/externals/libjpeg-turbo/simd/jidctint-sse2-64.asm',
195 '../third_party/externals/libjpeg-turbo/simd/jidctred-sse2-64.asm',
196 '../third_party/externals/libjpeg-turbo/simd/jquantf-sse2-64.asm',
197 '../third_party/externals/libjpeg-turbo/simd/jquanti-sse2-64.asm',
msarett1c8a5872015-07-07 08:50:01 -0700198 ],
199 }],
200 [ 'skia_arch_type == "arm64"', {
201 'sources': [
202 '../third_party/externals/libjpeg-turbo/simd/jsimd_arm64.c',
203 '../third_party/externals/libjpeg-turbo/simd/jsimd_arm64_neon.S',
204 ],
205 }],
206 [ 'skia_arch_type == "arm"', {
207 'conditions': [
mtklein809ccf32016-05-05 10:58:39 -0700208 [ 'arm_version >= 7 and arm_neon == 1', {
msarett1c8a5872015-07-07 08:50:01 -0700209 'sources': [
210 '../third_party/externals/libjpeg-turbo/simd/jsimd_arm.c',
211 '../third_party/externals/libjpeg-turbo/simd/jsimd_arm_neon.S',
212 ],
213 }, {
214 'sources': [
215 '../third_party/externals/libjpeg-turbo/jsimd_none.c',
216 ],
217 }],
218 ],
219 }],
msarettfcaaade2015-08-11 13:32:54 -0700220 # mips simd is supported in later versions of libjpeg-turbo. If we
221 # choose to update our copy of libjpeg-turbo we can enable mips simd.
222 [ '"mips" in skia_arch_type', {
Brian Salomon4239fc22015-07-27 09:10:36 -0400223 'sources': [
224 '../third_party/externals/libjpeg-turbo/jsimd_none.c',
msarett1c8a5872015-07-07 08:50:01 -0700225 ],
226 }],
mtklein809ccf32016-05-05 10:58:39 -0700227
msarett1c8a5872015-07-07 08:50:01 -0700228 # Build rules for an asm file.
229 # On Windows, we use the precompiled yasm binary.
msarett718e41d2015-07-10 10:59:47 -0700230 # On Linux, we build our patched yasm and use it.
msarett1c8a5872015-07-07 08:50:01 -0700231 # On Mac, we always build our patched yasm and use it.
232 [ 'skia_os == "win"', {
msarett718e41d2015-07-10 10:59:47 -0700233 'dependencies': [
234 'yasm-win',
235 ],
msarett266f24a2015-11-23 11:09:14 -0800236 'defines': [
237 'TURBO_FOR_WINDOWS',
238 ],
msarett1c8a5872015-07-07 08:50:01 -0700239 'variables': {
msarett718e41d2015-07-10 10:59:47 -0700240 'yasm_path': '<(PRODUCT_DIR)/yasm.exe',
msarett1c8a5872015-07-07 08:50:01 -0700241 'conditions': [
242 [ 'skia_arch_type == "x86"', {
243 'yasm_format': '-fwin32',
244 'yasm_flags': [
245 '-D__x86__',
246 '-DWIN32',
247 '-DMSVC',
msarett1c8a5872015-07-07 08:50:01 -0700248 ],
249 }, {
250 'yasm_format': '-fwin64',
251 'yasm_flags': [
252 '-D__x86_64__',
253 '-DWIN64',
254 '-DMSVC',
msarett1c8a5872015-07-07 08:50:01 -0700255 ],
256 }],
257 ],
258 },
259 }],
msarettcf2a6a42015-07-21 12:01:48 -0700260 [ 'skia_os == "android" and host_os == "linux" and \
261 (skia_arch_type == "x86" or skia_arch_type == "x86_64")', {
262 'dependencies': [
msarettdc2257b2016-07-26 11:24:28 -0700263 'yasm-android',
msarettcf2a6a42015-07-21 12:01:48 -0700264 ],
msarett1c8a5872015-07-07 08:50:01 -0700265 'variables': {
msarett75a5ff62016-07-26 13:33:46 -0700266 'yasm_path': '<(PRODUCT_DIR)/yasm-android',
msarett1c8a5872015-07-07 08:50:01 -0700267 'conditions': [
268 [ 'skia_arch_type == "x86"', {
269 'yasm_format': '-felf',
270 'yasm_flags': [
271 '-D__x86__',
272 '-DELF',
msarettfd0b33d2016-05-10 14:30:07 -0700273 '-DPIC',
msarett1c8a5872015-07-07 08:50:01 -0700274 ],
275 }, {
276 'yasm_format': '-felf64',
277 'yasm_flags': [
278 '-D__x86_64__',
279 '-DELF',
msarettfd0b33d2016-05-10 14:30:07 -0700280 '-DPIC',
msarett1c8a5872015-07-07 08:50:01 -0700281 ],
282 }],
283 ],
284 },
285 }],
286 [ '(skia_os == "mac" or skia_os == "ios") and \
287 (skia_arch_type == "x86" or skia_arch_type == "x86_64")', {
288 'dependencies': [
289 'yasm.gyp:yasm#host',
290 ],
291 'variables': {
292 'yasm_path': '<(PRODUCT_DIR)/yasm',
293 'conditions': [
294 [ 'skia_arch_type == "x86"', {
295 'yasm_format': '-fmacho',
296 'yasm_flags': [
297 '-D__x86__',
298 '-DMACHO',
msarett1c8a5872015-07-07 08:50:01 -0700299 ],
300 }, {
301 'yasm_format': '-fmacho64',
302 'yasm_flags': [
303 '-D__x86_64__',
304 '-DMACHO',
msarett1c8a5872015-07-07 08:50:01 -0700305 ],
306 }],
307 ],
308 },
309 }],
310 [ '(skia_os == "linux" or skia_os == "freebsd" or skia_os == "openbsd" or \
borenet43bf5112016-04-29 14:01:34 -0700311 skia_os == "solaris")', {
msarett1c8a5872015-07-07 08:50:01 -0700312 'dependencies': [
313 'yasm.gyp:yasm#host',
314 ],
315 'variables': {
316 'yasm_path': '<(PRODUCT_DIR)/yasm',
317 'conditions': [
318 [ 'skia_arch_type == "x86"', {
319 'yasm_format': '-felf',
320 'yasm_flags': [
321 '-D__x86__',
322 '-DELF',
msarett1c8a5872015-07-07 08:50:01 -0700323 ],
324 }, {
325 'yasm_format': '-felf64',
326 'yasm_flags': [
327 '-D__x86_64__',
328 '-DELF',
msarett1c8a5872015-07-07 08:50:01 -0700329 ],
330 }],
331 ],
332 },
333 }],
334 ],
335 'rules': [
336 {
337 'rule_name': 'assemble',
338 'extension': 'asm',
339 'conditions': [
msaretta56884c2015-07-23 11:57:13 -0700340 [ '(skia_arch_type == "x86" or skia_arch_type == "x86_64") and \
341 (skia_os != "android" or host_os == "linux")', {
msarett1c8a5872015-07-07 08:50:01 -0700342 'inputs': [],
343 'outputs': [
344 '<(shared_generated_dir)/<(RULE_INPUT_ROOT).<(object_suffix)',
345 ],
346 'action': [
347 '<(yasm_path)',
348 '<(yasm_format)',
349 '<@(yasm_flags)',
350 '-DRGBX_FILLER_0XFF',
351 '-DSTRICT_MEMORY_ACCESS',
msarett266f24a2015-11-23 11:09:14 -0800352 '-Isimd/',
msarett1c8a5872015-07-07 08:50:01 -0700353 '-o', '<(shared_generated_dir)/<(RULE_INPUT_ROOT).<(object_suffix)',
354 '<(RULE_INPUT_PATH)',
355 ],
356 'process_outputs_as_sources': 1,
357 'message': 'Building <(RULE_INPUT_ROOT).<(object_suffix)',
358 }],
359 ]
360 },
361 ],
362 },
363 ],
364}