OLD | NEW |
(Empty) | |
| 1 # Copyright 2016 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 import("//remoting/build/config/remoting_build.gni") |
| 6 import("//build/toolchain/win/midl.gni") |
| 7 import("//build/win/message_compiler.gni") |
| 8 |
| 9 group("all") { |
| 10 testonly = true |
| 11 |
| 12 deps = [ |
| 13 ":remoting_console", |
| 14 ":remoting_desktop", |
| 15 ":remoting_me2me_host", |
| 16 ":remoting_native_messaging_host", |
| 17 "//remoting/host/security_key:remote_security_key", |
| 18 ] |
| 19 } |
| 20 |
| 21 # Reference this manifest to indicate that a process is per-monitor DPI aware. |
| 22 dpi_aware_manifest = "//remoting/host/win/dpi_aware.manifest" |
| 23 |
| 24 # Reference this manifest to give the binary the uiAccess privilege. |
| 25 enable_uiaccess_manifest = "//remoting/host/win/enable_uiaccess.manifest" |
| 26 |
| 27 # Depending on this target gives a default executable manifest with the addition |
| 28 # of the DPI aware tag. |
| 29 windows_manifest("dpi_aware_exe_manifest") { |
| 30 sources = [ |
| 31 as_invoker_manifest, |
| 32 common_controls_manifest, |
| 33 default_compatibility_manifest, |
| 34 dpi_aware_manifest, |
| 35 ] |
| 36 type = "exe" |
| 37 } |
| 38 |
| 39 # Depending on this target gives a default executable manifest with the addition |
| 40 # of the DPI aware tag and a requestedExecutionLevel of requireAdministrator. |
| 41 windows_manifest("dpi_aware_elevated_exe_manifest") { |
| 42 sources = [ |
| 43 common_controls_manifest, |
| 44 default_compatibility_manifest, |
| 45 dpi_aware_manifest, |
| 46 require_administrator_manifest, |
| 47 ] |
| 48 type = "exe" |
| 49 } |
| 50 |
| 51 # Depending on this target gives the executable a default manifest with the |
| 52 # addition of the DPI aware tag and enables uiAccess. |
| 53 windows_manifest("dpi_aware_uiaccess_exe_manifest") { |
| 54 sources = [ |
| 55 common_controls_manifest, |
| 56 default_compatibility_manifest, |
| 57 dpi_aware_manifest, |
| 58 enable_uiaccess_manifest, |
| 59 ] |
| 60 type = "exe" |
| 61 } |
| 62 |
| 63 source_set("win") { |
| 64 sources = [ |
| 65 "com_imported_mstscax.tlh", |
| 66 "com_security.cc", |
| 67 "com_security.h", |
| 68 "elevation_helpers.cc", |
| 69 "elevation_helpers.h", |
| 70 "launch_process_with_token.cc", |
| 71 "launch_process_with_token.h", |
| 72 "omaha.cc", |
| 73 "omaha.h", |
| 74 "rdp_client.cc", |
| 75 "rdp_client.h", |
| 76 "rdp_client_window.cc", |
| 77 "rdp_client_window.h", |
| 78 "security_descriptor.cc", |
| 79 "security_descriptor.h", |
| 80 "session_desktop_environment.cc", |
| 81 "session_desktop_environment.h", |
| 82 "session_input_injector.cc", |
| 83 "session_input_injector.h", |
| 84 "window_station_and_desktop.cc", |
| 85 "window_station_and_desktop.h", |
| 86 "worker_process_launcher.cc", |
| 87 "worker_process_launcher.h", |
| 88 "wts_terminal_monitor.cc", |
| 89 "wts_terminal_monitor.h", |
| 90 "wts_terminal_observer.h", |
| 91 ] |
| 92 |
| 93 configs += [ |
| 94 "//build/config/compiler:wexit_time_destructors", |
| 95 "//remoting/build/config:version", |
| 96 ] |
| 97 |
| 98 defines = [ "WEBRTC_CHROMIUM_BUILD" ] |
| 99 |
| 100 deps = [ |
| 101 "//base:i18n", |
| 102 "//components/policy/core/common", |
| 103 "//content/public/common", |
| 104 "//crypto", |
| 105 "//device/power_save_blocker", |
| 106 "//google_apis", |
| 107 "//ipc", |
| 108 "//remoting/base", |
| 109 "//remoting/host/security_key", |
| 110 "//remoting/host/win:messages", |
| 111 "//remoting/host/win:remoting_lib_idl", |
| 112 "//remoting/protocol", |
| 113 "//remoting/resources", |
| 114 "//ui/base", |
| 115 "//ui/events:dom_keycode_converter", |
| 116 "//ui/events/platform", |
| 117 ] |
| 118 |
| 119 if (enable_configuration_policy) { |
| 120 deps += [ "//components/policy:generated" ] |
| 121 } |
| 122 |
| 123 if (enable_webrtc) { |
| 124 deps += [ "//third_party/webrtc/modules/desktop_capture" ] |
| 125 } |
| 126 } |
| 127 |
| 128 source_set("unit_tests") { |
| 129 testonly = true |
| 130 |
| 131 sources = [ |
| 132 "elevated_native_messaging_host.cc", |
| 133 "elevated_native_messaging_host.h", |
| 134 "launch_native_messaging_host_process.cc", |
| 135 "launch_native_messaging_host_process.h", |
| 136 "rdp_client_unittest.cc", |
| 137 "worker_process_launcher_unittest.cc", |
| 138 ] |
| 139 |
| 140 deps = [ |
| 141 "//remoting/host", |
| 142 "//remoting/host:test_support", |
| 143 "//remoting/host/it2me:common", |
| 144 "//remoting/host/native_messaging", |
| 145 "//remoting/host/security_key:unit_tests", |
| 146 "//remoting/host/setup", |
| 147 "//remoting/proto", |
| 148 "//remoting/resources", |
| 149 "//skia", |
| 150 "//testing/gmock", |
| 151 "//testing/gtest", |
| 152 ] |
| 153 } |
| 154 |
| 155 # TODO(brettw) these should not be generated via exec_script. This should be |
| 156 # part of the build process rather than the metabuild. Instead, a script |
| 157 # should generate a header containing the #defines for this as well as the |
| 158 # IDL file with the values. |
| 159 clsids = exec_script("get_clsids.py", |
| 160 [ |
| 161 daemon_controller_guid, |
| 162 rdp_desktop_session_guid, |
| 163 chrome_version_full, |
| 164 ], |
| 165 "value") |
| 166 daemon_controller_clsid = clsids[0] |
| 167 rdp_desktop_session_clsid = clsids[1] |
| 168 |
| 169 action("generate_idl") { |
| 170 script = "//build/util/version.py" |
| 171 |
| 172 inputs = [ |
| 173 "chromoting_lib_idl.templ", |
| 174 ] |
| 175 outputs = [ |
| 176 "$target_gen_dir/chromoting_lib.idl", |
| 177 ] |
| 178 |
| 179 args = [ |
| 180 "-e", |
| 181 "DAEMON_CONTROLLER_CLSID='$daemon_controller_clsid'", |
| 182 "-e", |
| 183 "RDP_DESKTOP_SESSION_CLSID='$rdp_desktop_session_clsid'", |
| 184 rebase_path(inputs[0], root_build_dir), |
| 185 rebase_path(outputs[0], root_build_dir), |
| 186 ] |
| 187 } |
| 188 |
| 189 midl("remoting_lib_idl") { |
| 190 sources = get_target_outputs(":generate_idl") |
| 191 deps = [ |
| 192 ":generate_idl", |
| 193 ] |
| 194 } |
| 195 |
| 196 config("MIDL_config") { |
| 197 if (is_clang) { |
| 198 cflags = [ |
| 199 # MIDL generated code has a habit of omitting optional braces. |
| 200 "-Wno-missing-braces", |
| 201 |
| 202 # Source files generated by the MIDL compiler trigger warnings with |
| 203 # -Wincompatible-pointer-types enabled. |
| 204 "-Wno-incompatible-pointer-types", |
| 205 |
| 206 # Generated code contains unused variables. |
| 207 "-Wno-unused-variable", |
| 208 |
| 209 # PROXYFILE_LIST_START is an extern with initializer. |
| 210 "-Wno-extern-initializer", |
| 211 ] |
| 212 } |
| 213 } |
| 214 |
| 215 static_library("remoting_lib_ps") { |
| 216 configs += [ ":MIDL_config" ] |
| 217 |
| 218 defines = [ |
| 219 "ENTRY_PREFIX=Ps", |
| 220 "REGISTER_PROXY_DLL", |
| 221 ] |
| 222 |
| 223 deps = [ |
| 224 ":remoting_lib_idl", |
| 225 ] |
| 226 |
| 227 sources = [ |
| 228 "$root_gen_dir/remoting/host/win/chromoting_lib.dlldata.c", |
| 229 "$root_gen_dir/remoting/host/win/chromoting_lib_p.c", |
| 230 ] |
| 231 } |
| 232 |
| 233 # Makes the .mc file from the .mc.jinja file. |
| 234 remoting_localize("messages_localizing") { |
| 235 sources = [ |
| 236 "host_messages.mc.jinja2", |
| 237 ] |
| 238 locales = remoting_locales |
| 239 locale_dir = webapp_locale_dir |
| 240 encoding = "utf-16" |
| 241 |
| 242 # This target is funny. It only produces one file and the output doesn't |
| 243 # match the input. We want to generate remoting_host_messages.mc from |
| 244 # host_messages.mg.jinja2. GN complains if it doesn't see a pattern in the |
| 245 # output, so the following pattern produces the name we want with a template |
| 246 # based on the input. |
| 247 # |
| 248 # TODO: This is for GYP compat. We should just make the names match instead. |
| 249 output = "$target_gen_dir/remoting_{{source_name_part}}" |
| 250 } |
| 251 |
| 252 # Makes the .h/.rc files from the .mc file. |
| 253 message_compiler("messages") { |
| 254 compile_generated_code = false |
| 255 sources = get_target_outputs(":messages_localizing") |
| 256 deps = [ |
| 257 ":messages_localizing", |
| 258 ] |
| 259 } |
| 260 |
| 261 executable("remoting_console") { |
| 262 configs += [ "//build/config/compiler:wexit_time_destructors" ] |
| 263 |
| 264 defines = host_predefines + [ "BINARY=BINARY_HOST_ME2ME" ] |
| 265 |
| 266 deps = [ |
| 267 ":dpi_aware_exe_manifest", |
| 268 ":remoting_core", |
| 269 ":remoting_windows_resources", |
| 270 ] |
| 271 |
| 272 sources = [ |
| 273 "$root_gen_dir/remoting/version.rc", |
| 274 "entry_point.cc", |
| 275 ] |
| 276 |
| 277 ldflags = [ |
| 278 "/ENTRY:HostEntryPoint", |
| 279 # "/NODEFAULTLIB", |
| 280 ] |
| 281 } |
| 282 |
| 283 executable("remoting_me2me_host") { |
| 284 configs += [ |
| 285 "//build/config/compiler:wexit_time_destructors", |
| 286 "//build/config/win:windowed", |
| 287 "//remoting/build/config:remoting_me2me_host", |
| 288 ] |
| 289 |
| 290 defines = host_predefines + [ "BINARY=BINARY_HOST_ME2ME" ] |
| 291 |
| 292 deps = [ |
| 293 ":dpi_aware_exe_manifest", |
| 294 ":remoting_core", |
| 295 ":remoting_windows_resources", |
| 296 ] |
| 297 |
| 298 sources = [ |
| 299 "$root_gen_dir/remoting/version.rc", |
| 300 "entry_point.cc", |
| 301 ] |
| 302 |
| 303 output_name = "remoting_host" |
| 304 |
| 305 ldflags = [ "/ENTRY:HostEntryPoint" ] |
| 306 } |
| 307 |
| 308 shared_library("remoting_core") { |
| 309 configs += [ "//build/config/compiler:wexit_time_destructors" ] |
| 310 |
| 311 defines = host_predefines + [ |
| 312 "_ATL_APARTMENT_THREADED", |
| 313 "_ATL_CSTRING_EXPLICIT_CONSTRUCTORS", |
| 314 "_ATL_NO_AUTOMATIC_NAMESPACE", |
| 315 "_ATL_NO_EXCEPTIONS", |
| 316 "BINARY=BINARY_CORE", |
| 317 "DAEMON_CONTROLLER_CLSID=\"$daemon_controller_clsid\"", |
| 318 "RDP_DESKTOP_SESSION_CLSID=\"$rdp_desktop_session_clsid\"", |
| 319 "HOST_IMPLEMENTATION", |
| 320 "ISOLATION_AWARE_ENABLED=1", |
| 321 "STRICT", |
| 322 "VERSION=$chrome_version_full", |
| 323 ] |
| 324 |
| 325 if (remoting_multi_process != 0 && remoting_rdp_session != 0) { |
| 326 defines += [ "REMOTING_RDP_SESSION" ] |
| 327 } |
| 328 |
| 329 if (remoting_multi_process != 0) { |
| 330 defines += [ "REMOTING_MULTI_PROCESS" ] |
| 331 } |
| 332 |
| 333 sources = [ |
| 334 "$root_gen_dir/remoting/core.rc", |
| 335 "$root_gen_dir/remoting/host/win/remoting_host_messages.rc", |
| 336 "$root_gen_dir/remoting/version.rc", |
| 337 "//remoting/host/desktop_process_main.cc", |
| 338 "//remoting/host/host_main.cc", |
| 339 "//remoting/host/host_main.h", |
| 340 "//remoting/host/it2me/it2me_native_messaging_host_main.cc", |
| 341 "//remoting/host/it2me/it2me_native_messaging_host_main.h", |
| 342 "//remoting/host/setup/host_starter.cc", |
| 343 "//remoting/host/setup/host_starter.h", |
| 344 "//remoting/host/setup/me2me_native_messaging_host_main.cc", |
| 345 "//remoting/host/setup/me2me_native_messaging_host_main.h", |
| 346 "//remoting/host/setup/start_host_main.cc", |
| 347 "//remoting/host/setup/start_host_main.h", |
| 348 "//remoting/host/worker_process_ipc_delegate.h", |
| 349 "chromoting_lib.rc", |
| 350 "chromoting_module.cc", |
| 351 "chromoting_module.h", |
| 352 "core.cc", |
| 353 "core_resource.h", |
| 354 "elevated_native_messaging_host.cc", |
| 355 "elevated_native_messaging_host.h", |
| 356 "host_service.cc", |
| 357 "host_service.h", |
| 358 "launch_native_messaging_host_process.cc", |
| 359 "launch_native_messaging_host_process.h", |
| 360 "rdp_desktop_session.cc", |
| 361 "rdp_desktop_session.h", |
| 362 "unprivileged_process_delegate.cc", |
| 363 "unprivileged_process_delegate.h", |
| 364 "wts_session_process_delegate.cc", |
| 365 "wts_session_process_delegate.h", |
| 366 ] |
| 367 |
| 368 deps = [ |
| 369 ":messages", |
| 370 ":remoting_lib_idl", |
| 371 ":remoting_lib_ps", |
| 372 ":remoting_windows_resources", |
| 373 ":win", |
| 374 "//base", |
| 375 "//base:base_static", |
| 376 "//base/allocator", |
| 377 "//base/third_party/dynamic_annotations", |
| 378 "//build/win:default_exe_manifest", |
| 379 "//ipc", |
| 380 "//net", |
| 381 "//remoting/base", |
| 382 "//remoting/base:breakpad", |
| 383 "//remoting/codec", |
| 384 "//remoting/host:host", |
| 385 "//remoting/host:remoting_me2me_host_static", |
| 386 "//remoting/host/it2me:common", |
| 387 "//remoting/host/native_messaging", |
| 388 "//remoting/host/security_key:main", |
| 389 "//remoting/host/setup", |
| 390 "//remoting/protocol", |
| 391 "//sandbox/win:sandbox", # Should always use Windows version |
| 392 "//third_party/webrtc/modules/desktop_capture", |
| 393 ] |
| 394 |
| 395 ldflags = [ |
| 396 "/EXPORT:DllGetClassObject=PsDllGetClassObject,PRIVATE", |
| 397 "/EXPORT:DllCanUnloadNow=PsDllCanUnloadNow,PRIVATE", |
| 398 "/EXPORT:DllRegisterServer=PsDllRegisterServer,PRIVATE", |
| 399 "/EXPORT:DllUnregisterServer=PsDllUnregisterServer,PRIVATE", |
| 400 ] |
| 401 |
| 402 libs = [ |
| 403 "comctl32.lib", |
| 404 "rpcns4.lib", |
| 405 "rpcrt4.lib", |
| 406 "sas.lib", |
| 407 "uuid.lib", |
| 408 "wtsapi32.lib", |
| 409 ] |
| 410 |
| 411 if (is_clang) { |
| 412 cflags = [ "-Wno-header-hygiene" ] |
| 413 } |
| 414 } |
| 415 |
| 416 executable("remoting_desktop") { |
| 417 configs += [ |
| 418 "//build/config/compiler:wexit_time_destructors", |
| 419 "//build/config/win:windowed", |
| 420 ] |
| 421 |
| 422 defines = host_predefines + [ "BINARY=BINARY_DESKTOP" ] |
| 423 |
| 424 deps = [ |
| 425 ":remoting_core", |
| 426 ":remoting_windows_resources", |
| 427 ] |
| 428 |
| 429 if (is_official_build) { |
| 430 deps += [ ":dpi_aware_elevated_exe_manifest" ] |
| 431 } else { |
| 432 deps += [ ":dpi_aware_exe_manifest" ] |
| 433 } |
| 434 |
| 435 sources = [ |
| 436 "$root_gen_dir/remoting/version.rc", |
| 437 "entry_point.cc", |
| 438 ] |
| 439 |
| 440 ldflags = [ |
| 441 "/ENTRY:HostEntryPoint", |
| 442 # "/NODEFAULTLIB", |
| 443 ] |
| 444 } |
| 445 |
| 446 executable("remoting_native_messaging_host") { |
| 447 configs += [ "//build/config/compiler:wexit_time_destructors" ] |
| 448 |
| 449 defines = host_predefines + [ "BINARY=BINARY_NATIVE_MESSAGING_HOST" ] |
| 450 |
| 451 deps = [ |
| 452 ":remoting_core", |
| 453 ":remoting_windows_resources", |
| 454 "//build/win:default_exe_manifest", |
| 455 ] |
| 456 |
| 457 sources = [ |
| 458 "$root_gen_dir/remoting/version.rc", |
| 459 "../setup/me2me_native_messaging_host_entry_point.cc", |
| 460 ] |
| 461 } |
| 462 |
| 463 remoting_localize("remoting_windows_resources") { |
| 464 deps = [ |
| 465 "//remoting/resources", |
| 466 ] |
| 467 |
| 468 sources = [ |
| 469 "core.rc.jinja2", |
| 470 "version.rc.jinja2", |
| 471 ] |
| 472 |
| 473 # TODO(zijiehe): Export lastchange_path from |
| 474 # //chrome/version.gni:process_version |
| 475 variables = [ |
| 476 rebase_path(chrome_version_file), |
| 477 rebase_path(remoting_version_file), |
| 478 rebase_path("//build/util/LASTCHANGE"), |
| 479 ] |
| 480 |
| 481 output = "$root_gen_dir/remoting/{{source_name_part}}" |
| 482 |
| 483 locale_dir = webapp_locale_dir |
| 484 |
| 485 encoding = "utf-16" |
| 486 |
| 487 locales = remoting_locales |
| 488 } |
| 489 # TODO(GYP) More Windows remoting targets from remoting_host_win.gypi |
OLD | NEW |