| 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 import("//build/config/clang/clang.gni") | 5 import("//build/config/clang/clang.gni") | 
| 6 import("//build/config/compiler/compiler.gni") | 6 import("//build/config/compiler/compiler.gni") | 
| 7 import("//build/config/sanitizers/sanitizers.gni") | 7 import("//build/config/sanitizers/sanitizers.gni") | 
| 8 import("//build/config/win/visual_studio_version.gni") | 8 import("//build/config/win/visual_studio_version.gni") | 
| 9 import("//build/toolchain/goma.gni") | 9 import("//build/toolchain/goma.gni") | 
| 10 import("//build/toolchain/toolchain.gni") | 10 import("//build/toolchain/toolchain.gni") | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
| 37   exec_script("../../vs_toolchain.py", | 37   exec_script("../../vs_toolchain.py", | 
| 38               [ | 38               [ | 
| 39                 "copy_dlls", | 39                 "copy_dlls", | 
| 40                 rebase_path(root_build_dir), | 40                 rebase_path(root_build_dir), | 
| 41                 configuration_name, | 41                 configuration_name, | 
| 42                 target_cpu, | 42                 target_cpu, | 
| 43               ]) | 43               ]) | 
| 44 } | 44 } | 
| 45 | 45 | 
| 46 # Parameters: | 46 # Parameters: | 
| 47 #  toolchain_cpu: current_cpu to pass as a build arg | 47 #   environment: File name of environment file. | 
| 48 #  toolchain_os: current_os to pass as a build arg | 48 # | 
| 49 #  environment: File name of environment file. | 49 # You would also define a toolchain_args variable with at least these set: | 
|  | 50 #   current_cpu: current_cpu to pass as a build arg | 
|  | 51 #   current_os: current_os to pass as a build arg | 
| 50 template("msvc_toolchain") { | 52 template("msvc_toolchain") { | 
| 51   env = invoker.environment | 53   toolchain(target_name) { | 
|  | 54     # When invoking this toolchain not as the default one, these args will be | 
|  | 55     # passed to the build. They are ignored when this is the default toolchain. | 
|  | 56     assert(defined(invoker.toolchain_args)) | 
|  | 57     toolchain_args = { | 
|  | 58       if (defined(invoker.toolchain_args)) { | 
|  | 59         forward_variables_from(invoker.toolchain_args, "*") | 
|  | 60       } | 
| 52 | 61 | 
| 53   if (invoker.is_clang && host_os != "win") { | 62       # This value needs to be passed through unchanged. | 
| 54     # This toolchain definition uses response files for compilations.  GN uses | 63       host_toolchain = host_toolchain | 
| 55     # the quoting rules of the host OS, while clang-cl always defaults to |  | 
| 56     # cmd.exe quoting rules for parsing response files.  Tell clang-cl to use |  | 
| 57     # POSIX quoting rules, so it can understand what GN generates. |  | 
| 58     cl = "${invoker.cl} --rsp-quoting=posix" |  | 
| 59   } else { |  | 
| 60     cl = invoker.cl |  | 
| 61   } |  | 
| 62 | 64 | 
| 63   if (use_lld) { | 65       current_os = "win" | 
| 64     if (host_os == "win") { |  | 
| 65       lld_link = "lld-link.exe" |  | 
| 66     } else { |  | 
| 67       lld_link = "lld-link" |  | 
| 68     } | 66     } | 
| 69     prefix = rebase_path("$clang_base_path/bin", root_build_dir) |  | 
| 70 | 67 | 
| 71     # lld-link includes a replacement for lib.exe that can produce thin |  | 
| 72     # archives and understands bitcode (for lto builds). |  | 
| 73     lib = "$prefix/$lld_link /lib /llvmlibthin" |  | 
| 74     link = "$prefix/$lld_link" |  | 
| 75   } else { |  | 
| 76     lib = "lib.exe" |  | 
| 77     link = "link.exe" |  | 
| 78   } |  | 
| 79 |  | 
| 80   # If possible, pass system includes as flags to the compiler.  When that's |  | 
| 81   # not possible, load a full environment file (containing %INCLUDE% and |  | 
| 82   # %PATH%) -- e.g. 32-bit MSVS builds require %PATH% to be set and just passing |  | 
| 83   # in a list of include directories isn't enough. |  | 
| 84   if (defined(invoker.sys_include_flags)) { |  | 
| 85     env_wrapper = "" |  | 
| 86     sys_include_flags = "${invoker.sys_include_flags} "  # Note trailing space. |  | 
| 87   } else { |  | 
| 88     # clang-cl doesn't need this env hoop, so omit it there. |  | 
| 89     assert(!invoker.is_clang) |  | 
| 90     env_wrapper = "ninja -t msvc -e $env -- "  # Note trailing space. |  | 
| 91     sys_include_flags = "" |  | 
| 92   } |  | 
| 93 |  | 
| 94   toolchain(target_name) { |  | 
| 95     # Make these apply to all tools below. | 68     # Make these apply to all tools below. | 
| 96     lib_switch = "" | 69     lib_switch = "" | 
| 97     lib_dir_switch = "/LIBPATH:" | 70     lib_dir_switch = "/LIBPATH:" | 
| 98 | 71 | 
| 99     # Object files go in this directory. | 72     # Object files go in this directory. | 
| 100     object_subdir = "{{target_out_dir}}/{{label_name}}" | 73     object_subdir = "{{target_out_dir}}/{{label_name}}" | 
| 101 | 74 | 
|  | 75     env = invoker.environment | 
|  | 76 | 
|  | 77     # When the invoker has explicitly overridden use_goma or cc_wrapper in the | 
|  | 78     # toolchain args, use those values, otherwise default to the global one. | 
|  | 79     # This works because the only reasonable override that toolchains might | 
|  | 80     # supply for these values are to force-disable them. | 
|  | 81     if (defined(toolchain_args.is_clang)) { | 
|  | 82       toolchain_uses_clang = toolchain_args.is_clang | 
|  | 83     } else { | 
|  | 84       toolchain_uses_clang = is_clang | 
|  | 85     } | 
|  | 86 | 
|  | 87     if (toolchain_uses_clang && host_os != "win") { | 
|  | 88       # This toolchain definition uses response files for compilations.  GN uses | 
|  | 89       # the quoting rules of the host OS, while clang-cl always defaults to | 
|  | 90       # cmd.exe quoting rules for parsing response files.  Tell clang-cl to use | 
|  | 91       # POSIX quoting rules, so it can understand what GN generates. | 
|  | 92       cl = "${invoker.cl} --rsp-quoting=posix" | 
|  | 93     } else { | 
|  | 94       cl = invoker.cl | 
|  | 95     } | 
|  | 96 | 
|  | 97     if (use_lld) { | 
|  | 98       if (host_os == "win") { | 
|  | 99         lld_link = "lld-link.exe" | 
|  | 100       } else { | 
|  | 101         lld_link = "lld-link" | 
|  | 102       } | 
|  | 103       prefix = rebase_path("$clang_base_path/bin", root_build_dir) | 
|  | 104 | 
|  | 105       # lld-link includes a replacement for lib.exe that can produce thin | 
|  | 106       # archives and understands bitcode (for lto builds). | 
|  | 107       lib = "$prefix/$lld_link /lib /llvmlibthin" | 
|  | 108       link = "$prefix/$lld_link" | 
|  | 109     } else { | 
|  | 110       lib = "lib.exe" | 
|  | 111       link = "link.exe" | 
|  | 112     } | 
|  | 113 | 
|  | 114     # If possible, pass system includes as flags to the compiler.  When that's | 
|  | 115     # not possible, load a full environment file (containing %INCLUDE% and | 
|  | 116     # %PATH%) -- e.g. 32-bit MSVS builds require %PATH% to be set and just | 
|  | 117     # passing in a list of include directories isn't enough. | 
|  | 118     if (defined(invoker.sys_include_flags)) { | 
|  | 119       env_wrapper = "" | 
|  | 120       sys_include_flags = "${invoker.sys_include_flags} "  # Note trailing space
     . | 
|  | 121     } else { | 
|  | 122       # clang-cl doesn't need this env hoop, so omit it there. | 
|  | 123       assert(!toolchain_uses_clang) | 
|  | 124       env_wrapper = "ninja -t msvc -e $env -- "  # Note trailing space. | 
|  | 125       sys_include_flags = "" | 
|  | 126     } | 
|  | 127 | 
| 102     tool("cc") { | 128     tool("cc") { | 
| 103       rspfile = "{{output}}.rsp" | 129       rspfile = "{{output}}.rsp" | 
| 104       precompiled_header_type = "msvc" | 130       precompiled_header_type = "msvc" | 
| 105       pdbname = "{{target_out_dir}}/{{label_name}}_c.pdb" | 131       pdbname = "{{target_out_dir}}/{{label_name}}_c.pdb" | 
| 106 | 132 | 
| 107       # Label names may have spaces in them so the pdbname must be quoted. The | 133       # Label names may have spaces in them so the pdbname must be quoted. The | 
| 108       # source and output don't need to be quoted because GN knows they're a | 134       # source and output don't need to be quoted because GN knows they're a | 
| 109       # full file name and will quote automatically when necessary. | 135       # full file name and will quote automatically when necessary. | 
| 110       command = "$env_wrapper$cl /nologo /showIncludes /FC @$rspfile /c {{source
     }} /Fo{{output}} /Fd\"$pdbname\"" | 136       command = "$env_wrapper$cl /nologo /showIncludes /FC @$rspfile /c {{source
     }} /Fo{{output}} /Fd\"$pdbname\"" | 
| 111       depsformat = "msvc" | 137       depsformat = "msvc" | 
| (...skipping 23 matching lines...) Expand all  Loading... | 
| 135 | 161 | 
| 136     tool("rc") { | 162     tool("rc") { | 
| 137       command = "$python_path gyp-win-tool rc-wrapper $env rc.exe {{defines}} {{
     include_dirs}} /fo{{output}} {{source}}" | 163       command = "$python_path gyp-win-tool rc-wrapper $env rc.exe {{defines}} {{
     include_dirs}} /fo{{output}} {{source}}" | 
| 138       outputs = [ | 164       outputs = [ | 
| 139         "$object_subdir/{{source_name_part}}.res", | 165         "$object_subdir/{{source_name_part}}.res", | 
| 140       ] | 166       ] | 
| 141       description = "RC {{output}}" | 167       description = "RC {{output}}" | 
| 142     } | 168     } | 
| 143 | 169 | 
| 144     tool("asm") { | 170     tool("asm") { | 
| 145       if (invoker.toolchain_cpu == "x64") { | 171       if (toolchain_args.current_cpu == "x64") { | 
| 146         ml = "ml64.exe" | 172         ml = "ml64.exe" | 
| 147       } else { | 173       } else { | 
| 148         ml = "ml.exe" | 174         ml = "ml.exe" | 
| 149       } | 175       } | 
| 150       command = "$python_path gyp-win-tool asm-wrapper $env $ml {{defines}} {{in
     clude_dirs}} {{asmflags}} /c /Fo{{output}} {{source}}" | 176       command = "$python_path gyp-win-tool asm-wrapper $env $ml {{defines}} {{in
     clude_dirs}} {{asmflags}} /c /Fo{{output}} {{source}}" | 
| 151       description = "ASM {{output}}" | 177       description = "ASM {{output}}" | 
| 152       outputs = [ | 178       outputs = [ | 
| 153         "$object_subdir/{{source_name_part}}.obj", | 179         "$object_subdir/{{source_name_part}}.obj", | 
| 154       ] | 180       ] | 
| 155     } | 181     } | 
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 257     # each toolchain because GN doesn't allow a template to be used here. | 283     # each toolchain because GN doesn't allow a template to be used here. | 
| 258     # See //build/toolchain/toolchain.gni for details. | 284     # See //build/toolchain/toolchain.gni for details. | 
| 259     tool("stamp") { | 285     tool("stamp") { | 
| 260       command = stamp_command | 286       command = stamp_command | 
| 261       description = stamp_description | 287       description = stamp_description | 
| 262     } | 288     } | 
| 263     tool("copy") { | 289     tool("copy") { | 
| 264       command = copy_command | 290       command = copy_command | 
| 265       description = copy_description | 291       description = copy_description | 
| 266     } | 292     } | 
| 267 |  | 
| 268     # When invoking this toolchain not as the default one, these args will be |  | 
| 269     # passed to the build. They are ignored when this is the default toolchain. |  | 
| 270     toolchain_args() { |  | 
| 271       current_cpu = invoker.toolchain_cpu |  | 
| 272       if (defined(invoker.toolchain_os)) { |  | 
| 273         current_os = invoker.toolchain_os |  | 
| 274       } |  | 
| 275 |  | 
| 276       # These share a name with global variables that are already defined, and |  | 
| 277       # forward_variables_from won't clobber the existing value, so we need to |  | 
| 278       # set it explicitly. |  | 
| 279       if (defined(invoker.is_clang)) { |  | 
| 280         is_clang = invoker.is_clang |  | 
| 281       } |  | 
| 282       if (defined(invoker.is_component_build)) { |  | 
| 283         is_component_build = invoker.is_component_build |  | 
| 284       } |  | 
| 285 |  | 
| 286       # This value needs to be passed through unchanged. |  | 
| 287       host_toolchain = host_toolchain |  | 
| 288     } |  | 
| 289   } | 293   } | 
| 290 } | 294 } | 
| 291 | 295 | 
| 292 if (is_clang) { | 296 if (is_clang) { | 
| 293   sys_include_prefix = "-imsvc" | 297   sys_include_prefix = "-imsvc" | 
| 294 } else { | 298 } else { | 
| 295   # MSVC doesn't have the concept of system headers. | 299   # MSVC doesn't have the concept of system headers. | 
| 296   sys_include_prefix = "/I" | 300   sys_include_prefix = "/I" | 
| 297 } | 301 } | 
| 298 | 302 | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
| 312                                      gyp_win_tool_path, | 316                                      gyp_win_tool_path, | 
| 313                                      windows_sdk_path, | 317                                      windows_sdk_path, | 
| 314                                      visual_studio_runtime_dirs, | 318                                      visual_studio_runtime_dirs, | 
| 315                                      "x86", | 319                                      "x86", | 
| 316                                      "${sys_include_prefix}", | 320                                      "${sys_include_prefix}", | 
| 317                                    ], | 321                                    ], | 
| 318                                    "scope") | 322                                    "scope") | 
| 319 | 323 | 
| 320   msvc_toolchain("x86") { | 324   msvc_toolchain("x86") { | 
| 321     environment = "environment.x86" | 325     environment = "environment.x86" | 
| 322     toolchain_cpu = "x86" |  | 
| 323     cl = "${goma_prefix}\"${x86_toolchain_data.vc_bin_dir}/cl.exe\"" | 326     cl = "${goma_prefix}\"${x86_toolchain_data.vc_bin_dir}/cl.exe\"" | 
| 324     is_clang = false | 327     toolchain_args = { | 
|  | 328       current_cpu = "x86" | 
|  | 329       is_clang = false | 
|  | 330     } | 
| 325   } | 331   } | 
| 326 | 332 | 
| 327   msvc_toolchain("clang_x86") { | 333   msvc_toolchain("clang_x86") { | 
| 328     environment = "environment.x86" | 334     environment = "environment.x86" | 
| 329     toolchain_cpu = "x86" |  | 
| 330     prefix = rebase_path("$clang_base_path/bin", root_build_dir) | 335     prefix = rebase_path("$clang_base_path/bin", root_build_dir) | 
| 331     cl = "${goma_prefix}$prefix/${clang_cl}" | 336     cl = "${goma_prefix}$prefix/${clang_cl}" | 
| 332     toolchain_os = "win" |  | 
| 333     is_clang = true |  | 
| 334     sys_include_flags = "${x86_toolchain_data.include_flags}" | 337     sys_include_flags = "${x86_toolchain_data.include_flags}" | 
|  | 338 | 
|  | 339     toolchain_args = { | 
|  | 340       current_cpu = "x86" | 
|  | 341       is_clang = true | 
|  | 342     } | 
| 335   } | 343   } | 
| 336 } | 344 } | 
| 337 | 345 | 
| 338 # 64-bit toolchains. | 346 # 64-bit toolchains. | 
| 339 x64_toolchain_data = exec_script("setup_toolchain.py", | 347 x64_toolchain_data = exec_script("setup_toolchain.py", | 
| 340                                  [ | 348                                  [ | 
| 341                                    visual_studio_path, | 349                                    visual_studio_path, | 
| 342                                    gyp_win_tool_path, | 350                                    gyp_win_tool_path, | 
| 343                                    windows_sdk_path, | 351                                    windows_sdk_path, | 
| 344                                    visual_studio_runtime_dirs, | 352                                    visual_studio_runtime_dirs, | 
| 345                                    "x64", | 353                                    "x64", | 
| 346                                    "${sys_include_prefix}", | 354                                    "${sys_include_prefix}", | 
| 347                                  ], | 355                                  ], | 
| 348                                  "scope") | 356                                  "scope") | 
| 349 | 357 | 
| 350 template("win_x64_toolchains") { | 358 template("win_x64_toolchains") { | 
| 351   # TODO(mcgrathr): These assignments are only required because of | 359   # TODO(mcgrathr): These assignments are only required because of | 
| 352   # crbug.com/395883.  Drop them if that ever gets fixed in GN. | 360   # crbug.com/395883.  Drop them if that ever gets fixed in GN. | 
| 353   goma_prefix = invoker.goma_prefix | 361   goma_prefix = invoker.goma_prefix | 
| 354   x64_toolchain_data = invoker.x64_toolchain_data | 362   x64_toolchain_data = invoker.x64_toolchain_data | 
| 355   clang_cl = invoker.clang_cl | 363   clang_cl = invoker.clang_cl | 
| 356 | 364 | 
| 357   msvc_toolchain(target_name) { | 365   msvc_toolchain(target_name) { | 
| 358     environment = "environment.x64" | 366     environment = "environment.x64" | 
| 359     toolchain_cpu = "x64" |  | 
| 360     cl = "${goma_prefix}\"${x64_toolchain_data.vc_bin_dir}/cl.exe\"" | 367     cl = "${goma_prefix}\"${x64_toolchain_data.vc_bin_dir}/cl.exe\"" | 
| 361     is_clang = false |  | 
| 362 | 368 | 
| 363     # This shares a name with a global and forward_variables_from won't clobber | 369     toolchain_args = { | 
| 364     # the existing value, so we need to set it explicitly. | 370       if (defined(invoker.toolchain_args)) { | 
| 365     if (defined(invoker.is_component_build)) { | 371         forward_variables_from(invoker.toolchain_args, "*") | 
| 366       is_component_build = invoker.is_component_build | 372       } | 
|  | 373       is_clang = false | 
|  | 374       current_cpu = "x64" | 
| 367     } | 375     } | 
| 368   } | 376   } | 
| 369 | 377 | 
| 370   msvc_toolchain("clang_" + target_name) { | 378   msvc_toolchain("clang_" + target_name) { | 
| 371     environment = "environment.x64" | 379     environment = "environment.x64" | 
| 372     toolchain_cpu = "x64" |  | 
| 373     prefix = rebase_path("$clang_base_path/bin", root_build_dir) | 380     prefix = rebase_path("$clang_base_path/bin", root_build_dir) | 
| 374     cl = "${goma_prefix}$prefix/${clang_cl}" | 381     cl = "${goma_prefix}$prefix/${clang_cl}" | 
| 375     toolchain_os = "win" |  | 
| 376     is_clang = true |  | 
| 377     sys_include_flags = "${x64_toolchain_data.include_flags}" | 382     sys_include_flags = "${x64_toolchain_data.include_flags}" | 
| 378 | 383 | 
| 379     # This shares a name with a global and forward_variables_from won't clobber | 384     toolchain_args = { | 
| 380     # the existing value, so we need to set it explicitly. | 385       if (defined(invoker.toolchain_args)) { | 
| 381     if (defined(invoker.is_component_build)) { | 386         forward_variables_from(invoker.toolchain_args, "*") | 
| 382       is_component_build = invoker.is_component_build | 387       } | 
|  | 388       is_clang = true | 
|  | 389       current_cpu = "x64" | 
| 383     } | 390     } | 
| 384   } | 391   } | 
| 385 } | 392 } | 
| 386 | 393 | 
| 387 win_x64_toolchains("x64") { | 394 win_x64_toolchains("x64") { | 
| 388   # TODO(mcgrathr): These assignments are only required because of | 395   # TODO(mcgrathr): These assignments are only required because of | 
| 389   # crbug.com/395883.  Drop them if that ever gets fixed in GN. | 396   # crbug.com/395883.  Drop them if that ever gets fixed in GN. | 
| 390   goma_prefix = goma_prefix | 397   goma_prefix = goma_prefix | 
| 391   x64_toolchain_data = x64_toolchain_data | 398   x64_toolchain_data = x64_toolchain_data | 
| 392 } | 399 } | 
| 393 | 400 | 
| 394 # The nacl_win64 toolchain is nearly identical to the plain x64 toolchain. | 401 # The nacl_win64 toolchain is nearly identical to the plain x64 toolchain. | 
| 395 # It's used solely for building nacl64.exe (//components/nacl/broker:nacl64). | 402 # It's used solely for building nacl64.exe (//components/nacl/broker:nacl64). | 
| 396 # The only reason it's a separate toolchain is so that it can force | 403 # The only reason it's a separate toolchain is so that it can force | 
| 397 # is_component_build to false in the toolchain_args() block, because | 404 # is_component_build to false in the toolchain_args() block, because | 
| 398 # building nacl64.exe in component style does not work. | 405 # building nacl64.exe in component style does not work. | 
| 399 win_x64_toolchains("nacl_win64") { | 406 win_x64_toolchains("nacl_win64") { | 
| 400   is_component_build = false |  | 
| 401 |  | 
| 402   # TODO(mcgrathr): These assignments are only required because of | 407   # TODO(mcgrathr): These assignments are only required because of | 
| 403   # crbug.com/395883.  Drop them if that ever gets fixed in GN. | 408   # crbug.com/395883.  Drop them if that ever gets fixed in GN. | 
| 404   goma_prefix = goma_prefix | 409   goma_prefix = goma_prefix | 
| 405   x64_toolchain_data = x64_toolchain_data | 410   x64_toolchain_data = x64_toolchain_data | 
| 406   clang_cl = clang_cl | 411   clang_cl = clang_cl | 
|  | 412 | 
|  | 413   toolchain_args = { | 
|  | 414     is_component_build = false | 
|  | 415   } | 
| 407 } | 416 } | 
| 408 | 417 | 
| 409 # WinRT toolchains. Only define these when targeting them. | 418 # WinRT toolchains. Only define these when targeting them. | 
| 410 # | 419 # | 
| 411 # NOTE: This is currently broken because it references vc_bin_dir. brettw@ | 420 # NOTE: This is currently broken because it references vc_bin_dir. brettw@ | 
| 412 # changed this around a bit, and I don't know what this should be set to | 421 # changed this around a bit, and I don't know what this should be set to | 
| 413 # in terms of what setup_toolchain returns for a certain CPU architecture. | 422 # in terms of what setup_toolchain returns for a certain CPU architecture. | 
| 414 if (target_os == "winrt_81" || target_os == "winrt_81_phone" || | 423 if (target_os == "winrt_81" || target_os == "winrt_81_phone" || | 
| 415     target_os == "winrt_10") { | 424     target_os == "winrt_10") { | 
| 416   msvc_toolchain("winrt_x86") { | 425   msvc_toolchain("winrt_x86") { | 
| 417     environment = "environment.winrt_x86" | 426     environment = "environment.winrt_x86" | 
| 418     cl = "${goma_prefix}\"${vc_bin_dir}/cl.exe\"" | 427     cl = "${goma_prefix}\"${vc_bin_dir}/cl.exe\"" | 
| 419     is_clang = false |  | 
| 420 | 428 | 
| 421     toolchain_cpu = "x86" | 429     toolchain_args = { | 
| 422     toolchain_os = current_os | 430       is_clang = false | 
|  | 431       current_cpu = "x86" | 
|  | 432     } | 
| 423   } | 433   } | 
| 424 | 434 | 
| 425   msvc_toolchain("winrt_x64") { | 435   msvc_toolchain("winrt_x64") { | 
| 426     environment = "environment.winrt_x64" | 436     environment = "environment.winrt_x64" | 
| 427     cl = "${goma_prefix}\"${vc_bin_dir}/cl.exe\"" | 437     cl = "${goma_prefix}\"${vc_bin_dir}/cl.exe\"" | 
| 428     is_clang = false |  | 
| 429 | 438 | 
| 430     toolchain_cpu = "x64" | 439     toolchain_args = { | 
| 431     toolchain_os = current_os | 440       is_clang = false | 
|  | 441       current_cpu = "x64" | 
|  | 442     } | 
| 432   } | 443   } | 
| 433 } | 444 } | 
| OLD | NEW | 
|---|