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