Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(452)

Side by Side Diff: build/config/BUILDCONFIG.gn

Issue 1373593003: Allow a custom toolchain to be injected into BUILDCONFIG.gn (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Reimplement empty-string check for nacl case Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | build/config/gcc/gcc_version.gni » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 # PLATFORM SELECTION 6 # PLATFORM SELECTION
7 # ============================================================================= 7 # =============================================================================
8 # 8 #
9 # There are two main things to set: "os" and "cpu". The "toolchain" is the name 9 # There are two main things to set: "os" and "cpu". The "toolchain" is the name
10 # of the GN thing that encodes combinations of these things. 10 # of the GN thing that encodes combinations of these things.
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 is_debug = true 118 is_debug = true
119 119
120 # Whether we're a traditional desktop unix. 120 # Whether we're a traditional desktop unix.
121 is_desktop_linux = current_os == "linux" && current_os != "chromeos" 121 is_desktop_linux = current_os == "linux" && current_os != "chromeos"
122 122
123 # Set to true when compiling with the Clang compiler. Typically this is used 123 # Set to true when compiling with the Clang compiler. Typically this is used
124 # to configure warnings. 124 # to configure warnings.
125 is_clang = current_os == "mac" || current_os == "ios" || 125 is_clang = current_os == "mac" || current_os == "ios" ||
126 current_os == "linux" || current_os == "chromeos" 126 current_os == "linux" || current_os == "chromeos"
127 127
128 if (current_os == "chromeos") { 128 # Allows the path to a custom target toolchain to be injected as a single
129 # Allows the target toolchain to be injected as arguments. This is needed 129 # argument, and set as the default toolchain.
130 # to support the CrOS build system which supports per-build-configuration 130 custom_toolchain = ""
131 # toolchains.
132 cros_use_custom_toolchain = false
133 }
134 131
135 # DON'T ADD MORE FLAGS HERE. Read the comment above. 132 # DON'T ADD MORE FLAGS HERE. Read the comment above.
136 } 133 }
137 134
138 # ============================================================================= 135 # =============================================================================
139 # OS DEFINITIONS 136 # OS DEFINITIONS
140 # ============================================================================= 137 # =============================================================================
141 # 138 #
142 # We set these various is_FOO booleans for convenience in writing OS-based 139 # We set these various is_FOO booleans for convenience in writing OS-based
143 # conditions. 140 # conditions.
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 479
483 # ============================================================================== 480 # ==============================================================================
484 # TOOLCHAIN SETUP 481 # TOOLCHAIN SETUP
485 # ============================================================================== 482 # ==============================================================================
486 # 483 #
487 # Here we set the default toolchain, as well as the variable host_toolchain 484 # Here we set the default toolchain, as well as the variable host_toolchain
488 # which will identify the toolchain corresponding to the local system when 485 # which will identify the toolchain corresponding to the local system when
489 # doing cross-compiles. When not cross-compiling, this will be the same as the 486 # doing cross-compiles. When not cross-compiling, this will be the same as the
490 # default toolchain. 487 # default toolchain.
491 488
489 _default_toolchain = ""
492 if (is_win) { 490 if (is_win) {
493 # On windows we use the same toolchain for host and target by default. 491 # On windows we use the same toolchain for host and target by default.
494 if (is_clang) { 492 if (is_clang) {
495 host_toolchain = "//build/toolchain/win:clang_$current_cpu" 493 host_toolchain = "//build/toolchain/win:clang_$current_cpu"
496 } else { 494 } else {
497 host_toolchain = "//build/toolchain/win:$current_cpu" 495 host_toolchain = "//build/toolchain/win:$current_cpu"
498 } 496 }
499 497
500 if (current_os == "win") { 498 if (current_os == "win") {
501 set_default_toolchain("$host_toolchain") 499 _default_toolchain = host_toolchain
502 } else if (current_cpu == "x64") { # WinRT x64 500 } else if (current_cpu == "x64") { # WinRT x64
503 set_default_toolchain("//build/toolchain/win:winrt_x64") 501 _default_toolchain = "//build/toolchain/win:winrt_x64"
504 } else if (current_cpu == "x86") { # WinRT x86 502 } else if (current_cpu == "x86") { # WinRT x86
505 set_default_toolchain("//build/toolchain/win:winrt_x86") 503 _default_toolchain = "//build/toolchain/win:winrt_x86"
506 } 504 }
507 } else if (is_android) { 505 } else if (is_android) {
508 if (host_os == "linux") { 506 if (host_os == "linux") {
509 # Use clang for the x86/64 Linux host builds. 507 # Use clang for the x86/64 Linux host builds.
510 if (host_cpu == "x86" || host_cpu == "x64") { 508 if (host_cpu == "x86" || host_cpu == "x64") {
511 host_toolchain = "//build/toolchain/linux:clang_$host_cpu" 509 host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
512 } else { 510 } else {
513 host_toolchain = "//build/toolchain/linux:$host_cpu" 511 host_toolchain = "//build/toolchain/linux:$host_cpu"
514 } 512 }
515 } else if (host_os == "mac") { 513 } else if (host_os == "mac") {
516 host_toolchain = "//build/toolchain/mac:clang_$host_cpu" 514 host_toolchain = "//build/toolchain/mac:clang_$host_cpu"
517 } else { 515 } else {
518 assert(false, "Unknown host for android cross compile") 516 assert(false, "Unknown host for android cross compile")
519 } 517 }
520 if (is_clang) { 518 if (is_clang) {
521 set_default_toolchain("//build/toolchain/android:clang_$current_cpu") 519 _default_toolchain = "//build/toolchain/android:clang_$current_cpu"
522 } else { 520 } else {
523 set_default_toolchain("//build/toolchain/android:$current_cpu") 521 _default_toolchain = "//build/toolchain/android:$current_cpu"
524 } 522 }
525 } else if (is_linux) { 523 } else if (is_linux) {
526 if (is_clang) { 524 if (is_clang) {
527 host_toolchain = "//build/toolchain/linux:clang_$host_cpu" 525 host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
528 set_default_toolchain("//build/toolchain/linux:clang_$current_cpu") 526 _default_toolchain = "//build/toolchain/linux:clang_$current_cpu"
529 } else { 527 } else {
530 host_toolchain = "//build/toolchain/linux:$host_cpu" 528 host_toolchain = "//build/toolchain/linux:$host_cpu"
531 set_default_toolchain("//build/toolchain/linux:$current_cpu") 529 _default_toolchain = "//build/toolchain/linux:$current_cpu"
532 }
533 if (is_chromeos && cros_use_custom_toolchain) {
534 set_default_toolchain("//build/toolchain/cros:target")
535 } 530 }
536 } else if (is_mac) { 531 } else if (is_mac) {
537 host_toolchain = "//build/toolchain/mac:clang_x64" 532 host_toolchain = "//build/toolchain/mac:clang_x64"
538 set_default_toolchain(host_toolchain) 533 _default_toolchain = host_toolchain
539 } else if (is_ios) { 534 } else if (is_ios) {
540 host_toolchain = "//build/toolchain/mac:clang_x64" 535 host_toolchain = "//build/toolchain/mac:clang_x64"
541 set_default_toolchain("//build/toolchain/mac:ios_clang_arm") 536 _default_toolchain = "//build/toolchain/mac:ios_clang_arm"
542 } else if (is_nacl) { 537 } else if (is_nacl) {
543 # TODO(GYP): This will need to change when we get NaCl working 538 # TODO(GYP): This will need to change when we get NaCl working
544 # on multiple platforms, but this whole block of code (how we define 539 # on multiple platforms, but this whole block of code (how we define
545 # host_toolchain) needs to be reworked regardless to key off of host_os 540 # host_toolchain) needs to be reworked regardless to key off of host_os
546 # and host_cpu rather than the is_* variables. 541 # and host_cpu rather than the is_* variables.
547 host_toolchain = "//build/toolchain/linux:clang_x64" 542 host_toolchain = "//build/toolchain/linux:clang_x64"
548 } 543 }
549 544
545 # If a custom toolchain has been set in the args, set it as default. Otherwise,
546 # set the default toolchain for the platform (if any).
547 if (custom_toolchain != "") {
548 set_default_toolchain(custom_toolchain)
549 } else if (_default_toolchain != "") {
550 set_default_toolchain(_default_toolchain)
551 }
552
550 # ============================================================================== 553 # ==============================================================================
551 # COMPONENT SETUP 554 # COMPONENT SETUP
552 # ============================================================================== 555 # ==============================================================================
553 556
554 if (is_component_build) { 557 if (is_component_build) {
555 _component_mode = "shared_library" 558 _component_mode = "shared_library"
556 } else { 559 } else {
557 _component_mode = "source_set" 560 _component_mode = "source_set"
558 } 561 }
559 template("component") { 562 template("component") {
560 target(_component_mode, target_name) { 563 target(_component_mode, target_name) {
561 forward_variables_from(invoker, "*") 564 forward_variables_from(invoker, "*")
562 565
563 # All shared libraries must have the sanitizer deps to properly link in 566 # All shared libraries must have the sanitizer deps to properly link in
564 # asan mode (this target will be empty in other cases). 567 # asan mode (this target will be empty in other cases).
565 if (!defined(deps)) { 568 if (!defined(deps)) {
566 deps = [] 569 deps = []
567 } 570 }
568 deps += [ "//build/config/sanitizers:deps" ] 571 deps += [ "//build/config/sanitizers:deps" ]
569 } 572 }
570 } 573 }
OLDNEW
« no previous file with comments | « no previous file | build/config/gcc/gcc_version.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698