Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(260)

Side by Side Diff: libvpx.gyp

Issue 11198075: Linux: restore the option to build with system libvpx (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « libvpx.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # 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 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 'variables': { 5 'variables': {
6 'conditions': [ 6 'use_system_libvpx%': 0,
7 ['os_posix==1', {
8 'asm_obj_extension': 'o',
9 }],
10 ['OS=="win"', {
11 'asm_obj_extension': 'obj',
12 }],
13
14 ['target_arch=="arm" and arm_neon==1', {
15 'target_arch_full': 'arm-neon',
16 }, {
17 'target_arch_full': '<(target_arch)',
18 }],
19
20 # Conversion to libvpx arch names.
21 ['target_arch=="arm" and arm_neon==1', {
22 'libvpx_arch': 'armv7',
23 }],
24 ['target_arch=="arm" and arm_neon==0', {
25 'libvpx_arch': 'armv6',
26 }],
27 ['target_arch=="ia32"', {
28 'libvpx_arch': 'x86',
29 }],
30 ['target_arch=="x64"', {
31 'libvpx_arch': 'x86_64',
32 }],
33
34 ['os_posix == 1 and OS != "mac"', {
35 'OS_CATEGORY%': 'linux',
36 }, {
37 'OS_CATEGORY%': '<(OS)',
38 }],
39 ],
40
41 # Location of the intermediate output.
42 'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/libvpx',
43
44 # Override temporarily until we get a warning-free libvpx on Windows.
45 # See http://crbug.com/140121
46 'win_third_party_warn_as_error': 'false',
47 }, 7 },
48
49 'conditions': [ 8 'conditions': [
50 [ 'target_arch != "arm" and target_arch != "mipsel"', { 9 ['use_system_libvpx==0', {
10 'variables': {
11 'conditions': [
12 ['os_posix==1', {
13 'asm_obj_extension': 'o',
14 }],
15 ['OS=="win"', {
16 'asm_obj_extension': 'obj',
17 }],
18
19 ['target_arch=="arm" and arm_neon==1', {
20 'target_arch_full': 'arm-neon',
21 }, {
22 'target_arch_full': '<(target_arch)',
23 }],
24
25 # Conversion to libvpx arch names.
26 ['target_arch=="arm" and arm_neon==1', {
27 'libvpx_arch': 'armv7',
28 }],
29 ['target_arch=="arm" and arm_neon==0', {
30 'libvpx_arch': 'armv6',
31 }],
32 ['target_arch=="ia32"', {
33 'libvpx_arch': 'x86',
34 }],
35 ['target_arch=="x64"', {
36 'libvpx_arch': 'x86_64',
37 }],
38
39 ['os_posix == 1 and OS != "mac"', {
40 'OS_CATEGORY%': 'linux',
41 }, {
42 'OS_CATEGORY%': '<(OS)',
43 }],
44 ],
45
46 # Location of the intermediate output.
47 'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/libvpx',
48
49 # Override temporarily until we get a warning-free libvpx on Windows.
50 # See http://crbug.com/140121
51 'win_third_party_warn_as_error': 'false',
52 },
53
54 'conditions': [
55 [ 'target_arch != "arm" and target_arch != "mipsel"', {
56 'targets': [
57 {
58 # This libvpx target contains both encoder and decoder.
59 # Encoder is configured to be realtime only.
60 'target_name': 'libvpx',
61 'type': 'static_library',
62 'variables': {
63 'yasm_output_path': '<(SHARED_INTERMEDIATE_DIR)/third_party/libv px',
64 'OS_CATEGORY%': '<(OS_CATEGORY)',
65 'yasm_flags': [
66 '-D', 'CHROMIUM',
67 '-I', 'source/config/<(OS_CATEGORY)/<(target_arch)',
68 '-I', 'source/config',
69 '-I', 'source/libvpx',
70 '-I', '<(shared_generated_dir)', # Generated assembly offsets
71 ],
72 },
73 'dependencies': [
74 'gen_asm_offsets',
75 ],
76 'includes': [
77 '../yasm/yasm_compile.gypi'
78 ],
79 'include_dirs': [
80 'source/config/<(OS_CATEGORY)/<(target_arch)',
81 'source/config',
82 'source/libvpx',
83 'source/libvpx/vp8/common',
84 'source/libvpx/vp8/decoder',
85 'source/libvpx/vp8/encoder',
86 '<(shared_generated_dir)', # Provides vpx_rtcd.h.
87 ],
88 'direct_dependent_settings': {
89 'include_dirs': [
90 'source/libvpx',
91 ],
92 },
93 # VS2010 does not correctly incrementally link obj files generated
94 # from asm files. This flag disables UseLibraryDependencyInputs to
95 # avoid this problem.
96 'msvs_2010_disable_uldi_when_referenced': 1,
97 'conditions': [
98 [ 'target_arch=="ia32"', {
99 'includes': [
100 'libvpx_srcs_x86.gypi',
101 ],
102 }],
103 [ 'target_arch=="x64"', {
104 'includes': [
105 'libvpx_srcs_x86_64.gypi',
106 ],
107 }],
108 ['clang == 1', {
109 'xcode_settings': {
110 'WARNING_CFLAGS': [
111 # libvpx heavily relies on implicit enum casting.
112 '-Wno-conversion',
113 # libvpx does `if ((a == b))` in some places.
114 '-Wno-parentheses-equality',
115 ],
116 },
117 'cflags': [
118 '-Wno-conversion',
119 '-Wno-parentheses-equality',
120 ],
121 }],
122 [ 'chromeos == 1', {
123 # ChromeOS needs these files for animated WebM avatars.
124 'sources': [
125 'source/libvpx/libmkv/EbmlIDs.h',
126 'source/libvpx/libmkv/EbmlWriter.c',
127 'source/libvpx/libmkv/EbmlWriter.h',
128 ],
129 }],
130 ],
131 },
132 ],
133 },
134 ],
135 # 'libvpx' target for mips builds.
136 [ 'target_arch=="mipsel" ', {
137 'targets': [
138 {
139 # This libvpx target contains both encoder and decoder.
140 # Encoder is configured to be realtime only.
141 'target_name': 'libvpx',
142 'type': 'static_library',
143 'variables': {
144 'shared_generated_dir':
145 '<(SHARED_INTERMEDIATE_DIR)/third_party/libvpx',
146 },
147 'includes': [
148 'libvpx_srcs_mips.gypi',
149 ],
150 'cflags': [
151 '-EL -static -mips32',
152 ],
153 'include_dirs': [
154 'source/config/<(OS)/<(target_arch)',
155 'source/config',
156 'source/libvpx',
157 'source/libvpx/vp8/common',
158 'source/libvpx/vp8/decoder',
159 'source/libvpx/vp8/encoder',
160 ],
161 'direct_dependent_settings': {
162 'include_dirs': [
163 'source/libvpx',
164 ],
165 },
166 'sources': [
167 'source/config/<(OS)/<(target_arch)/vpx_config.c',
168 ],
169 },
170 ],
171 },
172 ],
173 # 'libvpx' target for ARM builds.
174 [ 'target_arch=="arm" ', {
175 'targets': [
176 {
177 # This libvpx target contains both encoder and decoder.
178 # Encoder is configured to be realtime only.
179 'target_name': 'libvpx',
180 'type': 'static_library',
181 'dependencies': [
182 'gen_asm_offsets',
183 ],
184
185 # Copy the script to the output folder so that we can use it with
186 # absolute path.
187 'copies': [{
188 'destination': '<(shared_generated_dir)',
189 'files': [
190 '<(ads2gas_script_path)',
191 ],
192 }],
193
194 # Rule to convert .asm files to .S files.
195 'rules': [
196 {
197 'rule_name': 'convert_asm',
198 'extension': 'asm',
199 'inputs': [ '<(shared_generated_dir)/<(ads2gas_script)', ],
200 'outputs': [
201 '<(shared_generated_dir)/<(RULE_INPUT_ROOT).S',
202 ],
203 'action': [
204 'bash',
205 '-c',
206 'cat <(RULE_INPUT_PATH) | perl <(shared_generated_dir)/<(ads 2gas_script) > <(shared_generated_dir)/<(RULE_INPUT_ROOT).S',
207 ],
208 'process_outputs_as_sources': 1,
209 'message': 'Convert libvpx asm file for ARM <(RULE_INPUT_PATH) .',
210 },
211 ],
212
213 'variables': {
214 # Location of the assembly conversion script.
215 'ads2gas_script': 'ads2gas.pl',
216 'ads2gas_script_path': 'source/libvpx/build/make/<(ads2gas_scrip t)',
217 },
218 'cflags': [
219 # We need to explicitly tell the GCC assembler to look for
220 # .include directive files from the place where they're
221 # generated to.
222 '-Wa,-I,<!(pwd)/source/config/<(OS_CATEGORY)/<(target_arch_full) ',
223 '-Wa,-I,<!(pwd)/source/config',
224 '-Wa,-I,<(shared_generated_dir)',
225 ],
226 'include_dirs': [
227 'source/config/<(OS_CATEGORY)/<(target_arch_full)',
228 'source/config',
229 'source/libvpx',
230 ],
231 'direct_dependent_settings': {
232 'include_dirs': [
233 'source/libvpx',
234 ],
235 },
236 'conditions': [
237 # Libvpx optimizations for ARMv6 or ARMv7 without NEON.
238 ['arm_neon==0', {
239 'includes': [
240 'libvpx_srcs_arm.gypi',
241 ],
242 }],
243 # Libvpx optimizations for ARMv7 with NEON.
244 ['arm_neon==1', {
245 'includes': [
246 'libvpx_srcs_arm_neon.gypi',
247 ],
248 }],
249 ['OS == "android"', {
250 'include_dirs': [
251 '<(android_ndk_include)',
252 '<(android_ndk_include)/machine',
253 ],
254 'defines': [
255 'ANDROID_CPU_ARM_FEATURE_NEON=4',
256 ],
257 }],
258 [ 'chromeos == 1', {
259 # ChromeOS needs these files for animated WebM avatars.
260 'sources': [
261 'source/libvpx/libmkv/EbmlIDs.h',
262 'source/libvpx/libmkv/EbmlWriter.c',
263 'source/libvpx/libmkv/EbmlWriter.h',
264 ],
265 }],
266 ],
267 },
268 ],
269 }],
270 ],
51 'targets': [ 271 'targets': [
52 { 272 {
53 # This libvpx target contains both encoder and decoder. 273 # A tool that runs on host to tract integers from object file.
54 # Encoder is configured to be realtime only. 274 'target_name': 'libvpx_obj_int_extract',
55 'target_name': 'libvpx', 275 'type': 'executable',
56 'type': 'static_library', 276 'toolsets': ['host'],
57 'variables': {
58 'yasm_output_path': '<(SHARED_INTERMEDIATE_DIR)/third_party/libvpx',
59 'OS_CATEGORY%': '<(OS_CATEGORY)',
60 'yasm_flags': [
61 '-D', 'CHROMIUM',
62 '-I', 'source/config/<(OS_CATEGORY)/<(target_arch)',
63 '-I', 'source/config',
64 '-I', 'source/libvpx',
65 '-I', '<(shared_generated_dir)', # Generated assembly offsets
66 ],
67 },
68 'dependencies': [
69 'gen_asm_offsets',
70 ],
71 'includes': [
72 '../yasm/yasm_compile.gypi'
73 ],
74 'include_dirs': [
75 'source/config/<(OS_CATEGORY)/<(target_arch)',
76 'source/config',
77 'source/libvpx',
78 'source/libvpx/vp8/common',
79 'source/libvpx/vp8/decoder',
80 'source/libvpx/vp8/encoder',
81 '<(shared_generated_dir)', # Provides vpx_rtcd.h.
82 ],
83 'direct_dependent_settings': {
84 'include_dirs': [
85 'source/libvpx',
86 ],
87 },
88 # VS2010 does not correctly incrementally link obj files generated
89 # from asm files. This flag disables UseLibraryDependencyInputs to
90 # avoid this problem.
91 'msvs_2010_disable_uldi_when_referenced': 1,
92 'conditions': [
93 [ 'target_arch=="ia32"', {
94 'includes': [
95 'libvpx_srcs_x86.gypi',
96 ],
97 }],
98 [ 'target_arch=="x64"', {
99 'includes': [
100 'libvpx_srcs_x86_64.gypi',
101 ],
102 }],
103 ['clang == 1', {
104 'xcode_settings': {
105 'WARNING_CFLAGS': [
106 # libvpx heavily relies on implicit enum casting.
107 '-Wno-conversion',
108 # libvpx does `if ((a == b))` in some places.
109 '-Wno-parentheses-equality',
110 ],
111 },
112 'cflags': [
113 '-Wno-conversion',
114 '-Wno-parentheses-equality',
115 ],
116 }],
117 [ 'chromeos == 1', {
118 # ChromeOS needs these files for animated WebM avatars.
119 'sources': [
120 'source/libvpx/libmkv/EbmlIDs.h',
121 'source/libvpx/libmkv/EbmlWriter.c',
122 'source/libvpx/libmkv/EbmlWriter.h',
123 ],
124 }],
125 ],
126 },
127 ],
128 },
129 ],
130 # 'libvpx' target for mips builds.
131 [ 'target_arch=="mipsel" ', {
132 'targets': [
133 {
134 # This libvpx target contains both encoder and decoder.
135 # Encoder is configured to be realtime only.
136 'target_name': 'libvpx',
137 'type': 'static_library',
138 'variables': {
139 'shared_generated_dir':
140 '<(SHARED_INTERMEDIATE_DIR)/third_party/libvpx',
141 },
142 'includes': [
143 'libvpx_srcs_mips.gypi',
144 ],
145 'cflags': [
146 '-EL -static -mips32',
147 ],
148 'include_dirs': [
149 'source/config/<(OS)/<(target_arch)',
150 'source/config',
151 'source/libvpx',
152 'source/libvpx/vp8/common',
153 'source/libvpx/vp8/decoder',
154 'source/libvpx/vp8/encoder',
155 ],
156 'direct_dependent_settings': {
157 'include_dirs': [
158 'source/libvpx',
159 ],
160 },
161 'sources': [
162 'source/config/<(OS)/<(target_arch)/vpx_config.c',
163 ],
164 },
165 ],
166 },
167 ],
168 # 'libvpx' target for ARM builds.
169 [ 'target_arch=="arm" ', {
170 'targets': [
171 {
172 # This libvpx target contains both encoder and decoder.
173 # Encoder is configured to be realtime only.
174 'target_name': 'libvpx',
175 'type': 'static_library',
176 'dependencies': [
177 'gen_asm_offsets',
178 ],
179
180 # Copy the script to the output folder so that we can use it with
181 # absolute path.
182 'copies': [{
183 'destination': '<(shared_generated_dir)',
184 'files': [
185 '<(ads2gas_script_path)',
186 ],
187 }],
188
189 # Rule to convert .asm files to .S files.
190 'rules': [
191 {
192 'rule_name': 'convert_asm',
193 'extension': 'asm',
194 'inputs': [ '<(shared_generated_dir)/<(ads2gas_script)', ],
195 'outputs': [
196 '<(shared_generated_dir)/<(RULE_INPUT_ROOT).S',
197 ],
198 'action': [
199 'bash',
200 '-c',
201 'cat <(RULE_INPUT_PATH) | perl <(shared_generated_dir)/<(ads2gas _script) > <(shared_generated_dir)/<(RULE_INPUT_ROOT).S',
202 ],
203 'process_outputs_as_sources': 1,
204 'message': 'Convert libvpx asm file for ARM <(RULE_INPUT_PATH).',
205 },
206 ],
207
208 'variables': {
209 # Location of the assembly conversion script.
210 'ads2gas_script': 'ads2gas.pl',
211 'ads2gas_script_path': 'source/libvpx/build/make/<(ads2gas_script)',
212 },
213 'cflags': [
214 # We need to explicitly tell the GCC assembler to look for
215 # .include directive files from the place where they're
216 # generated to.
217 '-Wa,-I,<!(pwd)/source/config/<(OS_CATEGORY)/<(target_arch_full)',
218 '-Wa,-I,<!(pwd)/source/config',
219 '-Wa,-I,<(shared_generated_dir)',
220 ],
221 'include_dirs': [ 277 'include_dirs': [
222 'source/config/<(OS_CATEGORY)/<(target_arch_full)', 278 'source/config/<(OS_CATEGORY)/<(target_arch_full)',
223 'source/config', 279 'source/config',
224 'source/libvpx', 280 'source/libvpx',
225 ], 281 ],
282 'sources': [
283 'source/libvpx/build/make/obj_int_extract.c',
284 ]
285 },
286 {
287 # A library that contains assembly offsets needed.
288 'target_name': 'libvpx_asm_offsets',
289 'type': 'static_library',
290 'hard_dependency': 1,
291 'include_dirs': [
292 'source/config/<(OS_CATEGORY)/<(target_arch_full)',
293 'source/config',
294 'source/libvpx',
295 ],
296 'conditions': [
297 ['asan==1', {
298 'cflags!': [ '-faddress-sanitizer', ],
299 'xcode_settings': {
300 'OTHER_CFLAGS!': [ '-faddress-sanitizer', ],
301 },
302 'ldflags!': [ '-faddress-sanitizer', ],
303 }],
304 ],
305 'sources': [
306 '<(shared_generated_dir)/vpx_rtcd.h',
307 'source/libvpx/vp8/common/asm_com_offsets.c',
308 'source/libvpx/vp8/decoder/asm_dec_offsets.c',
309 'source/libvpx/vp8/encoder/asm_enc_offsets.c',
310 ],
311 },
312 {
313 # A target that takes assembly offsets library and generate the
314 # corresponding assembly files.
315 # This target is a hard dependency because the generated .asm files
316 # are needed all assembly optimized files in libvpx.
317 'target_name': 'gen_asm_offsets',
318 'type': 'none',
319 'hard_dependency': 1,
320 'dependencies': [
321 'libvpx_asm_offsets',
322 'libvpx_obj_int_extract#host',
323 ],
324 'conditions': [
325 ['OS=="win"', {
326 'variables': {
327 'ninja_obj_dir': '<(PRODUCT_DIR)/obj/third_party/libvpx/source/l ibvpx/vp8',
328 },
329 'actions': [
330 {
331 'action_name': 'copy_enc_offsets_obj',
332 'inputs': [ 'copy_obj.sh' ],
333 'outputs': [ '<(INTERMEDIATE_DIR)/asm_enc_offsets.obj' ],
334 'action': [
335 '<(DEPTH)/third_party/libvpx/copy_obj.sh',
336 '-d', '<@(_outputs)',
337 '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_enc_offsets .obj',
338 '-s', '<(ninja_obj_dir)/encoder/libvpx_asm_offsets.asm_enc_o ffsets.obj',
339 ],
340 'process_output_as_sources': 1,
341 },
342 {
343 'action_name': 'copy_dec_offsets_obj',
344 'inputs': [ 'copy_obj.sh' ],
345 'outputs': [ '<(INTERMEDIATE_DIR)/asm_dec_offsets.obj' ],
346 'action': [
347 '<(DEPTH)/third_party/libvpx/copy_obj.sh',
348 '-d', '<@(_outputs)',
349 '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_dec_offsets .obj',
350 '-s', '<(ninja_obj_dir)/decoder/libvpx_asm_offsets.asm_dec_o ffsets.obj',
351 ],
352 'process_output_as_sources': 1,
353 },
354 {
355 'action_name': 'copy_com_offsets_obj',
356 'inputs': [ 'copy_obj.sh' ],
357 'outputs': [ '<(INTERMEDIATE_DIR)/asm_com_offsets.obj' ],
358 'action': [
359 '<(DEPTH)/third_party/libvpx/copy_obj.sh',
360 '-d', '<@(_outputs)',
361 '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_com_offsets .obj',
362 '-s', '<(ninja_obj_dir)/common/libvpx_asm_offsets.asm_com_of fsets.obj',
363 ],
364 'process_output_as_sources': 1,
365 },
366 ],
367 'sources': [
368 '<(INTERMEDIATE_DIR)/asm_com_offsets.obj',
369 '<(INTERMEDIATE_DIR)/asm_dec_offsets.obj',
370 '<(INTERMEDIATE_DIR)/asm_enc_offsets.obj',
371 ],
372 }, {
373 'actions': [
374 {
375 # Take archived .a file and unpack it unto .o files.
376 'action_name': 'unpack_lib_posix',
377 'inputs': [
378 'unpack_lib_posix.sh',
379 ],
380 'outputs': [
381 '<(INTERMEDIATE_DIR)/asm_com_offsets.o',
382 '<(INTERMEDIATE_DIR)/asm_dec_offsets.o',
383 '<(INTERMEDIATE_DIR)/asm_enc_offsets.o',
384 ],
385 'action': [
386 '<(DEPTH)/third_party/libvpx/unpack_lib_posix.sh',
387 '-d', '<(INTERMEDIATE_DIR)',
388 '-a', '<(LIB_DIR)/libvpx_asm_offsets.a',
389 '-a', '<(LIB_DIR)/third_party/libvpx/libvpx_asm_offsets.a',
390 '-f', 'asm_com_offsets.o',
391 '-f', 'asm_dec_offsets.o',
392 '-f', 'asm_enc_offsets.o',
393 ],
394 'process_output_as_sources': 1,
395 },
396 ],
397 # Need this otherwise gyp won't run the rule on them.
398 'sources': [
399 '<(INTERMEDIATE_DIR)/asm_com_offsets.o',
400 '<(INTERMEDIATE_DIR)/asm_dec_offsets.o',
401 '<(INTERMEDIATE_DIR)/asm_enc_offsets.o',
402 ],
403 }],
404 ],
405 'rules': [
406 {
407 # Rule to extract integer values for each symbol from an object fi le.
408 'rule_name': 'obj_int_extract',
409 'extension': '<(asm_obj_extension)',
410 'inputs': [
411 '<(PRODUCT_DIR)/libvpx_obj_int_extract',
412 'obj_int_extract.sh',
413 ],
414 'outputs': [
415 '<(shared_generated_dir)/<(RULE_INPUT_ROOT).asm',
416 ],
417 'variables': {
418 'conditions': [
419 ['target_arch=="arm"', {
420 'asm_format': 'gas',
421 }, {
422 'asm_format': 'rvds',
423 }],
424 ],
425 },
426 'action': [
427 '<(DEPTH)/third_party/libvpx/obj_int_extract.sh',
428 '-e', '<(PRODUCT_DIR)/libvpx_obj_int_extract',
429 '-f', '<(asm_format)',
430 '-b', '<(RULE_INPUT_PATH)',
431 '-o', '<(shared_generated_dir)/<(RULE_INPUT_ROOT).asm',
432 ],
433 'message': 'Generate assembly offsets <(RULE_INPUT_PATH).',
434 },
435 ],
436 },
437 {
438 'target_name': 'simple_encoder',
439 'type': 'executable',
440 'dependencies': [
441 'libvpx',
442 ],
443
444 # Copy the script to the output folder so that we can use it with
445 # absolute path.
446 'copies': [{
447 'destination': '<(shared_generated_dir)/simple_encoder',
448 'files': [
449 'source/libvpx/examples/gen_example_code.sh',
450 ],
451 }],
452
453 # Rule to convert .txt files to .c files.
454 'rules': [
455 {
456 'rule_name': 'generate_example',
457 'extension': 'txt',
458 'inputs': [ '<(shared_generated_dir)/simple_encoder/gen_example_co de.sh', ],
459 'outputs': [
460 '<(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
461 ],
462 'action': [
463 'bash',
464 '-c',
465 '<(shared_generated_dir)/simple_encoder/gen_example_code.sh <(RU LE_INPUT_PATH) > <(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
466 ],
467 'process_outputs_as_sources': 1,
468 'message': 'Generate libvpx example code <(RULE_INPUT_PATH).',
469 },
470 ],
471 'sources': [
472 'source/libvpx/examples/simple_encoder.txt',
473 ]
474 },
475 {
476 'target_name': 'simple_decoder',
477 'type': 'executable',
478 'dependencies': [
479 'libvpx',
480 ],
481
482 # Copy the script to the output folder so that we can use it with
483 # absolute path.
484 'copies': [{
485 'destination': '<(shared_generated_dir)/simple_decoder',
486 'files': [
487 'source/libvpx/examples/gen_example_code.sh',
488 ],
489 }],
490
491 # Rule to convert .txt files to .c files.
492 'rules': [
493 {
494 'rule_name': 'generate_example',
495 'extension': 'txt',
496 'inputs': [ '<(shared_generated_dir)/simple_decoder/gen_example_co de.sh', ],
497 'outputs': [
498 '<(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
499 ],
500 'action': [
501 'bash',
502 '-c',
503 '<(shared_generated_dir)/simple_decoder/gen_example_code.sh <(RU LE_INPUT_PATH) > <(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
504 ],
505 'process_outputs_as_sources': 1,
506 'message': 'Generate libvpx example code <(RULE_INPUT_PATH).',
507 },
508 ],
509 'sources': [
510 'source/libvpx/examples/simple_decoder.txt',
511 ]
512 },
513 ],
514 }, { # use_system_libvpx==1
515 'targets': [
516 {
517 'target_name': 'libvpx',
518 'type': 'none',
226 'direct_dependent_settings': { 519 'direct_dependent_settings': {
227 'include_dirs': [ 520 'cflags': [
228 'source/libvpx', 521 '<!@(pkg-config --cflags vpx)',
522 ],
523 'defines': [
524 'USE_SYSTEM_LIBVPX',
229 ], 525 ],
230 }, 526 },
231 'conditions': [ 527 'link_settings': {
232 # Libvpx optimizations for ARMv6 or ARMv7 without NEON. 528 'ldflags': [
233 ['arm_neon==0', { 529 '<!@(pkg-config --libs-only-L --libs-only-other vpx)',
234 'includes': [ 530 ],
235 'libvpx_srcs_arm.gypi', 531 'libraries': [
236 ], 532 '<!@(pkg-config --libs-only-l vpx)',
237 }], 533 ],
238 # Libvpx optimizations for ARMv7 with NEON. 534 },
239 ['arm_neon==1', {
240 'includes': [
241 'libvpx_srcs_arm_neon.gypi',
242 ],
243 }],
244 ['OS == "android"', {
245 'include_dirs': [
246 '<(android_ndk_include)',
247 '<(android_ndk_include)/machine',
248 ],
249 'defines': [
250 'ANDROID_CPU_ARM_FEATURE_NEON=4',
251 ],
252 }],
253 [ 'chromeos == 1', {
254 # ChromeOS needs these files for animated WebM avatars.
255 'sources': [
256 'source/libvpx/libmkv/EbmlIDs.h',
257 'source/libvpx/libmkv/EbmlWriter.c',
258 'source/libvpx/libmkv/EbmlWriter.h',
259 ],
260 }],
261 ],
262 }, 535 },
263 ], 536 ],
264 }], 537 }],
265 ], 538 ],
266 'targets': [
267 {
268 # A tool that runs on host to tract integers from object file.
269 'target_name': 'libvpx_obj_int_extract',
270 'type': 'executable',
271 'toolsets': ['host'],
272 'include_dirs': [
273 'source/config/<(OS_CATEGORY)/<(target_arch_full)',
274 'source/config',
275 'source/libvpx',
276 ],
277 'sources': [
278 'source/libvpx/build/make/obj_int_extract.c',
279 ]
280 },
281 {
282 # A library that contains assembly offsets needed.
283 'target_name': 'libvpx_asm_offsets',
284 'type': 'static_library',
285 'hard_dependency': 1,
286 'include_dirs': [
287 'source/config/<(OS_CATEGORY)/<(target_arch_full)',
288 'source/config',
289 'source/libvpx',
290 ],
291 'conditions': [
292 ['asan==1', {
293 'cflags!': [ '-faddress-sanitizer', ],
294 'xcode_settings': {
295 'OTHER_CFLAGS!': [ '-faddress-sanitizer', ],
296 },
297 'ldflags!': [ '-faddress-sanitizer', ],
298 }],
299 ],
300 'sources': [
301 '<(shared_generated_dir)/vpx_rtcd.h',
302 'source/libvpx/vp8/common/asm_com_offsets.c',
303 'source/libvpx/vp8/decoder/asm_dec_offsets.c',
304 'source/libvpx/vp8/encoder/asm_enc_offsets.c',
305 ],
306 },
307 {
308 # A target that takes assembly offsets library and generate the
309 # corresponding assembly files.
310 # This target is a hard dependency because the generated .asm files
311 # are needed all assembly optimized files in libvpx.
312 'target_name': 'gen_asm_offsets',
313 'type': 'none',
314 'hard_dependency': 1,
315 'dependencies': [
316 'libvpx_asm_offsets',
317 'libvpx_obj_int_extract#host',
318 ],
319 'conditions': [
320 ['OS=="win"', {
321 'variables': {
322 'ninja_obj_dir': '<(PRODUCT_DIR)/obj/third_party/libvpx/source/libvp x/vp8',
323 },
324 'actions': [
325 {
326 'action_name': 'copy_enc_offsets_obj',
327 'inputs': [ 'copy_obj.sh' ],
328 'outputs': [ '<(INTERMEDIATE_DIR)/asm_enc_offsets.obj' ],
329 'action': [
330 '<(DEPTH)/third_party/libvpx/copy_obj.sh',
331 '-d', '<@(_outputs)',
332 '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_enc_offsets.obj ',
333 '-s', '<(ninja_obj_dir)/encoder/libvpx_asm_offsets.asm_enc_offse ts.obj',
334 ],
335 'process_output_as_sources': 1,
336 },
337 {
338 'action_name': 'copy_dec_offsets_obj',
339 'inputs': [ 'copy_obj.sh' ],
340 'outputs': [ '<(INTERMEDIATE_DIR)/asm_dec_offsets.obj' ],
341 'action': [
342 '<(DEPTH)/third_party/libvpx/copy_obj.sh',
343 '-d', '<@(_outputs)',
344 '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_dec_offsets.obj ',
345 '-s', '<(ninja_obj_dir)/decoder/libvpx_asm_offsets.asm_dec_offse ts.obj',
346 ],
347 'process_output_as_sources': 1,
348 },
349 {
350 'action_name': 'copy_com_offsets_obj',
351 'inputs': [ 'copy_obj.sh' ],
352 'outputs': [ '<(INTERMEDIATE_DIR)/asm_com_offsets.obj' ],
353 'action': [
354 '<(DEPTH)/third_party/libvpx/copy_obj.sh',
355 '-d', '<@(_outputs)',
356 '-s', '<(PRODUCT_DIR)/obj/libvpx_asm_offsets/asm_com_offsets.obj ',
357 '-s', '<(ninja_obj_dir)/common/libvpx_asm_offsets.asm_com_offset s.obj',
358 ],
359 'process_output_as_sources': 1,
360 },
361 ],
362 'sources': [
363 '<(INTERMEDIATE_DIR)/asm_com_offsets.obj',
364 '<(INTERMEDIATE_DIR)/asm_dec_offsets.obj',
365 '<(INTERMEDIATE_DIR)/asm_enc_offsets.obj',
366 ],
367 }, {
368 'actions': [
369 {
370 # Take archived .a file and unpack it unto .o files.
371 'action_name': 'unpack_lib_posix',
372 'inputs': [
373 'unpack_lib_posix.sh',
374 ],
375 'outputs': [
376 '<(INTERMEDIATE_DIR)/asm_com_offsets.o',
377 '<(INTERMEDIATE_DIR)/asm_dec_offsets.o',
378 '<(INTERMEDIATE_DIR)/asm_enc_offsets.o',
379 ],
380 'action': [
381 '<(DEPTH)/third_party/libvpx/unpack_lib_posix.sh',
382 '-d', '<(INTERMEDIATE_DIR)',
383 '-a', '<(LIB_DIR)/libvpx_asm_offsets.a',
384 '-a', '<(LIB_DIR)/third_party/libvpx/libvpx_asm_offsets.a',
385 '-f', 'asm_com_offsets.o',
386 '-f', 'asm_dec_offsets.o',
387 '-f', 'asm_enc_offsets.o',
388 ],
389 'process_output_as_sources': 1,
390 },
391 ],
392 # Need this otherwise gyp won't run the rule on them.
393 'sources': [
394 '<(INTERMEDIATE_DIR)/asm_com_offsets.o',
395 '<(INTERMEDIATE_DIR)/asm_dec_offsets.o',
396 '<(INTERMEDIATE_DIR)/asm_enc_offsets.o',
397 ],
398 }],
399 ],
400 'rules': [
401 {
402 # Rule to extract integer values for each symbol from an object file.
403 'rule_name': 'obj_int_extract',
404 'extension': '<(asm_obj_extension)',
405 'inputs': [
406 '<(PRODUCT_DIR)/libvpx_obj_int_extract',
407 'obj_int_extract.sh',
408 ],
409 'outputs': [
410 '<(shared_generated_dir)/<(RULE_INPUT_ROOT).asm',
411 ],
412 'variables': {
413 'conditions': [
414 ['target_arch=="arm"', {
415 'asm_format': 'gas',
416 }, {
417 'asm_format': 'rvds',
418 }],
419 ],
420 },
421 'action': [
422 '<(DEPTH)/third_party/libvpx/obj_int_extract.sh',
423 '-e', '<(PRODUCT_DIR)/libvpx_obj_int_extract',
424 '-f', '<(asm_format)',
425 '-b', '<(RULE_INPUT_PATH)',
426 '-o', '<(shared_generated_dir)/<(RULE_INPUT_ROOT).asm',
427 ],
428 'message': 'Generate assembly offsets <(RULE_INPUT_PATH).',
429 },
430 ],
431 },
432 {
433 'target_name': 'simple_encoder',
434 'type': 'executable',
435 'dependencies': [
436 'libvpx',
437 ],
438
439 # Copy the script to the output folder so that we can use it with
440 # absolute path.
441 'copies': [{
442 'destination': '<(shared_generated_dir)/simple_encoder',
443 'files': [
444 'source/libvpx/examples/gen_example_code.sh',
445 ],
446 }],
447
448 # Rule to convert .txt files to .c files.
449 'rules': [
450 {
451 'rule_name': 'generate_example',
452 'extension': 'txt',
453 'inputs': [ '<(shared_generated_dir)/simple_encoder/gen_example_code.s h', ],
454 'outputs': [
455 '<(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
456 ],
457 'action': [
458 'bash',
459 '-c',
460 '<(shared_generated_dir)/simple_encoder/gen_example_code.sh <(RULE_I NPUT_PATH) > <(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
461 ],
462 'process_outputs_as_sources': 1,
463 'message': 'Generate libvpx example code <(RULE_INPUT_PATH).',
464 },
465 ],
466 'sources': [
467 'source/libvpx/examples/simple_encoder.txt',
468 ]
469 },
470 {
471 'target_name': 'simple_decoder',
472 'type': 'executable',
473 'dependencies': [
474 'libvpx',
475 ],
476
477 # Copy the script to the output folder so that we can use it with
478 # absolute path.
479 'copies': [{
480 'destination': '<(shared_generated_dir)/simple_decoder',
481 'files': [
482 'source/libvpx/examples/gen_example_code.sh',
483 ],
484 }],
485
486 # Rule to convert .txt files to .c files.
487 'rules': [
488 {
489 'rule_name': 'generate_example',
490 'extension': 'txt',
491 'inputs': [ '<(shared_generated_dir)/simple_decoder/gen_example_code.s h', ],
492 'outputs': [
493 '<(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
494 ],
495 'action': [
496 'bash',
497 '-c',
498 '<(shared_generated_dir)/simple_decoder/gen_example_code.sh <(RULE_I NPUT_PATH) > <(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
499 ],
500 'process_outputs_as_sources': 1,
501 'message': 'Generate libvpx example code <(RULE_INPUT_PATH).',
502 },
503 ],
504 'sources': [
505 'source/libvpx/examples/simple_decoder.txt',
506 ]
507 },
508 ],
509 } 539 }
510 540
511 # Local Variables: 541 # Local Variables:
512 # tab-width:2 542 # tab-width:2
513 # indent-tabs-mode:nil 543 # indent-tabs-mode:nil
514 # End: 544 # End:
515 # vim: set expandtab tabstop=2 shiftwidth=2: 545 # vim: set expandtab tabstop=2 shiftwidth=2:
OLDNEW
« no previous file with comments | « libvpx.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698