| # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | 
 | # Use of this source code is governed by a BSD-style license that can be | 
 | # found in the LICENSE file. | 
 |  | 
 | # Protobuffer compilation | 
 | """ Inputs: | 
 |         target: list of targets to compile to | 
 |         source: list of sources to compile | 
 |         env: the scons environment in which we are compiling | 
 |     Outputs: | 
 |         target: the list of targets we'll emit | 
 |         source: the list of sources we'll compile""" | 
 | def ProtocolBufferEmitter(target, source, env): | 
 |   output = str(source[0]) | 
 |   output = output[0:output.rfind('.proto')] | 
 |   target = [ | 
 |     output + '.pb.cc', | 
 |     output + '.pb.h', | 
 |   ] | 
 |   return target, source | 
 |  | 
 | """ Inputs: | 
 |         source: list of sources to process | 
 |         target: list of targets to generate | 
 |         env: scons environment in which we are working | 
 |         for_signature: unused | 
 |     Outputs: a list of commands to execute to generate the targets from | 
 |              the sources.""" | 
 | def ProtocolBufferGenerator(source, target, env, for_signature): | 
 |   commands = [ | 
 |     '/usr/bin/protoc ' | 
 |     ' --proto_path . ${SOURCES} --cpp_out .'] | 
 |   return commands | 
 |  | 
 | proto_builder = Builder(generator = ProtocolBufferGenerator, | 
 |                         emitter = ProtocolBufferEmitter, | 
 |                         single_source = 1, | 
 |                         suffix = '.pb.cc') | 
 |  | 
 | env = Environment() | 
 | env['CCFLAGS'] = ' '.join("""-g | 
 |                              -fno-exceptions | 
 |                              -Wall | 
 |                              -Werror | 
 |                              -Wclobbered | 
 |                              -Wempty-body | 
 |                              -Wignored-qualifiers | 
 |                              -Wmissing-field-initializers | 
 |                              -Wsign-compare | 
 |                              -Wtype-limits | 
 |                              -Wuninitialized | 
 |                              -D_FILE_OFFSET_BITS=64 | 
 |                              -I/usr/include/libxml2""".split()); | 
 |  | 
 | env['LIBS'] = Split("""base | 
 |                        curl | 
 |                        gflags | 
 |                        glib-2.0 | 
 |                        gtest | 
 |                        gthread-2.0 | 
 |                        libpcrecpp | 
 |                        protobuf | 
 |                        pthread | 
 |                        ssl | 
 |                        xml2 | 
 |                        z""") | 
 | env['CPPPATH'] = ['..', '../../third_party/chrome/files', '../../common'] | 
 | env['LIBPATH'] = ['../../third_party/chrome'] | 
 | env['BUILDERS']['ProtocolBuffer'] = proto_builder | 
 | env.ParseConfig('pkg-config --cflags --libs glib-2.0') | 
 | env.ProtocolBuffer('update_metadata.pb.cc', 'update_metadata.proto') | 
 |  | 
 | if ARGUMENTS.get('debug', 0): | 
 |   env['CCFLAGS'] += ' -fprofile-arcs -ftest-coverage' | 
 |   env['LIBS'] += ['gcov'] | 
 |  | 
 |  | 
 |  | 
 | sources = Split("""action_processor.cc | 
 |                    decompressing_file_writer.cc | 
 |                    delta_diff_parser.cc | 
 |                    download_action.cc | 
 |                    filesystem_copier_action.cc | 
 |                    filesystem_iterator.cc | 
 |                    file_writer.cc | 
 |                    gzip.cc | 
 |                    install_action.cc | 
 |                    libcurl_http_fetcher.cc | 
 |                    omaha_hash_calculator.cc | 
 |                    omaha_request_prep_action.cc | 
 |                    omaha_response_handler_action.cc | 
 |                    postinstall_runner_action.cc | 
 |                    set_bootable_flag_action.cc | 
 |                    subprocess.cc | 
 |                    update_check_action.cc | 
 | 		               update_metadata.pb.cc | 
 | 		               utils.cc""") | 
 | main = ['main.cc'] | 
 |  | 
 | unittest_sources = Split("""action_unittest.cc | 
 |                             action_pipe_unittest.cc | 
 |                             action_processor_unittest.cc | 
 |                             decompressing_file_writer_unittest.cc | 
 |                             delta_diff_generator_unittest.cc | 
 |                             download_action_unittest.cc | 
 |                             file_writer_unittest.cc | 
 |                             filesystem_copier_action_unittest.cc | 
 |                             filesystem_iterator_unittest.cc | 
 |                             gzip_unittest.cc | 
 |                             http_fetcher_unittest.cc | 
 |                             install_action_unittest.cc | 
 |                             integration_unittest.cc | 
 |                             mock_http_fetcher.cc | 
 |                             omaha_hash_calculator_unittest.cc | 
 |                             omaha_request_prep_action_unittest.cc | 
 |                             omaha_response_handler_action_unittest.cc | 
 |                             postinstall_runner_action_unittest.cc | 
 |                             set_bootable_flag_action_unittest.cc | 
 |                             subprocess_unittest.cc | 
 |                             test_utils.cc | 
 |                             update_check_action_unittest.cc | 
 |                             utils_unittest.cc""") | 
 | unittest_main = ['testrunner.cc'] | 
 |  | 
 | delta_generator_sources = Split("""delta_diff_generator.cc""") | 
 |  | 
 | env.Program('update_engine', sources + main) | 
 | unittest_cmd = env.Program('update_engine_unittests', | 
 |                            sources + delta_generator_sources + | 
 |                            unittest_sources + unittest_main) | 
 |  | 
 | Clean(unittest_cmd, Glob('*.gcda') + Glob('*.gcno') + Glob('*.gcov') + | 
 |                     Split('html app.info')) | 
 |  | 
 | delta_generator_cmd = env.Program('delta_generator', | 
 |                                   sources + delta_generator_sources + main) | 
 |  | 
 | http_server_cmd = env.Program('test_http_server', 'test_http_server.cc') |