1 # Copyright 2013 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 'includes': [ 10 'nacl/nacl_defines.gypi', 11 ], 12 'target_defaults': { 13 'variables': { 14 'nacl_target': 0, 15 }, 16 'target_conditions': [ 17 # This part is shared between the targets defined below. Only files and 18 # settings relevant for building the Win64 target should be added here. 19 ['nacl_target==1', { 20 'include_dirs': [ 21 '<(INTERMEDIATE_DIR)', 22 ], 23 'defines': [ 24 '<@(nacl_defines)', 25 ], 26 'sources': [ 27 # .cc, .h, and .mm files under nacl that are used on all 28 # platforms, including both 32-bit and 64-bit Windows. 29 # Test files are also not included. 30 'nacl/loader/nacl_ipc_adapter.cc', 31 'nacl/loader/nacl_ipc_adapter.h', 32 'nacl/loader/nacl_main.cc', 33 'nacl/loader/nacl_main_platform_delegate.h', 34 'nacl/loader/nacl_main_platform_delegate_linux.cc', 35 'nacl/loader/nacl_main_platform_delegate_mac.mm', 36 'nacl/loader/nacl_main_platform_delegate_win.cc', 37 'nacl/loader/nacl_listener.cc', 38 'nacl/loader/nacl_listener.h', 39 'nacl/loader/nacl_trusted_listener.cc', 40 'nacl/loader/nacl_trusted_listener.h', 41 'nacl/loader/nacl_validation_db.h', 42 'nacl/loader/nacl_validation_query.cc', 43 'nacl/loader/nacl_validation_query.h', 44 ], 45 # TODO(gregoryd): consider switching NaCl to use Chrome OS defines 46 'conditions': [ 47 ['OS=="win"', { 48 'defines': [ 49 '__STDC_LIMIT_MACROS=1', 50 ], 51 'include_dirs': [ 52 '<(DEPTH)/third_party/wtl/include', 53 ], 54 },], 55 ['OS=="linux"', { 56 'defines': [ 57 '__STDC_LIMIT_MACROS=1', 58 ], 59 'sources': [ 60 '../components/nacl/common/nacl_paths.cc', 61 '../components/nacl/common/nacl_paths.h', 62 ], 63 },], 64 ], 65 }], 66 ], 67 }, 68 'conditions': [ 69 ['disable_nacl!=1', { 70 'targets': [ 71 { 72 'target_name': 'nacl', 73 'type': 'static_library', 74 'variables': { 75 'nacl_target': 1, 76 }, 77 'dependencies': [ 78 '../base/base.gyp:base', 79 '../base/base.gyp:base_static', 80 '../ipc/ipc.gyp:ipc', 81 '../ppapi/ppapi_internal.gyp:ppapi_shared', 82 '../ppapi/ppapi_internal.gyp:ppapi_ipc', 83 '../native_client/src/trusted/service_runtime/service_runtime.gyp:sel_main_chrome', 84 ], 85 'conditions': [ 86 ['disable_nacl_untrusted==0', { 87 'dependencies': [ 88 '../ppapi/native_client/native_client.gyp:nacl_irt', 89 '../ppapi/native_client/src/untrusted/pnacl_support_extension/pnacl_support_extension.gyp:pnacl_support_extension', 90 ], 91 }], 92 ], 93 'direct_dependent_settings': { 94 'defines': [ 95 '<@(nacl_defines)', 96 ], 97 }, 98 }, 99 { 100 'target_name': 'nacl_browser', 101 'type': 'static_library', 102 'sources': [ 103 'nacl/browser/nacl_broker_host_win.cc', 104 'nacl/browser/nacl_broker_host_win.h', 105 'nacl/browser/nacl_broker_service_win.cc', 106 'nacl/browser/nacl_broker_service_win.h', 107 'nacl/browser/nacl_browser.cc', 108 'nacl/browser/nacl_browser.h', 109 'nacl/browser/nacl_file_host.cc', 110 'nacl/browser/nacl_file_host.h', 111 'nacl/browser/nacl_host_message_filter.cc', 112 'nacl/browser/nacl_host_message_filter.h', 113 'nacl/browser/nacl_process_host.cc', 114 'nacl/browser/nacl_process_host.h', 115 'nacl/browser/nacl_validation_cache.cc', 116 'nacl/browser/nacl_validation_cache.h', 117 'nacl/browser/pnacl_host.cc', 118 'nacl/browser/pnacl_host.h', 119 'nacl/browser/pnacl_translation_cache.cc', 120 'nacl/browser/pnacl_translation_cache.h', 121 'nacl/common/nacl_debug_exception_handler_win.cc', 122 'nacl/common/nacl_debug_exception_handler_win.h', 123 ], 124 'include_dirs': [ 125 '..', 126 ], 127 'dependencies': [ 128 'nacl_common', 129 'nacl_switches', 130 '../native_client/src/trusted/service_runtime/service_runtime.gyp:sel', 131 '../content/content.gyp:content_browser', 132 ], 133 'defines': [ 134 '<@(nacl_defines)', 135 ], 136 # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. 137 'msvs_disabled_warnings': [4267, ], 138 'conditions': [ 139 ['OS=="linux"', { 140 'sources': [ 141 '../components/nacl/zygote/nacl_fork_delegate_linux.cc', 142 '../components/nacl/zygote/nacl_fork_delegate_linux.h', 143 ], 144 'dependencies': [ 145 # Required by nacl_fork_delegate_linux.cc. 146 '../sandbox/sandbox.gyp:suid_sandbox_client', 147 ] 148 }], 149 ], 150 }, 151 { 152 'target_name': 'nacl_renderer', 153 'type': 'static_library', 154 'sources': [ 155 'nacl/renderer/file_downloader.cc', 156 'nacl/renderer/file_downloader.h', 157 'nacl/renderer/histogram.cc', 158 'nacl/renderer/histogram.h', 159 'nacl/renderer/manifest_downloader.cc', 160 'nacl/renderer/manifest_downloader.h', 161 'nacl/renderer/manifest_service_channel.cc', 162 'nacl/renderer/manifest_service_channel.h', 163 'nacl/renderer/nacl_helper.cc', 164 'nacl/renderer/nacl_helper.h', 165 'nacl/renderer/json_manifest.cc', 166 'nacl/renderer/json_manifest.h', 167 'nacl/renderer/nexe_load_manager.cc', 168 'nacl/renderer/nexe_load_manager.h', 169 'nacl/renderer/platform_info.cc', 170 'nacl/renderer/platform_info.h', 171 'nacl/renderer/pnacl_translation_resource_host.cc', 172 'nacl/renderer/pnacl_translation_resource_host.h', 173 'nacl/renderer/ppb_nacl_private_impl.cc', 174 'nacl/renderer/ppb_nacl_private_impl.h', 175 'nacl/renderer/progress_event.cc', 176 'nacl/renderer/progress_event.h', 177 'nacl/renderer/trusted_plugin_channel.cc', 178 'nacl/renderer/trusted_plugin_channel.h', 179 ], 180 'include_dirs': [ 181 '..', 182 ], 183 'dependencies': [ 184 'nacl_common', 185 '../content/content.gyp:content_renderer', 186 '../ppapi/native_client/src/trusted/plugin/plugin.gyp:nacl_trusted_plugin', 187 '../third_party/jsoncpp/jsoncpp.gyp:jsoncpp', 188 '../third_party/WebKit/public/blink.gyp:blink', 189 ], 190 'defines': [ 191 '<@(nacl_defines)', 192 ], 193 'direct_dependent_settings': { 194 'defines': [ 195 '<@(nacl_defines)', 196 ], 197 }, 198 }, 199 { 200 'target_name': 'nacl_loader_unittests', 201 'type': '<(gtest_target_type)', 202 'sources': [ 203 'nacl/loader/run_all_unittests.cc', 204 ], 205 'dependencies': [ 206 'nacl', 207 '../base/base.gyp:test_support_base', 208 '../testing/gtest.gyp:gtest', 209 ], 210 'conditions': [ 211 ['OS=="linux"', { 212 'sources': [ 213 # TODO(mazda): Move this to browser_tests once we have 214 # established a way to run browser_tests on ARM Chrome OS 215 # devices (http://crbug.com/364729). 216 'nacl/loader/nonsfi/irt_icache_unittest.cc', 217 # TODO(hamaji): Currently, we build them twice. Stop building 218 # them for components_unittests. See crbug.com/364751 219 'nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc', 220 'nacl/loader/nonsfi/nonsfi_sandbox_sigsys_unittest.cc', 221 ], 222 'dependencies': [ 223 'nacl_linux', 224 '../sandbox/sandbox.gyp:sandbox_linux_test_utils', 225 ], 226 }], 227 ], 228 }, 229 ], 230 'conditions': [ 231 ['OS=="linux"', { 232 'targets': [ 233 { 234 'target_name': 'nacl_helper', 235 'type': 'executable', 236 'include_dirs': [ 237 '..', 238 ], 239 'sources': [ 240 'nacl/loader/nacl_helper_linux.cc', 241 'nacl/loader/nacl_helper_linux.h', 242 ], 243 'dependencies': [ 244 'nacl_linux', 245 ], 246 'cflags': ['-fPIE'], 247 'ldflags!': [ 248 # Do not pick the default ASan options from 249 # build/sanitizers/sanitizer_options.cc to avoid a conflict with 250 # those in nacl/nacl_helper_linux.cc. 251 '-Wl,-u_sanitizer_options_link_helper', 252 ], 253 'link_settings': { 254 'ldflags': ['-pie'], 255 }, 256 }, { 257 'target_name': 'nacl_linux', 258 'type': 'static_library', 259 'include_dirs': [ 260 '..', 261 ], 262 'defines': [ 263 '<@(nacl_defines)', 264 # Allow .cc files to know if they're being compiled as part 265 # of nacl_helper. 266 'IN_NACL_HELPER=1', 267 ], 268 'sources': [ 269 'nacl/loader/nonsfi/abi_conversion.cc', 270 'nacl/loader/nonsfi/abi_conversion.h', 271 'nacl/loader/nonsfi/elf_loader.cc', 272 'nacl/loader/nonsfi/elf_loader.h', 273 'nacl/loader/nonsfi/irt_basic.cc', 274 'nacl/loader/nonsfi/irt_clock.cc', 275 'nacl/loader/nonsfi/irt_exception_handling.cc', 276 'nacl/loader/nonsfi/irt_fdio.cc', 277 'nacl/loader/nonsfi/irt_futex.cc', 278 'nacl/loader/nonsfi/irt_icache.cc', 279 'nacl/loader/nonsfi/irt_interfaces.cc', 280 'nacl/loader/nonsfi/irt_interfaces.h', 281 'nacl/loader/nonsfi/irt_memory.cc', 282 'nacl/loader/nonsfi/irt_ppapi.cc', 283 'nacl/loader/nonsfi/irt_random.cc', 284 'nacl/loader/nonsfi/irt_resource_open.cc', 285 'nacl/loader/nonsfi/irt_thread.cc', 286 'nacl/loader/nonsfi/irt_util.h', 287 'nacl/loader/nonsfi/nonsfi_listener.cc', 288 'nacl/loader/nonsfi/nonsfi_listener.h', 289 'nacl/loader/nonsfi/nonsfi_main.cc', 290 'nacl/loader/nonsfi/nonsfi_main.h', 291 'nacl/loader/nonsfi/nonsfi_sandbox.cc', 292 'nacl/loader/nonsfi/nonsfi_sandbox.h', 293 'nacl/loader/sandbox_linux/nacl_bpf_sandbox_linux.cc', 294 'nacl/loader/sandbox_linux/nacl_sandbox_linux.cc', 295 '../ppapi/nacl_irt/irt_manifest.h', 296 '../ppapi/nacl_irt/manifest_service.cc', 297 '../ppapi/nacl_irt/manifest_service.h', 298 '../ppapi/nacl_irt/plugin_main.cc', 299 '../ppapi/nacl_irt/plugin_main.h', 300 '../ppapi/nacl_irt/plugin_startup.cc', 301 '../ppapi/nacl_irt/plugin_startup.h', 302 '../ppapi/nacl_irt/ppapi_dispatcher.cc', 303 '../ppapi/nacl_irt/ppapi_dispatcher.h', 304 ], 305 'dependencies': [ 306 'nacl', 307 'nacl_common', 308 'nacl_switches', 309 '../components/tracing.gyp:tracing', 310 '../crypto/crypto.gyp:crypto', 311 '../sandbox/sandbox.gyp:libc_urandom_override', 312 '../sandbox/sandbox.gyp:sandbox', 313 '../ppapi/ppapi_internal.gyp:ppapi_proxy', 314 ], 315 'conditions': [ 316 ['use_glib == 1', { 317 'dependencies': [ 318 '../build/linux/system.gyp:glib', 319 ], 320 }], 321 ['os_posix == 1 and OS != "mac"', { 322 'conditions': [ 323 ['use_allocator!="none"', { 324 'dependencies': [ 325 '../base/allocator/allocator.gyp:allocator', 326 ], 327 }], 328 ], 329 }], 330 ['use_seccomp_bpf == 0', { 331 'sources!': [ 332 '../content/common/sandbox_linux/sandbox_bpf_base_policy_linux.cc', 333 '../content/common/sandbox_linux/sandbox_init_linux.cc', 334 ], 335 }, { 336 'defines': ['USE_SECCOMP_BPF'], 337 }], 338 ], 339 'cflags': ['-fPIE'], 340 }, 341 ], 342 }], 343 ['OS=="win" and target_arch=="ia32"', { 344 'targets': [ 345 { 346 'target_name': 'nacl_win64', 347 'type': 'static_library', 348 'variables': { 349 'nacl_target': 1, 350 }, 351 'dependencies': [ 352 'nacl_common_win64', 353 '../native_client/src/trusted/service_runtime/service_runtime.gyp:sel_main_chrome64', 354 '../ppapi/ppapi_internal.gyp:ppapi_shared_win64', 355 '../ppapi/ppapi_internal.gyp:ppapi_ipc_win64', 356 ], 357 'export_dependent_settings': [ 358 '../ppapi/ppapi_internal.gyp:ppapi_ipc_win64', 359 ], 360 'sources': [ 361 '../components/nacl/broker/nacl_broker_listener.cc', 362 '../components/nacl/broker/nacl_broker_listener.h', 363 '../components/nacl/common/nacl_debug_exception_handler_win.cc', 364 '../components/nacl/loader/nacl_helper_win_64.cc', 365 '../components/nacl/loader/nacl_helper_win_64.h', 366 ], 367 'include_dirs': [ 368 '..', 369 ], 370 'defines': [ 371 '<@(nacl_win64_defines)', 372 'COMPILE_CONTENT_STATICALLY', 373 ], 374 'configurations': { 375 'Common_Base': { 376 'msvs_target_platform': 'x64', 377 }, 378 }, 379 'direct_dependent_settings': { 380 'defines': [ 381 '<@(nacl_defines)', 382 ], 383 }, 384 }, 385 { 386 'target_name': 'nacl_switches_win64', 387 'type': 'static_library', 388 'sources': [ 389 'nacl/common/nacl_switches.cc', 390 'nacl/common/nacl_switches.h', 391 ], 392 'include_dirs': [ 393 '..', 394 ], 395 'configurations': { 396 'Common_Base': { 397 'msvs_target_platform': 'x64', 398 }, 399 }, 400 }, 401 { 402 'target_name': 'nacl_common_win64', 403 'type': 'static_library', 404 'defines': [ 405 'COMPILE_CONTENT_STATICALLY', 406 ], 407 'sources': [ 408 'nacl/common/nacl_cmd_line.cc', 409 'nacl/common/nacl_cmd_line.h', 410 'nacl/common/nacl_constants.cc', 411 'nacl/common/nacl_constants.h', 412 'nacl/common/nacl_messages.cc', 413 'nacl/common/nacl_messages.h', 414 'nacl/common/nacl_renderer_messages.h', 415 'nacl/common/nacl_renderer_messages.cc', 416 'nacl/common/nacl_types.cc', 417 'nacl/common/nacl_types.h', 418 ], 419 'include_dirs': [ 420 '..', 421 ], 422 'configurations': { 423 'Common_Base': { 424 'msvs_target_platform': 'x64', 425 }, 426 }, 427 }, 428 ], 429 }], 430 ], 431 }, { # else (disable_nacl==1) 432 'targets': [ 433 { 434 'target_name': 'nacl', 435 'type': 'none', 436 'sources': [], 437 }, 438 ], 439 'conditions': [ 440 ['OS=="win"', { 441 'targets': [ 442 { 443 'target_name': 'nacl_win64', 444 'type': 'none', 445 'sources': [], 446 }, 447 { 448 'target_name': 'nacl_switches_win64', 449 'type': 'none', 450 'sources': [], 451 }, 452 ], 453 }], 454 ], 455 }], 456 ['disable_nacl!=1 and test_isolation_mode!="noop"', { 457 'targets': [ 458 { 459 'target_name': 'nacl_loader_unittests_run', 460 'type': 'none', 461 'dependencies': [ 462 'nacl_loader_unittests', 463 ], 464 'includes': [ 465 '../build/isolate.gypi', 466 'nacl_loader_unittests.isolate', 467 ], 468 'sources': [ 469 'nacl_loader_unittests.isolate', 470 ], 471 }, 472 ], 473 }], 474 ], 475 'targets': [ 476 { 477 'target_name': 'nacl_switches', 478 'type': 'static_library', 479 'sources': [ 480 'nacl/common/nacl_switches.cc', 481 'nacl/common/nacl_switches.h', 482 ], 483 'include_dirs': [ 484 '..', 485 ], 486 }, 487 { 488 'target_name': 'nacl_common', 489 'type': 'static_library', 490 'sources': [ 491 'nacl/common/nacl_cmd_line.cc', 492 'nacl/common/nacl_cmd_line.h', 493 'nacl/common/nacl_constants.cc', 494 'nacl/common/nacl_constants.h', 495 'nacl/common/nacl_host_messages.h', 496 'nacl/common/nacl_host_messages.cc', 497 'nacl/common/nacl_messages.cc', 498 'nacl/common/nacl_messages.h', 499 'nacl/common/nacl_nonsfi_util.cc', 500 'nacl/common/nacl_nonsfi_util.h', 501 'nacl/common/nacl_process_type.h', 502 'nacl/common/nacl_renderer_messages.h', 503 'nacl/common/nacl_renderer_messages.cc', 504 'nacl/common/nacl_sandbox_type_mac.h', 505 'nacl/common/nacl_types.cc', 506 'nacl/common/nacl_types.h', 507 'nacl/common/pnacl_types.cc', 508 'nacl/common/pnacl_types.h', 509 ], 510 'include_dirs': [ 511 '..', 512 ], 513 'dependencies': [ 514 '../content/content.gyp:content_common', 515 ], 516 }, 517 ] 518 } 519