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    # Set this to run the jscompile checks after building the webapp.
10    'run_jscompile%': 0,
11
12    # Set this to enable cast mode on the android client.
13    'enable_cast%': 0,
14
15    'variables': {
16      'conditions': [
17        # Enable the multi-process host on Windows by default.
18        ['OS=="win"', {
19          'remoting_multi_process%': 1,
20        }, {
21          'remoting_multi_process%': 0,
22        }],
23      ],
24    },
25
26    'remoting_multi_process%': '<(remoting_multi_process)',
27    'remoting_rdp_session%': 1,
28
29    'remoting_localize_path': 'tools/build/remoting_localize.py',
30
31    'branding_path': '../remoting/branding_<(branding)',
32
33    'webapp_locale_dir': '<(SHARED_INTERMEDIATE_DIR)/remoting/webapp/_locales',
34
35    'conditions': [
36      ['OS=="mac"', {
37        'mac_bundle_id': '<!(python <(version_py_path) -f <(branding_path) -t "@MAC_BUNDLE_ID@")',
38        'mac_creator': '<!(python <(version_py_path) -f <(branding_path) -t "@MAC_CREATOR@")',
39      }],
40      ['OS=="win"', {
41        # Each CLSID is a hash of the current version string salted with an
42        # arbitrary GUID. This ensures that the newly installed COM classes will
43        # be used during/after upgrade even if there are old instances running
44        # already.
45        # The IDs are not random to avoid rebuilding host when it's not
46        # necessary.
47        'daemon_controller_clsid':
48            '<!(python -c "import uuid; print uuid.uuid5(uuid.UUID(\'655bd819-c08c-4b04-80c2-f160739ff6ef\'), \'<(version_full)\')")',
49        'rdp_desktop_session_clsid':
50            '<!(python -c "import uuid; print uuid.uuid5(uuid.UUID(\'6a7699f0-ee43-43e7-aa30-a6738f9bd470\'), \'<(version_full)\')")',
51      }],
52    ],
53    'remoting_locales': [
54      # Note: list duplicated in GN build. See //remoting/resources/BUILD.gn
55      'ar', 'bg', 'ca', 'cs', 'da', 'de', 'el', 'en', 'en-GB', 'es',
56      'es-419', 'et', 'fi', 'fil', 'fr', 'he', 'hi', 'hr', 'hu', 'id',
57      'it', 'ja', 'ko', 'lt', 'lv', 'nb', 'nl', 'pl', 'pt-BR', 'pt-PT',
58      'ro', 'ru', 'sk', 'sl', 'sr', 'sv', 'th', 'tr', 'uk', 'vi',
59      'zh-CN', 'zh-TW',
60    ],
61    'remoting_host_locale_files': [
62      # Build the list of .pak files generated from remoting_strings.grd.
63      '<!@pymod_do_main(remoting_copy_locales -o -p <(OS) -x '
64          '<(PRODUCT_DIR) <(remoting_locales))',
65    ],
66    'remoting_webapp_locale_files': [
67      # Build the list of .json files generated from remoting_strings.grd.
68      '<!@pymod_do_main(remoting_localize --locale_output '
69          '"<(webapp_locale_dir)/@{json_suffix}/messages.json" '
70          '--print_only <(remoting_locales))',
71    ],
72  },
73
74  'includes': [
75    '../chrome/js_unittest_vars.gypi',
76    'remoting_android.gypi',
77    'remoting_client.gypi',
78    'remoting_host.gypi',
79    'remoting_srcs.gypi',
80    'remoting_test.gypi',
81    'remoting_version.gypi',
82    'remoting_webapp_files.gypi',
83  ],
84
85  'target_defaults': {
86    'defines': [
87      'BINARY_CORE=1',
88      'BINARY_DESKTOP=2',
89      'BINARY_HOST_ME2ME=3',
90      'BINARY_NATIVE_MESSAGING_HOST=4',
91      'BINARY_REMOTE_ASSISTANCE_HOST=5',
92    ],
93    'include_dirs': [
94      '..',  # Root of Chrome checkout
95    ],
96    'variables': {
97      'win_debug_RuntimeChecks': '0',
98    },
99    'conditions': [
100      ['OS=="mac" and mac_breakpad==1', {
101        'defines': [
102          'REMOTING_ENABLE_BREAKPAD'
103        ],
104      }],
105      ['OS=="win" and buildtype == "Official"', {
106        'defines': [
107          'REMOTING_ENABLE_BREAKPAD'
108        ],
109      }],
110      ['OS=="win" and remoting_multi_process != 0 and \
111          remoting_rdp_session != 0', {
112        'defines': [
113          'REMOTING_RDP_SESSION',
114        ],
115      }],
116      ['remoting_multi_process != 0', {
117        'defines': [
118          'REMOTING_MULTI_PROCESS',
119        ],
120      }],
121    ],
122  },
123
124  'targets': [
125    {
126      'target_name': 'remoting_breakpad',
127      'type': 'static_library',
128      'variables': { 'enable_wexit_time_destructors': 1, },
129      'dependencies': [
130        '../base/base.gyp:base',
131      ],
132      'sources': [
133        'base/breakpad.h',
134        'base/breakpad_linux.cc',
135        'base/breakpad_mac.mm',
136        'base/breakpad_win.cc',
137      ],
138      'conditions': [
139        ['OS=="mac"', {
140          'dependencies': [
141            '../breakpad/breakpad.gyp:breakpad',
142          ],
143        }],
144        ['OS=="win"', {
145          'dependencies': [
146            '../breakpad/breakpad.gyp:breakpad_handler',
147          ],
148        }],
149      ],
150    },  # end of target 'remoting_breakpad'
151
152    {
153      # GN version: //remoting/resources
154      'target_name': 'remoting_resources',
155      'type': 'none',
156      'dependencies': [
157        'remoting_webapp_html',
158      ],
159      'variables': {
160        'grit_out_dir': '<(SHARED_INTERMEDIATE_DIR)',
161        'grit_resource_ids': 'resources/resource_ids',
162        'sources': [
163          '<(SHARED_INTERMEDIATE_DIR)/main.html',
164          'base/resources_unittest.cc',
165          'host/continue_window_mac.mm',
166          'host/disconnect_window_mac.mm',
167          'host/installer/mac/uninstaller/remoting_uninstaller-InfoPlist.strings.jinja2',
168          'host/mac/me2me_preference_pane-InfoPlist.strings.jinja2',
169          'host/win/core.rc.jinja2',
170          'host/win/host_messages.mc.jinja2',
171          'host/win/version.rc.jinja2',
172          'resources/play_store_resources.cc',
173          'webapp/background/background.js',
174          'webapp/background/it2me_helpee_channel.js',
175          'webapp/butter_bar.js',
176          'webapp/client_screen.js',
177          'webapp/error.js',
178          'webapp/host_list.js',
179          'webapp/host_setup_dialog.js',
180          'webapp/host_table_entry.js',
181          'webapp/options_menu.js',
182          'webapp/manifest.json.jinja2',
183          'webapp/paired_client_manager.js',
184          'webapp/remoting.js',
185          'webapp/window_frame.js',
186        ],
187      },
188      'actions': [
189        {
190          # GN version: //remoting/resources:verify_resources
191          'action_name': 'verify_resources',
192          'inputs': [
193            'resources/remoting_strings.grd',
194            'tools/verify_resources.py',
195            '<@(sources)'
196          ],
197          'outputs': [
198            '<(PRODUCT_DIR)/remoting_resources_verified.stamp',
199          ],
200          'action': [
201            'python',
202            'tools/verify_resources.py',
203            '-t', '<(PRODUCT_DIR)/remoting_resources_verified.stamp',
204            '-r', 'resources/remoting_strings.grd',
205            '<@(sources)',
206         ],
207        },
208        {
209          # GN version: //remoting/resources:strings
210          'action_name': 'remoting_strings',
211          'variables': {
212            'grit_grd_file': 'resources/remoting_strings.grd',
213          },
214          'includes': [ '../build/grit_action.gypi' ],
215        },
216        {
217          # GN version: //remoting/resources:copy_locales
218          'action_name': 'copy_locales',
219          'variables': {
220            'copy_output_dir%': '<(PRODUCT_DIR)',
221          },
222          'inputs': [
223            'tools/build/remoting_copy_locales.py',
224            '<!@pymod_do_main(remoting_copy_locales -i -p <(OS) -g <(grit_out_dir) <(remoting_locales))'
225          ],
226          'outputs': [
227            '<!@pymod_do_main(remoting_copy_locales -o -p <(OS) -x <(copy_output_dir) <(remoting_locales))'
228          ],
229          'action': [
230            'python', 'tools/build/remoting_copy_locales.py',
231            '-p', '<(OS)',
232            '-g', '<(grit_out_dir)',
233            '-x', '<(copy_output_dir)/.',
234            '<@(remoting_locales)',
235          ],
236        }
237      ],
238      'includes': [ '../build/grit_target.gypi' ],
239    },  # end of target 'remoting_resources'
240
241    {
242      # GN version: //remoting/base
243      'target_name': 'remoting_base',
244      'type': 'static_library',
245      'variables': { 'enable_wexit_time_destructors': 1, },
246      'dependencies': [
247        '../base/base.gyp:base',
248        '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
249        '../media/media.gyp:media',
250        '../media/media.gyp:shared_memory_support',
251        '../net/net.gyp:net',
252        '../third_party/libvpx/libvpx.gyp:libvpx',
253        '../third_party/libyuv/libyuv.gyp:libyuv',
254        '../third_party/opus/opus.gyp:opus',
255        '../third_party/protobuf/protobuf.gyp:protobuf_lite',
256        '../third_party/webrtc/modules/modules.gyp:desktop_capture',
257        '../ui/base/ui_base.gyp:ui_base',
258        '../ui/gfx/gfx.gyp:gfx',
259        '../ui/gfx/gfx.gyp:gfx_geometry',
260        'proto/chromotocol.gyp:chromotocol_proto_lib',
261        'remoting_resources',
262      ],
263      'export_dependent_settings': [
264        '../base/base.gyp:base',
265        '../net/net.gyp:net',
266        '../third_party/protobuf/protobuf.gyp:protobuf_lite',
267        'proto/chromotocol.gyp:chromotocol_proto_lib',
268      ],
269      # This target needs a hard dependency because dependent targets
270      # depend on chromotocol_proto_lib for headers.
271      'hard_dependency': 1,
272      'sources': [
273        '<@(remoting_base_sources)',
274      ],
275    },  # end of target 'remoting_base'
276
277    {
278      # GN version: //remoting/protocol
279      'target_name': 'remoting_protocol',
280      'type': 'static_library',
281      'variables': { 'enable_wexit_time_destructors': 1, },
282      'dependencies': [
283        '../base/base.gyp:base',
284        '../crypto/crypto.gyp:crypto',
285        '../jingle/jingle.gyp:jingle_glue',
286        '../jingle/jingle.gyp:notifier',
287        '../net/net.gyp:net',
288        '../third_party/libjingle/libjingle.gyp:libjingle',
289        'remoting_base',
290      ],
291      'export_dependent_settings': [
292        '../third_party/libjingle/libjingle.gyp:libjingle',
293      ],
294      'sources': [
295        '<@(remoting_protocol_sources)',
296      ],
297    },  # end of target 'remoting_protocol'
298  ],  # end of targets
299}
300