Home | History | Annotate | Download | only in remoting
      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
      3 # found in the LICENSE file.
      4 
      5 {
      6   'variables': {
      7     'chromium_code': 1,
      8 
      9     'variables': {
     10       'conditions': [
     11         # Enable the multi-process host on Windows by default.
     12         ['OS=="win"', {
     13           'remoting_multi_process%': 1,
     14         }, {
     15           'remoting_multi_process%': 0,
     16         }],
     17       ],
     18     },
     19 
     20     'remoting_multi_process%': '<(remoting_multi_process)',
     21     'remoting_rdp_session%': 1,
     22 
     23     'remoting_localize_path': 'tools/build/remoting_localize.py',
     24 
     25     # The |major|, |build| and |patch| versions are inherited from Chrome.
     26     # Since Chrome's |minor| version is always '0', we replace it with a
     27     # Chromoting-specific patch version.
     28     # Note that we check both the |chrome_version_path| file and the
     29     # |remoting_version_path| so that we can override the Chrome version
     30     # numbers if needed.
     31     'version_py_path': '../chrome/tools/build/version.py',
     32     'remoting_version_path': '../remoting/VERSION',
     33     'chrome_version_path': '../chrome/VERSION',
     34     'version_major':
     35       '<!(python <(version_py_path) -f <(chrome_version_path) -f <(remoting_version_path) -t "@MAJOR@")',
     36     'version_minor':
     37       '<!(python <(version_py_path) -f <(remoting_version_path) -t "@REMOTING_PATCH@")',
     38     'version_short':
     39       '<(version_major).<(version_minor).'
     40       '<!(python <(version_py_path) -f <(chrome_version_path) -f <(remoting_version_path) -t "@BUILD@")',
     41     'version_full':
     42       '<(version_short).'
     43       '<!(python <(version_py_path) -f <(chrome_version_path) -f <(remoting_version_path) -t "@PATCH@")',
     44 
     45     'branding_path': '../remoting/branding_<(branding)',
     46 
     47     'webapp_locale_dir': '<(SHARED_INTERMEDIATE_DIR)/remoting/webapp/_locales',
     48 
     49     'host_plugin_mime_type': 'application/vnd.chromium.remoting-host',
     50 
     51     'conditions': [
     52       # Remoting host is supported only on Windows, OSX and Linux (with X11).
     53       ['OS=="win" or OS=="mac" or (OS=="linux" and chromeos==0 and use_x11==1)', {
     54         'enable_remoting_host': 1,
     55       }, {
     56         'enable_remoting_host': 0,
     57       }],
     58       ['OS=="mac"', {
     59         'mac_bundle_id': '<!(python <(version_py_path) -f <(branding_path) -t "@MAC_BUNDLE_ID@")',
     60         'mac_creator': '<!(python <(version_py_path) -f <(branding_path) -t "@MAC_CREATOR@")',
     61         'host_plugin_extension': 'plugin',
     62         'host_plugin_prefix': '',
     63       }],
     64       ['os_posix == 1 and OS != "mac" and target_arch == "ia32"', {
     65         # linux 32 bit
     66         'host_plugin_extension': 'ia32.so',
     67         'host_plugin_prefix': 'lib',
     68       }],
     69       ['os_posix == 1 and OS != "mac" and target_arch == "x64"', {
     70         # linux 64 bit
     71         'host_plugin_extension': 'x64.so',
     72         'host_plugin_prefix': 'lib',
     73       }],
     74       ['os_posix == 1 and OS != "mac" and target_arch == "arm"', {
     75         'host_plugin_extension': 'arm.so',
     76         'host_plugin_prefix': 'lib',
     77       }],
     78       ['os_posix == 1 and OS != "mac" and target_arch == "mipsel"', {
     79         'host_plugin_extension': 'mipsel.so',
     80         'host_plugin_prefix': 'lib',
     81       }],
     82       ['OS=="win"', {
     83         'host_plugin_extension': 'dll',
     84         'host_plugin_prefix': '',
     85       }],
     86       ['OS=="win"', {
     87         # Use auto-generated CLSIDs to make sure that the newly installed COM
     88         # classes will be used during/after upgrade even if there are old
     89         # instances running already.
     90         # The parameter passed to uuidgen.py is ignored, but needed to make sure
     91         # that the script will be invoked separately for each CLSID. Otherwise
     92         # GYP will reuse the value returned by the first invocation of
     93         # the script.
     94         'daemon_controller_clsid': '<!(python tools/uuidgen.py 1)',
     95         'rdp_desktop_session_clsid': '<!(python tools/uuidgen.py 2)',
     96       }],
     97     ],
     98 
     99     'remoting_locales': [
    100       'ar', 'bg', 'ca', 'cs', 'da', 'de', 'el', 'en', 'en-GB', 'es',
    101       'es-419', 'et', 'fi', 'fil', 'fr', 'he', 'hi', 'hr', 'hu', 'id',
    102       'it', 'ja', 'ko', 'lt', 'lv', 'nb', 'nl', 'pl', 'pt-BR', 'pt-PT',
    103       'ro', 'ru', 'sk', 'sl', 'sr', 'sv', 'th', 'tr', 'uk', 'vi',
    104       'zh-CN', 'zh-TW',
    105     ],
    106     'remoting_locale_files': [
    107       # Build the list of .pak files generated from remoting_strings.grd.
    108       '<!@pymod_do_main(remoting_copy_locales -o -p <(OS) -x '
    109           '<(PRODUCT_DIR) <(remoting_locales))',
    110     ],
    111     'remoting_webapp_locale_files': [
    112       # Build the list of .json files generated from remoting_strings.grd.
    113       '<!@pymod_do_main(remoting_localize --locale_output '
    114           '"<(webapp_locale_dir)/@{json_suffix}/messages.json" '
    115           '--print_only <(remoting_locales))',
    116     ],
    117     'remoting_webapp_files': [
    118       'resources/chromoting16.webp',
    119       'resources/chromoting48.webp',
    120       'resources/chromoting128.webp',
    121       'resources/disclosure_arrow_down.webp',
    122       'resources/disclosure_arrow_right.webp',
    123       'resources/host_setup_instructions.webp',
    124       'resources/icon_cross.webp',
    125       'resources/icon_host.webp',
    126       'resources/icon_pencil.webp',
    127       'resources/icon_warning.webp',
    128       'resources/infographic_my_computers.webp',
    129       'resources/infographic_remote_assistance.webp',
    130       'resources/tick.webp',
    131       'webapp/connection_history.css',
    132       'webapp/connection_stats.css',
    133       'webapp/main.css',
    134       'webapp/main.html',
    135       'webapp/manifest.json',
    136       'webapp/menu_button.css',
    137       'webapp/open_sans.css',
    138       'webapp/open_sans.woff',
    139       'webapp/scale-to-fit.webp',
    140       'webapp/spinner.gif',
    141       'webapp/toolbar.css',
    142       'webapp/wcs_sandbox.html',
    143     ],
    144     'remoting_webapp_js_files': [
    145       'webapp/butter_bar.js',
    146       'webapp/client_plugin.js',
    147       'webapp/client_plugin_async.js',
    148       'webapp/client_screen.js',
    149       'webapp/client_session.js',
    150       'webapp/clipboard.js',
    151       'webapp/connection_history.js',
    152       'webapp/connection_stats.js',
    153       'webapp/cs_oauth2_trampoline.js',
    154       'webapp/cs_third_party_auth_trampoline.js',
    155       'webapp/error.js',
    156       'webapp/event_handlers.js',
    157       'webapp/format_iq.js',
    158       'webapp/host.js',
    159       'webapp/host_controller.js',
    160       'webapp/host_dispatcher.js',
    161       'webapp/host_list.js',
    162       'webapp/host_native_messaging.js',
    163       'webapp/host_screen.js',
    164       'webapp/host_session.js',
    165       'webapp/host_settings.js',
    166       'webapp/host_setup_dialog.js',
    167       'webapp/host_table_entry.js',
    168       'webapp/identity.js',
    169       'webapp/l10n.js',
    170       'webapp/log_to_server.js',
    171       'webapp/menu_button.js',
    172       'webapp/oauth2.js',
    173       'webapp/oauth2_api.js',
    174       'webapp/paired_client_manager.js',
    175       'webapp/plugin_settings.js',
    176       'webapp/remoting.js',
    177       'webapp/server_log_entry.js',
    178       'webapp/session_connector.js',
    179       'webapp/stats_accumulator.js',
    180       'webapp/third_party_host_permissions.js',
    181       'webapp/xhr_proxy.js',
    182       'webapp/third_party_token_fetcher.js',
    183       'webapp/toolbar.js',
    184       'webapp/ui_mode.js',
    185       'webapp/wcs.js',
    186       'webapp/wcs_loader.js',
    187       'webapp/wcs_sandbox_container.js',
    188       'webapp/wcs_sandbox_content.js',
    189       'webapp/xhr.js',
    190     ],
    191     'remoting_host_installer_mac_roots': [
    192       'host/installer/mac/',
    193       '<(DEPTH)/chrome/installer/mac/',
    194     ],
    195     'remoting_host_installer_mac_files': [
    196       'host/installer/mac/do_signing.sh',
    197       'host/installer/mac/do_signing.props',
    198       'host/installer/mac/ChromotingHost.pkgproj',
    199       'host/installer/mac/ChromotingHostService.pkgproj',
    200       'host/installer/mac/ChromotingHostUninstaller.pkgproj',
    201       'host/installer/mac/LaunchAgents/org.chromium.chromoting.plist',
    202       'host/installer/mac/PrivilegedHelperTools/org.chromium.chromoting.me2me.sh',
    203       'host/installer/mac/Config/org.chromium.chromoting.conf',
    204       'host/installer/mac/Scripts/keystone_install.sh',
    205       'host/installer/mac/Scripts/remoting_postflight.sh',
    206       'host/installer/mac/Scripts/remoting_preflight.sh',
    207       'host/installer/mac/Keystone/GoogleSoftwareUpdate.pkg',
    208       '<(DEPTH)/chrome/installer/mac/pkg-dmg',
    209     ],
    210     'remoting_host_installer_win_roots': [
    211       'host/installer/win/',
    212     ],
    213     'remoting_host_installer_win_files': [
    214       'host/installer/win/chromoting.wxs',
    215       'host/installer/win/parameters.json',
    216     ],
    217   },
    218 
    219   'includes': [
    220     '../chrome/js_unittest_vars.gypi',
    221   ],
    222 
    223   'target_defaults': {
    224     'defines': [
    225       'BINARY_CORE=1',
    226       'BINARY_DESKTOP=2',
    227       'BINARY_HOST_ME2ME=3',
    228       'BINARY_HOST_PLUGIN=4',
    229     ],
    230     'include_dirs': [
    231       '..',  # Root of Chrome checkout
    232     ],
    233     'variables': {
    234       'win_debug_RuntimeChecks': '0',
    235     },
    236     'conditions': [
    237       ['OS=="mac" and mac_breakpad==1', {
    238         'defines': [
    239           'REMOTING_ENABLE_BREAKPAD'
    240         ],
    241       }],
    242       ['OS=="win" and buildtype == "Official"', {
    243         'defines': [
    244           'REMOTING_ENABLE_BREAKPAD'
    245         ],
    246       }],
    247       ['OS=="win" and remoting_multi_process != 0 and \
    248           remoting_rdp_session != 0', {
    249         'defines': [
    250           'REMOTING_RDP_SESSION',
    251         ],
    252       }],
    253       ['remoting_multi_process != 0', {
    254         'defines': [
    255           'REMOTING_MULTI_PROCESS',
    256         ],
    257       }],
    258     ],
    259   },
    260 
    261   'conditions': [
    262     ['enable_remoting_host==1', {
    263       'targets': [
    264         {
    265           'target_name': 'remoting_host',
    266           'type': 'static_library',
    267           'variables': { 'enable_wexit_time_destructors': 1, },
    268           'dependencies': [
    269             'remoting_base',
    270             'remoting_jingle_glue',
    271             'remoting_protocol',
    272             'remoting_resources',
    273             '../crypto/crypto.gyp:crypto',
    274             '../google_apis/google_apis.gyp:google_apis',
    275             '../ipc/ipc.gyp:ipc',
    276             '../third_party/webrtc/modules/modules.gyp:desktop_capture',
    277           ],
    278           'defines': [
    279             'VERSION=<(version_full)',
    280           ],
    281           'sources': [
    282             'host/audio_capturer.cc',
    283             'host/audio_capturer.h',
    284             'host/audio_capturer_linux.cc',
    285             'host/audio_capturer_linux.h',
    286             'host/audio_capturer_mac.cc',
    287             'host/audio_capturer_win.cc',
    288             'host/audio_capturer_win.h',
    289             'host/audio_scheduler.cc',
    290             'host/audio_scheduler.h',
    291             'host/audio_silence_detector.cc',
    292             'host/audio_silence_detector.h',
    293             'host/basic_desktop_environment.cc',
    294             'host/basic_desktop_environment.h',
    295             'host/capture_scheduler.cc',
    296             'host/capture_scheduler.h',
    297             'host/chromoting_host.cc',
    298             'host/chromoting_host.h',
    299             'host/chromoting_host_context.cc',
    300             'host/chromoting_host_context.h',
    301             'host/chromoting_messages.cc',
    302             'host/chromoting_messages.h',
    303             'host/chromoting_param_traits.cc',
    304             'host/chromoting_param_traits.h',
    305             'host/client_session.cc',
    306             'host/client_session.h',
    307             'host/client_session_control.h',
    308             'host/clipboard.h',
    309             'host/clipboard_mac.mm',
    310             'host/clipboard_win.cc',
    311             'host/clipboard_x11.cc',
    312             'host/config_file_watcher.cc',
    313             'host/config_file_watcher.h',
    314             'host/constants_mac.cc',
    315             'host/constants_mac.h',
    316             'host/continue_window.cc',
    317             'host/continue_window.h',
    318             'host/continue_window_aura.cc',
    319             'host/continue_window_gtk.cc',
    320             'host/continue_window_mac.mm',
    321             'host/continue_window_win.cc',
    322             'host/desktop_environment.h',
    323             'host/desktop_resizer.h',
    324             'host/desktop_resizer_linux.cc',
    325             'host/desktop_resizer_mac.cc',
    326             'host/desktop_resizer_win.cc',
    327             'host/desktop_session_connector.h',
    328             'host/desktop_session_proxy.cc',
    329             'host/desktop_session_proxy.h',
    330             'host/disconnect_window_aura.cc',
    331             'host/disconnect_window_gtk.cc',
    332             'host/disconnect_window_mac.h',
    333             'host/disconnect_window_mac.mm',
    334             'host/disconnect_window_win.cc',
    335             'host/dns_blackhole_checker.cc',
    336             'host/dns_blackhole_checker.h',
    337             'host/heartbeat_sender.cc',
    338             'host/heartbeat_sender.h',
    339             'host/host_status_sender.cc',
    340             'host/host_status_sender.h',
    341             'host/host_change_notification_listener.cc',
    342             'host/host_change_notification_listener.h',
    343             'host/host_config.cc',
    344             'host/host_config.h',
    345             'host/host_exit_codes.h',
    346             'host/host_exit_codes.cc',
    347             'host/host_secret.cc',
    348             'host/host_secret.h',
    349             'host/host_status_monitor.h',
    350             'host/host_status_observer.h',
    351             'host/host_window.h',
    352             'host/host_window_proxy.cc',
    353             'host/host_window_proxy.h',
    354             'host/in_memory_host_config.cc',
    355             'host/in_memory_host_config.h',
    356             'host/input_injector.h',
    357             'host/input_injector_linux.cc',
    358             'host/input_injector_mac.cc',
    359             'host/input_injector_win.cc',
    360             'host/ipc_audio_capturer.cc',
    361             'host/ipc_audio_capturer.h',
    362             'host/ipc_constants.cc',
    363             'host/ipc_constants.h',
    364             'host/ipc_desktop_environment.cc',
    365             'host/ipc_desktop_environment.h',
    366             'host/ipc_host_event_logger.cc',
    367             'host/ipc_host_event_logger.h',
    368             'host/ipc_input_injector.cc',
    369             'host/ipc_input_injector.h',
    370             'host/ipc_screen_controls.cc',
    371             'host/ipc_screen_controls.h',
    372             'host/ipc_util.h',
    373             'host/ipc_util_posix.cc',
    374             'host/ipc_util_win.cc',
    375             'host/ipc_video_frame_capturer.cc',
    376             'host/ipc_video_frame_capturer.h',
    377             'host/it2me_desktop_environment.cc',
    378             'host/it2me_desktop_environment.h',
    379             'host/json_host_config.cc',
    380             'host/json_host_config.h',
    381             'host/linux/audio_pipe_reader.cc',
    382             'host/linux/audio_pipe_reader.h',
    383             'host/linux/x11_util.cc',
    384             'host/linux/x11_util.h',
    385             'host/linux/x_server_clipboard.cc',
    386             'host/linux/x_server_clipboard.h',
    387             'host/local_input_monitor.h',
    388             'host/local_input_monitor_linux.cc',
    389             'host/local_input_monitor_mac.mm',
    390             'host/local_input_monitor_win.cc',
    391             'host/log_to_server.cc',
    392             'host/log_to_server.h',
    393             'host/me2me_desktop_environment.cc',
    394             'host/me2me_desktop_environment.h',
    395             'host/mouse_clamping_filter.cc',
    396             'host/mouse_clamping_filter.h',
    397             'host/pairing_registry_delegate.cc',
    398             'host/pairing_registry_delegate.h',
    399             'host/pairing_registry_delegate_linux.cc',
    400             'host/pairing_registry_delegate_linux.h',
    401             'host/pairing_registry_delegate_mac.cc',
    402             'host/pairing_registry_delegate_win.cc',
    403             'host/pairing_registry_delegate_win.h',
    404             'host/pam_authorization_factory_posix.cc',
    405             'host/pam_authorization_factory_posix.h',
    406             'host/pin_hash.cc',
    407             'host/pin_hash.h',
    408             'host/policy_hack/policy_watcher.cc',
    409             'host/policy_hack/policy_watcher.h',
    410             'host/policy_hack/policy_watcher_linux.cc',
    411             'host/policy_hack/policy_watcher_mac.mm',
    412             'host/policy_hack/policy_watcher_win.cc',
    413             'host/register_support_host_request.cc',
    414             'host/register_support_host_request.h',
    415             'host/remote_input_filter.cc',
    416             'host/remote_input_filter.h',
    417             'host/resizing_host_observer.cc',
    418             'host/resizing_host_observer.h',
    419             'host/sas_injector.h',
    420             'host/sas_injector_win.cc',
    421             'host/screen_controls.h',
    422             'host/screen_resolution.cc',
    423             'host/screen_resolution.h',
    424             'host/server_log_entry.cc',
    425             'host/server_log_entry.h',
    426             'host/service_urls.cc',
    427             'host/service_urls.h',
    428             'host/session_manager_factory.cc',
    429             'host/session_manager_factory.h',
    430             'host/signaling_connector.cc',
    431             'host/signaling_connector.h',
    432             'host/token_validator_factory_impl.cc',
    433             'host/token_validator_factory_impl.h',
    434             'host/usage_stats_consent.h',
    435             'host/usage_stats_consent_mac.cc',
    436             'host/usage_stats_consent_win.cc',
    437             'host/video_scheduler.cc',
    438             'host/video_scheduler.h',
    439             'host/win/com_security.cc',
    440             'host/win/com_security.h',
    441             'host/win/launch_process_with_token.cc',
    442             'host/win/launch_process_with_token.h',
    443             'host/win/omaha.cc',
    444             'host/win/omaha.h',
    445             'host/win/rdp_client.cc',
    446             'host/win/rdp_client.h',
    447             'host/win/rdp_client_window.cc',
    448             'host/win/rdp_client_window.h',
    449             'host/win/security_descriptor.cc',
    450             'host/win/security_descriptor.h',
    451             'host/win/session_desktop_environment.cc',
    452             'host/win/session_desktop_environment.h',
    453             'host/win/session_input_injector.cc',
    454             'host/win/session_input_injector.h',
    455             'host/win/window_station_and_desktop.cc',
    456             'host/win/window_station_and_desktop.h',
    457             'host/win/wts_terminal_monitor.cc',
    458             'host/win/wts_terminal_monitor.h',
    459             'host/win/wts_terminal_observer.h',
    460           ],
    461           'conditions': [
    462             ['OS=="linux"', {
    463               'dependencies': [
    464                 # Always use GTK on Linux, even for Aura builds.
    465                 #
    466                 # TODO(lambroslambrou): Once the DisconnectWindow and
    467                 # ContinueWindow classes have been implemented for Aura,
    468                 # remove this dependency.
    469                 '../build/linux/system.gyp:gtk',
    470               ],
    471               'link_settings': {
    472                 'libraries': [
    473                   '-lX11',
    474                   '-lXext',
    475                   '-lXfixes',
    476                   '-lXtst',
    477                   '-lXi',
    478                   '-lXrandr',
    479                   '-lpam',
    480                 ],
    481               },
    482             }, {  # else OS != "linux"
    483               'sources!': [
    484                 'host/continue_window_aura.cc',
    485                 'host/disconnect_window_aura.cc',
    486               ],
    487             }],
    488             ['OS=="mac"', {
    489               'sources': [
    490                 '../third_party/GTM/AppKit/GTMCarbonEvent.h',
    491                 '../third_party/GTM/AppKit/GTMCarbonEvent.m',
    492                 '../third_party/GTM/DebugUtils/GTMDebugSelectorValidation.h',
    493                 '../third_party/GTM/DebugUtils/GTMTypeCasting.h',
    494                 '../third_party/GTM/Foundation/GTMObjectSingleton.h',
    495                 '../third_party/GTM/GTMDefines.h',
    496               ],
    497               'include_dirs': [
    498                 '../third_party/GTM',
    499                 '../third_party/GTM/AppKit',
    500                 '../third_party/GTM/DebugUtils',
    501                 '../third_party/GTM/Foundation',
    502               ],
    503               'link_settings': {
    504                 'libraries': [
    505                   '$(SDKROOT)/System/Library/Frameworks/OpenGL.framework',
    506                   'libpam.a',
    507                ],
    508               },
    509             }],
    510             ['OS=="win"', {
    511               'defines': [
    512                 '_ATL_NO_EXCEPTIONS',
    513                 'ISOLATION_AWARE_ENABLED=1',
    514               ],
    515               'dependencies': [
    516                 '../sandbox/sandbox.gyp:sandbox',
    517               ],
    518               'msvs_settings': {
    519                 'VCCLCompilerTool': {
    520                   # /MP conflicts with #import directive so we limit the number
    521                   # of processes to spawn to 1.
    522                   'AdditionalOptions': ['/MP1'],
    523                 },
    524               },
    525             }],
    526           ],
    527         },  # end of target 'remoting_host'
    528 
    529         {
    530           'target_name': 'remoting_me2me_host_static',
    531           'type': 'static_library',
    532           'variables': { 'enable_wexit_time_destructors': 1, },
    533           'dependencies': [
    534             '../base/base.gyp:base',
    535             '../base/base.gyp:base_i18n',
    536             '../net/net.gyp:net',
    537             '../third_party/webrtc/modules/modules.gyp:desktop_capture',
    538             'remoting_base',
    539             'remoting_breakpad',
    540             'remoting_host',
    541             'remoting_host_event_logger',
    542             'remoting_host_logging',
    543             'remoting_jingle_glue',
    544           ],
    545           'defines': [
    546             'VERSION=<(version_full)',
    547           ],
    548           'sources': [
    549             'host/curtain_mode.h',
    550             'host/curtain_mode_linux.cc',
    551             'host/curtain_mode_mac.cc',
    552             'host/curtain_mode_win.cc',
    553             'host/posix/signal_handler.cc',
    554             'host/posix/signal_handler.h',
    555           ],
    556           'conditions': [
    557             ['os_posix != 1', {
    558               'sources/': [
    559                 ['exclude', '^host/posix/'],
    560               ],
    561             }],
    562           ],  # end of 'conditions'
    563         },  # end of target 'remoting_me2me_host_static'
    564 
    565         {
    566           'target_name': 'remoting_host_keygen',
    567           'type': 'executable',
    568           'dependencies': [
    569             'remoting_base',
    570             '../base/base.gyp:base',
    571             '../base/base.gyp:base_i18n',
    572             '../crypto/crypto.gyp:crypto',
    573           ],
    574           'sources': [
    575             'host/keygen_main.cc',
    576           ],
    577           'conditions': [
    578             ['OS=="linux" and linux_use_tcmalloc==1', {
    579               'dependencies': [
    580                 '../base/allocator/allocator.gyp:allocator',
    581               ],
    582             }],
    583           ],
    584         },  # end of target 'remoting_host_keygen'
    585 
    586         {
    587           'target_name': 'remoting_host_setup_base',
    588           'type': 'static_library',
    589           'variables': { 'enable_wexit_time_destructors': 1, },
    590           'dependencies': [
    591             '../base/base.gyp:base',
    592             '../google_apis/google_apis.gyp:google_apis',
    593             'remoting_host',
    594           ],
    595           'defines': [
    596             'VERSION=<(version_full)',
    597           ],
    598           'sources': [
    599             'host/setup/daemon_controller.h',
    600             'host/setup/daemon_controller_linux.cc',
    601             'host/setup/daemon_controller_mac.mm',
    602             'host/setup/daemon_controller_win.cc',
    603             'host/setup/daemon_installer_win.cc',
    604             'host/setup/daemon_installer_win.h',
    605             'host/setup/host_starter.cc',
    606             'host/setup/host_starter.h',
    607             'host/setup/native_messaging_host.cc',
    608             'host/setup/native_messaging_host.h',
    609             'host/setup/native_messaging_reader.cc',
    610             'host/setup/native_messaging_reader.h',
    611             'host/setup/native_messaging_writer.cc',
    612             'host/setup/native_messaging_writer.h',
    613             'host/setup/oauth_helper.cc',
    614             'host/setup/oauth_helper.h',
    615             'host/setup/pin_validator.cc',
    616             'host/setup/pin_validator.h',
    617             'host/setup/service_client.cc',
    618             'host/setup/service_client.h',
    619             'host/setup/test_util.cc',
    620             'host/setup/test_util.h',
    621             'host/setup/win/auth_code_getter.cc',
    622             'host/setup/win/auth_code_getter.h',
    623           ],
    624           'conditions': [
    625             ['OS=="win"', {
    626               'dependencies': [
    627                 '../google_update/google_update.gyp:google_update',
    628                 'remoting_lib_idl',
    629               ],
    630               # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    631               'msvs_disabled_warnings': [4267, ],
    632             }],
    633           ],
    634         },  # end of target 'remoting_host_setup_base'
    635 
    636         {
    637           'target_name': 'remoting_host_plugin',
    638           'type': 'loadable_module',
    639           'variables': { 'enable_wexit_time_destructors': 1, },
    640           'product_extension': '<(host_plugin_extension)',
    641           'product_prefix': '<(host_plugin_prefix)',
    642           'defines': [
    643             'HOST_PLUGIN_MIME_TYPE=<(host_plugin_mime_type)',
    644           ],
    645           'dependencies': [
    646             '../base/base.gyp:base_i18n',
    647             '../net/net.gyp:net',
    648             '../third_party/npapi/npapi.gyp:npapi',
    649             'remoting_base',
    650             'remoting_host',
    651             'remoting_host_event_logger',
    652             'remoting_host_logging',
    653             'remoting_infoplist_strings',
    654             'remoting_host_setup_base',
    655             'remoting_jingle_glue',
    656             'remoting_resources',
    657           ],
    658           'sources': [
    659             'base/dispatch_win.h',
    660             'host/plugin/host_log_handler.cc',
    661             'host/plugin/host_log_handler.h',
    662             'host/plugin/host_plugin.cc',
    663             'host/plugin/host_plugin_utils.cc',
    664             'host/plugin/host_plugin_utils.h',
    665             'host/plugin/host_script_object.cc',
    666             'host/plugin/host_script_object.h',
    667             'host/win/core_resource.h',
    668           ],
    669           'conditions': [
    670             ['OS=="mac"', {
    671               'mac_bundle': 1,
    672               'xcode_settings': {
    673                 'CHROMIUM_BUNDLE_ID': '<(mac_bundle_id)',
    674                 'INFOPLIST_FILE': 'host/plugin/host_plugin-Info.plist',
    675                 'INFOPLIST_PREPROCESS': 'YES',
    676                 # TODO(maruel): Use INFOPLIST_PREFIX_HEADER to remove the need to
    677                 # duplicate string once
    678                 # http://code.google.com/p/gyp/issues/detail?id=243 is fixed.
    679                 'INFOPLIST_PREPROCESSOR_DEFINITIONS': 'HOST_PLUGIN_MIME_TYPE="<(host_plugin_mime_type)" VERSION_FULL="<(version_full)" VERSION_SHORT="<(version_short)"',
    680               },
    681               # TODO(mark): Come up with a fancier way to do this.  It should
    682               # only be necessary to list host_plugin-Info.plist once, not the
    683               # three times it is listed here.
    684               'mac_bundle_resources': [
    685                 'host/disconnect_window.xib',
    686                 'host/plugin/host_plugin-Info.plist',
    687                 'resources/chromoting16.png',
    688                 'resources/chromoting48.png',
    689                 'resources/chromoting128.png',
    690                 '<!@pymod_do_main(remoting_copy_locales -o -p <(OS) -x <(PRODUCT_DIR) <(remoting_locales))',
    691 
    692                 # Localized strings for 'Info.plist'
    693                 '<!@pymod_do_main(remoting_localize --locale_output '
    694                     '"<(SHARED_INTERMEDIATE_DIR)/remoting/host_plugin_resources/@{json_suffix}.lproj/InfoPlist.strings" '
    695                     '--print_only <(remoting_locales))',
    696               ],
    697               'mac_bundle_resources!': [
    698                 'host/plugin/host_plugin-Info.plist',
    699               ],
    700               'conditions': [
    701                 ['mac_breakpad==1', {
    702                   'variables': {
    703                     # A real .dSYM is needed for dump_syms to operate on.
    704                     'mac_real_dsym': 1,
    705                   },
    706                 }],
    707               ],  # conditions
    708             }],  # OS=="mac"
    709             [ 'OS=="win"', {
    710               'defines': [
    711                 'BINARY=BINARY_HOST_PLUGIN',
    712                 'ISOLATION_AWARE_ENABLED=1',
    713               ],
    714               'dependencies': [
    715                 'remoting_lib_idl',
    716                 'remoting_core_resources',
    717                 'remoting_version_resources',
    718               ],
    719               'include_dirs': [
    720                 '<(INTERMEDIATE_DIR)',
    721               ],
    722               'sources': [
    723                 '<(SHARED_INTERMEDIATE_DIR)/remoting/core.rc',
    724                 '<(SHARED_INTERMEDIATE_DIR)/remoting/version.rc',
    725                 'host/plugin/host_plugin.def',
    726               ],
    727               'msvs_settings': {
    728                 'VCManifestTool': {
    729                   'EmbedManifest': 'true',
    730                 },
    731                 'VCLinkerTool': {
    732                   'AdditionalOptions': [
    733                     "\"/manifestdependency:type='win32' "
    734                         "name='Microsoft.Windows.Common-Controls' "
    735                         "version='6.0.0.0' "
    736                         "processorArchitecture='*' "
    737                         "publicKeyToken='6595b64144ccf1df' language='*'\"",
    738                   ],
    739                 },
    740               },
    741             }],
    742           ],
    743         },  # end of target 'remoting_host_plugin'
    744         {
    745           'target_name': 'remoting_infoplist_strings',
    746           'type': 'none',
    747           'dependencies': [
    748             'remoting_resources',
    749           ],
    750           'actions': [
    751             {
    752               'action_name': 'generate_host_plugin_strings',
    753               'inputs': [
    754                 '<(remoting_localize_path)',
    755                 'host/plugin/host_plugin-InfoPlist.strings.jinja2',
    756               ],
    757               'outputs': [
    758                 '<!@pymod_do_main(remoting_localize --locale_output '
    759                     '"<(SHARED_INTERMEDIATE_DIR)/remoting/host_plugin_resources/@{json_suffix}.lproj/InfoPlist.strings" '
    760                     '--print_only <(remoting_locales))',
    761               ],
    762               'action': [
    763                 'python',
    764                 '<(remoting_localize_path)',
    765                 '--locale_dir', '<(webapp_locale_dir)',
    766                 '--template', 'host/plugin/host_plugin-InfoPlist.strings.jinja2',
    767                 '--locale_output',
    768                 '<(SHARED_INTERMEDIATE_DIR)/remoting/host_plugin_resources/@{json_suffix}.lproj/InfoPlist.strings',
    769                 '--encoding', 'utf-8',
    770                 '<@(remoting_locales)',
    771               ],
    772             },
    773             {
    774               'action_name': 'generate_host_strings',
    775               'inputs': [
    776                 '<(remoting_localize_path)',
    777                 'host/remoting_me2me_host-InfoPlist.strings.jinja2',
    778               ],
    779               'outputs': [
    780                 '<!@pymod_do_main(remoting_localize --locale_output '
    781                     '"<(SHARED_INTERMEDIATE_DIR)/remoting/host_resources/@{json_suffix}.lproj/InfoPlist.strings" '
    782                     '--print_only <(remoting_locales))',
    783               ],
    784               'action': [
    785                 'python',
    786                 '<(remoting_localize_path)',
    787                 '--locale_dir', '<(webapp_locale_dir)',
    788                 '--template', 'host/remoting_me2me_host-InfoPlist.strings.jinja2',
    789                 '--locale_output',
    790                 '<(SHARED_INTERMEDIATE_DIR)/remoting/host_resources/@{json_suffix}.lproj/InfoPlist.strings',
    791                 '--encoding', 'utf-8',
    792                 '<@(remoting_locales)',
    793               ],
    794             },
    795             {
    796               'action_name': 'generate_preference_pane_strings',
    797               'inputs': [
    798                 '<(remoting_localize_path)',
    799                 'host/mac/me2me_preference_pane-InfoPlist.strings.jinja2',
    800               ],
    801               'outputs': [
    802                 '<!@pymod_do_main(remoting_localize --locale_output '
    803                     '"<(SHARED_INTERMEDIATE_DIR)/remoting/preference_pane_resources/@{json_suffix}.lproj/InfoPlist.strings" '
    804                     '--print_only <(remoting_locales))',
    805               ],
    806               'action': [
    807                 'python',
    808                 '<(remoting_localize_path)',
    809                 '--locale_dir', '<(webapp_locale_dir)',
    810                 '--template', 'host/mac/me2me_preference_pane-InfoPlist.strings.jinja2',
    811                 '--locale_output',
    812                 '<(SHARED_INTERMEDIATE_DIR)/remoting/preference_pane_resources/@{json_suffix}.lproj/InfoPlist.strings',
    813                 '--encoding', 'utf-8',
    814                 '<@(remoting_locales)',
    815               ],
    816             },
    817             {
    818               'action_name': 'generate_uninstaller_strings',
    819               'inputs': [
    820                 '<(remoting_localize_path)',
    821                 'host/installer/mac/uninstaller/remoting_uninstaller-InfoPlist.strings.jinja2',
    822               ],
    823               'outputs': [
    824                 '<!@pymod_do_main(remoting_localize --locale_output '
    825                     '"<(SHARED_INTERMEDIATE_DIR)/remoting/uninstaller_resources/@{json_suffix}.lproj/InfoPlist.strings" '
    826                     '--print_only <(remoting_locales))',
    827               ],
    828               'action': [
    829                 'python',
    830                 '<(remoting_localize_path)',
    831                 '--locale_dir', '<(webapp_locale_dir)',
    832                 '--template', 'host/installer/mac/uninstaller/remoting_uninstaller-InfoPlist.strings.jinja2',
    833                 '--locale_output',
    834                 '<(SHARED_INTERMEDIATE_DIR)/remoting/uninstaller_resources/@{json_suffix}.lproj/InfoPlist.strings',
    835                 '--encoding', 'utf-8',
    836                 '<@(remoting_locales)',
    837               ],
    838             },
    839           ],
    840         },  # end of target 'remoting_infoplist_strings'
    841       ],  # end of 'targets'
    842     }],  # 'enable_remoting_host==1'
    843 
    844     ['OS!="win" and enable_remoting_host==1', {
    845       'conditions': [
    846         ['OS=="linux" and branding=="Chrome" and chromeos==0', {
    847           'variables': {
    848             'deb_cmd': 'host/installer/linux/build-deb.sh',
    849             'deb_filename': 'host/installer/<!(["<(deb_cmd)", "-p", "-s", "<(DEPTH)"])',
    850             'packaging_outputs': [
    851               '<(deb_filename)',
    852               '<!(echo <(deb_filename) | sed -e "s/.deb$/.changes/")',
    853               '<(PRODUCT_DIR)/remoting_me2me_host.debug',
    854               '<(PRODUCT_DIR)/remoting_start_host.debug',
    855               '<(PRODUCT_DIR)/remoting_native_messaging_host.debug',
    856             ]
    857           },
    858           'targets': [
    859             {
    860               # Store the installer package(s) into a zip file so there is a
    861               # consistent filename to reference for build archiving (i.e. in
    862               # FILES.cfg). This also avoids possible conflicts with "wildcard"
    863               # package handling in other build/signing scripts.
    864               'target_name': 'remoting_me2me_host_archive',
    865               'type': 'none',
    866               'dependencies': [
    867                 'remoting_me2me_host_deb_installer',
    868               ],
    869               'actions': [
    870                 {
    871                   #'variables': {
    872                   #  'deb_cmd': 'host/installer/linux/build-deb.sh',
    873                   #},
    874                   'action_name': 'build_linux_installer_zip',
    875                   'inputs': [
    876                     '<@(packaging_outputs)',
    877                   ],
    878                   'outputs': [
    879                     '<(PRODUCT_DIR)/remoting-me2me-host-<(OS).zip',
    880                   ],
    881                   'action': [ 'zip', '-j', '-0', '<@(_outputs)', '<@(_inputs)' ],
    882                 },
    883               ],
    884             },
    885             {
    886               'target_name': 'remoting_me2me_host_deb_installer',
    887               'type': 'none',
    888               'dependencies': [
    889                 'remoting_me2me_host',
    890                 'remoting_start_host',
    891                 'remoting_native_messaging_host',
    892               ],
    893               'actions': [
    894                 {
    895                   'action_name': 'build_debian_package',
    896                   'inputs': [
    897                     '<(deb_cmd)',
    898                     'host/installer/linux/Makefile',
    899                     'host/installer/linux/debian/chrome-remote-desktop.init',
    900                     'host/installer/linux/debian/chrome-remote-desktop.pam',
    901                     'host/installer/linux/debian/compat',
    902                     'host/installer/linux/debian/control',
    903                     'host/installer/linux/debian/copyright',
    904                     'host/installer/linux/debian/postinst',
    905                     'host/installer/linux/debian/preinst',
    906                     'host/installer/linux/debian/rules',
    907                   ],
    908                   'outputs': [
    909                     '<@(packaging_outputs)',
    910                   ],
    911                   'action': [ '<(deb_cmd)', '-s', '<(DEPTH)' ],
    912                 },
    913               ],
    914             },
    915           ],
    916         }],
    917       ],
    918       'targets': [
    919         {
    920           'target_name': 'remoting_me2me_host',
    921           'type': 'executable',
    922           'variables': { 'enable_wexit_time_destructors': 1, },
    923           'dependencies': [
    924             '../base/base.gyp:base',
    925             '../base/base.gyp:base_i18n',
    926             '../net/net.gyp:net',
    927             '../third_party/webrtc/modules/modules.gyp:desktop_capture',
    928             'remoting_base',
    929             'remoting_breakpad',
    930             'remoting_host',
    931             'remoting_host_event_logger',
    932             'remoting_host_logging',
    933             'remoting_host_setup_base',
    934             'remoting_infoplist_strings',
    935             'remoting_jingle_glue',
    936             'remoting_me2me_host_static',
    937           ],
    938           'defines': [
    939             'VERSION=<(version_full)',
    940           ],
    941           'sources': [
    942             'host/host_main.cc',
    943             'host/host_main.h',
    944             'host/remoting_me2me_host.cc',
    945           ],
    946           'conditions': [
    947             ['OS=="mac"', {
    948               'mac_bundle': 1,
    949               'variables': {
    950                  'host_bundle_id': '<!(python <(version_py_path) -f <(branding_path) -t "@MAC_HOST_BUNDLE_ID@")',
    951               },
    952               'xcode_settings': {
    953                 'INFOPLIST_FILE': 'host/remoting_me2me_host-Info.plist',
    954                 'INFOPLIST_PREPROCESS': 'YES',
    955                 'INFOPLIST_PREPROCESSOR_DEFINITIONS': 'VERSION_FULL="<(version_full)" VERSION_SHORT="<(version_short)" BUNDLE_ID="<(host_bundle_id)"',
    956               },
    957               'mac_bundle_resources': [
    958                 'host/disconnect_window.xib',
    959                 'host/remoting_me2me_host.icns',
    960                 'host/remoting_me2me_host-Info.plist',
    961                 '<!@pymod_do_main(remoting_copy_locales -o -p <(OS) -x <(PRODUCT_DIR) <(remoting_locales))',
    962 
    963                 # Localized strings for 'Info.plist'
    964                 '<!@pymod_do_main(remoting_localize --locale_output '
    965                     '"<(SHARED_INTERMEDIATE_DIR)/remoting/host_resources/@{json_suffix}.lproj/InfoPlist.strings" '
    966                     '--print_only <(remoting_locales))',
    967               ],
    968               'mac_bundle_resources!': [
    969                 'host/remoting_me2me_host-Info.plist',
    970               ],
    971               'conditions': [
    972                 ['mac_breakpad==1', {
    973                   'variables': {
    974                     # A real .dSYM is needed for dump_syms to operate on.
    975                     'mac_real_dsym': 1,
    976                   },
    977                   'copies': [
    978                     {
    979                       'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Resources',
    980                       'files': [
    981                         '<(PRODUCT_DIR)/crash_inspector',
    982                         '<(PRODUCT_DIR)/crash_report_sender.app'
    983                       ],
    984                     },
    985                   ],
    986                   'dependencies': [
    987                     '../breakpad/breakpad.gyp:dump_syms',
    988                   ],
    989                   'postbuilds': [
    990                     {
    991                       'postbuild_name': 'Dump Symbols',
    992                       'variables': {
    993                         'dump_product_syms_path':
    994                             'scripts/mac/dump_product_syms',
    995                       },
    996                       'action': [
    997                         '<(dump_product_syms_path)',
    998                         '<(version_full)',
    999                       ],
   1000                     },  # end of postbuild 'dump_symbols'
   1001                   ],  # end of 'postbuilds'
   1002                 }],  # mac_breakpad==1
   1003               ],  # conditions
   1004             }],  # OS=mac
   1005             ['OS=="linux" and linux_use_tcmalloc==1', {
   1006               'dependencies': [
   1007                 '../base/allocator/allocator.gyp:allocator',
   1008               ],
   1009             }],  # OS=linux
   1010           ],  # end of 'conditions'
   1011         },  # end of target 'remoting_me2me_host'
   1012         {
   1013           'target_name': 'remoting_native_messaging_host',
   1014           'type': 'executable',
   1015           'variables': { 'enable_wexit_time_destructors': 1, },
   1016           'dependencies': [
   1017             '../base/base.gyp:base',
   1018             'remoting_host',
   1019             'remoting_host_logging',
   1020             'remoting_host_setup_base',
   1021             'remoting_native_messaging_manifest',
   1022           ],
   1023           'defines': [
   1024             'VERSION=<(version_full)',
   1025           ],
   1026           'sources': [
   1027             'host/setup/native_messaging_host_main.cc',
   1028           ],
   1029           'conditions': [
   1030             ['OS=="linux" and linux_use_tcmalloc==1', {
   1031               'dependencies': [
   1032                 '../base/allocator/allocator.gyp:allocator',
   1033               ],
   1034             }],
   1035           ],
   1036         },  # end of target 'remoting_native_messaging_host'
   1037       ],  # end of 'targets'
   1038     }],  # 'OS!="win" and enable_remoting_host==1'
   1039 
   1040 
   1041     ['OS=="linux" and chromeos==0 and enable_remoting_host==1', {
   1042       'targets': [
   1043         # Linux breakpad processing
   1044         {
   1045           'target_name': 'remoting_linux_symbols',
   1046           'type': 'none',
   1047           'conditions': [
   1048             ['linux_dump_symbols==1', {
   1049               'actions': [
   1050                 {
   1051                   'action_name': 'dump_symbols',
   1052                   'variables': {
   1053                     'plugin_file': '<(host_plugin_prefix)remoting_host_plugin.<(host_plugin_extension)',
   1054                   },
   1055                   'inputs': [
   1056                     '<(DEPTH)/build/linux/dump_app_syms',
   1057                     '<(PRODUCT_DIR)/dump_syms',
   1058                     '<(PRODUCT_DIR)/<(plugin_file)',
   1059                   ],
   1060                   'outputs': [
   1061                     '<(PRODUCT_DIR)/<(plugin_file).breakpad.<(target_arch)',
   1062                   ],
   1063                   'action': ['<(DEPTH)/build/linux/dump_app_syms',
   1064                              '<(PRODUCT_DIR)/dump_syms',
   1065                              '<(linux_strip_binary)',
   1066                              '<(PRODUCT_DIR)/<(plugin_file)',
   1067                              '<@(_outputs)'],
   1068                   'message': 'Dumping breakpad symbols to <(_outputs)',
   1069                   'process_outputs_as_sources': 1,
   1070                 },
   1071               ],
   1072               'dependencies': [
   1073                 'remoting_host_plugin',
   1074                 '../breakpad/breakpad.gyp:dump_syms',
   1075               ],
   1076             }],  # 'linux_dump_symbols==1'
   1077           ],  # end of 'conditions'
   1078         },  # end of target 'linux_symbols'
   1079         {
   1080           'target_name': 'remoting_start_host',
   1081           'type': 'executable',
   1082           'dependencies': [
   1083             'remoting_host_setup_base',
   1084           ],
   1085           'sources': [
   1086             'host/setup/start_host.cc',
   1087           ],
   1088           'conditions': [
   1089             ['linux_use_tcmalloc==1', {
   1090               'dependencies': [
   1091                 '../base/allocator/allocator.gyp:allocator',
   1092               ],
   1093             }],
   1094           ],
   1095         },  # end of target 'remoting_start_host'
   1096       ],  # end of 'targets'
   1097     }],  # 'OS=="linux"'
   1098 
   1099     ['OS=="mac"', {
   1100       'targets': [
   1101         {
   1102           'target_name': 'remoting_host_uninstaller',
   1103           'type': 'executable',
   1104           'mac_bundle': 1,
   1105           'variables': {
   1106             'bundle_id': '<!(python <(version_py_path) -f <(branding_path) -t "@MAC_UNINSTALLER_BUNDLE_ID@")',
   1107           },
   1108           'dependencies': [
   1109             '<(DEPTH)/base/base.gyp:base',
   1110             'remoting_infoplist_strings',
   1111           ],
   1112           'sources': [
   1113             'host/constants_mac.cc',
   1114             'host/constants_mac.h',
   1115             'host/installer/mac/uninstaller/remoting_uninstaller.h',
   1116             'host/installer/mac/uninstaller/remoting_uninstaller.mm',
   1117             'host/installer/mac/uninstaller/remoting_uninstaller_app.h',
   1118             'host/installer/mac/uninstaller/remoting_uninstaller_app.mm',
   1119           ],
   1120           'xcode_settings': {
   1121             'INFOPLIST_FILE': 'host/installer/mac/uninstaller/remoting_uninstaller-Info.plist',
   1122             'INFOPLIST_PREPROCESS': 'YES',
   1123             'INFOPLIST_PREPROCESSOR_DEFINITIONS': 'VERSION_FULL="<(version_full)" VERSION_SHORT="<(version_short)" BUNDLE_ID="<(bundle_id)"',
   1124           },
   1125           'mac_bundle_resources': [
   1126             'host/installer/mac/uninstaller/remoting_uninstaller.icns',
   1127             'host/installer/mac/uninstaller/remoting_uninstaller.xib',
   1128             'host/installer/mac/uninstaller/remoting_uninstaller-Info.plist',
   1129 
   1130             # Localized strings for 'Info.plist'
   1131             '<!@pymod_do_main(remoting_localize --locale_output '
   1132                 '"<(SHARED_INTERMEDIATE_DIR)/remoting/uninstaller_resources/@{json_suffix}.lproj/InfoPlist.strings" '
   1133                 '--print_only <(remoting_locales))',
   1134           ],
   1135           'mac_bundle_resources!': [
   1136             'host/installer/mac/uninstaller/remoting_uninstaller-Info.plist',
   1137           ],
   1138         },  # end of target 'remoting_host_uninstaller'
   1139 
   1140         # This packages up the files needed for the remoting host installer so
   1141         # they can be sent off to be signed.
   1142         # We don't build an installer here because we don't have signed binaries.
   1143         {
   1144           'target_name': 'remoting_me2me_host_archive',
   1145           'type': 'none',
   1146           'dependencies': [
   1147             'remoting_host_prefpane',
   1148             'remoting_host_uninstaller',
   1149             'remoting_me2me_host',
   1150           ],
   1151           'variables': {
   1152             'host_name': '<!(python <(version_py_path) -f <(branding_path) -t "@HOST_PLUGIN_FILE_NAME@")',
   1153             'host_service_name': '<!(python <(version_py_path) -f <(branding_path) -t "@DAEMON_FILE_NAME@")',
   1154             'host_uninstaller_name': '<!(python <(version_py_path) -f <(branding_path) -t "@MAC_UNINSTALLER_NAME@")',
   1155             'bundle_prefix': '<!(python <(version_py_path) -f <(branding_path) -t "@MAC_UNINSTALLER_BUNDLE_PREFIX@")',
   1156           },
   1157           'actions': [
   1158             {
   1159               'action_name': 'Zip installer files for signing',
   1160               'temp_dir': '<(SHARED_INTERMEDIATE_DIR)/remoting/remoting-me2me-host',
   1161               'zip_path': '<(PRODUCT_DIR)/remoting-me2me-host-<(OS).zip',
   1162               'variables': {
   1163                 'host_name_nospace': '<!(echo <(host_name) | sed "s/ //g")',
   1164                 'host_service_name_nospace': '<!(echo <(host_service_name) | sed "s/ //g")',
   1165                 'host_uninstaller_name_nospace': '<!(echo <(host_uninstaller_name) | sed "s/ //g")',
   1166               },
   1167               'generated_files': [
   1168                 '<(PRODUCT_DIR)/remoting_host_prefpane.prefPane',
   1169                 '<(PRODUCT_DIR)/remoting_me2me_host.app',
   1170                 '<(PRODUCT_DIR)/remoting_host_uninstaller.app',
   1171               ],
   1172               'generated_files_dst': [
   1173                 'PreferencePanes/org.chromium.chromoting.prefPane',
   1174                 'PrivilegedHelperTools/org.chromium.chromoting.me2me_host.app',
   1175                 'Applications/<(host_uninstaller_name).app',
   1176               ],
   1177               'source_files': [
   1178                 '<@(remoting_host_installer_mac_files)',
   1179               ],
   1180               'defs': [
   1181                 'VERSION=<(version_full)',
   1182                 'VERSION_SHORT=<(version_short)',
   1183                 'VERSION_MAJOR=<(version_major)',
   1184                 'VERSION_MINOR=<(version_minor)',
   1185                 'HOST_NAME=<(host_name)',
   1186                 'HOST_SERVICE_NAME=<(host_service_name)',
   1187                 'HOST_UNINSTALLER_NAME=<(host_uninstaller_name)',
   1188                 'HOST_PKG=<(host_name)',
   1189                 'HOST_SERVICE_PKG=<(host_service_name_nospace)',
   1190                 'HOST_UNINSTALLER_PKG=<(host_uninstaller_name_nospace)',
   1191                 'BUNDLE_ID_HOST=<(bundle_prefix).<(host_name_nospace)',
   1192                 'BUNDLE_ID_HOST_SERVICE=<(bundle_prefix).<(host_service_name_nospace)',
   1193                 'BUNDLE_ID_HOST_UNINSTALLER=<(bundle_prefix).<(host_uninstaller_name_nospace)',
   1194                 'DMG_VOLUME_NAME=<(host_name) <(version_full)',
   1195                 'DMG_FILE_NAME=<!(echo <(host_name) | sed "s/ //g")-<(version_full)',
   1196               ],
   1197               'inputs': [
   1198                 'host/installer/build-installer-archive.py',
   1199                 '<@(_source_files)',
   1200               ],
   1201               'outputs': [
   1202                 '<(_zip_path)',
   1203               ],
   1204               'action': [
   1205                 'python',
   1206                 'host/installer/build-installer-archive.py',
   1207                 '<(_temp_dir)',
   1208                 '<(_zip_path)',
   1209                 '--source-file-roots',
   1210                 '<@(remoting_host_installer_mac_roots)',
   1211                 '--source-files',
   1212                 '<@(_source_files)',
   1213                 '--generated-files',
   1214                 '<@(_generated_files)',
   1215                 '--generated-files-dst',
   1216                 '<@(_generated_files_dst)',
   1217                 '--defs',
   1218                 '<@(_defs)',
   1219               ],
   1220             },
   1221           ],  # actions
   1222         }, # end of target 'remoting_me2me_host_archive'
   1223 
   1224         {
   1225           'target_name': 'remoting_host_prefpane',
   1226           'type': 'loadable_module',
   1227           'mac_bundle': 1,
   1228           'product_extension': 'prefPane',
   1229           'defines': [
   1230             'JSON_USE_EXCEPTION=0',
   1231           ],
   1232           'dependencies': [
   1233             'remoting_infoplist_strings',
   1234           ],
   1235           'include_dirs': [
   1236             '../third_party/jsoncpp/overrides/include/',
   1237             '../third_party/jsoncpp/source/include/',
   1238             '../third_party/jsoncpp/source/src/lib_json/',
   1239           ],
   1240 
   1241           # These source files are included directly, instead of adding target
   1242           # dependencies, because the targets are not yet built for 64-bit on
   1243           # Mac OS X - http://crbug.com/125116.
   1244           #
   1245           # TODO(lambroslambrou): Fix this when Chrome supports building for
   1246           # Mac OS X 64-bit - http://crbug.com/128122.
   1247           'sources': [
   1248             '../third_party/jsoncpp/source/src/lib_json/json_reader.cpp',
   1249             '../third_party/jsoncpp/overrides/src/lib_json/json_value.cpp',
   1250             '../third_party/jsoncpp/source/src/lib_json/json_writer.cpp',
   1251             '../third_party/modp_b64/modp_b64.cc',
   1252             'host/constants_mac.cc',
   1253             'host/constants_mac.h',
   1254             'host/host_config.cc',
   1255             'host/mac/me2me_preference_pane.h',
   1256             'host/mac/me2me_preference_pane.mm',
   1257             'host/mac/me2me_preference_pane_confirm_pin.h',
   1258             'host/mac/me2me_preference_pane_confirm_pin.mm',
   1259             'host/mac/me2me_preference_pane_disable.h',
   1260             'host/mac/me2me_preference_pane_disable.mm',
   1261           ],
   1262           'link_settings': {
   1263             'libraries': [
   1264               '$(SDKROOT)/System/Library/Frameworks/Cocoa.framework',
   1265               '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
   1266               '$(SDKROOT)/System/Library/Frameworks/PreferencePanes.framework',
   1267               '$(SDKROOT)/System/Library/Frameworks/Security.framework',
   1268             ],
   1269           },
   1270           'variables': {
   1271             'bundle_id': '<!(python <(version_py_path) -f <(branding_path) -t "@MAC_PREFPANE_BUNDLE_ID@")',
   1272           },
   1273           'xcode_settings': {
   1274             'ARCHS': ['i386', 'x86_64'],
   1275             'GCC_ENABLE_OBJC_GC': 'supported',
   1276             'INFOPLIST_FILE': 'host/mac/me2me_preference_pane-Info.plist',
   1277             'INFOPLIST_PREPROCESS': 'YES',
   1278             'INFOPLIST_PREPROCESSOR_DEFINITIONS': 'VERSION_FULL="<(version_full)" VERSION_SHORT="<(version_short)" BUNDLE_ID="<(bundle_id)"',
   1279           },
   1280           'mac_bundle_resources': [
   1281             'host/mac/me2me_preference_pane.xib',
   1282             'host/mac/me2me_preference_pane_confirm_pin.xib',
   1283             'host/mac/me2me_preference_pane_disable.xib',
   1284             'host/mac/me2me_preference_pane-Info.plist',
   1285             'resources/chromoting128.png',
   1286 
   1287             # Localized strings for 'Info.plist'
   1288             '<!@pymod_do_main(remoting_localize --locale_output '
   1289                 '"<(SHARED_INTERMEDIATE_DIR)/remoting/preference_pane_resources/@{json_suffix}.lproj/InfoPlist.strings" '
   1290                 '--print_only <(remoting_locales))',
   1291           ],
   1292           'mac_bundle_resources!': [
   1293             'host/mac/me2me_preference_pane-Info.plist',
   1294           ],
   1295           'conditions': [
   1296             ['mac_breakpad==1', {
   1297               'variables': {
   1298                 # A real .dSYM is needed for dump_syms to operate on.
   1299                 'mac_real_dsym': 1,
   1300               },
   1301             }],  # 'mac_breakpad==1'
   1302           ],  # conditions
   1303         },  # end of target 'remoting_host_prefpane'
   1304       ],  # end of 'targets'
   1305     }],  # 'OS=="mac"'
   1306 
   1307     ['OS=="win"', {
   1308       'targets': [
   1309         {
   1310           'target_name': 'remoting_breakpad_tester',
   1311           'type': 'executable',
   1312           'variables': { 'enable_wexit_time_destructors': 1, },
   1313           'dependencies': [
   1314             '../base/base.gyp:base',
   1315             'remoting_host_logging',
   1316           ],
   1317           'sources': [
   1318             'tools/breakpad_tester_win.cc',
   1319           ],
   1320         },  # end of target 'remoting_breakpad_tester'
   1321         {
   1322           'target_name': 'remoting_lib_idl',
   1323           'type': 'static_library',
   1324           'sources': [
   1325             'host/win/chromoting_lib_idl.templ',
   1326             '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib.h',
   1327             '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib.idl',
   1328             '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib_i.c',
   1329           ],
   1330           # This target exports a hard dependency because dependent targets may
   1331           # include chromoting_lib.h, a generated header.
   1332           'hard_dependency': 1,
   1333           'msvs_settings': {
   1334             'VCMIDLTool': {
   1335               'OutputDirectory': '<(SHARED_INTERMEDIATE_DIR)/remoting/host',
   1336             },
   1337           },
   1338           'direct_dependent_settings': {
   1339             'include_dirs': [
   1340               '<(SHARED_INTERMEDIATE_DIR)',
   1341             ],
   1342           },
   1343           'rules': [
   1344             {
   1345               'rule_name': 'generate_idl',
   1346               'extension': 'templ',
   1347               'outputs': [
   1348                 '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib.idl',
   1349               ],
   1350               'action': [
   1351                 'python',
   1352                 '<(version_py_path)',
   1353                 '-e', "DAEMON_CONTROLLER_CLSID='<(daemon_controller_clsid)'",
   1354                 '-e', "RDP_DESKTOP_SESSION_CLSID='<(rdp_desktop_session_clsid)'",
   1355                 '<(RULE_INPUT_PATH)',
   1356                 '<@(_outputs)',
   1357               ],
   1358               'process_outputs_as_sources': 1,
   1359               'message': 'Generating <@(_outputs)',
   1360               'msvs_cygwin_shell': 0,
   1361             },
   1362           ],
   1363         },  # end of target 'remoting_lib_idl'
   1364 
   1365         # remoting_lib_ps builds the proxy/stub code generated by MIDL (see
   1366         # remoting_lib_idl).
   1367         {
   1368           'target_name': 'remoting_lib_ps',
   1369           'type': 'static_library',
   1370           'defines': [
   1371             # Prepend 'Ps' to the MIDL-generated routines. This includes
   1372             # DllGetClassObject, DllCanUnloadNow, DllRegisterServer,
   1373             # DllUnregisterServer, and DllMain.
   1374             'ENTRY_PREFIX=Ps',
   1375             'REGISTER_PROXY_DLL',
   1376           ],
   1377           'dependencies': [
   1378             'remoting_lib_idl',
   1379           ],
   1380           'sources': [
   1381             '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib.dlldata.c',
   1382             '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib_p.c',
   1383           ],
   1384         },  # end of target 'remoting_lib_ps'
   1385 
   1386         # Regenerates 'chromoting_lib.rc' (used to embed 'chromoting_lib.tlb'
   1387         # into remoting_core.dll's resources) every time
   1388         # 'chromoting_lib_idl.templ' changes. Making remoting_core depend on
   1389         # both this and 'remoting_lib_idl' targets ensures that the resorces
   1390         # are rebuilt every time the type library is updated. GYP alone is
   1391         # not smart enough to figure out this dependency on its own.
   1392         {
   1393           'target_name': 'remoting_lib_rc',
   1394           'type': 'none',
   1395           'sources': [
   1396             'host/win/chromoting_lib_idl.templ',
   1397           ],
   1398           'hard_dependency': 1,
   1399           'direct_dependent_settings': {
   1400             'include_dirs': [
   1401               '<(SHARED_INTERMEDIATE_DIR)',
   1402             ],
   1403           },
   1404           'rules': [
   1405             {
   1406               'rule_name': 'generate_rc',
   1407               'extension': 'templ',
   1408               'outputs': [
   1409                 '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib.rc',
   1410               ],
   1411               'action': [
   1412                 'echo 1 typelib "remoting/host/chromoting_lib.tlb" > <@(_outputs)',
   1413               ],
   1414               'message': 'Generating <@(_outputs)',
   1415               'msvs_cygwin_shell': 0,
   1416             },
   1417           ],
   1418         },  # end of target 'remoting_lib_rc'
   1419         {
   1420           'target_name': 'remoting_configurer',
   1421           'type': 'executable',
   1422           'defines': [
   1423             '_ATL_NO_EXCEPTIONS',
   1424           ],
   1425           'dependencies': [
   1426             '../base/base.gyp:base',
   1427             '../crypto/crypto.gyp:crypto',
   1428             'remoting_host',
   1429             'remoting_host_setup_base',
   1430           ],
   1431           'sources': [
   1432             'host/branding.cc',
   1433             'host/setup/win/host_configurer.cc',
   1434             'host/setup/win/host_configurer.rc',
   1435             'host/setup/win/host_configurer_window.cc',
   1436             'host/setup/win/host_configurer_window.h',
   1437             'host/setup/win/host_configurer_resource.h',
   1438             'host/setup/win/load_string_from_resource.cc',
   1439             'host/setup/win/load_string_from_resource.h',
   1440             'host/setup/win/start_host_window.cc',
   1441             'host/setup/win/start_host_window.h',
   1442           ],
   1443           'msvs_settings': {
   1444             'VCLinkerTool': {
   1445               'AdditionalOptions': [
   1446                 "\"/manifestdependency:type='win32' "
   1447                     "name='Microsoft.Windows.Common-Controls' "
   1448                     "version='6.0.0.0' "
   1449                     "processorArchitecture='*' "
   1450                     "publicKeyToken='6595b64144ccf1df' language='*'\"",
   1451               ],
   1452               # 2 == /SUBSYSTEM:WINDOWS
   1453               'SubSystem': '2',
   1454             },
   1455           },
   1456         },  # end of target 'remoting_configurer'
   1457         # The only difference between |remoting_console.exe| and
   1458         # |remoting_host.exe| is that the former is a console application.
   1459         # |remoting_console.exe| is used for debugging purposes.
   1460         {
   1461           'target_name': 'remoting_console',
   1462           'type': 'executable',
   1463           'variables': { 'enable_wexit_time_destructors': 1, },
   1464           'defines': [
   1465             'BINARY=BINARY_HOST_ME2ME',
   1466           ],
   1467           'dependencies': [
   1468             'remoting_core',
   1469             'remoting_version_resources',
   1470           ],
   1471           'sources': [
   1472             '<(SHARED_INTERMEDIATE_DIR)/remoting/version.rc',
   1473             'host/win/entry_point.cc',
   1474           ],
   1475           'msvs_settings': {
   1476             'VCManifestTool': {
   1477               'AdditionalManifestFiles': [
   1478                 'host/win/dpi_aware.manifest',
   1479               ],
   1480             },
   1481             'VCLinkerTool': {
   1482               'EntryPointSymbol': 'HostEntryPoint',
   1483               'IgnoreAllDefaultLibraries': 'true',
   1484               'SubSystem': '1', # /SUBSYSTEM:CONSOLE
   1485             },
   1486           },
   1487         },  # end of target 'remoting_console'
   1488         {
   1489           'target_name': 'remoting_core',
   1490           'type': 'shared_library',
   1491           'variables': { 'enable_wexit_time_destructors': 1, },
   1492           'defines' : [
   1493             '_ATL_APARTMENT_THREADED',
   1494             '_ATL_CSTRING_EXPLICIT_CONSTRUCTORS',
   1495             '_ATL_NO_AUTOMATIC_NAMESPACE',
   1496             '_ATL_NO_EXCEPTIONS',
   1497             'BINARY=BINARY_CORE',
   1498             'DAEMON_CONTROLLER_CLSID="{<(daemon_controller_clsid)}"',
   1499             'RDP_DESKTOP_SESSION_CLSID="{<(rdp_desktop_session_clsid)}"',
   1500             'HOST_IMPLEMENTATION',
   1501             'ISOLATION_AWARE_ENABLED=1',
   1502             'STRICT',
   1503             'VERSION=<(version_full)',
   1504           ],
   1505           'dependencies': [
   1506             '../base/base.gyp:base',
   1507             '../base/base.gyp:base_static',
   1508             '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
   1509             '../ipc/ipc.gyp:ipc',
   1510             '../net/net.gyp:net',
   1511             '../third_party/webrtc/modules/modules.gyp:desktop_capture',
   1512             'remoting_base',
   1513             'remoting_breakpad',
   1514             'remoting_core_resources',
   1515             'remoting_host',
   1516             'remoting_host_event_logger',
   1517             'remoting_host_logging',
   1518             'remoting_host_setup_base',
   1519             'remoting_lib_idl',
   1520             'remoting_lib_ps',
   1521             'remoting_lib_rc',
   1522             'remoting_me2me_host_static',
   1523             'remoting_protocol',
   1524             'remoting_version_resources',
   1525           ],
   1526           'sources': [
   1527             '<(SHARED_INTERMEDIATE_DIR)/remoting/core.rc',
   1528             '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib.rc',
   1529             '<(SHARED_INTERMEDIATE_DIR)/remoting/host/remoting_host_messages.rc',
   1530             '<(SHARED_INTERMEDIATE_DIR)/remoting/version.rc',
   1531             'host/chromoting_messages.cc',
   1532             'host/chromoting_messages.h',
   1533             'host/config_file_watcher.cc',
   1534             'host/config_file_watcher.h',
   1535             'host/daemon_process.cc',
   1536             'host/daemon_process.h',
   1537             'host/daemon_process_win.cc',
   1538             'host/desktop_process.cc',
   1539             'host/desktop_process.h',
   1540             'host/desktop_process_main.cc',
   1541             'host/desktop_session.cc',
   1542             'host/desktop_session.h',
   1543             'host/desktop_session_agent.cc',
   1544             'host/desktop_session_agent.h',
   1545             'host/desktop_session_win.cc',
   1546             'host/desktop_session_win.h',
   1547             'host/host_exit_codes.h',
   1548             'host/host_exit_codes.cc',
   1549             'host/host_export.h',
   1550             'host/host_main.cc',
   1551             'host/host_main.h',
   1552             'host/ipc_constants.cc',
   1553             'host/ipc_constants.h',
   1554             'host/remoting_me2me_host.cc',
   1555             'host/sas_injector.h',
   1556             'host/sas_injector_win.cc',
   1557             'host/verify_config_window_win.cc',
   1558             'host/verify_config_window_win.h',
   1559             'host/win/chromoting_module.cc',
   1560             'host/win/chromoting_module.h',
   1561             'host/win/core.cc',
   1562             'host/win/core_resource.h',
   1563             'host/win/elevated_controller.cc',
   1564             'host/win/elevated_controller.h',
   1565             'host/win/host_service.cc',
   1566             'host/win/host_service.h',
   1567             'host/win/omaha.cc',
   1568             'host/win/omaha.h',
   1569             'host/win/rdp_desktop_session.cc',
   1570             'host/win/rdp_desktop_session.h',
   1571             'host/win/unprivileged_process_delegate.cc',
   1572             'host/win/unprivileged_process_delegate.h',
   1573             'host/win/worker_process_launcher.cc',
   1574             'host/win/worker_process_launcher.h',
   1575             'host/win/wts_session_process_delegate.cc',
   1576             'host/win/wts_session_process_delegate.h',
   1577             'host/worker_process_ipc_delegate.h',
   1578           ],
   1579           'msvs_settings': {
   1580             'VCManifestTool': {
   1581               'EmbedManifest': 'true',
   1582             },
   1583             'VCLinkerTool': {
   1584               'AdditionalDependencies': [
   1585                 'comctl32.lib',
   1586                 'rpcns4.lib',
   1587                 'rpcrt4.lib',
   1588                 'uuid.lib',
   1589                 'wtsapi32.lib',
   1590               ],
   1591               'AdditionalOptions': [
   1592                 "\"/manifestdependency:type='win32' "
   1593                     "name='Microsoft.Windows.Common-Controls' "
   1594                     "version='6.0.0.0' "
   1595                     "processorArchitecture='*' "
   1596                     "publicKeyToken='6595b64144ccf1df' language='*'\"",
   1597 
   1598                 # Export the proxy/stub entry points. Note that the generated
   1599                 # routines have 'Ps' prefix to avoid conflicts with our own
   1600                 # DllMain().
   1601                 '/EXPORT:DllGetClassObject=PsDllGetClassObject,PRIVATE',
   1602                 '/EXPORT:DllCanUnloadNow=PsDllCanUnloadNow,PRIVATE',
   1603                 '/EXPORT:DllRegisterServer=PsDllRegisterServer,PRIVATE',
   1604                 '/EXPORT:DllUnregisterServer=PsDllUnregisterServer,PRIVATE',
   1605               ],
   1606             },
   1607           },
   1608         },  # end of target 'remoting_core'
   1609         {
   1610           'target_name': 'remoting_core_resources',
   1611           'type': 'none',
   1612           'dependencies': [
   1613             'remoting_resources',
   1614           ],
   1615           'hard_dependency': 1,
   1616           'direct_dependent_settings': {
   1617             'include_dirs': [
   1618               '<(SHARED_INTERMEDIATE_DIR)',
   1619             ],
   1620           },
   1621           'sources': [
   1622             'host/win/core.rc.jinja2'
   1623           ],
   1624           'rules': [
   1625             {
   1626               'rule_name': 'version',
   1627               'extension': 'jinja2',
   1628               'outputs': [
   1629                 '<(SHARED_INTERMEDIATE_DIR)/remoting/core.rc'
   1630               ],
   1631               'action': [
   1632                 'python',
   1633                 '<(remoting_localize_path)',
   1634                 '--locale_dir', '<(webapp_locale_dir)',
   1635                 '--template', '<(RULE_INPUT_PATH)',
   1636                 '--output', '<@(_outputs)',
   1637                 '<@(remoting_locales)',
   1638               ],
   1639               'message': 'Localizing the dialogs and strings'
   1640             },
   1641           ],
   1642         },  # end of target 'remoting_core_resources'
   1643         {
   1644           'target_name': 'remoting_desktop',
   1645           'type': 'executable',
   1646           'variables': { 'enable_wexit_time_destructors': 1, },
   1647           'defines': [
   1648             'BINARY=BINARY_DESKTOP',
   1649           ],
   1650           'dependencies': [
   1651             'remoting_core',
   1652             'remoting_version_resources',
   1653           ],
   1654           'sources': [
   1655             '<(SHARED_INTERMEDIATE_DIR)/remoting/version.rc',
   1656             'host/win/entry_point.cc',
   1657           ],
   1658           'msvs_settings': {
   1659             'VCManifestTool': {
   1660               'AdditionalManifestFiles': [
   1661                 'host/win/dpi_aware.manifest',
   1662               ],
   1663             },
   1664             'VCLinkerTool': {
   1665               'EnableUAC': 'true',
   1666               # Add 'level="requireAdministrator" uiAccess="true"' to
   1667               # the manifest only for the official builds because it requires
   1668               # the binary to be signed to work.
   1669               'conditions': [
   1670                 ['buildtype == "Official"', {
   1671                   'UACExecutionLevel': 2,
   1672                   'UACUIAccess': 'true',
   1673                 }],
   1674               ],
   1675               'EntryPointSymbol': 'HostEntryPoint',
   1676               'IgnoreAllDefaultLibraries': 'true',
   1677               'SubSystem': '2', # /SUBSYSTEM:WINDOWS
   1678             },
   1679           },
   1680         },  # end of target 'remoting_desktop'
   1681         {
   1682           'target_name': 'remoting_host_exe',
   1683           'product_name': 'remoting_host',
   1684           'type': 'executable',
   1685           'variables': { 'enable_wexit_time_destructors': 1, },
   1686           'defines': [
   1687             'BINARY=BINARY_HOST_ME2ME',
   1688           ],
   1689           'dependencies': [
   1690             'remoting_core',
   1691             'remoting_version_resources',
   1692           ],
   1693           'sources': [
   1694             '<(SHARED_INTERMEDIATE_DIR)/remoting/version.rc',
   1695             'host/win/entry_point.cc',
   1696           ],
   1697           'msvs_settings': {
   1698             'VCManifestTool': {
   1699               'AdditionalManifestFiles': [
   1700                 'host/win/dpi_aware.manifest',
   1701               ],
   1702             },
   1703             'VCLinkerTool': {
   1704               'EntryPointSymbol': 'HostEntryPoint',
   1705               'IgnoreAllDefaultLibraries': 'true',
   1706               'ImportLibrary': '$(OutDir)\\lib\\remoting_host_exe.lib',
   1707               'OutputFile': '$(OutDir)\\remoting_host.exe',
   1708               'SubSystem': '2', # /SUBSYSTEM:WINDOWS
   1709             },
   1710           },
   1711         },  # end of target 'remoting_host_exe'
   1712         {
   1713           'target_name': 'remoting_host_messages',
   1714           'type': 'none',
   1715           'dependencies': [
   1716             'remoting_resources',
   1717           ],
   1718           'hard_dependency': 1,
   1719           'direct_dependent_settings': {
   1720             'include_dirs': [
   1721               '<(SHARED_INTERMEDIATE_DIR)',
   1722             ],
   1723           },
   1724           'sources': [
   1725             'host/win/host_messages.mc.jinja2'
   1726           ],
   1727           'rules': [
   1728             {
   1729               'rule_name': 'localize',
   1730               'extension': 'jinja2',
   1731               'outputs': [
   1732                 '<(SHARED_INTERMEDIATE_DIR)/remoting/host/remoting_host_messages.mc',
   1733               ],
   1734               'action': [
   1735                 'python',
   1736                 '<(remoting_localize_path)',
   1737                 '--locale_dir', '<(webapp_locale_dir)',
   1738                 '--template', '<(RULE_INPUT_PATH)',
   1739                 '--output', '<@(_outputs)',
   1740                 '<@(remoting_locales)',
   1741               ],
   1742               'message': 'Localizing the event log messages'
   1743             },
   1744           ],
   1745         },  # end of target 'remoting_host_messages'
   1746 
   1747         # Generates localized the version information resources for the Windows
   1748         # binaries. 
   1749         # The substitution strings are taken from:
   1750         #   - build/util/LASTCHANGE - the last source code revision.
   1751         #   - chrome/VERSION - the major, build & patch versions.
   1752         #   - remoting/VERSION - the chromoting patch version (and overrides
   1753         #       for chrome/VERSION).
   1754         #   - translated webapp strings
   1755         {
   1756           'target_name': 'remoting_version_resources',
   1757           'type': 'none',
   1758           'dependencies': [
   1759             'remoting_resources',
   1760           ],
   1761           'hard_dependency': 1,
   1762           'direct_dependent_settings': {
   1763             'include_dirs': [
   1764               '<(SHARED_INTERMEDIATE_DIR)',
   1765             ],
   1766           },
   1767           'sources': [
   1768             'host/win/version.rc.jinja2'
   1769           ],
   1770           'rules': [
   1771             {
   1772               'rule_name': 'version',
   1773               'extension': 'jinja2',
   1774               'variables': {
   1775                 'lastchange_path': '<(DEPTH)/build/util/LASTCHANGE',
   1776               },
   1777               'inputs': [
   1778                 '<(chrome_version_path)',
   1779                 '<(lastchange_path)',
   1780                 '<(remoting_version_path)',
   1781               ],
   1782               'outputs': [
   1783                 '<(SHARED_INTERMEDIATE_DIR)/remoting/version.rc',
   1784               ],
   1785               'action': [
   1786                 'python',
   1787                 '<(remoting_localize_path)',
   1788                 '--variables', '<(chrome_version_path)',
   1789                 # |remoting_version_path| must be after |chrome_version_path|
   1790                 # because it can contain overrides for the version numbers.
   1791                 '--variables', '<(remoting_version_path)',
   1792                 '--variables', '<(lastchange_path)',
   1793                 '--locale_dir', '<(webapp_locale_dir)',
   1794                 '--template', '<(RULE_INPUT_PATH)',
   1795                 '--output', '<@(_outputs)',
   1796                 '<@(remoting_locales)',
   1797               ],
   1798               'message': 'Localizing the version information'
   1799             },
   1800           ],
   1801         },  # end of target 'remoting_version_resources'
   1802       ],  # end of 'targets'
   1803     }],  # 'OS=="win"'
   1804 
   1805     ['OS=="android"', {
   1806       'targets': [
   1807         {
   1808           'target_name': 'remoting_client_jni',
   1809           'type': 'shared_library',
   1810           'dependencies': [
   1811             'remoting_base',
   1812             'remoting_client',
   1813             'remoting_jingle_glue',
   1814             'remoting_protocol',
   1815             '../google_apis/google_apis.gyp:google_apis',
   1816           ],
   1817           'sources': [
   1818             'client/jni/android_keymap.cc',
   1819             'client/jni/android_keymap.h',
   1820             'client/jni/chromoting_jni_instance.cc',
   1821             'client/jni/chromoting_jni_instance.h',
   1822             'client/jni/chromoting_jni_runtime.cc',
   1823             'client/jni/chromoting_jni_runtime.h',
   1824             'client/jni/jni_frame_consumer.cc',
   1825             'client/jni/jni_frame_consumer.h',
   1826             'client/jni/jni_interface.cc',
   1827           ],
   1828         },  # end of target 'remoting_client_jni'
   1829         {
   1830           'target_name': 'remoting_android_resources',
   1831           'type': 'none',
   1832           'copies': [
   1833             {
   1834               'destination': '<(SHARED_INTERMEDIATE_DIR)/remoting/android/res/drawable',
   1835               'files': [
   1836                 'resources/chromoting128.png',
   1837                 'resources/icon_host.png',
   1838               ],
   1839             },
   1840             {
   1841               'destination': '<(SHARED_INTERMEDIATE_DIR)/remoting/android/res/layout',
   1842               'files': [
   1843                 'resources/layout/main.xml',
   1844                 'resources/layout/host.xml',
   1845                 'resources/layout/pin_dialog.xml',
   1846               ],
   1847             },
   1848             {
   1849               'destination': '<(SHARED_INTERMEDIATE_DIR)/remoting/android/res/menu',
   1850               'files': [
   1851                 'resources/menu/chromoting_actionbar.xml',
   1852                 'resources/menu/desktop_actionbar.xml',
   1853               ],
   1854             },
   1855             {
   1856               'destination': '<(SHARED_INTERMEDIATE_DIR)/remoting/android/res/values',
   1857               'files': [
   1858                 'resources/strings.xml',
   1859                 'resources/styles.xml',
   1860               ],
   1861             },
   1862           ],
   1863         },  # end of target 'remoting_android_resources'
   1864         {
   1865           'target_name': 'remoting_apk',
   1866           'type': 'none',
   1867           'dependencies': [
   1868             'remoting_client_jni',
   1869             'remoting_android_resources',
   1870           ],
   1871           'variables': {
   1872             'apk_name': 'Chromoting',
   1873             'manifest_package_name': 'org.chromium.chromoting',
   1874             'native_lib_target': 'libremoting_client_jni',
   1875             'java_in_dir': 'android/java',
   1876             'additional_res_dirs': [ '<(SHARED_INTERMEDIATE_DIR)/remoting/android/res' ],
   1877             'additional_input_paths': [
   1878               'android/java/src/org/chromium/chromoting/Chromoting.java',
   1879               'android/java/src/org/chromium/chromoting/Desktop.java',
   1880               'android/java/src/org/chromium/chromoting/DesktopView.java',
   1881               'android/java/src/org/chromium/chromoting/jni/JniInterface.java',
   1882               '<(PRODUCT_DIR)/obj/remoting/remoting_android_resources.actions_rules_copies.stamp',
   1883             ],
   1884           },
   1885           'includes': [ '../build/java_apk.gypi' ],
   1886         },  # end of target 'remoting_apk'
   1887       ],  # end of 'targets'
   1888     }],  # 'OS=="android"'
   1889 
   1890     # The host installation is generated only if WiX is available. If
   1891     # component build is used the produced installation will not work due to
   1892     # missing DLLs. We build it anyway to make sure the GYP scripts are executed
   1893     # by the bots.
   1894     ['OS == "win" and wix_exists == "True" and sas_dll_exists == "True"', {
   1895       'targets': [
   1896         {
   1897           'target_name': 'remoting_host_installation',
   1898           'type': 'none',
   1899           'dependencies': [
   1900             'remoting_me2me_host_archive',
   1901           ],
   1902           'sources': [
   1903             '<(PRODUCT_DIR)/remoting-me2me-host-<(OS).zip',
   1904           ],
   1905           'outputs': [
   1906             '<(PRODUCT_DIR)/chromoting.msi',
   1907           ],
   1908           'rules': [
   1909             {
   1910               'rule_name': 'zip2msi',
   1911               'extension': 'zip',
   1912               'inputs': [
   1913                 'tools/zip2msi.py',
   1914               ],
   1915               'outputs': [
   1916                 '<(PRODUCT_DIR)/chromoting.msi',
   1917               ],
   1918               'msvs_cygwin_shell': 0,
   1919               'action': [
   1920                 'python', 'tools/zip2msi.py',
   1921                 '--wix_path', '<(wix_path)',
   1922                 '--intermediate_dir', '<(INTERMEDIATE_DIR)/installation',
   1923                 '<(RULE_INPUT_PATH)',
   1924                 '<@(_outputs)',
   1925               ],
   1926               'message': 'Generating <@(_outputs)',
   1927             },
   1928           ],
   1929         },  # end of target 'remoting_host_installation'
   1930 
   1931         {
   1932           'target_name': 'remoting_me2me_host_archive',
   1933           'type': 'none',
   1934           'dependencies': [
   1935             'remoting_core',
   1936             'remoting_desktop',
   1937             'remoting_host_exe',
   1938             'remoting_native_messaging_manifest',
   1939           ],
   1940           'compiled_inputs': [
   1941             '<(PRODUCT_DIR)/remoting_core.dll',
   1942             '<(PRODUCT_DIR)/remoting_desktop.exe',
   1943             '<(PRODUCT_DIR)/remoting_host.exe',
   1944           ],
   1945           'compiled_inputs_dst': [
   1946             'files/remoting_core.dll',
   1947             'files/remoting_desktop.exe',
   1948             'files/remoting_host.exe',
   1949           ],
   1950           'conditions': [
   1951             ['buildtype == "Official"', {
   1952               'defs': [
   1953                 'OFFICIAL_BUILD=1',
   1954               ],
   1955             }, {  # else buildtype != "Official"
   1956               'defs': [
   1957                 'OFFICIAL_BUILD=0',
   1958               ],
   1959             }],
   1960           ],
   1961           'defs': [
   1962             'BRANDING=<(branding)',
   1963             'DAEMON_CONTROLLER_CLSID={<(daemon_controller_clsid)}',
   1964             'RDP_DESKTOP_SESSION_CLSID={<(rdp_desktop_session_clsid)}',
   1965             'VERSION=<(version_full)',
   1966           ],
   1967           'generated_files': [
   1968             '<@(_compiled_inputs)',
   1969             '<(sas_dll_path)/sas.dll',
   1970             '<(PRODUCT_DIR)/remoting/native_messaging_manifest.json',
   1971             'resources/chromoting.ico',
   1972           ],
   1973           'generated_files_dst': [
   1974             '<@(_compiled_inputs_dst)',
   1975             'files/sas.dll',
   1976             'files/native_messaging_manifest.json',
   1977             'files/chromoting.ico',
   1978           ],
   1979           'zip_path': '<(PRODUCT_DIR)/remoting-me2me-host-<(OS).zip',
   1980           'outputs': [
   1981             '<(_zip_path)',
   1982           ],
   1983           'actions': [
   1984             {
   1985               'action_name': 'Zip installer files for signing',
   1986               'temp_dir': '<(INTERMEDIATE_DIR)/installation',
   1987               'source_files': [
   1988                 '<@(remoting_host_installer_win_files)',
   1989               ],
   1990               'inputs': [
   1991                 '<@(_compiled_inputs)',
   1992                 '<(sas_dll_path)/sas.dll',
   1993                 '<@(_source_files)',
   1994                 'host/installer/build-installer-archive.py',
   1995                 'resources/chromoting.ico',
   1996               ],
   1997               'outputs': [
   1998                 '<(_zip_path)',
   1999               ],
   2000               'action': [
   2001                 'python',
   2002                 'host/installer/build-installer-archive.py',
   2003                 '<(_temp_dir)',
   2004                 '<(_zip_path)',
   2005                 '--source-file-roots',
   2006                 '<@(remoting_host_installer_win_roots)',
   2007                 '--source-files',
   2008                 '<@(_source_files)',
   2009                 '--generated-files',
   2010                 '<@(_generated_files)',
   2011                 '--generated-files-dst',
   2012                 '<@(_generated_files_dst)',
   2013                 '--defs',
   2014                 '<@(_defs)',
   2015               ],
   2016             },
   2017           ],  # actions
   2018         }, # end of target 'remoting_me2me_host_archive'
   2019       ],  # end of 'targets'
   2020     }],  # '<(wix_path) != ""'
   2021 
   2022   ],  # end of 'conditions'
   2023 
   2024   'targets': [
   2025     {
   2026       'target_name': 'remoting_breakpad',
   2027       'type': 'static_library',
   2028       'variables': { 'enable_wexit_time_destructors': 1, },
   2029       'dependencies': [
   2030         '../base/base.gyp:base',
   2031       ],
   2032       'sources': [
   2033         'base/breakpad.h',
   2034         'base/breakpad_linux.cc',
   2035         'base/breakpad_mac.mm',
   2036         'base/breakpad_win.cc',
   2037       ],
   2038       'conditions': [
   2039         ['OS=="mac"', {
   2040           'dependencies': [
   2041             '../breakpad/breakpad.gyp:breakpad',
   2042           ],
   2043         }],
   2044         ['OS=="win"', {
   2045           'dependencies': [
   2046             '../breakpad/breakpad.gyp:breakpad_handler',
   2047           ],
   2048         }],
   2049       ],
   2050     },  # end of target 'remoting_breakpad'
   2051 
   2052     {
   2053       'target_name': 'remoting_client_plugin',
   2054       'type': 'static_library',
   2055       'variables': { 'enable_wexit_time_destructors': 1, },
   2056       'defines': [
   2057         'HAVE_STDINT_H',  # Required by on2_integer.h
   2058       ],
   2059       'dependencies': [
   2060         'remoting_base',
   2061         'remoting_client',
   2062         'remoting_jingle_glue',
   2063         '../net/net.gyp:net',
   2064         '../ppapi/ppapi.gyp:ppapi_cpp_objects',
   2065         '../skia/skia.gyp:skia',
   2066         '../third_party/webrtc/modules/modules.gyp:desktop_capture',
   2067       ],
   2068       'sources': [
   2069         'client/plugin/chromoting_instance.cc',
   2070         'client/plugin/chromoting_instance.h',
   2071         'client/plugin/mac_key_event_processor.cc',
   2072         'client/plugin/mac_key_event_processor.h',
   2073         'client/plugin/pepper_audio_player.cc',
   2074         'client/plugin/pepper_audio_player.h',
   2075         'client/plugin/pepper_entrypoints.cc',
   2076         'client/plugin/pepper_entrypoints.h',
   2077         'client/plugin/pepper_input_handler.cc',
   2078         'client/plugin/pepper_input_handler.h',
   2079         'client/plugin/pepper_network_manager.cc',
   2080         'client/plugin/pepper_network_manager.h',
   2081         'client/plugin/pepper_packet_socket_factory.cc',
   2082         'client/plugin/pepper_packet_socket_factory.h',
   2083         'client/plugin/pepper_plugin_thread_delegate.cc',
   2084         'client/plugin/pepper_plugin_thread_delegate.h',
   2085         'client/plugin/pepper_port_allocator.cc',
   2086         'client/plugin/pepper_port_allocator.h',
   2087         'client/plugin/pepper_token_fetcher.cc',
   2088         'client/plugin/pepper_token_fetcher.h',
   2089         'client/plugin/pepper_view.cc',
   2090         'client/plugin/pepper_view.h',
   2091         'client/plugin/pepper_util.cc',
   2092         'client/plugin/pepper_util.h',
   2093         'client/plugin/pepper_signal_strategy.cc',
   2094         'client/plugin/pepper_signal_strategy.h',
   2095       ],
   2096     },  # end of target 'remoting_client_plugin'
   2097 
   2098     {
   2099       'target_name': 'remoting_host_event_logger',
   2100       'type': 'static_library',
   2101       'variables': { 'enable_wexit_time_destructors': 1, },
   2102       'dependencies': [
   2103         'remoting_base',
   2104       ],
   2105       'sources': [
   2106         'host/host_event_logger.h',
   2107         'host/host_event_logger_posix.cc',
   2108         'host/host_event_logger_win.cc',
   2109       ],
   2110       'conditions': [
   2111         ['OS=="win"', {
   2112           'dependencies': [
   2113             'remoting_host_messages',
   2114           ],
   2115           'output_dir': '<(SHARED_INTERMEDIATE_DIR)/remoting/host',
   2116           'sources': [
   2117             '<(_output_dir)/remoting_host_messages.mc',
   2118           ],
   2119           'include_dirs': [
   2120             '<(_output_dir)',
   2121           ],
   2122           'direct_dependent_settings': {
   2123             'include_dirs': [
   2124               '<(_output_dir)',
   2125             ],
   2126           },
   2127           'rules': [
   2128             # Rule to run the message compiler.
   2129             {
   2130               'rule_name': 'message_compiler',
   2131               'extension': 'mc',
   2132               'inputs': [ ],
   2133               'outputs': [
   2134                 '<(_output_dir)/remoting_host_messages.h',
   2135                 '<(_output_dir)/remoting_host_messages.rc',
   2136               ],
   2137               'msvs_cygwin_shell': 0,
   2138               'action': [
   2139                 'mc.exe',
   2140                 '-h', '<(_output_dir)',
   2141                 '-r', '<(_output_dir)/.',
   2142                 '-u',
   2143                 '<(RULE_INPUT_PATH)',
   2144               ],
   2145               'process_outputs_as_sources': 1,
   2146               'message': 'Running message compiler on <(RULE_INPUT_PATH).',
   2147             },
   2148           ],
   2149         }],
   2150       ],  # end of 'conditions'
   2151     },  # end of target 'remoting_host_event_logger'
   2152 
   2153     {
   2154       'target_name': 'remoting_webapp',
   2155       'type': 'none',
   2156       'variables': {
   2157         'remoting_webapp_patch_files': [
   2158           'webapp/appsv2.patch',
   2159         ],
   2160         'remoting_webapp_apps_v2_js_files': [
   2161           'webapp/background.js',
   2162         ],
   2163       },
   2164       'dependencies': [
   2165         'remoting_resources',
   2166         'remoting_host_plugin',
   2167       ],
   2168       'locale_files': [
   2169         '<@(remoting_webapp_locale_files)',
   2170       ],
   2171       'conditions': [
   2172         ['enable_remoting_host==1', {
   2173           'locale_files': [
   2174             '<@(remoting_locale_files)',
   2175           ],
   2176           'variables': {
   2177               'plugin_path': '<(PRODUCT_DIR)/<(host_plugin_prefix)remoting_host_plugin.<(host_plugin_extension)',
   2178           },
   2179         }, {
   2180           'variables': {
   2181               'plugin_path': '',
   2182           },
   2183           'dependencies!': [
   2184             'remoting_host_plugin',
   2185           ],
   2186         }],
   2187       ],
   2188       'actions': [
   2189         {
   2190           'action_name': 'Build Remoting WebApp',
   2191           'output_dir': '<(PRODUCT_DIR)/remoting/remoting.webapp',
   2192           'zip_path': '<(PRODUCT_DIR)/remoting-webapp.zip',
   2193           'inputs': [
   2194             'webapp/build-webapp.py',
   2195             '<(chrome_version_path)',
   2196             '<(remoting_version_path)',
   2197             '<@(remoting_webapp_files)',
   2198             '<@(remoting_webapp_js_files)',
   2199             '<@(_locale_files)',
   2200           ],
   2201           'conditions': [
   2202             ['enable_remoting_host==1', {
   2203               'inputs': [
   2204                 '<(plugin_path)',
   2205               ],
   2206             }],
   2207           ],
   2208           'outputs': [
   2209             '<(_output_dir)',
   2210             '<(_zip_path)',
   2211           ],
   2212           'action': [
   2213             'python', 'webapp/build-webapp.py',
   2214             '<(buildtype)',
   2215             '<(version_full)',
   2216             '<(host_plugin_mime_type)',
   2217             '<(_output_dir)',
   2218             '<(_zip_path)',
   2219             '<(plugin_path)',
   2220             '<@(remoting_webapp_files)',
   2221             '<@(remoting_webapp_js_files)',
   2222             '--locales',
   2223             '<@(_locale_files)',
   2224           ],
   2225           'msvs_cygwin_shell': 0,
   2226         },
   2227       ],
   2228       'target_conditions': [
   2229         # We cannot currently build the appsv2 version of WebApp on Windows as
   2230         # there isn't a version of the "patch" tool available on windows. We
   2231         # should remove this condition when we remove the reliance on the 'patch'.
   2232 
   2233         # We define this in a 'target_conditions' section because 'plugin_path'
   2234         # is defined in a 'conditions' section so its value is not available
   2235         # when gyp processes the 'actions' in a 'conditions" section.
   2236         ['OS != "win"', {
   2237           'actions': [
   2238             {
   2239               'action_name': 'Build Remoting WebApp V2',
   2240               'output_dir': '<(PRODUCT_DIR)/remoting/remoting.webapp.v2',
   2241               'zip_path': '<(PRODUCT_DIR)/remoting-webapp.v2.zip',
   2242               'inputs': [
   2243                 'webapp/build-webapp.py',
   2244                 '<(chrome_version_path)',
   2245                 '<(remoting_version_path)',
   2246                 '<@(remoting_webapp_apps_v2_js_files)',
   2247                 '<@(remoting_webapp_files)',
   2248                 '<@(remoting_webapp_js_files)',
   2249                 '<@(remoting_webapp_locale_files)',
   2250                 '<@(remoting_webapp_patch_files)',
   2251               ],
   2252               'conditions': [
   2253                 ['enable_remoting_host==1', {
   2254                   'inputs': [
   2255                     '<(plugin_path)',
   2256                   ],
   2257                 }],
   2258               ],
   2259               'outputs': [
   2260                 '<(_output_dir)',
   2261                 '<(_zip_path)',
   2262               ],
   2263               'action': [
   2264                 'python', 'webapp/build-webapp.py',
   2265                 '<(buildtype)',
   2266                 '<(version_full)',
   2267                 '<(host_plugin_mime_type)',
   2268                 '<(_output_dir)',
   2269                 '<(_zip_path)',
   2270                 '<(plugin_path)',
   2271                 '<@(remoting_webapp_apps_v2_js_files)',
   2272                 '<@(remoting_webapp_files)',
   2273                 '<@(remoting_webapp_js_files)',
   2274                 '--locales',
   2275                 '<@(remoting_webapp_locale_files)',
   2276                 '--patches',
   2277                 '<@(remoting_webapp_patch_files)',
   2278               ],
   2279               'msvs_cygwin_shell': 0,
   2280             },
   2281           ],
   2282         }],
   2283       ],
   2284     }, # end of target 'remoting_webapp'
   2285 
   2286     # Generates 'native_messaging_manifest.json' to be included in the
   2287     # installation.
   2288     {
   2289       'target_name': 'remoting_native_messaging_manifest',
   2290       'type': 'none',
   2291       'dependencies': [
   2292         'remoting_resources',
   2293       ],
   2294       'variables': {
   2295         'input': 'host/setup/native_messaging_manifest.json',
   2296         'output': '<(PRODUCT_DIR)/remoting/native_messaging_manifest.json',
   2297       },
   2298       'conditions': [
   2299         [ 'OS=="win"', {
   2300           'variables': {
   2301             'native_messaging_host_path': 'remoting_host.exe',
   2302           },
   2303         }, {
   2304           'variables': {
   2305             'native_messaging_host_path': '/opt/google/chrome-remote-desktop/native-messaging-host',
   2306           },
   2307         }],
   2308       ],
   2309       'actions': [
   2310         {
   2311           'action_name': 'generate_manifest',
   2312           'inputs': [
   2313             '<(remoting_localize_path)',
   2314             '<(input)',
   2315           ],
   2316           'outputs': [
   2317             '<(output)',
   2318           ],
   2319           'action': [
   2320             'python',
   2321             '<(remoting_localize_path)',
   2322             '--define', 'NATIVE_MESSAGING_HOST_PATH=<(native_messaging_host_path)',
   2323             '--locale_dir', '<(webapp_locale_dir)',
   2324             '--template', '<(input)',
   2325             '--locale_output',
   2326             '<(output)',
   2327             '--encoding', 'utf-8',
   2328             'en',
   2329           ],
   2330         },
   2331       ],
   2332     },  # end of target 'remoting_native_messaging_manifest'
   2333     {
   2334       'target_name': 'remoting_resources',
   2335       'type': 'none',
   2336       'variables': {
   2337         'grit_out_dir': '<(SHARED_INTERMEDIATE_DIR)',
   2338         'grit_resource_ids': 'resources/resource_ids',
   2339         'sources': [
   2340           'base/resources_unittest.cc',
   2341           'host/continue_window_mac.mm',
   2342           'host/disconnect_window_mac.mm',
   2343           'host/installer/mac/uninstaller/remoting_uninstaller-InfoPlist.strings.jinja2',
   2344           'host/mac/me2me_preference_pane-InfoPlist.strings.jinja2',
   2345           'host/plugin/host_plugin-InfoPlist.strings.jinja2',
   2346           'host/win/core.rc.jinja2',
   2347           'host/win/host_messages.mc.jinja2',
   2348           'host/win/version.rc.jinja2',
   2349           'webapp/butter_bar.js',
   2350           'webapp/client_screen.js',
   2351           'webapp/error.js',
   2352           'webapp/host_list.js',
   2353           'webapp/host_setup_dialog.js',
   2354           'webapp/host_table_entry.js',
   2355           'webapp/main.html',
   2356           'webapp/manifest.json',
   2357           'webapp/paired_client_manager.js',
   2358           'webapp/remoting.js',
   2359         ],
   2360       },
   2361       'actions': [
   2362         {
   2363           'action_name': 'verify_resources',
   2364           'inputs': [
   2365             'resources/remoting_strings.grd',
   2366             'tools/verify_resources.py',
   2367             '<@(sources)'
   2368           ],
   2369           'outputs': [
   2370             '<(PRODUCT_DIR)/remoting_resources_verified.stamp',
   2371           ],
   2372           'action': [
   2373             'python',
   2374             'tools/verify_resources.py',
   2375             '-t', '<(PRODUCT_DIR)/remoting_resources_verified.stamp',
   2376             '-r', 'resources/remoting_strings.grd',
   2377             '<@(sources)',
   2378          ],
   2379         },
   2380         {
   2381           'action_name': 'remoting_strings',
   2382           'variables': {
   2383             'grit_grd_file': 'resources/remoting_strings.grd',
   2384           },
   2385           'includes': [ '../build/grit_action.gypi' ],
   2386         },
   2387         {
   2388           'action_name': 'copy_locales',
   2389           'variables': {
   2390             'copy_output_dir%': '<(PRODUCT_DIR)',
   2391           },
   2392           'inputs': [
   2393             'tools/build/remoting_copy_locales.py',
   2394             '<!@pymod_do_main(remoting_copy_locales -i -p <(OS) -g <(grit_out_dir) <(remoting_locales))'
   2395           ],
   2396           'outputs': [
   2397             '<!@pymod_do_main(remoting_copy_locales -o -p <(OS) -x <(copy_output_dir) <(remoting_locales))'
   2398           ],
   2399           'action': [
   2400             'python',
   2401             'tools/build/remoting_copy_locales.py',
   2402             '-p', '<(OS)',
   2403             '-g', '<(grit_out_dir)',
   2404             '-x', '<(copy_output_dir)/.',
   2405             '<@(remoting_locales)',
   2406           ],
   2407         }
   2408       ],
   2409       'includes': [ '../build/grit_target.gypi' ],
   2410     },  # end of target 'remoting_resources'
   2411 
   2412     {
   2413       'target_name': 'remoting_base',
   2414       'type': 'static_library',
   2415       'variables': { 'enable_wexit_time_destructors': 1, },
   2416       'dependencies': [
   2417         '../base/base.gyp:base',
   2418         '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
   2419         '../ui/ui.gyp:ui',
   2420         '../net/net.gyp:net',
   2421         '../skia/skia.gyp:skia',
   2422         '../third_party/libvpx/libvpx.gyp:libvpx',
   2423         '../third_party/libyuv/libyuv.gyp:libyuv',
   2424         '../third_party/opus/opus.gyp:opus',
   2425         '../third_party/protobuf/protobuf.gyp:protobuf_lite',
   2426         '../third_party/speex/speex.gyp:libspeex',
   2427         '../media/media.gyp:media',
   2428         '../media/media.gyp:shared_memory_support',
   2429         'remoting_jingle_glue',
   2430         'remoting_resources',
   2431         'proto/chromotocol.gyp:chromotocol_proto_lib',
   2432         '../third_party/webrtc/modules/modules.gyp:desktop_capture',
   2433       ],
   2434       'export_dependent_settings': [
   2435         '../base/base.gyp:base',
   2436         '../net/net.gyp:net',
   2437         '../skia/skia.gyp:skia',
   2438         '../third_party/protobuf/protobuf.gyp:protobuf_lite',
   2439         'proto/chromotocol.gyp:chromotocol_proto_lib',
   2440       ],
   2441       # This target needs a hard dependency because dependent targets
   2442       # depend on chromotocol_proto_lib for headers.
   2443       'hard_dependency': 1,
   2444       'sources': [
   2445         'base/auth_token_util.cc',
   2446         'base/auth_token_util.h',
   2447         'base/auto_thread.cc',
   2448         'base/auto_thread.h',
   2449         'base/auto_thread_task_runner.cc',
   2450         'base/auto_thread_task_runner.h',
   2451         'base/capabilities.cc',
   2452         'base/capabilities.h',
   2453         'base/compound_buffer.cc',
   2454         'base/compound_buffer.h',
   2455         'base/constants.cc',
   2456         'base/constants.h',
   2457         'base/plugin_thread_task_runner.cc',
   2458         'base/plugin_thread_task_runner.h',
   2459         'base/rate_counter.cc',
   2460         'base/rate_counter.h',
   2461         'base/resources.h',
   2462         'base/resources_linux.cc',
   2463         'base/resources_mac.cc',
   2464         'base/resources_win.cc',
   2465         'base/rsa_key_pair.cc',
   2466         'base/rsa_key_pair.h',
   2467         'base/running_average.cc',
   2468         'base/running_average.h',
   2469         'base/scoped_sc_handle_win.h',
   2470         'base/socket_reader.cc',
   2471         'base/socket_reader.h',
   2472         'base/typed_buffer.h',
   2473         'base/url_request_context.cc',
   2474         'base/url_request_context.h',
   2475         'base/util.cc',
   2476         'base/util.h',
   2477         'base/vlog_net_log.cc',
   2478         'base/vlog_net_log.h',
   2479         'codec/audio_decoder.cc',
   2480         'codec/audio_decoder.h',
   2481         'codec/audio_decoder_opus.cc',
   2482         'codec/audio_decoder_opus.h',
   2483         'codec/audio_decoder_speex.cc',
   2484         'codec/audio_decoder_speex.h',
   2485         'codec/audio_decoder_verbatim.cc',
   2486         'codec/audio_decoder_verbatim.h',
   2487         'codec/audio_encoder.h',
   2488         'codec/audio_encoder_opus.cc',
   2489         'codec/audio_encoder_opus.h',
   2490         'codec/audio_encoder_speex.cc',
   2491         'codec/audio_encoder_speex.h',
   2492         'codec/audio_encoder_verbatim.cc',
   2493         'codec/audio_encoder_verbatim.h',
   2494         'codec/video_decoder.h',
   2495         'codec/video_decoder_verbatim.cc',
   2496         'codec/video_decoder_verbatim.h',
   2497         'codec/video_decoder_vp8.cc',
   2498         'codec/video_decoder_vp8.h',
   2499         'codec/video_encoder.h',
   2500         'codec/video_encoder_verbatim.cc',
   2501         'codec/video_encoder_verbatim.h',
   2502         'codec/video_encoder_vp8.cc',
   2503         'codec/video_encoder_vp8.h',
   2504       ],
   2505     },  # end of target 'remoting_base'
   2506 
   2507     {
   2508       'target_name': 'remoting_host_logging',
   2509       'type': 'static_library',
   2510       'variables': { 'enable_wexit_time_destructors': 1, },
   2511       'dependencies': [
   2512         '../base/base.gyp:base',
   2513       ],
   2514       'sources': [
   2515         'host/branding.cc',
   2516         'host/branding.h',
   2517         'host/logging.h',
   2518         'host/logging_posix.cc',
   2519         'host/logging_win.cc',
   2520       ],
   2521     },  # end of target 'remoting_host_logging'
   2522 
   2523     {
   2524       'target_name': 'remoting_client',
   2525       'type': 'static_library',
   2526       'variables': { 'enable_wexit_time_destructors': 1, },
   2527       'dependencies': [
   2528         'remoting_base',
   2529         'remoting_jingle_glue',
   2530         'remoting_protocol',
   2531         '../third_party/webrtc/modules/modules.gyp:desktop_capture',
   2532       ],
   2533       'sources': [
   2534         'client/audio_decode_scheduler.cc',
   2535         'client/audio_decode_scheduler.h',
   2536         'client/audio_player.cc',
   2537         'client/audio_player.h',
   2538         'client/chromoting_client.cc',
   2539         'client/chromoting_client.h',
   2540         'client/chromoting_stats.cc',
   2541         'client/chromoting_stats.h',
   2542         'client/client_config.cc',
   2543         'client/client_config.h',
   2544         'client/client_context.cc',
   2545         'client/client_context.h',
   2546         'client/client_user_interface.h',
   2547         'client/frame_consumer.h',
   2548         'client/frame_consumer_proxy.cc',
   2549         'client/frame_consumer_proxy.h',
   2550         'client/frame_producer.h',
   2551         'client/key_event_mapper.cc',
   2552         'client/key_event_mapper.h',
   2553         'client/rectangle_update_decoder.cc',
   2554         'client/rectangle_update_decoder.h',
   2555       ],
   2556     },  # end of target 'remoting_client'
   2557 
   2558     {
   2559       'target_name': 'remoting_jingle_glue',
   2560       'type': 'static_library',
   2561       'variables': { 'enable_wexit_time_destructors': 1, },
   2562       'dependencies': [
   2563         '../base/base.gyp:base',
   2564         '../jingle/jingle.gyp:jingle_glue',
   2565         '../jingle/jingle.gyp:notifier',
   2566         '../third_party/libjingle/libjingle.gyp:libjingle',
   2567       ],
   2568       'export_dependent_settings': [
   2569         '../third_party/libjingle/libjingle.gyp:libjingle',
   2570       ],
   2571       'sources': [
   2572         'jingle_glue/chromium_port_allocator.cc',
   2573         'jingle_glue/chromium_port_allocator.h',
   2574         'jingle_glue/chromium_socket_factory.cc',
   2575         'jingle_glue/chromium_socket_factory.h',
   2576         'jingle_glue/iq_sender.cc',
   2577         'jingle_glue/iq_sender.h',
   2578         'jingle_glue/jingle_info_request.cc',
   2579         'jingle_glue/jingle_info_request.h',
   2580         'jingle_glue/network_settings.h',
   2581         'jingle_glue/signal_strategy.h',
   2582         'jingle_glue/xmpp_signal_strategy.cc',
   2583         'jingle_glue/xmpp_signal_strategy.h',
   2584       ],
   2585     },  # end of target 'remoting_jingle_glue'
   2586 
   2587     {
   2588       'target_name': 'remoting_protocol',
   2589       'type': 'static_library',
   2590       'variables': { 'enable_wexit_time_destructors': 1, },
   2591       'dependencies': [
   2592         'remoting_base',
   2593         'remoting_jingle_glue',
   2594         '../crypto/crypto.gyp:crypto',
   2595         '../jingle/jingle.gyp:jingle_glue',
   2596         '../net/net.gyp:net',
   2597       ],
   2598       'export_dependent_settings': [
   2599         'remoting_jingle_glue',
   2600       ],
   2601       'sources': [
   2602         'protocol/audio_reader.cc',
   2603         'protocol/audio_reader.h',
   2604         'protocol/audio_stub.h',
   2605         'protocol/audio_writer.cc',
   2606         'protocol/audio_writer.h',
   2607         'protocol/auth_util.cc',
   2608         'protocol/auth_util.h',
   2609         'protocol/authentication_method.cc',
   2610         'protocol/authentication_method.h',
   2611         'protocol/authenticator.cc',
   2612         'protocol/authenticator.h',
   2613         'protocol/buffered_socket_writer.cc',
   2614         'protocol/buffered_socket_writer.h',
   2615         'protocol/channel_authenticator.h',
   2616         'protocol/channel_dispatcher_base.cc',
   2617         'protocol/channel_dispatcher_base.h',
   2618         'protocol/channel_multiplexer.cc',
   2619         'protocol/channel_multiplexer.h',
   2620         'protocol/client_control_dispatcher.cc',
   2621         'protocol/client_control_dispatcher.h',
   2622         'protocol/client_event_dispatcher.cc',
   2623         'protocol/client_event_dispatcher.h',
   2624         'protocol/client_stub.h',
   2625         'protocol/clipboard_echo_filter.cc',
   2626         'protocol/clipboard_echo_filter.h',
   2627         'protocol/clipboard_filter.cc',
   2628         'protocol/clipboard_filter.h',
   2629         'protocol/clipboard_stub.h',
   2630         'protocol/clipboard_thread_proxy.cc',
   2631         'protocol/clipboard_thread_proxy.h',
   2632         'protocol/connection_to_client.cc',
   2633         'protocol/connection_to_client.h',
   2634         'protocol/connection_to_host.cc',
   2635         'protocol/connection_to_host.h',
   2636         'protocol/content_description.cc',
   2637         'protocol/content_description.h',
   2638         'protocol/errors.h',
   2639         'protocol/host_control_dispatcher.cc',
   2640         'protocol/host_control_dispatcher.h',
   2641         'protocol/host_event_dispatcher.cc',
   2642         'protocol/host_event_dispatcher.h',
   2643         'protocol/host_stub.h',
   2644         'protocol/input_event_tracker.cc',
   2645         'protocol/input_event_tracker.h',
   2646         'protocol/input_filter.cc',
   2647         'protocol/input_filter.h',
   2648         'protocol/input_stub.h',
   2649         'protocol/it2me_host_authenticator_factory.cc',
   2650         'protocol/it2me_host_authenticator_factory.h',
   2651         'protocol/jingle_messages.cc',
   2652         'protocol/jingle_messages.h',
   2653         'protocol/jingle_session.cc',
   2654         'protocol/jingle_session.h',
   2655         'protocol/jingle_session_manager.cc',
   2656         'protocol/jingle_session_manager.h',
   2657         'protocol/libjingle_transport_factory.cc',
   2658         'protocol/libjingle_transport_factory.h',
   2659         'protocol/me2me_host_authenticator_factory.cc',
   2660         'protocol/me2me_host_authenticator_factory.h',
   2661         'protocol/message_decoder.cc',
   2662         'protocol/message_decoder.h',
   2663         'protocol/message_reader.cc',
   2664         'protocol/message_reader.h',
   2665         'protocol/mouse_input_filter.cc',
   2666         'protocol/mouse_input_filter.h',
   2667         'protocol/name_value_map.h',
   2668         'protocol/negotiating_authenticator_base.cc',
   2669         'protocol/negotiating_authenticator_base.h',
   2670         'protocol/negotiating_client_authenticator.cc',
   2671         'protocol/negotiating_client_authenticator.h',
   2672         'protocol/negotiating_host_authenticator.cc',
   2673         'protocol/negotiating_host_authenticator.h',
   2674         'protocol/pairing_authenticator_base.cc',
   2675         'protocol/pairing_authenticator_base.h',
   2676         'protocol/pairing_client_authenticator.cc',
   2677         'protocol/pairing_client_authenticator.h',
   2678         'protocol/pairing_host_authenticator.cc',
   2679         'protocol/pairing_host_authenticator.h',
   2680         'protocol/pairing_registry.cc',
   2681         'protocol/pairing_registry.h',
   2682         'protocol/protobuf_video_reader.cc',
   2683         'protocol/protobuf_video_reader.h',
   2684         'protocol/protobuf_video_writer.cc',
   2685         'protocol/protobuf_video_writer.h',
   2686         'protocol/session.h',
   2687         'protocol/session_config.cc',
   2688         'protocol/session_config.h',
   2689         'protocol/session_manager.h',
   2690         'protocol/ssl_hmac_channel_authenticator.cc',
   2691         'protocol/ssl_hmac_channel_authenticator.h',
   2692         'protocol/transport.cc',
   2693         'protocol/transport.h',
   2694         'protocol/transport_config.cc',
   2695         'protocol/transport_config.h',
   2696         'protocol/util.cc',
   2697         'protocol/util.h',
   2698         'protocol/third_party_authenticator_base.cc',
   2699         'protocol/third_party_authenticator_base.h',
   2700         'protocol/third_party_client_authenticator.cc',
   2701         'protocol/third_party_client_authenticator.h',
   2702         'protocol/third_party_host_authenticator.cc',
   2703         'protocol/third_party_host_authenticator.h',
   2704         'protocol/v2_authenticator.cc',
   2705         'protocol/v2_authenticator.h',
   2706         'protocol/video_reader.cc',
   2707         'protocol/video_reader.h',
   2708         'protocol/video_stub.h',
   2709         'protocol/video_writer.cc',
   2710         'protocol/video_writer.h',
   2711       ],
   2712     },  # end of target 'remoting_protocol'
   2713 
   2714     # Remoting unit tests
   2715     {
   2716       'target_name': 'remoting_unittests',
   2717       'type': 'executable',
   2718       'dependencies': [
   2719         '../base/base.gyp:base',
   2720         '../base/base.gyp:base_i18n',
   2721         '../base/base.gyp:test_support_base',
   2722         '../ipc/ipc.gyp:ipc',
   2723         '../net/net.gyp:net_test_support',
   2724         '../ppapi/ppapi.gyp:ppapi_cpp',
   2725         '../testing/gmock.gyp:gmock',
   2726         '../testing/gtest.gyp:gtest',
   2727         '../ui/ui.gyp:ui',
   2728         'remoting_base',
   2729         'remoting_breakpad',
   2730         'remoting_client',
   2731         'remoting_client_plugin',
   2732         'remoting_host',
   2733         'remoting_host_event_logger',
   2734         'remoting_host_setup_base',
   2735         'remoting_jingle_glue',
   2736         'remoting_protocol',
   2737         'remoting_resources',
   2738         '../third_party/webrtc/modules/modules.gyp:desktop_capture',
   2739       ],
   2740       'defines': [
   2741         'VERSION=<(version_full)',
   2742       ],
   2743       'include_dirs': [
   2744         '../testing/gmock/include',
   2745       ],
   2746       'sources': [
   2747         '../chrome/test/base/run_all_remoting_unittests.cc',
   2748         'base/auth_token_util_unittest.cc',
   2749         'base/auto_thread_task_runner_unittest.cc',
   2750         'base/auto_thread_unittest.cc',
   2751         'base/breakpad_win_unittest.cc',
   2752         'base/capabilities_unittest.cc',
   2753         'base/compound_buffer_unittest.cc',
   2754         'base/rate_counter_unittest.cc',
   2755         'base/resources_unittest.cc',
   2756         'base/rsa_key_pair_unittest.cc',
   2757         'base/running_average_unittest.cc',
   2758         'base/test_rsa_key_pair.h',
   2759         'base/typed_buffer_unittest.cc',
   2760         'base/util_unittest.cc',
   2761         'client/audio_player_unittest.cc',
   2762         'client/key_event_mapper_unittest.cc',
   2763         'client/plugin/mac_key_event_processor_unittest.cc',
   2764         'codec/audio_encoder_opus_unittest.cc',
   2765         'codec/codec_test.cc',
   2766         'codec/codec_test.h',
   2767         'codec/video_decoder_vp8_unittest.cc',
   2768         'codec/video_encoder_verbatim_unittest.cc',
   2769         'codec/video_encoder_vp8_unittest.cc',
   2770         'host/audio_silence_detector_unittest.cc',
   2771         'host/branding.cc',
   2772         'host/branding.h',
   2773         'host/capture_scheduler_unittest.cc',
   2774         'host/chromoting_host_context_unittest.cc',
   2775         'host/chromoting_host_unittest.cc',
   2776         'host/client_session_unittest.cc',
   2777         'host/config_file_watcher_unittest.cc',
   2778         'host/daemon_process.cc',
   2779         'host/daemon_process.h',
   2780         'host/daemon_process_unittest.cc',
   2781         'host/desktop_process.cc',
   2782         'host/desktop_process.h',
   2783         'host/desktop_process_unittest.cc',
   2784         'host/desktop_session.cc',
   2785         'host/desktop_session.h',
   2786         'host/desktop_session_agent.cc',
   2787         'host/desktop_session_agent.h',
   2788         'host/heartbeat_sender_unittest.cc',
   2789         'host/host_status_sender_unittest.cc',
   2790         'host/host_change_notification_listener_unittest.cc',
   2791         'host/host_mock_objects.cc',
   2792         'host/host_mock_objects.h',
   2793         'host/host_status_monitor_fake.h',
   2794         'host/ipc_desktop_environment_unittest.cc',
   2795         'host/json_host_config_unittest.cc',
   2796         'host/linux/x_server_clipboard_unittest.cc',
   2797         'host/local_input_monitor_unittest.cc',
   2798         'host/log_to_server_unittest.cc',
   2799         'host/pairing_registry_delegate_linux_unittest.cc',
   2800         'host/pairing_registry_delegate_win_unittest.cc',
   2801         'host/pin_hash_unittest.cc',
   2802         'host/policy_hack/fake_policy_watcher.cc',
   2803         'host/policy_hack/fake_policy_watcher.h',
   2804         'host/policy_hack/mock_policy_callback.cc',
   2805         'host/policy_hack/mock_policy_callback.h',
   2806         'host/policy_hack/policy_watcher_unittest.cc',
   2807         'host/register_support_host_request_unittest.cc',
   2808         'host/remote_input_filter_unittest.cc',
   2809         'host/resizing_host_observer_unittest.cc',
   2810         'host/screen_capturer_fake.cc',
   2811         'host/screen_capturer_fake.h',
   2812         'host/screen_resolution_unittest.cc',
   2813         'host/server_log_entry_unittest.cc',
   2814         'host/setup/native_messaging_host_unittest.cc',
   2815         'host/setup/native_messaging_reader_unittest.cc',
   2816         'host/setup/native_messaging_writer_unittest.cc',
   2817         'host/setup/oauth_helper_unittest.cc',
   2818         'host/setup/pin_validator_unittest.cc',
   2819         'host/token_validator_factory_impl_unittest.cc',
   2820         'host/video_scheduler_unittest.cc',
   2821         'host/win/rdp_client_unittest.cc',
   2822         'host/win/worker_process_launcher.cc',
   2823         'host/win/worker_process_launcher.h',
   2824         'host/win/worker_process_launcher_unittest.cc',
   2825         'jingle_glue/chromium_socket_factory_unittest.cc',
   2826         'jingle_glue/fake_signal_strategy.cc',
   2827         'jingle_glue/fake_signal_strategy.h',
   2828         'jingle_glue/iq_sender_unittest.cc',
   2829         'jingle_glue/mock_objects.cc',
   2830         'jingle_glue/mock_objects.h',
   2831         'protocol/authenticator_test_base.cc',
   2832         'protocol/authenticator_test_base.h',
   2833         'protocol/buffered_socket_writer_unittest.cc',
   2834         'protocol/channel_multiplexer_unittest.cc',
   2835         'protocol/clipboard_echo_filter_unittest.cc',
   2836         'protocol/clipboard_filter_unittest.cc',
   2837         'protocol/connection_tester.cc',
   2838         'protocol/connection_tester.h',
   2839         'protocol/connection_to_client_unittest.cc',
   2840         'protocol/content_description_unittest.cc',
   2841         'protocol/fake_authenticator.cc',
   2842         'protocol/fake_authenticator.h',
   2843         'protocol/fake_session.cc',
   2844         'protocol/fake_session.h',
   2845         'protocol/input_event_tracker_unittest.cc',
   2846         'protocol/input_filter_unittest.cc',
   2847         'protocol/jingle_messages_unittest.cc',
   2848         'protocol/jingle_session_unittest.cc',
   2849         'protocol/message_decoder_unittest.cc',
   2850         'protocol/message_reader_unittest.cc',
   2851         'protocol/mouse_input_filter_unittest.cc',
   2852         'protocol/negotiating_authenticator_unittest.cc',
   2853         'protocol/pairing_registry_unittest.cc',
   2854         'protocol/ppapi_module_stub.cc',
   2855         'protocol/protocol_mock_objects.cc',
   2856         'protocol/protocol_mock_objects.h',
   2857         'protocol/ssl_hmac_channel_authenticator_unittest.cc',
   2858         'protocol/third_party_authenticator_unittest.cc',
   2859         'protocol/v2_authenticator_unittest.cc',
   2860       ],
   2861       'conditions': [
   2862         [ 'OS=="win"', {
   2863           'defines': [
   2864             '_ATL_NO_EXCEPTIONS',
   2865           ],
   2866           'include_dirs': [
   2867             '../breakpad/src',
   2868           ],
   2869           'link_settings': {
   2870             'libraries': [
   2871               '-lrpcrt4.lib',
   2872               '-lwtsapi32.lib',
   2873             ],
   2874           },
   2875         }],
   2876         ['OS=="mac" or (OS=="linux" and chromeos==0)', {
   2877           # Javascript unittests are disabled on CrOS because they cause
   2878           # valgrind and test errors.
   2879           #
   2880           # Javascript unittests are disabled on Windows because they add a
   2881           # dependency on 'common_constants' which (only on Windows) requires
   2882           # additional dependencies:
   2883           #   '../content/content.gyp:content_common',
   2884           #   'installer_util',
   2885           # These targets are defined in .gypi files that would need to be
   2886           # included here:
   2887           #   '../chrome/chrome_common.gypi',
   2888           #   '../chrome/chrome_installer.gypi',
   2889           #   '../chrome/chrome_installer_util.gypi',
   2890           # But we can't do that because ninja will complain about multiple
   2891           # target definitions.
   2892           # TODO(garykac): Move installer_util into a proper .gyp file so that
   2893           # it can be included in multiple .gyp files.
   2894           'includes': [
   2895             '../chrome/js_unittest_rules.gypi',
   2896           ],
   2897           'dependencies': [
   2898             '../chrome/common_constants.gyp:common_constants',
   2899             '../v8/tools/gyp/v8.gyp:v8',
   2900           ],
   2901           'sources': [
   2902             '../chrome/test/base/v8_unit_test.cc',
   2903             '../chrome/test/base/v8_unit_test.h',
   2904             'webapp/browser_globals.gtestjs',
   2905             'webapp/all_js_load.gtestjs',
   2906             'webapp/format_iq.gtestjs',
   2907             '<@(remoting_webapp_js_files)',
   2908           ],
   2909         }],
   2910         ['enable_remoting_host == 0', {
   2911           'dependencies!': [
   2912             'remoting_host',
   2913             'remoting_host_setup_base',
   2914           ],
   2915           'sources/': [
   2916             ['exclude', 'codec/*'],
   2917             ['exclude', 'host/*'],
   2918           ]
   2919         }],
   2920         ['toolkit_uses_gtk == 1', {
   2921           'dependencies': [
   2922             # Needed for the following #include chain:
   2923             #   base/run_all_unittests.cc
   2924             #   ../base/test_suite.h
   2925             #   gtk/gtk.h
   2926             '../build/linux/system.gyp:gtk',
   2927             '../build/linux/system.gyp:ssl',
   2928           ],
   2929           'conditions': [
   2930             [ 'linux_use_tcmalloc==1', {
   2931                 'dependencies': [
   2932                   '../base/allocator/allocator.gyp:allocator',
   2933                 ],
   2934               },
   2935             ],
   2936           ],
   2937         }],  # end of 'toolkit_uses_gtk == 1'
   2938       ],  # end of 'conditions'
   2939     },  # end of target 'remoting_unittests'
   2940   ],  # end of targets
   2941 }
   2942