• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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