| 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 # TODO(brettw) Use "gcc_toolchain.gni" like the Linux toolchains. This requires | 5 # TODO(brettw) Use "gcc_toolchain.gni" like the Linux toolchains. This requires |
| 6 # some enhancements since the commands on Mac are slightly different than on | 6 # some enhancements since the commands on Mac are slightly different than on |
| 7 # Linux. | 7 # Linux. |
| 8 | 8 |
| 9 import("../goma.gni") | 9 import("../goma.gni") |
| 10 import("//build/config/clang/clang.gni") | 10 import("//build/config/clang/clang.gni") |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 "//build/toolchain/mac/compile_xcassets.py", | 54 "//build/toolchain/mac/compile_xcassets.py", |
| 55 "//build/toolchain/mac/filter_libtool.py", | 55 "//build/toolchain/mac/filter_libtool.py", |
| 56 "//build/toolchain/mac/linker_driver.py", | 56 "//build/toolchain/mac/linker_driver.py", |
| 57 ], | 57 ], |
| 58 root_build_dir), | 58 root_build_dir), |
| 59 "trim scope") | 59 "trim scope") |
| 60 | 60 |
| 61 # Work around for unused variable warning in template https://crbug.com/395883. | 61 # Work around for unused variable warning in template https://crbug.com/395883. |
| 62 assert(tool_versions != "") | 62 assert(tool_versions != "") |
| 63 | 63 |
| 64 # Shared toolchain definition. Invocations should set toolchain_os to set the | 64 # Shared toolchain definition. Invocations should set current_os to set the |
| 65 # build args in this definition. | 65 # build args in this definition. |
| 66 template("mac_toolchain") { | 66 template("mac_toolchain") { |
| 67 toolchain(target_name) { | 67 toolchain(target_name) { |
| 68 assert(defined(invoker.toolchain_cpu), | 68 # When invoking this toolchain not as the default one, these args will be |
| 69 "mac_toolchain() must specify a \"toolchain_cpu\"") | 69 # passed to the build. They are ignored when this is the default toolchain. |
| 70 assert(defined(invoker.toolchain_os), | 70 assert(defined(invoker.toolchain_args), |
| 71 "mac_toolchain() must specify a \"toolchain_os\"") | 71 "Toolchains must declare toolchain_args") |
| 72 toolchain_args = { |
| 73 # Populate toolchain args from the invoker. |
| 74 forward_variables_from(invoker.toolchain_args, "*") |
| 72 | 75 |
| 73 if (use_goma) { | 76 # These values need to be passed through unchanged to all secondary |
| 74 assert(cc_wrapper == "", "Goma and cc_wrapper can't be used together.") | 77 # toolchains. BUILDCONFIG.gn sets some defaults based on the values of |
| 75 _compiler_prefix = "$goma_dir/gomacc " | 78 # the operating system and compiler, and we want to force the values to |
| 76 } else if (cc_wrapper != "") { | 79 # be consistent if re-running the computation in another context leads |
| 77 _compiler_prefix = cc_wrapper + " " | 80 # to different defaults. |
| 78 } else { | 81 host_toolchain = host_toolchain |
| 79 _compiler_prefix = "" | 82 target_os = target_os |
| 83 target_cpu = target_cpu |
| 80 } | 84 } |
| 81 | 85 |
| 82 if (invoker.toolchain_os != "ios" || !use_xcode_clang) { | 86 # When the invoker has explicitly overridden use_goma or cc_wrapper in the |
| 83 _compiler_prefix += rebase_path("$clang_base_path/bin/", root_build_dir) | 87 # toolchain args, use those values, otherwise default to the global one. |
| 88 # This works because the only reasonable override that toolchains might |
| 89 # supply for these values are to force-disable them. |
| 90 if (defined(toolchain_args.use_goma)) { |
| 91 toolchain_uses_goma = toolchain_args.use_goma |
| 92 } else { |
| 93 toolchain_uses_goma = use_goma |
| 94 } |
| 95 if (defined(toolchain_args.cc_wrapper)) { |
| 96 toolchain_cc_wrapper = toolchain_args.cc_wrapper |
| 97 } else { |
| 98 toolchain_cc_wrapper = cc_wrapper |
| 84 } | 99 } |
| 85 | 100 |
| 86 cc = "${_compiler_prefix}clang" | 101 # Compute the compiler prefix. |
| 87 cxx = "${_compiler_prefix}clang++" | 102 if (toolchain_uses_goma) { |
| 103 assert(toolchain_cc_wrapper == "", |
| 104 "Goma and cc_wrapper can't be used together.") |
| 105 compiler_prefix = "$goma_dir/gomacc " |
| 106 } else if (toolchain_cc_wrapper != "") { |
| 107 compiler_prefix = toolchain_cc_wrapper + " " |
| 108 } else { |
| 109 compiler_prefix = "" |
| 110 } |
| 111 |
| 112 if (toolchain_args.current_os != "ios" || !use_xcode_clang) { |
| 113 compiler_prefix += rebase_path("$clang_base_path/bin/", root_build_dir) |
| 114 } |
| 115 |
| 116 cc = "${compiler_prefix}clang" |
| 117 cxx = "${compiler_prefix}clang++" |
| 88 ld = cxx | 118 ld = cxx |
| 89 | 119 |
| 90 linker_driver = | 120 linker_driver = |
| 91 "TOOL_VERSION=${tool_versions.linker_driver} " + | 121 "TOOL_VERSION=${tool_versions.linker_driver} " + |
| 92 rebase_path("//build/toolchain/mac/linker_driver.py", root_build_dir) | 122 rebase_path("//build/toolchain/mac/linker_driver.py", root_build_dir) |
| 93 | 123 |
| 94 # On iOS, the final applications are assembled using lipo (to support fat | 124 # On iOS, the final applications are assembled using lipo (to support fat |
| 95 # builds). The correct flags are passed to the linker_driver.py script | 125 # builds). The correct flags are passed to the linker_driver.py script |
| 96 # directly during the lipo call. | 126 # directly during the lipo call. |
| 97 if (invoker.toolchain_os != "ios") { | 127 if (toolchain_args.current_os != "ios") { |
| 98 _enable_dsyms = enable_dsyms | 128 _enable_dsyms = enable_dsyms |
| 99 _save_unstripped_output = save_unstripped_output | 129 _save_unstripped_output = save_unstripped_output |
| 100 } else { | 130 } else { |
| 101 _enable_dsyms = false | 131 _enable_dsyms = false |
| 102 _save_unstripped_output = false | 132 _save_unstripped_output = false |
| 103 } | 133 } |
| 104 | 134 |
| 105 # Make these apply to all tools below. | 135 # Make these apply to all tools below. |
| 106 lib_switch = "-l" | 136 lib_switch = "-l" |
| 107 lib_dir_switch = "-L" | 137 lib_dir_switch = "-L" |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 377 _min_deployment_target = mac_deployment_target | 407 _min_deployment_target = mac_deployment_target |
| 378 } | 408 } |
| 379 command = "rm -f {{output}} && " + | 409 command = "rm -f {{output}} && " + |
| 380 "TOOL_VERSION=${tool_versions.compile_xcassets} " + | 410 "TOOL_VERSION=${tool_versions.compile_xcassets} " + |
| 381 "python $_tool -p $_sdk_name -t $_min_deployment_target " + | 411 "python $_tool -p $_sdk_name -t $_min_deployment_target " + |
| 382 "-o {{output}} {{inputs}}" | 412 "-o {{output}} {{inputs}}" |
| 383 | 413 |
| 384 description = "COMPILE_XCASSETS {{output}}" | 414 description = "COMPILE_XCASSETS {{output}}" |
| 385 pool = ":bundle_pool($default_toolchain)" | 415 pool = ":bundle_pool($default_toolchain)" |
| 386 } | 416 } |
| 387 | |
| 388 toolchain_args() { | |
| 389 current_cpu = invoker.toolchain_cpu | |
| 390 current_os = invoker.toolchain_os | |
| 391 | |
| 392 # These values need to be passed through unchanged. | |
| 393 host_toolchain = host_toolchain | |
| 394 target_os = target_os | |
| 395 target_cpu = target_cpu | |
| 396 is_clang = true | |
| 397 } | |
| 398 } | 417 } |
| 399 } | 418 } |
| 400 | 419 |
| 401 mac_toolchain("clang_arm") { | 420 mac_toolchain("clang_arm") { |
| 402 toolchain_cpu = "arm" | 421 toolchain_args = { |
| 403 toolchain_os = "mac" | 422 current_cpu = "arm" |
| 423 current_os = "mac" |
| 424 } |
| 404 } | 425 } |
| 405 | 426 |
| 406 mac_toolchain("clang_x64") { | 427 mac_toolchain("clang_x64") { |
| 407 toolchain_cpu = "x64" | 428 toolchain_args = { |
| 408 toolchain_os = "mac" | 429 current_cpu = "x64" |
| 430 current_os = "mac" |
| 431 } |
| 409 } | 432 } |
| 410 | 433 |
| 411 if (is_ios) { | 434 if (is_ios) { |
| 412 mac_toolchain("ios_clang_arm") { | 435 mac_toolchain("ios_clang_arm") { |
| 413 toolchain_cpu = "arm" | 436 toolchain_args = { |
| 414 toolchain_os = "ios" | 437 current_cpu = "arm" |
| 438 current_os = "ios" |
| 439 } |
| 415 } | 440 } |
| 416 | 441 |
| 417 mac_toolchain("ios_clang_arm64") { | 442 mac_toolchain("ios_clang_arm64") { |
| 418 toolchain_cpu = "arm64" | 443 toolchain_args = { |
| 419 toolchain_os = "ios" | 444 current_cpu = "arm64" |
| 445 current_os = "ios" |
| 446 } |
| 420 } | 447 } |
| 421 | 448 |
| 422 mac_toolchain("ios_clang_x86") { | 449 mac_toolchain("ios_clang_x86") { |
| 423 toolchain_cpu = "x86" | 450 toolchain_args = { |
| 424 toolchain_os = "ios" | 451 current_cpu = "x86" |
| 452 current_os = "ios" |
| 453 } |
| 425 } | 454 } |
| 426 | 455 |
| 427 mac_toolchain("ios_clang_x64") { | 456 mac_toolchain("ios_clang_x64") { |
| 428 toolchain_cpu = "x64" | 457 toolchain_args = { |
| 429 toolchain_os = "ios" | 458 current_cpu = "x64" |
| 459 current_os = "ios" |
| 460 } |
| 430 } | 461 } |
| 431 } | 462 } |
| OLD | NEW |