roll libyuv to r1450 from r1444. Adds direct YUY2ToNV12 and UYVYToNV12 conversions...
[chromium-blink-merge.git] / build / android / gyp / util / proguard_util.py
blob901cd9f2a8f30c5491986492cc3a4575776ef8a2
1 # Copyright 2015 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.
5 import os
6 from util import build_utils
8 def FilterProguardOutput(output):
9 '''ProGuard outputs boring stuff to stdout (proguard version, jar path, etc)
10 as well as interesting stuff (notes, warnings, etc). If stdout is entirely
11 boring, this method suppresses the output.
12 '''
13 ignore_patterns = [
14 'ProGuard, version ',
15 'Reading program jar [',
16 'Reading library jar [',
17 'Preparing output jar [',
18 ' Copying resources from program jar [',
20 for line in output.splitlines():
21 for pattern in ignore_patterns:
22 if line.startswith(pattern):
23 break
24 else:
25 # line doesn't match any of the patterns; it's probably something worth
26 # printing out.
27 return output
28 return ''
31 class ProguardCmdBuilder(object):
32 def __init__(self, proguard_jar):
33 assert os.path.exists(proguard_jar)
34 self._proguard_jar_path = proguard_jar
35 self._test = None
36 self._mapping = None
37 self._libraries = None
38 self._injars = None
39 self._configs = None
40 self._outjar = None
42 def outjar(self, path):
43 assert self._outjar is None
44 self._outjar = path
46 def is_test(self, enable):
47 assert self._test is None
48 self._test = enable
50 def mapping(self, path):
51 assert self._mapping is None
52 assert os.path.exists(path), path
53 self._mapping = path
55 def libraryjars(self, paths):
56 assert self._libraries is None
57 for p in paths:
58 assert os.path.exists(p), p
59 self._libraries = paths
61 def injars(self, paths):
62 assert self._injars is None
63 for p in paths:
64 assert os.path.exists(p), p
65 self._injars = paths
67 def configs(self, paths):
68 assert self._configs is None
69 for p in paths:
70 assert os.path.exists(p), p
71 self._configs = paths
73 def build(self):
74 assert self._injars is not None
75 assert self._outjar is not None
76 assert self._configs is not None
77 cmd = [
78 'java', '-jar', self._proguard_jar_path,
79 '-forceprocessing',
81 if self._test:
82 cmd += [
83 '-dontobfuscate',
84 '-dontoptimize',
85 '-dontshrink',
86 '-dontskipnonpubliclibraryclassmembers',
89 if self._mapping:
90 cmd += [
91 '-applymapping', self._mapping,
94 if self._libraries:
95 cmd += [
96 '-libraryjars', ':'.join(self._libraries),
99 cmd += [
100 '-injars', ':'.join(self._injars)
103 for config_file in self._configs:
104 cmd += ['-include', config_file]
106 # The output jar must be specified after inputs.
107 cmd += [
108 '-outjars', self._outjar,
109 '-dump', self._outjar + '.dump',
110 '-printseeds', self._outjar + '.seeds',
111 '-printusage', self._outjar + '.usage',
112 '-printmapping', self._outjar + '.mapping',
114 return cmd
116 def GetInputs(self):
117 inputs = [self._proguard_jar_path] + self._configs + self._injars
118 if self._mapping:
119 inputs.append(self._mapping)
120 if self._libraries:
121 inputs += self._libraries
122 return inputs
125 def CheckOutput(self):
126 build_utils.CheckOutput(self.build(), print_stdout=True,
127 stdout_filter=FilterProguardOutput)