| OLD | NEW |
| 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 # ============================================================================= | 5 # ============================================================================= |
| 6 # BUILD FLAGS | 6 # BUILD FLAGS |
| 7 # ============================================================================= | 7 # ============================================================================= |
| 8 # | 8 # |
| 9 # This block lists input arguments to the build, along with their default | 9 # This block lists input arguments to the build, along with their default |
| 10 # values. GN requires listing them explicitly so it can validate input and have | 10 # values. GN requires listing them explicitly so it can validate input and have |
| 11 # a central place to manage the build flags. | 11 # a central place to manage the build flags. |
| 12 # | 12 # |
| 13 # If a value is specified on the command line, it will overwrite the defaults | 13 # If a value is specified on the command line, it will overwrite the defaults |
| 14 # given here, otherwise the default will be injected into the root scope. | 14 # given here, otherwise the default will be injected into the root scope. |
| 15 # | 15 # |
| 16 # KEEP IN ALPHABETICAL ORDER and write a good description for everything. | 16 # KEEP IN ALPHABETICAL ORDER and write a good description for everything. |
| 17 # Use "is_*" names for intrinsic platform descriptions and build modes, and | 17 # Use "is_*" names for intrinsic platform descriptions and build modes, and |
| 18 # "use_*" names for optional features libraries, and configurations. | 18 # "use_*" names for optional features libraries, and configurations. |
| 19 declare_args() { | 19 declare_args() { |
| 20 # How many symbols to include in the build. This affects the performance of | 20 # How many symbols to include in the build. This affects the performance of |
| 21 # the build since the symbols are large and dealing with them is slow. | 21 # the build since the symbols are large and dealing with them is slow. |
| 22 # 2 means regular build with symbols. | 22 # 2 means regular build with symbols. |
| 23 # 1 means minimal symbols, usually enough for backtraces only. | 23 # 1 means minimal symbols, usually enough for backtraces only. |
| 24 # 0 means no symbols. | 24 # 0 means no symbols. |
| 25 # -1 means auto-set (off in release, regular in debug). | 25 # -1 means auto-set (off in release, regular in debug). |
| 26 symbol_level = -1 | 26 symbol_level = -1 |
| 27 | 27 |
| 28 # Component build. | 28 # Component build. |
| 29 is_component_build = false | 29 is_component_build = false |
| 30 |
| 30 # Debug build. | 31 # Debug build. |
| 31 is_debug = true | 32 is_debug = true |
| 32 | 33 |
| 33 # Set to true when compiling with the Clang compiler. Typically this is used | 34 # Set to true when compiling with the Clang compiler. Typically this is used |
| 34 # to configure warnings. | 35 # to configure warnings. |
| 35 is_clang = (os == "mac" || os == "ios" || os == "linux" || os == "chromeos") | 36 is_clang = os == "mac" || os == "ios" || os == "linux" || os == "chromeos" |
| 36 | 37 |
| 37 # Selects the desired build flavor. Official builds get additional | 38 # Selects the desired build flavor. Official builds get additional |
| 38 # processing to prepare for release. Normally you will want to develop and | 39 # processing to prepare for release. Normally you will want to develop and |
| 39 # test with this flag off. | 40 # test with this flag off. |
| 40 is_official_build = false | 41 is_official_build = false |
| 41 | 42 |
| 42 # Select the desired branding flavor. False means normal Chromium branding, | 43 # Select the desired branding flavor. False means normal Chromium branding, |
| 43 # true means official Google Chrome branding (requires extra Google-internal | 44 # true means official Google Chrome branding (requires extra Google-internal |
| 44 # resources). | 45 # resources). |
| 45 is_chrome_branded = false | 46 is_chrome_branded = false |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 "*_ios.h", | 232 "*_ios.h", |
| 232 "*_ios.cc", | 233 "*_ios.cc", |
| 233 "*_ios.mm", | 234 "*_ios.mm", |
| 234 "*_ios_unittest.h", | 235 "*_ios_unittest.h", |
| 235 "*_ios_unittest.cc", | 236 "*_ios_unittest.cc", |
| 236 "*_ios_unittest.mm", | 237 "*_ios_unittest.mm", |
| 237 "*\bios/*", | 238 "*\bios/*", |
| 238 ] | 239 ] |
| 239 } | 240 } |
| 240 if (!is_mac && !is_ios) { | 241 if (!is_mac && !is_ios) { |
| 241 sources_assignment_filter += [ | 242 sources_assignment_filter += [ "*.mm" ] |
| 242 "*.mm", | |
| 243 ] | |
| 244 } | 243 } |
| 245 if (!is_linux) { | 244 if (!is_linux) { |
| 246 sources_assignment_filter += [ | 245 sources_assignment_filter += [ |
| 247 "*_linux.h", | 246 "*_linux.h", |
| 248 "*_linux.cc", | 247 "*_linux.cc", |
| 249 "*_linux_unittest.h", | 248 "*_linux_unittest.h", |
| 250 "*_linux_unittest.cc", | 249 "*_linux_unittest.cc", |
| 251 "*\blinux/*", | 250 "*\blinux/*", |
| 252 ] | 251 ] |
| 253 } | 252 } |
| 254 if (!is_android) { | 253 if (!is_android) { |
| 255 sources_assignment_filter += [ | 254 sources_assignment_filter += [ |
| 256 "*_android.h", | 255 "*_android.h", |
| 257 "*_android.cc", | 256 "*_android.cc", |
| 258 "*_android_unittest.h", | 257 "*_android_unittest.h", |
| 259 "*_android_unittest.cc", | 258 "*_android_unittest.cc", |
| 260 "*\bandroid/*", | 259 "*\bandroid/*", |
| 261 ] | 260 ] |
| 262 } | 261 } |
| 263 if (!is_chromeos) { | 262 if (!is_chromeos) { |
| 264 sources_assignment_filter += [ | 263 sources_assignment_filter += [ |
| 265 "*_chromeos.h", | 264 "*_chromeos.h", |
| 266 "*_chromeos.cc", | 265 "*_chromeos.cc", |
| 267 "*_chromeos_unittest.h", | 266 "*_chromeos_unittest.h", |
| 268 "*_chromeos_unittest.cc", | 267 "*_chromeos_unittest.cc", |
| 269 "*\bchromeos/*", | 268 "*\bchromeos/*", |
| 270 ] | 269 ] |
| 271 } | 270 } |
| 271 |
| 272 # DO NOT ADD MORE PATTERNS TO THIS LIST, see set_sources_assignment_filter call | 272 # DO NOT ADD MORE PATTERNS TO THIS LIST, see set_sources_assignment_filter call |
| 273 # below. | 273 # below. |
| 274 | 274 |
| 275 # Actually save this list. | 275 # Actually save this list. |
| 276 # | 276 # |
| 277 # These patterns are executed for every file in the source tree of every run. | 277 # These patterns are executed for every file in the source tree of every run. |
| 278 # Therefore, adding more patterns slows down the build for everybody. We should | 278 # Therefore, adding more patterns slows down the build for everybody. We should |
| 279 # only add automatic patterns for configurations affecting hundreds of files | 279 # only add automatic patterns for configurations affecting hundreds of files |
| 280 # across many projects in the tree. | 280 # across many projects in the tree. |
| 281 # | 281 # |
| (...skipping 20 matching lines...) Expand all Loading... |
| 302 # | 302 # |
| 303 # Set up the default configuration for every build target of the given type. | 303 # Set up the default configuration for every build target of the given type. |
| 304 # The values configured here will be automatically set on the scope of the | 304 # The values configured here will be automatically set on the scope of the |
| 305 # corresponding target. Target definitions can add or remove to the settings | 305 # corresponding target. Target definitions can add or remove to the settings |
| 306 # here as needed. | 306 # here as needed. |
| 307 | 307 |
| 308 # Holds all configs used for making native executables and libraries, to avoid | 308 # Holds all configs used for making native executables and libraries, to avoid |
| 309 # duplication in each target below. | 309 # duplication in each target below. |
| 310 _native_compiler_configs = [ | 310 _native_compiler_configs = [ |
| 311 "//build/config:feature_flags", | 311 "//build/config:feature_flags", |
| 312 | |
| 313 "//build/config/compiler:compiler", | 312 "//build/config/compiler:compiler", |
| 314 "//build/config/compiler:compiler_arm_fpu", | 313 "//build/config/compiler:compiler_arm_fpu", |
| 315 "//build/config/compiler:chromium_code", | 314 "//build/config/compiler:chromium_code", |
| 316 "//build/config/compiler:default_include_dirs", | 315 "//build/config/compiler:default_include_dirs", |
| 317 "//build/config/compiler:default_warnings", | 316 "//build/config/compiler:default_warnings", |
| 318 "//build/config/compiler:no_rtti", | 317 "//build/config/compiler:no_rtti", |
| 319 "//build/config/compiler:runtime_library", | 318 "//build/config/compiler:runtime_library", |
| 320 ] | 319 ] |
| 321 if (is_win) { | 320 if (is_win) { |
| 322 _native_compiler_configs += [ | 321 _native_compiler_configs += [ |
| 323 "//build/config/win:lean_and_mean", | 322 "//build/config/win:lean_and_mean", |
| 324 "//build/config/win:nominmax", | 323 "//build/config/win:nominmax", |
| 325 "//build/config/win:sdk", | 324 "//build/config/win:sdk", |
| 326 "//build/config/win:unicode", | 325 "//build/config/win:unicode", |
| 327 "//build/config/win:winver", | 326 "//build/config/win:winver", |
| 328 ] | 327 ] |
| 329 } | 328 } |
| 330 if (is_posix) { | 329 if (is_posix) { |
| 331 _native_compiler_configs += [ | 330 _native_compiler_configs += [ |
| 332 "//build/config/gcc:no_exceptions", | 331 "//build/config/gcc:no_exceptions", |
| 333 "//build/config/gcc:symbol_visibility_hidden", | 332 "//build/config/gcc:symbol_visibility_hidden", |
| 334 ] | 333 ] |
| 335 } | 334 } |
| 336 | 335 |
| 337 if (is_linux) { | 336 if (is_linux) { |
| 338 _native_compiler_configs += [ "//build/config/linux:sdk", ] | 337 _native_compiler_configs += [ "//build/config/linux:sdk" ] |
| 339 } else if (is_mac) { | 338 } else if (is_mac) { |
| 340 _native_compiler_configs += [ "//build/config/mac:sdk", ] | 339 _native_compiler_configs += [ "//build/config/mac:sdk" ] |
| 341 } else if (is_ios) { | 340 } else if (is_ios) { |
| 342 _native_compiler_configs += [ "//build/config/ios:sdk", ] | 341 _native_compiler_configs += [ "//build/config/ios:sdk" ] |
| 343 } else if (is_android) { | 342 } else if (is_android) { |
| 344 _native_compiler_configs += [ "//build/config/android:sdk", ] | 343 _native_compiler_configs += [ "//build/config/android:sdk" ] |
| 345 } | 344 } |
| 346 | 345 |
| 347 if (is_clang) { | 346 if (is_clang) { |
| 348 _native_compiler_configs += [ | 347 _native_compiler_configs += [ |
| 349 "//build/config/clang:find_bad_constructs", | 348 "//build/config/clang:find_bad_constructs", |
| 350 "//build/config/clang:extra_warnings", | 349 "//build/config/clang:extra_warnings", |
| 351 ] | 350 ] |
| 352 } | 351 } |
| 353 | 352 |
| 354 # Optimizations and debug checking. | 353 # Optimizations and debug checking. |
| (...skipping 26 matching lines...) Expand all Loading... |
| 381 _default_symbols_config = "//build/config/compiler:no_symbols" | 380 _default_symbols_config = "//build/config/compiler:no_symbols" |
| 382 } else { | 381 } else { |
| 383 assert(false, "Bad value for symbol_level.") | 382 assert(false, "Bad value for symbol_level.") |
| 384 } | 383 } |
| 385 _native_compiler_configs += [ _default_symbols_config ] | 384 _native_compiler_configs += [ _default_symbols_config ] |
| 386 | 385 |
| 387 # Windows linker setup for EXEs and DLLs. | 386 # Windows linker setup for EXEs and DLLs. |
| 388 if (is_win) { | 387 if (is_win) { |
| 389 if (is_debug) { | 388 if (is_debug) { |
| 390 _default_incremental_linking_config = | 389 _default_incremental_linking_config = |
| 391 "//build/config/win:incremental_linking" | 390 "//build/config/win:incremental_linking" |
| 392 } else { | 391 } else { |
| 393 _default_incremental_linking_config = | 392 _default_incremental_linking_config = |
| 394 "//build/config/win:no_incremental_linking" | 393 "//build/config/win:no_incremental_linking" |
| 395 } | 394 } |
| 396 _windows_linker_configs = [ | 395 _windows_linker_configs = [ |
| 397 _default_incremental_linking_config, | 396 _default_incremental_linking_config, |
| 398 "//build/config/win:sdk_link", | 397 "//build/config/win:sdk_link", |
| 399 "//build/config/win:common_linker_setup", | 398 "//build/config/win:common_linker_setup", |
| 399 |
| 400 # Default to console-mode apps. Most of our targets are tests and such | 400 # Default to console-mode apps. Most of our targets are tests and such |
| 401 # that shouldn't use the windows subsystem. | 401 # that shouldn't use the windows subsystem. |
| 402 "//build/config/win:console", | 402 "//build/config/win:console", |
| 403 ] | 403 ] |
| 404 } | 404 } |
| 405 | 405 |
| 406 # Executable defaults. | 406 # Executable defaults. |
| 407 _executable_configs = _native_compiler_configs + [ | 407 _executable_configs = |
| 408 "//build/config:default_libs", | 408 _native_compiler_configs + [ "//build/config:default_libs" ] |
| 409 ] | |
| 410 if (is_win) { | 409 if (is_win) { |
| 411 _executable_configs += _windows_linker_configs | 410 _executable_configs += _windows_linker_configs |
| 412 } else if (is_mac) { | 411 } else if (is_mac) { |
| 413 _executable_configs += [ | 412 _executable_configs += [ |
| 414 "//build/config/mac:mac_dynamic_flags", | 413 "//build/config/mac:mac_dynamic_flags", |
| 415 "//build/config/mac:mac_executable_flags" ] | 414 "//build/config/mac:mac_executable_flags", |
| 415 ] |
| 416 } else if (is_linux || is_android) { | 416 } else if (is_linux || is_android) { |
| 417 _executable_configs += [ "//build/config/gcc:executable_ldconfig" ] | 417 _executable_configs += [ "//build/config/gcc:executable_ldconfig" ] |
| 418 if (is_android) { | 418 if (is_android) { |
| 419 _executable_configs += [ "//build/config/android:executable_config" ] | 419 _executable_configs += [ "//build/config/android:executable_config" ] |
| 420 } | 420 } |
| 421 } | 421 } |
| 422 set_defaults("executable") { | 422 set_defaults("executable") { |
| 423 configs = _executable_configs | 423 configs = _executable_configs |
| 424 } | 424 } |
| 425 | 425 |
| 426 # Static library defaults. | 426 # Static library defaults. |
| 427 set_defaults("static_library") { | 427 set_defaults("static_library") { |
| 428 configs = _native_compiler_configs | 428 configs = _native_compiler_configs |
| 429 } | 429 } |
| 430 | 430 |
| 431 # Shared library defaults (also for components in component mode). | 431 # Shared library defaults (also for components in component mode). |
| 432 _shared_library_configs = _native_compiler_configs + [ | 432 _shared_library_configs = |
| 433 "//build/config:default_libs", | 433 _native_compiler_configs + [ "//build/config:default_libs" ] |
| 434 ] | |
| 435 if (is_win) { | 434 if (is_win) { |
| 436 _shared_library_configs += _windows_linker_configs | 435 _shared_library_configs += _windows_linker_configs |
| 437 } else if (is_mac) { | 436 } else if (is_mac) { |
| 438 _shared_library_configs += [ "//build/config/mac:mac_dynamic_flags" ] | 437 _shared_library_configs += [ "//build/config/mac:mac_dynamic_flags" ] |
| 439 } | 438 } |
| 440 set_defaults("shared_library") { | 439 set_defaults("shared_library") { |
| 441 configs = _shared_library_configs | 440 configs = _shared_library_configs |
| 442 } | 441 } |
| 443 if (is_component_build) { | 442 if (is_component_build) { |
| 444 set_defaults("component") { | 443 set_defaults("component") { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 458 | 457 |
| 459 # Test defaults. | 458 # Test defaults. |
| 460 set_defaults("test") { | 459 set_defaults("test") { |
| 461 if (is_android) { | 460 if (is_android) { |
| 462 configs = _shared_library_configs | 461 configs = _shared_library_configs |
| 463 } else { | 462 } else { |
| 464 configs = _executable_configs | 463 configs = _executable_configs |
| 465 } | 464 } |
| 466 } | 465 } |
| 467 | 466 |
| 468 | |
| 469 # ============================================================================== | 467 # ============================================================================== |
| 470 # TOOLCHAIN SETUP | 468 # TOOLCHAIN SETUP |
| 471 # ============================================================================== | 469 # ============================================================================== |
| 472 # | 470 # |
| 473 # Here we set the default toolchain, as well as the variable host_toolchain | 471 # Here we set the default toolchain, as well as the variable host_toolchain |
| 474 # which will identify the toolchain corresponding to the local system when | 472 # which will identify the toolchain corresponding to the local system when |
| 475 # doing cross-compiles. When not cross-compiling, this will be the same as the | 473 # doing cross-compiles. When not cross-compiling, this will be the same as the |
| 476 # default toolchain. | 474 # default toolchain. |
| 477 | 475 |
| 478 if (is_win) { | 476 if (is_win) { |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 529 # above. We want to use those rather than whatever came with the nested | 527 # above. We want to use those rather than whatever came with the nested |
| 530 # shared/static library inside the component. | 528 # shared/static library inside the component. |
| 531 configs = [] # Prevent list overwriting warning. | 529 configs = [] # Prevent list overwriting warning. |
| 532 configs = invoker.configs | 530 configs = invoker.configs |
| 533 | 531 |
| 534 # The sources assignment filter will have already been applied when the | 532 # The sources assignment filter will have already been applied when the |
| 535 # code was originally executed. We don't want to apply it again, since | 533 # code was originally executed. We don't want to apply it again, since |
| 536 # the original target may have override it for some assignments. | 534 # the original target may have override it for some assignments. |
| 537 set_sources_assignment_filter([]) | 535 set_sources_assignment_filter([]) |
| 538 | 536 |
| 539 if (defined(invoker.all_dependent_configs)) { all_dependent_configs = invo
ker.all_dependent_configs } | 537 if (defined(invoker.all_dependent_configs)) { |
| 540 if (defined(invoker.allow_circular_includes_from)) { allow_circular_includ
es_from = invoker.allow_circular_includes_from } | 538 all_dependent_configs = invoker.all_dependent_configs |
| 541 if (defined(invoker.cflags)) { cflags = invoker.cflags } | 539 } |
| 542 if (defined(invoker.cflags_c)) { cflags_c = invoker.cflags_c } | 540 if (defined(invoker.allow_circular_includes_from)) { |
| 543 if (defined(invoker.cflags_cc)) { cflags_cc = invoker.cflags_cc } | 541 allow_circular_includes_from = invoker.allow_circular_includes_from |
| 544 if (defined(invoker.cflags_objc)) { cflags_objc = invoker.cflags_objc } | 542 } |
| 545 if (defined(invoker.cflags_objcc)) { cflags_objcc = invoker.cflags_objcc } | 543 if (defined(invoker.cflags)) { |
| 546 if (defined(invoker.check_includes)) { check_includes = invoker.check_incl
udes } | 544 cflags = invoker.cflags |
| 547 if (defined(invoker.data)) { data = invoker.data } | 545 } |
| 548 if (defined(invoker.datadeps)) { datadeps = invoker.datadeps } | 546 if (defined(invoker.cflags_c)) { |
| 549 if (defined(invoker.defines)) { defines = invoker.defines } | 547 cflags_c = invoker.cflags_c |
| 548 } |
| 549 if (defined(invoker.cflags_cc)) { |
| 550 cflags_cc = invoker.cflags_cc |
| 551 } |
| 552 if (defined(invoker.cflags_objc)) { |
| 553 cflags_objc = invoker.cflags_objc |
| 554 } |
| 555 if (defined(invoker.cflags_objcc)) { |
| 556 cflags_objcc = invoker.cflags_objcc |
| 557 } |
| 558 if (defined(invoker.check_includes)) { |
| 559 check_includes = invoker.check_includes |
| 560 } |
| 561 if (defined(invoker.data)) { |
| 562 data = invoker.data |
| 563 } |
| 564 if (defined(invoker.datadeps)) { |
| 565 datadeps = invoker.datadeps |
| 566 } |
| 567 if (defined(invoker.defines)) { |
| 568 defines = invoker.defines |
| 569 } |
| 570 |
| 550 # All shared libraries must have the sanitizer deps to properly link in | 571 # All shared libraries must have the sanitizer deps to properly link in |
| 551 # asan mode (this target will be empty in other cases). | 572 # asan mode (this target will be empty in other cases). |
| 552 if (defined(invoker.deps)) { | 573 if (defined(invoker.deps)) { |
| 553 deps = invoker.deps + [ "//build/config/sanitizers:deps" ] | 574 deps = invoker.deps + [ "//build/config/sanitizers:deps" ] |
| 554 } else { | 575 } else { |
| 555 deps = [ "//build/config/sanitizers:deps" ] | 576 deps = [ |
| 577 "//build/config/sanitizers:deps", |
| 578 ] |
| 556 } | 579 } |
| 557 if (defined(invoker.direct_dependent_configs)) { direct_dependent_configs
= invoker.direct_dependent_configs } | 580 if (defined(invoker.direct_dependent_configs)) { |
| 558 if (defined(invoker.forward_dependent_configs_from)) { forward_dependent_c
onfigs_from = invoker.forward_dependent_configs_from } | 581 direct_dependent_configs = invoker.direct_dependent_configs |
| 559 if (defined(invoker.include_dirs)) { include_dirs = invoker.include_dirs } | 582 } |
| 560 if (defined(invoker.ldflags)) { ldflags = invoker.ldflags } | 583 if (defined(invoker.forward_dependent_configs_from)) { |
| 561 if (defined(invoker.lib_dirs)) { lib_dirs = invoker.lib_dirs } | 584 forward_dependent_configs_from = invoker.forward_dependent_configs_from |
| 562 if (defined(invoker.libs)) { libs = invoker.libs } | 585 } |
| 563 if (defined(invoker.output_extension)) { output_extension = invoker.output
_extension } | 586 if (defined(invoker.include_dirs)) { |
| 564 if (defined(invoker.output_name)) { output_name = invoker.output_name } | 587 include_dirs = invoker.include_dirs |
| 565 if (defined(invoker.public)) { public = invoker.public } | 588 } |
| 566 if (defined(invoker.public_configs)) { public_configs = invoker.public_con
figs } | 589 if (defined(invoker.ldflags)) { |
| 567 if (defined(invoker.public_deps)) { public_deps = invoker.public_deps } | 590 ldflags = invoker.ldflags |
| 568 if (defined(invoker.sources)) { sources = invoker.sources } | 591 } |
| 569 if (defined(invoker.testonly)) { testonly = invoker.testonly } | 592 if (defined(invoker.lib_dirs)) { |
| 570 if (defined(invoker.visibility)) { visibility = invoker.visibility } | 593 lib_dirs = invoker.lib_dirs |
| 594 } |
| 595 if (defined(invoker.libs)) { |
| 596 libs = invoker.libs |
| 597 } |
| 598 if (defined(invoker.output_extension)) { |
| 599 output_extension = invoker.output_extension |
| 600 } |
| 601 if (defined(invoker.output_name)) { |
| 602 output_name = invoker.output_name |
| 603 } |
| 604 if (defined(invoker.public)) { |
| 605 public = invoker.public |
| 606 } |
| 607 if (defined(invoker.public_configs)) { |
| 608 public_configs = invoker.public_configs |
| 609 } |
| 610 if (defined(invoker.public_deps)) { |
| 611 public_deps = invoker.public_deps |
| 612 } |
| 613 if (defined(invoker.sources)) { |
| 614 sources = invoker.sources |
| 615 } |
| 616 if (defined(invoker.testonly)) { |
| 617 testonly = invoker.testonly |
| 618 } |
| 619 if (defined(invoker.visibility)) { |
| 620 visibility = invoker.visibility |
| 621 } |
| 571 } | 622 } |
| 572 } else { | 623 } else { |
| 573 source_set(target_name) { | 624 source_set(target_name) { |
| 574 # See above. | 625 # See above. |
| 575 configs = [] # Prevent list overwriting warning. | 626 configs = [] # Prevent list overwriting warning. |
| 576 configs = invoker.configs | 627 configs = invoker.configs |
| 577 | 628 |
| 578 # See above call. | 629 # See above call. |
| 579 set_sources_assignment_filter([]) | 630 set_sources_assignment_filter([]) |
| 580 | 631 |
| 581 if (defined(invoker.all_dependent_configs)) { all_dependent_configs = invo
ker.all_dependent_configs } | 632 if (defined(invoker.all_dependent_configs)) { |
| 582 if (defined(invoker.allow_circular_includes_from)) { allow_circular_includ
es_from = invoker.allow_circular_includes_from } | 633 all_dependent_configs = invoker.all_dependent_configs |
| 583 if (defined(invoker.cflags)) { cflags = invoker.cflags } | 634 } |
| 584 if (defined(invoker.cflags_c)) { cflags_c = invoker.cflags_c } | 635 if (defined(invoker.allow_circular_includes_from)) { |
| 585 if (defined(invoker.cflags_cc)) { cflags_cc = invoker.cflags_cc } | 636 allow_circular_includes_from = invoker.allow_circular_includes_from |
| 586 if (defined(invoker.cflags_objc)) { cflags_objc = invoker.cflags_objc } | 637 } |
| 587 if (defined(invoker.cflags_objcc)) { cflags_objcc = invoker.cflags_objcc } | 638 if (defined(invoker.cflags)) { |
| 588 if (defined(invoker.check_includes)) { check_includes = invoker.check_incl
udes } | 639 cflags = invoker.cflags |
| 589 if (defined(invoker.data)) { data = invoker.data } | 640 } |
| 590 if (defined(invoker.datadeps)) { datadeps = invoker.datadeps } | 641 if (defined(invoker.cflags_c)) { |
| 591 if (defined(invoker.defines)) { defines = invoker.defines } | 642 cflags_c = invoker.cflags_c |
| 592 if (defined(invoker.deps)) { deps = invoker.deps } | 643 } |
| 593 if (defined(invoker.direct_dependent_configs)) { direct_dependent_configs
= invoker.direct_dependent_configs } | 644 if (defined(invoker.cflags_cc)) { |
| 594 if (defined(invoker.forward_dependent_configs_from)) { forward_dependent_c
onfigs_from = invoker.forward_dependent_configs_from } | 645 cflags_cc = invoker.cflags_cc |
| 595 if (defined(invoker.include_dirs)) { include_dirs = invoker.include_dirs } | 646 } |
| 596 if (defined(invoker.ldflags)) { ldflags = invoker.ldflags } | 647 if (defined(invoker.cflags_objc)) { |
| 597 if (defined(invoker.lib_dirs)) { lib_dirs = invoker.lib_dirs } | 648 cflags_objc = invoker.cflags_objc |
| 598 if (defined(invoker.libs)) { libs = invoker.libs } | 649 } |
| 599 if (defined(invoker.output_extension)) { output_extension = invoker.output
_extension } | 650 if (defined(invoker.cflags_objcc)) { |
| 600 if (defined(invoker.output_name)) { output_name = invoker.output_name } | 651 cflags_objcc = invoker.cflags_objcc |
| 601 if (defined(invoker.public)) { public = invoker.public } | 652 } |
| 602 if (defined(invoker.public_configs)) { public_configs = invoker.public_con
figs } | 653 if (defined(invoker.check_includes)) { |
| 603 if (defined(invoker.public_deps)) { public_deps = invoker.public_deps } | 654 check_includes = invoker.check_includes |
| 604 if (defined(invoker.sources)) { sources = invoker.sources } | 655 } |
| 605 if (defined(invoker.testonly)) { testonly = invoker.testonly } | 656 if (defined(invoker.data)) { |
| 606 if (defined(invoker.visibility)) { visibility = invoker.visibility } | 657 data = invoker.data |
| 658 } |
| 659 if (defined(invoker.datadeps)) { |
| 660 datadeps = invoker.datadeps |
| 661 } |
| 662 if (defined(invoker.defines)) { |
| 663 defines = invoker.defines |
| 664 } |
| 665 if (defined(invoker.deps)) { |
| 666 deps = invoker.deps |
| 667 } |
| 668 if (defined(invoker.direct_dependent_configs)) { |
| 669 direct_dependent_configs = invoker.direct_dependent_configs |
| 670 } |
| 671 if (defined(invoker.forward_dependent_configs_from)) { |
| 672 forward_dependent_configs_from = invoker.forward_dependent_configs_from |
| 673 } |
| 674 if (defined(invoker.include_dirs)) { |
| 675 include_dirs = invoker.include_dirs |
| 676 } |
| 677 if (defined(invoker.ldflags)) { |
| 678 ldflags = invoker.ldflags |
| 679 } |
| 680 if (defined(invoker.lib_dirs)) { |
| 681 lib_dirs = invoker.lib_dirs |
| 682 } |
| 683 if (defined(invoker.libs)) { |
| 684 libs = invoker.libs |
| 685 } |
| 686 if (defined(invoker.output_extension)) { |
| 687 output_extension = invoker.output_extension |
| 688 } |
| 689 if (defined(invoker.output_name)) { |
| 690 output_name = invoker.output_name |
| 691 } |
| 692 if (defined(invoker.public)) { |
| 693 public = invoker.public |
| 694 } |
| 695 if (defined(invoker.public_configs)) { |
| 696 public_configs = invoker.public_configs |
| 697 } |
| 698 if (defined(invoker.public_deps)) { |
| 699 public_deps = invoker.public_deps |
| 700 } |
| 701 if (defined(invoker.sources)) { |
| 702 sources = invoker.sources |
| 703 } |
| 704 if (defined(invoker.testonly)) { |
| 705 testonly = invoker.testonly |
| 706 } |
| 707 if (defined(invoker.visibility)) { |
| 708 visibility = invoker.visibility |
| 709 } |
| 607 } | 710 } |
| 608 } | 711 } |
| 609 } | 712 } |
| 610 | 713 |
| 611 # ============================================================================== | 714 # ============================================================================== |
| 612 # TEST SETUP | 715 # TEST SETUP |
| 613 # ============================================================================== | 716 # ============================================================================== |
| 614 | 717 |
| 615 # Define a test as an executable (or shared_library on Android) with the | 718 # Define a test as an executable (or shared_library on Android) with the |
| 616 # "testonly" flag set. | 719 # "testonly" flag set. |
| 617 template("test") { | 720 template("test") { |
| 618 if (is_android) { | 721 if (is_android) { |
| 619 shared_library(target_name) { | 722 shared_library(target_name) { |
| 620 # Configs will always be defined since we set_defaults for a component | 723 # Configs will always be defined since we set_defaults for a component |
| 621 # above. We want to use those rather than whatever came with the nested | 724 # above. We want to use those rather than whatever came with the nested |
| 622 # shared/static library inside the component. | 725 # shared/static library inside the component. |
| 623 configs = [] # Prevent list overwriting warning. | 726 configs = [] # Prevent list overwriting warning. |
| 624 configs = invoker.configs | 727 configs = invoker.configs |
| 625 | 728 |
| 626 # See above call. | 729 # See above call. |
| 627 set_sources_assignment_filter([]) | 730 set_sources_assignment_filter([]) |
| 628 | 731 |
| 629 testonly = true | 732 testonly = true |
| 630 | 733 |
| 631 if (defined(invoker.all_dependent_configs)) { all_dependent_configs = invo
ker.all_dependent_configs } | 734 if (defined(invoker.all_dependent_configs)) { |
| 632 if (defined(invoker.allow_circular_includes_from)) { allow_circular_includ
es_from = invoker.allow_circular_includes_from } | 735 all_dependent_configs = invoker.all_dependent_configs |
| 633 if (defined(invoker.cflags)) { cflags = invoker.cflags } | 736 } |
| 634 if (defined(invoker.cflags_c)) { cflags_c = invoker.cflags_c } | 737 if (defined(invoker.allow_circular_includes_from)) { |
| 635 if (defined(invoker.cflags_cc)) { cflags_cc = invoker.cflags_cc } | 738 allow_circular_includes_from = invoker.allow_circular_includes_from |
| 636 if (defined(invoker.cflags_objc)) { cflags_objc = invoker.cflags_objc } | 739 } |
| 637 if (defined(invoker.cflags_objcc)) { cflags_objcc = invoker.cflags_objcc } | 740 if (defined(invoker.cflags)) { |
| 638 if (defined(invoker.check_includes)) { check_includes = invoker.check_incl
udes } | 741 cflags = invoker.cflags |
| 639 if (defined(invoker.data)) { data = invoker.data } | 742 } |
| 640 if (defined(invoker.datadeps)) { datadeps = invoker.datadeps } | 743 if (defined(invoker.cflags_c)) { |
| 641 if (defined(invoker.defines)) { defines = invoker.defines } | 744 cflags_c = invoker.cflags_c |
| 642 if (defined(invoker.deps)) { deps = invoker.deps } | 745 } |
| 643 if (defined(invoker.direct_dependent_configs)) { direct_dependent_configs
= invoker.direct_dependent_configs } | 746 if (defined(invoker.cflags_cc)) { |
| 644 if (defined(invoker.forward_dependent_configs_from)) { forward_dependent_c
onfigs_from = invoker.forward_dependent_configs_from } | 747 cflags_cc = invoker.cflags_cc |
| 645 if (defined(invoker.include_dirs)) { include_dirs = invoker.include_dirs } | 748 } |
| 646 if (defined(invoker.ldflags)) { ldflags = invoker.ldflags } | 749 if (defined(invoker.cflags_objc)) { |
| 647 if (defined(invoker.lib_dirs)) { lib_dirs = invoker.lib_dirs } | 750 cflags_objc = invoker.cflags_objc |
| 648 if (defined(invoker.libs)) { libs = invoker.libs } | 751 } |
| 649 if (defined(invoker.output_extension)) { output_extension = invoker.output
_extension } | 752 if (defined(invoker.cflags_objcc)) { |
| 650 if (defined(invoker.output_name)) { output_name = invoker.output_name } | 753 cflags_objcc = invoker.cflags_objcc |
| 651 if (defined(invoker.public)) { public = invoker.public } | 754 } |
| 652 if (defined(invoker.public_configs)) { public_configs = invoker.public_con
figs } | 755 if (defined(invoker.check_includes)) { |
| 653 if (defined(invoker.public_deps)) { public_deps = invoker.public_deps } | 756 check_includes = invoker.check_includes |
| 654 if (defined(invoker.sources)) { sources = invoker.sources } | 757 } |
| 655 if (defined(invoker.visibility)) { visibility = invoker.visibility } | 758 if (defined(invoker.data)) { |
| 759 data = invoker.data |
| 760 } |
| 761 if (defined(invoker.datadeps)) { |
| 762 datadeps = invoker.datadeps |
| 763 } |
| 764 if (defined(invoker.defines)) { |
| 765 defines = invoker.defines |
| 766 } |
| 767 if (defined(invoker.deps)) { |
| 768 deps = invoker.deps |
| 769 } |
| 770 if (defined(invoker.direct_dependent_configs)) { |
| 771 direct_dependent_configs = invoker.direct_dependent_configs |
| 772 } |
| 773 if (defined(invoker.forward_dependent_configs_from)) { |
| 774 forward_dependent_configs_from = invoker.forward_dependent_configs_from |
| 775 } |
| 776 if (defined(invoker.include_dirs)) { |
| 777 include_dirs = invoker.include_dirs |
| 778 } |
| 779 if (defined(invoker.ldflags)) { |
| 780 ldflags = invoker.ldflags |
| 781 } |
| 782 if (defined(invoker.lib_dirs)) { |
| 783 lib_dirs = invoker.lib_dirs |
| 784 } |
| 785 if (defined(invoker.libs)) { |
| 786 libs = invoker.libs |
| 787 } |
| 788 if (defined(invoker.output_extension)) { |
| 789 output_extension = invoker.output_extension |
| 790 } |
| 791 if (defined(invoker.output_name)) { |
| 792 output_name = invoker.output_name |
| 793 } |
| 794 if (defined(invoker.public)) { |
| 795 public = invoker.public |
| 796 } |
| 797 if (defined(invoker.public_configs)) { |
| 798 public_configs = invoker.public_configs |
| 799 } |
| 800 if (defined(invoker.public_deps)) { |
| 801 public_deps = invoker.public_deps |
| 802 } |
| 803 if (defined(invoker.sources)) { |
| 804 sources = invoker.sources |
| 805 } |
| 806 if (defined(invoker.visibility)) { |
| 807 visibility = invoker.visibility |
| 808 } |
| 656 } | 809 } |
| 657 } else { | 810 } else { |
| 658 executable(target_name) { | 811 executable(target_name) { |
| 659 # See above. | 812 # See above. |
| 660 configs = [] # Prevent list overwriting warning. | 813 configs = [] # Prevent list overwriting warning. |
| 661 configs = invoker.configs | 814 configs = invoker.configs |
| 662 | 815 |
| 663 # See above call. | 816 # See above call. |
| 664 set_sources_assignment_filter([]) | 817 set_sources_assignment_filter([]) |
| 665 | 818 |
| 666 testonly = true | 819 testonly = true |
| 667 | 820 |
| 668 if (defined(invoker.all_dependent_configs)) { all_dependent_configs = invo
ker.all_dependent_configs } | 821 if (defined(invoker.all_dependent_configs)) { |
| 669 if (defined(invoker.allow_circular_includes_from)) { allow_circular_includ
es_from = invoker.allow_circular_includes_from } | 822 all_dependent_configs = invoker.all_dependent_configs |
| 670 if (defined(invoker.cflags)) { cflags = invoker.cflags } | 823 } |
| 671 if (defined(invoker.cflags_c)) { cflags_c = invoker.cflags_c } | 824 if (defined(invoker.allow_circular_includes_from)) { |
| 672 if (defined(invoker.cflags_cc)) { cflags_cc = invoker.cflags_cc } | 825 allow_circular_includes_from = invoker.allow_circular_includes_from |
| 673 if (defined(invoker.cflags_objc)) { cflags_objc = invoker.cflags_objc } | 826 } |
| 674 if (defined(invoker.cflags_objcc)) { cflags_objcc = invoker.cflags_objcc } | 827 if (defined(invoker.cflags)) { |
| 675 if (defined(invoker.check_includes)) { check_includes = invoker.check_incl
udes } | 828 cflags = invoker.cflags |
| 676 if (defined(invoker.data)) { data = invoker.data } | 829 } |
| 677 if (defined(invoker.datadeps)) { datadeps = invoker.datadeps } | 830 if (defined(invoker.cflags_c)) { |
| 678 if (defined(invoker.defines)) { defines = invoker.defines } | 831 cflags_c = invoker.cflags_c |
| 832 } |
| 833 if (defined(invoker.cflags_cc)) { |
| 834 cflags_cc = invoker.cflags_cc |
| 835 } |
| 836 if (defined(invoker.cflags_objc)) { |
| 837 cflags_objc = invoker.cflags_objc |
| 838 } |
| 839 if (defined(invoker.cflags_objcc)) { |
| 840 cflags_objcc = invoker.cflags_objcc |
| 841 } |
| 842 if (defined(invoker.check_includes)) { |
| 843 check_includes = invoker.check_includes |
| 844 } |
| 845 if (defined(invoker.data)) { |
| 846 data = invoker.data |
| 847 } |
| 848 if (defined(invoker.datadeps)) { |
| 849 datadeps = invoker.datadeps |
| 850 } |
| 851 if (defined(invoker.defines)) { |
| 852 defines = invoker.defines |
| 853 } |
| 854 |
| 679 # All shared libraries must have the sanitizer deps to properly link in | 855 # All shared libraries must have the sanitizer deps to properly link in |
| 680 # asan mode (this target will be empty in other cases). | 856 # asan mode (this target will be empty in other cases). |
| 681 if (defined(invoker.deps)) { | 857 if (defined(invoker.deps)) { |
| 682 deps = invoker.deps + [ "//build/config/sanitizers:deps" ] | 858 deps = invoker.deps + [ "//build/config/sanitizers:deps" ] |
| 683 } else { | 859 } else { |
| 684 deps = [ "//build/config/sanitizers:deps" ] | 860 deps = [ |
| 861 "//build/config/sanitizers:deps", |
| 862 ] |
| 685 } | 863 } |
| 686 if (defined(invoker.direct_dependent_configs)) { direct_dependent_configs
= invoker.direct_dependent_configs } | 864 if (defined(invoker.direct_dependent_configs)) { |
| 687 if (defined(invoker.forward_dependent_configs_from)) { forward_dependent_c
onfigs_from = invoker.forward_dependent_configs_from } | 865 direct_dependent_configs = invoker.direct_dependent_configs |
| 688 if (defined(invoker.include_dirs)) { include_dirs = invoker.include_dirs } | 866 } |
| 689 if (defined(invoker.ldflags)) { ldflags = invoker.ldflags } | 867 if (defined(invoker.forward_dependent_configs_from)) { |
| 690 if (defined(invoker.lib_dirs)) { lib_dirs = invoker.lib_dirs } | 868 forward_dependent_configs_from = invoker.forward_dependent_configs_from |
| 691 if (defined(invoker.libs)) { libs = invoker.libs } | 869 } |
| 692 if (defined(invoker.output_extension)) { output_extension = invoker.output
_extension } | 870 if (defined(invoker.include_dirs)) { |
| 693 if (defined(invoker.output_name)) { output_name = invoker.output_name } | 871 include_dirs = invoker.include_dirs |
| 694 if (defined(invoker.public)) { public = invoker.public } | 872 } |
| 695 if (defined(invoker.public_configs)) { public_configs = invoker.public_con
figs } | 873 if (defined(invoker.ldflags)) { |
| 696 if (defined(invoker.public_deps)) { public_deps = invoker.public_deps } | 874 ldflags = invoker.ldflags |
| 697 if (defined(invoker.sources)) { sources = invoker.sources } | 875 } |
| 698 if (defined(invoker.visibility)) { visibility = invoker.visibility } | 876 if (defined(invoker.lib_dirs)) { |
| 877 lib_dirs = invoker.lib_dirs |
| 878 } |
| 879 if (defined(invoker.libs)) { |
| 880 libs = invoker.libs |
| 881 } |
| 882 if (defined(invoker.output_extension)) { |
| 883 output_extension = invoker.output_extension |
| 884 } |
| 885 if (defined(invoker.output_name)) { |
| 886 output_name = invoker.output_name |
| 887 } |
| 888 if (defined(invoker.public)) { |
| 889 public = invoker.public |
| 890 } |
| 891 if (defined(invoker.public_configs)) { |
| 892 public_configs = invoker.public_configs |
| 893 } |
| 894 if (defined(invoker.public_deps)) { |
| 895 public_deps = invoker.public_deps |
| 896 } |
| 897 if (defined(invoker.sources)) { |
| 898 sources = invoker.sources |
| 899 } |
| 900 if (defined(invoker.visibility)) { |
| 901 visibility = invoker.visibility |
| 902 } |
| 699 } | 903 } |
| 700 } | 904 } |
| 701 } | 905 } |
| OLD | NEW |