1 # Copyright 2014 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.
7 'remoting_host_installer_win_roots': [
10 'remoting_host_installer_win_files': [
11 'host/installer/win/chromoting.wxs',
12 'host/installer/win/parameters.json',
14 }, # end of 'variables'
18 'target_name': 'remoting_breakpad_tester',
20 'variables': { 'enable_wexit_time_destructors': 1, },
22 '../base/base.gyp:base',
26 'tools/breakpad_tester_win.cc',
28 }, # end of target 'remoting_breakpad_tester'
30 'target_name': 'remoting_lib_idl',
31 'type': 'static_library',
33 'host/win/chromoting_lib_idl.templ',
34 '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib.h',
35 '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib.idl',
36 '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib_i.c',
38 # This target exports a hard dependency because dependent targets may
39 # include chromoting_lib.h, a generated header.
43 'OutputDirectory': '<(SHARED_INTERMEDIATE_DIR)/remoting/host',
46 'direct_dependent_settings': {
48 '<(SHARED_INTERMEDIATE_DIR)',
53 'rule_name': 'generate_idl',
56 '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib.idl',
59 'python', '<(version_py_path)',
60 '-e', "DAEMON_CONTROLLER_CLSID='<(daemon_controller_clsid)'",
61 '-e', "RDP_DESKTOP_SESSION_CLSID='<(rdp_desktop_session_clsid)'",
65 'process_outputs_as_sources': 1,
66 'message': 'Generating <@(_outputs)',
69 }, # end of target 'remoting_lib_idl'
71 # remoting_lib_ps builds the proxy/stub code generated by MIDL (see
74 'target_name': 'remoting_lib_ps',
75 'type': 'static_library',
77 # Prepend 'Ps' to the MIDL-generated routines. This includes
78 # DllGetClassObject, DllCanUnloadNow, DllRegisterServer,
79 # DllUnregisterServer, and DllMain.
87 '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib.dlldata.c',
88 '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib_p.c',
90 }, # end of target 'remoting_lib_ps'
92 # Regenerates 'chromoting_lib.rc' (used to embed 'chromoting_lib.tlb'
93 # into remoting_core.dll's resources) every time
94 # 'chromoting_lib_idl.templ' changes. Making remoting_core depend on
95 # both this and 'remoting_lib_idl' targets ensures that the resorces
96 # are rebuilt every time the type library is updated. GYP alone is
97 # not smart enough to figure out this dependency on its own.
99 'target_name': 'remoting_lib_rc',
102 'host/win/chromoting_lib_idl.templ',
104 'hard_dependency': 1,
105 'direct_dependent_settings': {
107 '<(SHARED_INTERMEDIATE_DIR)',
112 'rule_name': 'generate_rc',
113 'extension': 'templ',
115 '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib.rc',
118 'echo 1 typelib "remoting/host/chromoting_lib.tlb" > <@(_outputs)',
120 'message': 'Generating <@(_outputs)',
123 }, # end of target 'remoting_lib_rc'
124 # The only difference between |remoting_console.exe| and
125 # |remoting_host.exe| is that the former is a console application.
126 # |remoting_console.exe| is used for debugging purposes.
128 'target_name': 'remoting_console',
129 'type': 'executable',
130 'variables': { 'enable_wexit_time_destructors': 1, },
132 'BINARY=BINARY_HOST_ME2ME',
136 'remoting_windows_resources',
139 '<(SHARED_INTERMEDIATE_DIR)/remoting/version.rc',
140 'host/win/entry_point.cc',
144 'AdditionalManifestFiles': [
145 'host/win/dpi_aware.manifest',
149 'EntryPointSymbol': 'HostEntryPoint',
150 'IgnoreAllDefaultLibraries': 'true',
151 'SubSystem': '1', # /SUBSYSTEM:CONSOLE
154 }, # end of target 'remoting_console'
156 'target_name': 'remoting_core',
157 'type': 'shared_library',
158 'variables': { 'enable_wexit_time_destructors': 1, },
160 '_ATL_APARTMENT_THREADED',
161 '_ATL_CSTRING_EXPLICIT_CONSTRUCTORS',
162 '_ATL_NO_AUTOMATIC_NAMESPACE',
163 '_ATL_NO_EXCEPTIONS',
164 'BINARY=BINARY_CORE',
165 'DAEMON_CONTROLLER_CLSID="{<(daemon_controller_clsid)}"',
166 'RDP_DESKTOP_SESSION_CLSID="{<(rdp_desktop_session_clsid)}"',
167 'HOST_IMPLEMENTATION',
168 'ISOLATION_AWARE_ENABLED=1',
170 'VERSION=<(version_full)',
173 '../base/base.gyp:base',
174 '../base/base.gyp:base_static',
175 '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
176 '../ipc/ipc.gyp:ipc',
177 '../net/net.gyp:net',
178 '../third_party/webrtc/modules/modules.gyp:desktop_capture',
182 'remoting_host_setup_base',
183 'remoting_it2me_host_static',
187 'remoting_me2me_host_static',
188 'remoting_native_messaging_base',
190 'remoting_windows_resources',
193 '<(SHARED_INTERMEDIATE_DIR)/remoting/core.rc',
194 '<(SHARED_INTERMEDIATE_DIR)/remoting/host/chromoting_lib.rc',
195 '<(SHARED_INTERMEDIATE_DIR)/remoting/host/remoting_host_messages.rc',
196 '<(SHARED_INTERMEDIATE_DIR)/remoting/version.rc',
197 'host/desktop_process_main.cc',
200 'host/it2me/it2me_native_messaging_host_main.cc',
201 'host/it2me/it2me_native_messaging_host_main.h',
202 'host/setup/me2me_native_messaging_host_main.cc',
203 'host/setup/me2me_native_messaging_host_main.h',
204 'host/verify_config_window_win.cc',
205 'host/verify_config_window_win.h',
206 'host/win/chromoting_module.cc',
207 'host/win/chromoting_module.h',
209 'host/win/core_resource.h',
210 'host/win/host_service.cc',
211 'host/win/host_service.h',
214 'host/win/rdp_desktop_session.cc',
215 'host/win/rdp_desktop_session.h',
216 'host/win/unprivileged_process_delegate.cc',
217 'host/win/unprivileged_process_delegate.h',
218 'host/win/worker_process_launcher.cc',
219 'host/win/worker_process_launcher.h',
220 'host/win/wts_session_process_delegate.cc',
221 'host/win/wts_session_process_delegate.h',
222 'host/worker_process_ipc_delegate.h',
226 'EmbedManifest': 'true',
227 'AdditionalManifestFiles': [
228 'host/win/common-controls.manifest',
232 'AdditionalDependencies': [
239 'AdditionalOptions': [
240 # Export the proxy/stub entry points. Note that the generated
241 # routines have 'Ps' prefix to avoid conflicts with our own
243 '/EXPORT:DllGetClassObject=PsDllGetClassObject,PRIVATE',
244 '/EXPORT:DllCanUnloadNow=PsDllCanUnloadNow,PRIVATE',
245 '/EXPORT:DllRegisterServer=PsDllRegisterServer,PRIVATE',
246 '/EXPORT:DllUnregisterServer=PsDllUnregisterServer,PRIVATE',
251 # atlapp.h contains a global "using namespace WTL;".
252 # TODO: Remove once remoting/host/verify_config_window_win.h no
253 # longer depends on atlapp.h, http://crbug.com/5027
254 'VCCLCompilerTool': {
255 'AdditionalOptions': ['-Wno-header-hygiene'],
260 }, # end of target 'remoting_core'
262 'target_name': 'remoting_desktop',
263 'type': 'executable',
264 'variables': { 'enable_wexit_time_destructors': 1, },
266 'BINARY=BINARY_DESKTOP',
270 'remoting_windows_resources',
273 '<(SHARED_INTERMEDIATE_DIR)/remoting/version.rc',
274 'host/win/entry_point.cc',
278 'AdditionalManifestFiles': [
279 'host/win/dpi_aware.manifest',
284 # Add 'level="requireAdministrator" uiAccess="true"' to
285 # the manifest only for the official builds because it requires
286 # the binary to be signed to work.
288 ['buildtype == "Official"', {
289 'UACExecutionLevel': 2,
290 'UACUIAccess': 'true',
293 'EntryPointSymbol': 'HostEntryPoint',
294 'IgnoreAllDefaultLibraries': 'true',
295 'SubSystem': '2', # /SUBSYSTEM:WINDOWS
298 }, # end of target 'remoting_desktop'
300 'target_name': 'remoting_me2me_host',
301 'product_name': 'remoting_host',
302 'type': 'executable',
303 'variables': { 'enable_wexit_time_destructors': 1, },
305 'BINARY=BINARY_HOST_ME2ME',
309 'remoting_windows_resources',
312 '<(SHARED_INTERMEDIATE_DIR)/remoting/version.rc',
313 'host/win/entry_point.cc',
317 'AdditionalManifestFiles': [
318 'host/win/dpi_aware.manifest',
322 'EntryPointSymbol': 'HostEntryPoint',
323 'IgnoreAllDefaultLibraries': 'true',
324 'OutputFile': '$(OutDir)\\remoting_host.exe',
325 'SubSystem': '2', # /SUBSYSTEM:WINDOWS
328 }, # end of target 'remoting_me2me_host'
330 'target_name': 'remoting_me2me_native_messaging_host',
331 'type': 'executable',
332 'product_name': 'remoting_native_messaging_host',
333 'variables': { 'enable_wexit_time_destructors': 1, },
335 'BINARY=BINARY_NATIVE_MESSAGING_HOST',
339 'remoting_windows_resources',
342 '<(SHARED_INTERMEDIATE_DIR)/remoting/version.rc',
343 'host/setup/me2me_native_messaging_host_entry_point.cc',
347 'IgnoreAllDefaultLibraries': 'true',
348 'SubSystem': '1', # /SUBSYSTEM:CONSOLE
351 }, # end of target 'remoting_me2me_native_messaging_host'
353 'target_name': 'remoting_it2me_native_messaging_host',
354 'type': 'executable',
355 'product_name': 'remote_assistance_host',
356 'variables': { 'enable_wexit_time_destructors': 1, },
359 'remoting_windows_resources',
362 '<(SHARED_INTERMEDIATE_DIR)/remoting/version.rc',
363 'host/it2me/it2me_native_messaging_host_entry_point.cc',
366 'BINARY=BINARY_REMOTE_ASSISTANCE_HOST',
370 'EmbedManifest': 'true',
371 'AdditionalManifestFiles': [
372 'host/win/common-controls.manifest',
373 'host/win/dpi_aware.manifest',
377 'IgnoreAllDefaultLibraries': 'true',
378 'SubSystem': '1', # /SUBSYSTEM:CONSOLE
379 'AdditionalDependencies': [
384 }, # end of target 'remoting_it2me_native_messaging_host'
386 'target_name': 'remoting_host_messages',
389 'remoting_resources',
391 'hard_dependency': 1,
392 'direct_dependent_settings': {
394 '<(SHARED_INTERMEDIATE_DIR)',
398 'host/win/host_messages.mc.jinja2'
402 'rule_name': 'localize',
403 'extension': 'jinja2',
405 '<(SHARED_INTERMEDIATE_DIR)/remoting/host/remoting_host_messages.mc',
408 'python', '<(remoting_localize_path)',
409 '--locale_dir', '<(webapp_locale_dir)',
410 '--template', '<(RULE_INPUT_PATH)',
411 '--output', '<@(_outputs)',
412 '--encoding', 'utf-16',
413 '<@(remoting_locales)',
415 'message': 'Localizing the event log messages'
418 }, # end of target 'remoting_host_messages'
420 # Generates localized resources for the Windows binaries.
421 # The substitution strings are taken from:
422 # - build/util/LASTCHANGE - the last source code revision. There is
423 # no explicit dependency on this file to avoid rebuilding the host
424 # after unrelated changes.
425 # - chrome/VERSION - the major, build & patch versions.
426 # - remoting/VERSION - the chromoting patch version (and overrides
427 # for chrome/VERSION).
428 # - translated webapp strings
430 'target_name': 'remoting_windows_resources',
433 'remoting_resources',
435 'hard_dependency': 1,
436 'direct_dependent_settings': {
438 '<(SHARED_INTERMEDIATE_DIR)',
442 'host/win/core.rc.jinja2',
443 'host/win/version.rc.jinja2',
447 'rule_name': 'version',
448 'extension': 'jinja2',
450 'lastchange_path': '<(DEPTH)/build/util/LASTCHANGE',
453 '<(chrome_version_path)',
454 '<(remoting_version_path)',
457 '<(SHARED_INTERMEDIATE_DIR)/remoting/<(RULE_INPUT_ROOT)',
460 'python', '<(remoting_localize_path)',
461 '--variables', '<(chrome_version_path)',
462 # |remoting_version_path| must be after |chrome_version_path|
463 # because it can contain overrides for the version numbers.
464 '--variables', '<(remoting_version_path)',
465 '--variables', '<(lastchange_path)',
466 '--locale_dir', '<(webapp_locale_dir)',
467 '--template', '<(RULE_INPUT_PATH)',
468 '--output', '<@(_outputs)',
469 '--encoding', 'utf-16',
470 '<@(remoting_locales)',
472 'message': 'Localizing the version information'
475 }, # end of target 'remoting_windows_resources'
476 ], # end of 'targets'
479 # The host installation is generated only if WiX is available. If
480 # component build is used the produced installation will not work due to
481 # missing DLLs. We build it anyway to make sure the GYP scripts are executed
483 ['wix_exists == "True" and sas_dll_exists == "True"', {
486 'target_name': 'remoting_host_installation',
489 'remoting_me2me_host_archive',
492 '<(PRODUCT_DIR)/remoting-me2me-host-<(OS).zip',
495 '<(PRODUCT_DIR)/chromoting.msi',
499 'rule_name': 'zip2msi',
505 '<(PRODUCT_DIR)/chromoting.msi',
508 'python', 'tools/zip2msi.py',
509 '--wix_path', '<(wix_path)',
510 '--intermediate_dir', '<(INTERMEDIATE_DIR)/installation',
511 '--target_arch', '<(target_arch)',
512 '<(RULE_INPUT_PATH)',
515 'message': 'Generating <@(_outputs)',
518 }, # end of target 'remoting_host_installation'
521 'target_name': 'remoting_me2me_host_archive',
524 '<(icu_gyp_path):icudata',
527 'remoting_it2me_native_messaging_host',
528 'remoting_me2me_host',
529 'remoting_me2me_native_messaging_host',
530 'remoting_native_messaging_manifests',
533 '<(PRODUCT_DIR)/remote_assistance_host.exe',
534 '<(PRODUCT_DIR)/remoting_core.dll',
535 '<(PRODUCT_DIR)/remoting_desktop.exe',
536 '<(PRODUCT_DIR)/remoting_host.exe',
537 '<(PRODUCT_DIR)/remoting_native_messaging_host.exe',
539 'compiled_inputs_dst': [
540 'files/remote_assistance_host.exe',
541 'files/remoting_core.dll',
542 'files/remoting_desktop.exe',
543 'files/remoting_host.exe',
544 'files/remoting_native_messaging_host.exe',
547 ['buildtype == "Official"', {
551 }, { # else buildtype != "Official"
558 'BRANDING=<(branding)',
559 'DAEMON_CONTROLLER_CLSID={<(daemon_controller_clsid)}',
560 'RDP_DESKTOP_SESSION_CLSID={<(rdp_desktop_session_clsid)}',
561 'VERSION=<(version_full)',
564 '<@(_compiled_inputs)',
565 '<(sas_dll_path)/sas.dll',
566 '<(PRODUCT_DIR)/remoting/com.google.chrome.remote_assistance.json',
567 '<(PRODUCT_DIR)/remoting/com.google.chrome.remote_desktop.json',
568 'resources/chromoting.ico',
569 '<(PRODUCT_DIR)/icudtl.dat',
571 'generated_files_dst': [
572 '<@(_compiled_inputs_dst)',
574 'files/com.google.chrome.remote_assistance.json',
575 'files/com.google.chrome.remote_desktop.json',
576 'files/chromoting.ico',
579 'zip_path': '<(PRODUCT_DIR)/remoting-me2me-host-<(OS).zip',
585 'action_name': 'Zip installer files for signing',
586 'temp_dir': '<(INTERMEDIATE_DIR)/installation',
588 '<@(remoting_host_installer_win_files)',
591 '<@(_compiled_inputs)',
592 '<(sas_dll_path)/sas.dll',
594 'host/installer/build-installer-archive.py',
595 'resources/chromoting.ico',
601 'python', 'host/installer/build-installer-archive.py',
604 '--source-file-roots', '<@(remoting_host_installer_win_roots)',
605 '--source-files', '<@(_source_files)',
606 '--generated-files', '<@(_generated_files)',
607 '--generated-files-dst', '<@(_generated_files_dst)',
608 '--defs', '<@(_defs)',
612 }, # end of target 'remoting_me2me_host_archive'
613 ], # end of 'targets'
615 # Dummy targets for when Wix is not available.
618 'target_name': 'remoting_host_installation',
623 'target_name': 'remoting_me2me_host_archive',
626 ], # end of 'targets'
627 }], # 'wix_exists == "True" and sas_dll_exists == "True"'
629 ], # end of 'conditions'