blob: 7730995441d5b66abbca1b2a9a20264fc98730bb [file] [log] [blame]
Gilad Arnold6eccc532012-05-17 15:44:22 -07001# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
rspangler@google.com49fdf182009-10-10 00:57:34 +00002# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
Andrew de los Reyes1e338b82010-01-22 14:57:27 -08005import os
6
adlr@google.comc98a7ed2009-12-04 18:54:03 +00007# Protobuffer compilation
adlr@google.comc98a7ed2009-12-04 18:54:03 +00008def ProtocolBufferEmitter(target, source, env):
Andrew de los Reyes63b96d72010-05-10 13:08:54 -07009 """ 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"""
adlr@google.comc98a7ed2009-12-04 18:54:03 +000016 output = str(source[0])
17 output = output[0:output.rfind('.proto')]
18 target = [
19 output + '.pb.cc',
20 output + '.pb.h',
21 ]
22 return target, source
23
adlr@google.comc98a7ed2009-12-04 18:54:03 +000024def ProtocolBufferGenerator(source, target, env, for_signature):
Andrew de los Reyes63b96d72010-05-10 13:08:54 -070025 """ 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."""
adlr@google.comc98a7ed2009-12-04 18:54:03 +000032 commands = [
33 '/usr/bin/protoc '
34 ' --proto_path . ${SOURCES} --cpp_out .']
35 return commands
36
37proto_builder = Builder(generator = ProtocolBufferGenerator,
38 emitter = ProtocolBufferEmitter,
39 single_source = 1,
40 suffix = '.pb.cc')
41
Andrew de los Reyes4e9b9f42010-04-26 15:06:43 -070042def DbusBindingsEmitter(target, source, env):
Andrew de los Reyes63b96d72010-05-10 13:08:54 -070043 """ 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"""
Andrew de los Reyes4e9b9f42010-04-26 15:06:43 -070050 output = str(source[0])
51 output = output[0:output.rfind('.xml')]
52 target = [
53 output + '.dbusserver.h',
54 output + '.dbusclient.h'
55 ]
56 return target, source
57
Andrew de los Reyes4e9b9f42010-04-26 15:06:43 -070058def DbusBindingsGenerator(source, target, env, for_signature):
Andrew de los Reyes63b96d72010-05-10 13:08:54 -070059 """ 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."""
Andrew de los Reyes4e9b9f42010-04-26 15:06:43 -070066 commands = []
67 for target_file in target:
68 if str(target_file).endswith('.dbusserver.h'):
69 mode_flag = '--mode=glib-server '
70 else:
71 mode_flag = '--mode=glib-client '
72 cmd = '/usr/bin/dbus-binding-tool %s --prefix=update_engine_service ' \
73 '%s > %s' % (mode_flag, str(source[0]), str(target_file))
74 commands.append(cmd)
75 return commands
76
77dbus_bindings_builder = Builder(generator = DbusBindingsGenerator,
78 emitter = DbusBindingsEmitter,
79 single_source = 1,
80 suffix = 'dbusclient.h')
81
Darin Petkovd7061ab2010-10-06 14:37:09 -070082# Public key generation
83def PublicKeyEmitter(target, source, env):
84 """ Inputs:
85 target: list of targets to compile to
86 source: list of sources to compile
87 env: the scons environment in which we are compiling
88 Outputs:
89 target: the list of targets we'll emit
90 source: the list of sources we'll compile"""
91 targets = []
92 for source_file in source:
93 output = str(source_file)
94 output = output[0:output.rfind('.pem')]
95 output += '.pub.pem'
96 targets.append(output)
97 return targets, source
98
99def PublicKeyGenerator(source, target, env, for_signature):
100 """ Inputs:
101 source: list of sources to process
102 target: list of targets to generate
103 env: scons environment in which we are working
104 for_signature: unused
105 Outputs: a list of commands to execute to generate the targets from
106 the sources."""
107 commands = []
108 for source_file in source:
109 output = str(source_file)
110 output = output[0:output.rfind('.pem')]
111 output += '.pub.pem'
112 cmd = '/usr/bin/openssl rsa -in %s -pubout -out %s' % (source_file, output)
113 commands.append(cmd)
114 return commands
115
116public_key_builder = Builder(generator = PublicKeyGenerator,
117 emitter = PublicKeyEmitter,
118 suffix = '.pub.pem')
119
rspangler@google.com49fdf182009-10-10 00:57:34 +0000120env = Environment()
Andrew de los Reyes08c4e272010-04-15 14:02:17 -0700121for key in Split('CC CXX AR RANLIB LD NM'):
122 value = os.environ.get(key)
123 if value != None:
124 env[key] = value
Yunlian Jiangb97fc8b2013-09-04 11:27:51 -0700125for key in Split('CFLAGS CCFLAGS LDFLAGS CPPPATH LIBPATH'):
Andrew de los Reyes08c4e272010-04-15 14:02:17 -0700126 value = os.environ.get(key)
127 if value != None:
128 env[key] = Split(value)
129
130for key in Split('PKG_CONFIG_LIBDIR PKG_CONFIG_PATH SYSROOT'):
131 if os.environ.has_key(key):
132 env['ENV'][key] = os.environ[key]
133
134
Alex Deymobdcac922014-04-21 11:53:31 -0700135env['LINKFLAGS'] = Split("""
136 -Wl,--gc-sections""")
137env['LINKFLAGS'] += env.get('LDFLAGS', [])
138
139env['CCFLAGS'] = Split("""
140 -g
141 -ffunction-sections
142 -fno-exceptions
143 -fno-strict-aliasing
144 -std=gnu++11
145 -Wall
146 -Wextra
147 -Werror
148 -Wno-unused-parameter
149 -Wno-deprecated-register
150 -D__STDC_FORMAT_MACROS=1
151 -D_FILE_OFFSET_BITS=64
152 -D_POSIX_C_SOURCE=199309L""")
153env['CCFLAGS'] += env['CFLAGS']
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000154
Alex Vakulenko75039d72014-03-25 12:36:28 -0700155BASE_VER = os.environ.get('BASE_VER', '242728')
Mike Frysingerdd465db2012-03-09 11:59:31 -0500156env['LIBS'] = Split("""bz2
Raymes Khourye3d8d4c2010-09-17 10:35:54 -0700157 crypto
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000158 curl
Don Garrett83692e42013-11-08 10:11:30 -0800159 dm-bht
Thieu Le5c7d9752010-12-15 16:09:28 -0800160 ext2fs
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000161 gflags
162 glib-2.0
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000163 gthread-2.0
Ben Chan77a7fa72014-04-24 23:15:30 -0700164 metrics-%s
Mike Frysingerdd465db2012-03-09 11:59:31 -0500165 policy-%s
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000166 protobuf
167 pthread
Will Drewry8f71da82010-08-30 14:07:11 -0500168 rootdev
David Zeuthen9a017f22013-04-11 16:10:26 -0700169 rt
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000170 ssl
Gilad Arnold28e2f392012-02-09 14:36:46 -0800171 udev
J. Richard Barnettec7dd8532013-10-29 16:30:46 -0700172 vboot_host
Ben Chan77a7fa72014-04-24 23:15:30 -0700173 xml2""" % (BASE_VER, BASE_VER))
Andrew de los Reyesb70e33d2010-08-12 21:49:02 -0700174env['CPPPATH'] = ['..']
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000175env['BUILDERS']['ProtocolBuffer'] = proto_builder
Andrew de los Reyes4e9b9f42010-04-26 15:06:43 -0700176env['BUILDERS']['DbusBindings'] = dbus_bindings_builder
Darin Petkovd7061ab2010-10-06 14:37:09 -0700177env['BUILDERS']['PublicKey'] = public_key_builder
Colin Watsonf2c29ec2010-01-08 18:50:56 +0000178
179# Fix issue with scons not passing pkg-config vars through the environment.
180for key in Split('PKG_CONFIG_LIBDIR PKG_CONFIG_PATH'):
181 if os.environ.has_key(key):
182 env['ENV'][key] = os.environ[key]
183
Diego Elio Pettenò8707b5b2011-05-15 18:22:29 +0200184pkgconfig = os.environ.get('PKG_CONFIG', 'pkg-config')
185
186env.ParseConfig(pkgconfig + ' --cflags --libs '
Mike Frysingerdd465db2012-03-09 11:59:31 -0500187 'dbus-1 dbus-glib-1 gio-2.0 gio-unix-2.0 glib-2.0 libchrome-%s '
Alex Deymobdcac922014-04-21 11:53:31 -0700188 'libchromeos-%s libxml-2.0' % (BASE_VER, BASE_VER))
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000189env.ProtocolBuffer('update_metadata.pb.cc', 'update_metadata.proto')
Darin Petkovd7061ab2010-10-06 14:37:09 -0700190env.PublicKey('unittest_key.pub.pem', 'unittest_key.pem')
Andrew de los Reyesc24e3f32011-08-30 15:45:20 -0700191env.PublicKey('unittest_key2.pub.pem', 'unittest_key2.pem')
rspangler@google.com49fdf182009-10-10 00:57:34 +0000192
Alex Deymo19fe4c32014-02-14 02:21:53 -0800193# Target name is derived from the source .xml filename. The passed name is
194# unused.
195env.DbusBindings(None, 'update_engine.xml')
Andrew de los Reyes4e9b9f42010-04-26 15:06:43 -0700196
rspangler@google.com49fdf182009-10-10 00:57:34 +0000197if ARGUMENTS.get('debug', 0):
Andrew de los Reyes819fef22010-12-17 11:33:58 -0800198 env['CCFLAGS'] += ['-fprofile-arcs', '-ftest-coverage']
Andrew de los Reyes80061062010-02-04 14:25:00 -0800199 env['LIBS'] += ['bz2', 'gcov']
rspangler@google.com49fdf182009-10-10 00:57:34 +0000200
201sources = Split("""action_processor.cc
Andrew de los Reyesd2135f32010-03-11 16:00:28 -0800202 bzip.cc
Andrew de los Reyes80061062010-02-04 14:25:00 -0800203 bzip_extent_writer.cc
Bruno Rocha7f9aea22011-09-12 14:31:24 -0700204 certificate_checker.cc
Andrew de los Reyes000d8952011-03-02 15:21:14 -0800205 chrome_browser_proxy_resolver.cc
David Zeuthenf413fe52013-04-22 14:04:39 -0700206 clock.cc
Jay Srinivasan43488792012-06-19 00:25:31 -0700207 connection_manager.cc
Jay Srinivasan1c0fe792013-03-28 16:45:25 -0700208 constants.cc
Andrew de los Reyes35a7af12010-03-10 16:33:26 -0800209 cycle_breaker.cc
Andrew de los Reyes4e9b9f42010-04-26 15:06:43 -0700210 dbus_service.cc
Andrew de los Reyes09e56d62010-04-23 13:45:53 -0700211 delta_diff_generator.cc
212 delta_performer.cc
rspangler@google.com49fdf182009-10-10 00:57:34 +0000213 download_action.cc
Andrew de los Reyesb4025e62010-02-23 17:47:03 -0800214 extent_mapper.cc
Andrew de los Reyes5fdae4a2010-10-05 10:47:42 -0700215 extent_ranges.cc
Andrew de los Reyes80061062010-02-04 14:25:00 -0800216 extent_writer.cc
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000217 filesystem_copier_action.cc
218 filesystem_iterator.cc
Gilad Arnold11c066f2012-05-10 14:37:25 -0700219 file_descriptor.cc
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000220 file_writer.cc
Darin Petkov7a22d792010-11-08 14:10:00 -0800221 full_update_generator.cc
Gilad Arnold1ebd8132012-03-05 10:19:29 -0800222 gpio_handler.cc
Andrew de los Reyes0ce161b2010-02-22 15:27:01 -0800223 graph_utils.cc
Alex Deymo42432912013-07-12 20:21:15 -0700224 hardware.cc
Gilad Arnold9bedeb52011-11-17 16:19:57 -0800225 http_common.cc
Andrew de los Reyes45168102010-11-22 11:13:50 -0800226 http_fetcher.cc
Chris Masonef8d037f2014-02-19 01:53:00 +0000227 hwid_override.cc
Jay Srinivasanae4697c2013-03-18 17:08:08 -0700228 install_plan.cc
rspangler@google.com49fdf182009-10-10 00:57:34 +0000229 libcurl_http_fetcher.cc
Thieu Le5c7d9752010-12-15 16:09:28 -0800230 metadata.cc
David Zeuthen33bae492014-02-25 16:16:18 -0800231 metrics.cc
Andrew de los Reyes819fef22010-12-17 11:33:58 -0800232 multi_range_http_fetcher.cc
rspangler@google.com49fdf182009-10-10 00:57:34 +0000233 omaha_hash_calculator.cc
Darin Petkov6a5b3222010-07-13 14:55:28 -0700234 omaha_request_action.cc
Darin Petkova4a8a8c2010-07-15 22:21:12 -0700235 omaha_request_params.cc
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000236 omaha_response_handler_action.cc
David Zeuthen27a48bc2013-08-06 12:06:29 -0700237 p2p_manager.cc
Andrew de los Reyes0c440052010-08-20 11:25:54 -0700238 payload_signer.cc
Jay Srinivasan6f6ea002012-12-14 11:26:28 -0800239 payload_state.cc
David Zeuthenfe225c12014-04-29 10:37:35 -0700240 policy_manager/boxed_value.cc
Alex Deymoc705cc82014-02-19 11:15:00 -0800241 policy_manager/chromeos_policy.cc
Alex Deymo2de23f52014-02-26 14:30:13 -0800242 policy_manager/evaluation_context.cc
Alex Deymo53556ec2014-03-17 10:05:57 -0700243 policy_manager/event_loop.cc
Alex Deymoc705cc82014-02-19 11:15:00 -0800244 policy_manager/policy_manager.cc
Alex Deymo0d11c602014-04-23 20:12:20 -0700245 policy_manager/policy.cc
Alex Deymof9f12632014-04-17 13:51:26 -0700246 policy_manager/real_config_provider.cc
Alex Deymoc83baf62014-04-02 17:43:35 -0700247 policy_manager/real_device_policy_provider.cc
Alex Deymobb019fe2014-02-03 20:12:17 -0800248 policy_manager/real_random_provider.cc
Gilad Arnold55f39b72014-01-28 12:51:45 -0800249 policy_manager/real_shill_provider.cc
Alex Deymobd04b142014-03-18 15:00:05 -0700250 policy_manager/real_system_provider.cc
Gilad Arnold78a78112014-03-13 14:58:06 -0700251 policy_manager/real_time_provider.cc
Gilad Arnoldae47a9a2014-03-26 12:16:47 -0700252 policy_manager/real_updater_provider.cc
Alex Deymo94c06162014-03-21 20:34:46 -0700253 policy_manager/state_factory.cc
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000254 postinstall_runner_action.cc
Darin Petkov30030592010-07-27 13:53:20 -0700255 prefs.cc
Andrew de los Reyes9cd120d2010-11-18 17:50:03 -0800256 proxy_resolver.cc
Gilad Arnold1b9d6ae2014-03-03 13:46:07 -0800257 real_system_state.cc
Andrew de los Reyes785bc352010-05-26 12:34:53 -0700258 simple_key_value_store.cc
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000259 subprocess.cc
Andrew de los Reyes81ebcd82010-03-09 15:56:18 -0800260 tarjan.cc
Darin Petkov9c0baf82010-10-07 13:44:48 -0700261 terminator.cc
Andrew de los Reyes58151552010-03-10 20:07:08 -0800262 topological_sort.cc
Andrew de los Reyes4e9b9f42010-04-26 15:06:43 -0700263 update_attempter.cc
Darin Petkov1023a602010-08-30 13:47:51 -0700264 update_check_scheduler.cc
Andrew de los Reyes82d86792010-06-30 17:00:44 -0700265 update_metadata.pb.cc
266 utils.cc""")
rspangler@google.com49fdf182009-10-10 00:57:34 +0000267main = ['main.cc']
268
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700269unittest_sources = Split("""action_pipe_unittest.cc
rspangler@google.com49fdf182009-10-10 00:57:34 +0000270 action_processor_unittest.cc
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700271 action_unittest.cc
Andrew de los Reyes80061062010-02-04 14:25:00 -0800272 bzip_extent_writer_unittest.cc
Bruno Rocha7f9aea22011-09-12 14:31:24 -0700273 certificate_checker_unittest.cc
Andrew de los Reyes000d8952011-03-02 15:21:14 -0800274 chrome_browser_proxy_resolver_unittest.cc
Jay Srinivasan43488792012-06-19 00:25:31 -0700275 connection_manager_unittest.cc
Andrew de los Reyes35a7af12010-03-10 16:33:26 -0800276 cycle_breaker_unittest.cc
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000277 delta_diff_generator_unittest.cc
Andrew de los Reyes09e56d62010-04-23 13:45:53 -0700278 delta_performer_unittest.cc
rspangler@google.com49fdf182009-10-10 00:57:34 +0000279 download_action_unittest.cc
Andrew de los Reyesb4025e62010-02-23 17:47:03 -0800280 extent_mapper_unittest.cc
Andrew de los Reyes5fdae4a2010-10-05 10:47:42 -0700281 extent_ranges_unittest.cc
Andrew de los Reyes80061062010-02-04 14:25:00 -0800282 extent_writer_unittest.cc
Alex Deymo608a3652014-04-15 13:26:35 -0700283 fake_prefs.cc
Gilad Arnold5bb4c902014-04-10 12:32:13 -0700284 fake_system_state.cc
rspangler@google.com49fdf182009-10-10 00:57:34 +0000285 file_writer_unittest.cc
Andrew de los Reyesc7020782010-04-28 10:46:04 -0700286 filesystem_copier_action_unittest.cc
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000287 filesystem_iterator_unittest.cc
Darin Petkov7a22d792010-11-08 14:10:00 -0800288 full_update_generator_unittest.cc
Gilad Arnold4d740eb2012-05-15 08:48:13 -0700289 gpio_handler_unittest.cc
Gilad Arnold6eccc532012-05-17 15:44:22 -0700290 gpio_mock_file_descriptor.cc
Gilad Arnold4d740eb2012-05-15 08:48:13 -0700291 gpio_mock_udev_interface.cc
Andrew de los Reyes0ce161b2010-02-22 15:27:01 -0800292 graph_utils_unittest.cc
rspangler@google.com49fdf182009-10-10 00:57:34 +0000293 http_fetcher_unittest.cc
Chris Masonef8d037f2014-02-19 01:53:00 +0000294 hwid_override_unittest.cc
Thieu Le5c7d9752010-12-15 16:09:28 -0800295 metadata_unittest.cc
rspangler@google.com49fdf182009-10-10 00:57:34 +0000296 mock_http_fetcher.cc
297 omaha_hash_calculator_unittest.cc
Darin Petkov6a5b3222010-07-13 14:55:28 -0700298 omaha_request_action_unittest.cc
Darin Petkova4a8a8c2010-07-15 22:21:12 -0700299 omaha_request_params_unittest.cc
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000300 omaha_response_handler_action_unittest.cc
David Zeuthen27a48bc2013-08-06 12:06:29 -0700301 p2p_manager_unittest.cc
Andrew de los Reyes0c440052010-08-20 11:25:54 -0700302 payload_signer_unittest.cc
Jay Srinivasan6f6ea002012-12-14 11:26:28 -0800303 payload_state_unittest.cc
Alex Deymo23949d42014-02-05 15:20:59 -0800304 policy_manager/boxed_value_unittest.cc
Alex Deymo0d11c602014-04-23 20:12:20 -0700305 policy_manager/chromeos_policy_unittest.cc
Alex Deymo23949d42014-02-05 15:20:59 -0800306 policy_manager/evaluation_context_unittest.cc
Alex Deymo53556ec2014-03-17 10:05:57 -0700307 policy_manager/event_loop_unittest.cc
Alex Deymo81f30e82014-01-08 14:33:06 -0800308 policy_manager/generic_variables_unittest.cc
Gilad Arnold67ed78d2014-04-23 13:17:46 -0700309 policy_manager/pmtest_utils.cc
Alex Deymoc705cc82014-02-19 11:15:00 -0800310 policy_manager/policy_manager_unittest.cc
Alex Deymoedfa1d42014-04-28 16:53:51 -0700311 policy_manager/prng_unittest.cc
Alex Deymof9f12632014-04-17 13:51:26 -0700312 policy_manager/real_config_provider_unittest.cc
Alex Deymoc83baf62014-04-02 17:43:35 -0700313 policy_manager/real_device_policy_provider_unittest.cc
Alex Deymobb019fe2014-02-03 20:12:17 -0800314 policy_manager/real_random_provider_unittest.cc
Gilad Arnold55f39b72014-01-28 12:51:45 -0800315 policy_manager/real_shill_provider_unittest.cc
Alex Deymobd04b142014-03-18 15:00:05 -0700316 policy_manager/real_system_provider_unittest.cc
317 policy_manager/real_time_provider_unittest.cc
Gilad Arnoldae47a9a2014-03-26 12:16:47 -0700318 policy_manager/real_updater_provider_unittest.cc
Alex Deymo391ad9f2014-01-29 14:36:20 -0800319 policy_manager/variable_unittest.cc
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000320 postinstall_runner_action_unittest.cc
Darin Petkov30030592010-07-27 13:53:20 -0700321 prefs_unittest.cc
Andrew de los Reyes785bc352010-05-26 12:34:53 -0700322 simple_key_value_store_unittest.cc
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000323 subprocess_unittest.cc
Andrew de los Reyes81ebcd82010-03-09 15:56:18 -0800324 tarjan_unittest.cc
Darin Petkov80f19562010-11-19 12:00:15 -0800325 terminator_unittest.cc
rspangler@google.com49fdf182009-10-10 00:57:34 +0000326 test_utils.cc
Andrew de los Reyes58151552010-03-10 20:07:08 -0800327 topological_sort_unittest.cc
Darin Petkovf42cc1c2010-09-01 09:03:02 -0700328 update_attempter_unittest.cc
Darin Petkov1023a602010-08-30 13:47:51 -0700329 update_check_scheduler_unittest.cc
Andrew de los Reyesd2135f32010-03-11 16:00:28 -0800330 utils_unittest.cc
331 zip_unittest.cc""")
rspangler@google.com49fdf182009-10-10 00:57:34 +0000332unittest_main = ['testrunner.cc']
333
Andrew de los Reyes4e9b9f42010-04-26 15:06:43 -0700334client_main = ['update_engine_client.cc']
335
Andrew de los Reyes4fe15d02009-12-10 19:01:36 -0800336delta_generator_main = ['generate_delta_main.cc']
337
Andrew de los Reyes82d86792010-06-30 17:00:44 -0700338# Hack to generate header files first. They are generated as a side effect
339# of generating other files (usually their corresponding .c(c) files),
340# so we make all sources depend on those other files.
341all_sources = []
342all_sources.extend(sources)
343all_sources.extend(unittest_sources)
344all_sources.extend(main)
345all_sources.extend(unittest_main)
346all_sources.extend(client_main)
347all_sources.extend(delta_generator_main)
348for source in all_sources:
Darin Petkovd7061ab2010-10-06 14:37:09 -0700349 if source.endswith('_unittest.cc'):
350 env.Depends(source, 'unittest_key.pub.pem')
Alex Deymo3d41c4d2014-02-13 23:26:33 -0800351 if source.endswith('.pb.cc'):
Andrew de los Reyes82d86792010-06-30 17:00:44 -0700352 continue
353 env.Depends(source, 'update_metadata.pb.cc')
Andrew de los Reyes82d86792010-06-30 17:00:44 -0700354 env.Depends(source, 'update_engine.dbusclient.h')
Andrew de los Reyes4fe15d02009-12-10 19:01:36 -0800355
Andrew de los Reyesf98bff82010-05-06 13:33:25 -0700356update_engine_core = env.Library('update_engine_core', sources)
357env.Prepend(LIBS=[update_engine_core])
Andrew de los Reyes4e9b9f42010-04-26 15:06:43 -0700358
Andrew de los Reyesf98bff82010-05-06 13:33:25 -0700359env.Program('update_engine', main)
360
361client_cmd = env.Program('update_engine_client', client_main);
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000362
363delta_generator_cmd = env.Program('delta_generator',
Andrew de los Reyesf98bff82010-05-06 13:33:25 -0700364 delta_generator_main)
adlr@google.comc98a7ed2009-12-04 18:54:03 +0000365
366http_server_cmd = env.Program('test_http_server', 'test_http_server.cc')
Andrew de los Reyesf98bff82010-05-06 13:33:25 -0700367
368unittest_env = env.Clone()
Darin Petkov1cbd78f2010-07-29 12:38:34 -0700369unittest_env.Append(LIBS=['gmock', 'gtest'])
Andrew de los Reyesf98bff82010-05-06 13:33:25 -0700370unittest_cmd = unittest_env.Program('update_engine_unittests',
371 unittest_sources + unittest_main)
372Clean(unittest_cmd, Glob('*.gcda') + Glob('*.gcno') + Glob('*.gcov') +
Andrew de los Reyes819fef22010-12-17 11:33:58 -0800373 Split('html app.info'))