OLD | NEW |
1 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | 1 # Copyright (c) 2009 The Chromium OS 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 import os | 5 import os |
6 | 6 |
7 # Protobuffer compilation | 7 # Protobuffer compilation |
8 """ Inputs: | |
9 target: list of targets to compile to | |
10 source: list of sources to compile | |
11 env: the scons environment in which we are compiling | |
12 Outputs: | |
13 target: the list of targets we'll emit | |
14 source: the list of sources we'll compile""" | |
15 def ProtocolBufferEmitter(target, source, env): | 8 def ProtocolBufferEmitter(target, source, env): |
| 9 """ Inputs: |
| 10 target: list of targets to compile to |
| 11 source: list of sources to compile |
| 12 env: the scons environment in which we are compiling |
| 13 Outputs: |
| 14 target: the list of targets we'll emit |
| 15 source: the list of sources we'll compile""" |
16 output = str(source[0]) | 16 output = str(source[0]) |
17 output = output[0:output.rfind('.proto')] | 17 output = output[0:output.rfind('.proto')] |
18 target = [ | 18 target = [ |
19 output + '.pb.cc', | 19 output + '.pb.cc', |
20 output + '.pb.h', | 20 output + '.pb.h', |
21 ] | 21 ] |
22 return target, source | 22 return target, source |
23 | 23 |
24 """ Inputs: | |
25 source: list of sources to process | |
26 target: list of targets to generate | |
27 env: scons environment in which we are working | |
28 for_signature: unused | |
29 Outputs: a list of commands to execute to generate the targets from | |
30 the sources.""" | |
31 def ProtocolBufferGenerator(source, target, env, for_signature): | 24 def ProtocolBufferGenerator(source, target, env, for_signature): |
| 25 """ Inputs: |
| 26 source: list of sources to process |
| 27 target: list of targets to generate |
| 28 env: scons environment in which we are working |
| 29 for_signature: unused |
| 30 Outputs: a list of commands to execute to generate the targets from |
| 31 the sources.""" |
32 commands = [ | 32 commands = [ |
33 '/usr/bin/protoc ' | 33 '/usr/bin/protoc ' |
34 ' --proto_path . ${SOURCES} --cpp_out .'] | 34 ' --proto_path . ${SOURCES} --cpp_out .'] |
35 return commands | 35 return commands |
36 | 36 |
37 proto_builder = Builder(generator = ProtocolBufferGenerator, | 37 proto_builder = Builder(generator = ProtocolBufferGenerator, |
38 emitter = ProtocolBufferEmitter, | 38 emitter = ProtocolBufferEmitter, |
39 single_source = 1, | 39 single_source = 1, |
40 suffix = '.pb.cc') | 40 suffix = '.pb.cc') |
41 | 41 |
42 """ Inputs: | |
43 target: unused | |
44 source: list containing the source .xml file | |
45 env: the scons environment in which we are compiling | |
46 Outputs: | |
47 target: the list of targets we'll emit | |
48 source: the list of sources we'll process""" | |
49 def DbusBindingsEmitter(target, source, env): | 42 def DbusBindingsEmitter(target, source, env): |
| 43 """ Inputs: |
| 44 target: unused |
| 45 source: list containing the source .xml file |
| 46 env: the scons environment in which we are compiling |
| 47 Outputs: |
| 48 target: the list of targets we'll emit |
| 49 source: the list of sources we'll process""" |
50 output = str(source[0]) | 50 output = str(source[0]) |
51 output = output[0:output.rfind('.xml')] | 51 output = output[0:output.rfind('.xml')] |
52 target = [ | 52 target = [ |
53 output + '.dbusserver.h', | 53 output + '.dbusserver.h', |
54 output + '.dbusclient.h' | 54 output + '.dbusclient.h' |
55 ] | 55 ] |
56 return target, source | 56 return target, source |
57 | 57 |
58 """ Inputs: | |
59 source: list of sources to process | |
60 target: list of targets to generate | |
61 env: scons environment in which we are working | |
62 for_signature: unused | |
63 Outputs: a list of commands to execute to generate the targets from | |
64 the sources.""" | |
65 def DbusBindingsGenerator(source, target, env, for_signature): | 58 def DbusBindingsGenerator(source, target, env, for_signature): |
| 59 """ Inputs: |
| 60 source: list of sources to process |
| 61 target: list of targets to generate |
| 62 env: scons environment in which we are working |
| 63 for_signature: unused |
| 64 Outputs: a list of commands to execute to generate the targets from |
| 65 the sources.""" |
66 commands = [] | 66 commands = [] |
67 for target_file in target: | 67 for target_file in target: |
68 if str(target_file).endswith('.dbusserver.h'): | 68 if str(target_file).endswith('.dbusserver.h'): |
69 mode_flag = '--mode=glib-server ' | 69 mode_flag = '--mode=glib-server ' |
70 else: | 70 else: |
71 mode_flag = '--mode=glib-client ' | 71 mode_flag = '--mode=glib-client ' |
72 cmd = '/usr/bin/dbus-binding-tool %s --prefix=update_engine_service ' \ | 72 cmd = '/usr/bin/dbus-binding-tool %s --prefix=update_engine_service ' \ |
73 '%s > %s' % (mode_flag, str(source[0]), str(target_file)) | 73 '%s > %s' % (mode_flag, str(source[0]), str(target_file)) |
74 commands.append(cmd) | 74 commands.append(cmd) |
75 return commands | 75 return commands |
76 | 76 |
77 dbus_bindings_builder = Builder(generator = DbusBindingsGenerator, | 77 dbus_bindings_builder = Builder(generator = DbusBindingsGenerator, |
78 emitter = DbusBindingsEmitter, | 78 emitter = DbusBindingsEmitter, |
79 single_source = 1, | 79 single_source = 1, |
80 suffix = 'dbusclient.h') | 80 suffix = 'dbusclient.h') |
81 | 81 |
| 82 def GlibMarshalEmitter(target, source, env): |
| 83 """ Inputs: |
| 84 target: unused |
| 85 source: list containing the source .list file |
| 86 env: the scons environment in which we are compiling |
| 87 Outputs: |
| 88 target: the list of targets we'll emit |
| 89 source: the list of sources we'll process""" |
| 90 output = str(source[0]) |
| 91 output = output[0:output.rfind('.list')] |
| 92 target = [ |
| 93 output + '.glibmarshal.c', |
| 94 output + '.glibmarshal.h' |
| 95 ] |
| 96 return target, source |
| 97 |
| 98 def GlibMarshalGenerator(source, target, env, for_signature): |
| 99 """ Inputs: |
| 100 source: list of sources to process |
| 101 target: list of targets to generate |
| 102 env: scons environment in which we are working |
| 103 for_signature: unused |
| 104 Outputs: a list of commands to execute to generate the targets from |
| 105 the sources.""" |
| 106 commands = [] |
| 107 for target_file in target: |
| 108 if str(target_file).endswith('.glibmarshal.h'): |
| 109 mode_flag = '--header ' |
| 110 else: |
| 111 mode_flag = '--body ' |
| 112 cmd = '/usr/bin/glib-genmarshal %s --prefix=update_engine ' \ |
| 113 '%s > %s' % (mode_flag, str(source[0]), str(target_file)) |
| 114 commands.append(cmd) |
| 115 return commands |
| 116 |
| 117 glib_marshal_builder = Builder(generator = GlibMarshalGenerator, |
| 118 emitter = GlibMarshalEmitter, |
| 119 single_source = 1, |
| 120 suffix = 'glibmarshal.c') |
| 121 |
82 env = Environment() | 122 env = Environment() |
83 for key in Split('CC CXX AR RANLIB LD NM'): | 123 for key in Split('CC CXX AR RANLIB LD NM'): |
84 value = os.environ.get(key) | 124 value = os.environ.get(key) |
85 if value != None: | 125 if value != None: |
86 env[key] = value | 126 env[key] = value |
87 for key in Split('CFLAGS CCFLAGS CPPPATH LIBPATH'): | 127 for key in Split('CFLAGS CCFLAGS CPPPATH LIBPATH'): |
88 value = os.environ.get(key) | 128 value = os.environ.get(key) |
89 if value != None: | 129 if value != None: |
90 env[key] = Split(value) | 130 env[key] = Split(value) |
91 | 131 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 libpcrecpp | 164 libpcrecpp |
125 protobuf | 165 protobuf |
126 pthread | 166 pthread |
127 ssl | 167 ssl |
128 xml2 | 168 xml2 |
129 z""") | 169 z""") |
130 env['CPPPATH'] = ['..', '../../third_party/chrome/files', '../../common'] | 170 env['CPPPATH'] = ['..', '../../third_party/chrome/files', '../../common'] |
131 env['LIBPATH'] = ['../../third_party/chrome'] | 171 env['LIBPATH'] = ['../../third_party/chrome'] |
132 env['BUILDERS']['ProtocolBuffer'] = proto_builder | 172 env['BUILDERS']['ProtocolBuffer'] = proto_builder |
133 env['BUILDERS']['DbusBindings'] = dbus_bindings_builder | 173 env['BUILDERS']['DbusBindings'] = dbus_bindings_builder |
| 174 env['BUILDERS']['GlibMarshal'] = glib_marshal_builder |
134 | 175 |
135 # Fix issue with scons not passing pkg-config vars through the environment. | 176 # Fix issue with scons not passing pkg-config vars through the environment. |
136 for key in Split('PKG_CONFIG_LIBDIR PKG_CONFIG_PATH'): | 177 for key in Split('PKG_CONFIG_LIBDIR PKG_CONFIG_PATH'): |
137 if os.environ.has_key(key): | 178 if os.environ.has_key(key): |
138 env['ENV'][key] = os.environ[key] | 179 env['ENV'][key] = os.environ[key] |
139 | 180 |
140 env.ParseConfig('pkg-config --cflags --libs ' | 181 env.ParseConfig('pkg-config --cflags --libs ' |
141 'dbus-1 dbus-glib-1 gio-2.0 gio-unix-2.0 glib-2.0') | 182 'dbus-1 dbus-glib-1 gio-2.0 gio-unix-2.0 glib-2.0') |
142 env.ProtocolBuffer('update_metadata.pb.cc', 'update_metadata.proto') | 183 env.ProtocolBuffer('update_metadata.pb.cc', 'update_metadata.proto') |
143 | 184 |
144 env.DbusBindings('update_engine.dbusclient.h', 'update_engine.xml') | 185 env.DbusBindings('update_engine.dbusclient.h', 'update_engine.xml') |
145 | 186 |
| 187 env.GlibMarshal('marshal.glibmarshal.c', 'marshal.list') |
| 188 |
146 if ARGUMENTS.get('debug', 0): | 189 if ARGUMENTS.get('debug', 0): |
147 env['CCFLAGS'] += ' -fprofile-arcs -ftest-coverage' | 190 env['CCFLAGS'] += ' -fprofile-arcs -ftest-coverage' |
148 env['LIBS'] += ['bz2', 'gcov'] | 191 env['LIBS'] += ['bz2', 'gcov'] |
149 | 192 |
150 sources = Split("""action_processor.cc | 193 sources = Split("""action_processor.cc |
151 bzip.cc | 194 bzip.cc |
152 bzip_extent_writer.cc | 195 bzip_extent_writer.cc |
153 cycle_breaker.cc | 196 cycle_breaker.cc |
154 dbus_service.cc | 197 dbus_service.cc |
155 decompressing_file_writer.cc | 198 decompressing_file_writer.cc |
156 delta_diff_generator.cc | 199 delta_diff_generator.cc |
157 delta_performer.cc | 200 delta_performer.cc |
158 download_action.cc | 201 download_action.cc |
159 extent_mapper.cc | 202 extent_mapper.cc |
160 extent_writer.cc | 203 extent_writer.cc |
161 filesystem_copier_action.cc | 204 filesystem_copier_action.cc |
162 filesystem_iterator.cc | 205 filesystem_iterator.cc |
163 file_writer.cc | 206 file_writer.cc |
164 graph_utils.cc | 207 graph_utils.cc |
165 gzip.cc | 208 gzip.cc |
166 libcurl_http_fetcher.cc | 209 libcurl_http_fetcher.cc |
| 210 marshal.glibmarshal.c |
167 omaha_hash_calculator.cc | 211 omaha_hash_calculator.cc |
168 omaha_request_prep_action.cc | 212 omaha_request_prep_action.cc |
169 omaha_response_handler_action.cc | 213 omaha_response_handler_action.cc |
170 postinstall_runner_action.cc | 214 postinstall_runner_action.cc |
171 set_bootable_flag_action.cc | 215 set_bootable_flag_action.cc |
172 split_file_writer.cc | 216 split_file_writer.cc |
173 subprocess.cc | 217 subprocess.cc |
174 tarjan.cc | 218 tarjan.cc |
175 topological_sort.cc | 219 topological_sort.cc |
176 update_attempter.cc | 220 update_attempter.cc |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 delta_generator_main) | 271 delta_generator_main) |
228 | 272 |
229 http_server_cmd = env.Program('test_http_server', 'test_http_server.cc') | 273 http_server_cmd = env.Program('test_http_server', 'test_http_server.cc') |
230 | 274 |
231 unittest_env = env.Clone() | 275 unittest_env = env.Clone() |
232 unittest_env.Append(LIBS=['gtest']) | 276 unittest_env.Append(LIBS=['gtest']) |
233 unittest_cmd = unittest_env.Program('update_engine_unittests', | 277 unittest_cmd = unittest_env.Program('update_engine_unittests', |
234 unittest_sources + unittest_main) | 278 unittest_sources + unittest_main) |
235 Clean(unittest_cmd, Glob('*.gcda') + Glob('*.gcno') + Glob('*.gcov') + | 279 Clean(unittest_cmd, Glob('*.gcda') + Glob('*.gcno') + Glob('*.gcov') + |
236 Split('html app.info')) | 280 Split('html app.info')) |
OLD | NEW |