1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2013 The Chromium Authors 2*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file. 4*8975f5c5SAndroid Build Coastguard Worker 5*8975f5c5SAndroid Build Coastguard Workerimport("//build/config/win/visual_studio_version.gni") 6*8975f5c5SAndroid Build Coastguard Workerimport("//build/toolchain/win/toolchain.gni") 7*8975f5c5SAndroid Build Coastguard Worker 8*8975f5c5SAndroid Build Coastguard Workerassert(is_win, "Should only be running on Windows") 9*8975f5c5SAndroid Build Coastguard Worker 10*8975f5c5SAndroid Build Coastguard Worker# Setup the Visual Studio state. 11*8975f5c5SAndroid Build Coastguard Worker# 12*8975f5c5SAndroid Build Coastguard Worker# Its arguments are the VS path and the compiler wrapper tool. It will write 13*8975f5c5SAndroid Build Coastguard Worker# "environment.x86" and "environment.x64" to the build directory and return a 14*8975f5c5SAndroid Build Coastguard Worker# list to us. 15*8975f5c5SAndroid Build Coastguard Worker 16*8975f5c5SAndroid Build Coastguard Worker# Copy the VS runtime DLL for the default toolchain to the root build directory 17*8975f5c5SAndroid Build Coastguard Worker# so things will run. 18*8975f5c5SAndroid Build Coastguard Workerif (current_toolchain == default_toolchain) { 19*8975f5c5SAndroid Build Coastguard Worker if (is_debug) { 20*8975f5c5SAndroid Build Coastguard Worker configuration_name = "Debug" 21*8975f5c5SAndroid Build Coastguard Worker } else { 22*8975f5c5SAndroid Build Coastguard Worker configuration_name = "Release" 23*8975f5c5SAndroid Build Coastguard Worker } 24*8975f5c5SAndroid Build Coastguard Worker exec_script("../../vs_toolchain.py", 25*8975f5c5SAndroid Build Coastguard Worker [ 26*8975f5c5SAndroid Build Coastguard Worker "copy_dlls", 27*8975f5c5SAndroid Build Coastguard Worker rebase_path(root_build_dir), 28*8975f5c5SAndroid Build Coastguard Worker configuration_name, 29*8975f5c5SAndroid Build Coastguard Worker target_cpu, 30*8975f5c5SAndroid Build Coastguard Worker ]) 31*8975f5c5SAndroid Build Coastguard Worker} 32*8975f5c5SAndroid Build Coastguard Worker 33*8975f5c5SAndroid Build Coastguard Workerif (target_cpu == "x86" || target_cpu == "x64") { 34*8975f5c5SAndroid Build Coastguard Worker win_toolchains("x86") { 35*8975f5c5SAndroid Build Coastguard Worker toolchain_arch = "x86" 36*8975f5c5SAndroid Build Coastguard Worker } 37*8975f5c5SAndroid Build Coastguard Worker win_toolchains("x64") { 38*8975f5c5SAndroid Build Coastguard Worker toolchain_arch = "x64" 39*8975f5c5SAndroid Build Coastguard Worker } 40*8975f5c5SAndroid Build Coastguard Worker} 41*8975f5c5SAndroid Build Coastguard Worker 42*8975f5c5SAndroid Build Coastguard Workerif (target_cpu == "arm64") { 43*8975f5c5SAndroid Build Coastguard Worker win_toolchains("arm64") { 44*8975f5c5SAndroid Build Coastguard Worker toolchain_arch = "arm64" 45*8975f5c5SAndroid Build Coastguard Worker } 46*8975f5c5SAndroid Build Coastguard Worker win_toolchains("x64") { 47*8975f5c5SAndroid Build Coastguard Worker toolchain_arch = "x64" 48*8975f5c5SAndroid Build Coastguard Worker } 49*8975f5c5SAndroid Build Coastguard Worker} 50*8975f5c5SAndroid Build Coastguard Worker 51*8975f5c5SAndroid Build Coastguard Worker# The nacl_win64 toolchain is nearly identical to the plain x64 toolchain. 52*8975f5c5SAndroid Build Coastguard Worker# It's used solely for building nacl64.exe (//components/nacl/broker:nacl64). 53*8975f5c5SAndroid Build Coastguard Worker# The only reason it's a separate toolchain is so that it can force 54*8975f5c5SAndroid Build Coastguard Worker# is_component_build to false in the toolchain_args() block, because 55*8975f5c5SAndroid Build Coastguard Worker# building nacl64.exe in component style does not work. 56*8975f5c5SAndroid Build Coastguard Workerwin_toolchains("nacl_win64") { 57*8975f5c5SAndroid Build Coastguard Worker toolchain_arch = "x64" 58*8975f5c5SAndroid Build Coastguard Worker toolchain_args = { 59*8975f5c5SAndroid Build Coastguard Worker is_component_build = false 60*8975f5c5SAndroid Build Coastguard Worker } 61*8975f5c5SAndroid Build Coastguard Worker} 62*8975f5c5SAndroid Build Coastguard Worker 63*8975f5c5SAndroid Build Coastguard Worker# WinUWP toolchains. Only define these when targeting them. 64*8975f5c5SAndroid Build Coastguard Worker 65*8975f5c5SAndroid Build Coastguard Workerif (target_os == "winuwp") { 66*8975f5c5SAndroid Build Coastguard Worker assert(target_cpu == "x64" || target_cpu == "x86" || target_cpu == "arm" || 67*8975f5c5SAndroid Build Coastguard Worker target_cpu == "arm64") 68*8975f5c5SAndroid Build Coastguard Worker 69*8975f5c5SAndroid Build Coastguard Worker # Note that //build/toolchain/win/win_toolchain_data.gni collects the output 70*8975f5c5SAndroid Build Coastguard Worker # of setup_toolchain.py, however it's not compatible with the UWP toolchain, 71*8975f5c5SAndroid Build Coastguard Worker # as the UWP toolchain requires the `environment.store_$CPU` variable, instead 72*8975f5c5SAndroid Build Coastguard Worker # of the usual `environment.$CPU`. 73*8975f5c5SAndroid Build Coastguard Worker store_cpu_toolchain_data = 74*8975f5c5SAndroid Build Coastguard Worker exec_script("//build/toolchain/win/setup_toolchain.py", 75*8975f5c5SAndroid Build Coastguard Worker [ 76*8975f5c5SAndroid Build Coastguard Worker visual_studio_path, 77*8975f5c5SAndroid Build Coastguard Worker windows_sdk_path, 78*8975f5c5SAndroid Build Coastguard Worker visual_studio_runtime_dirs, 79*8975f5c5SAndroid Build Coastguard Worker target_os, 80*8975f5c5SAndroid Build Coastguard Worker target_cpu, 81*8975f5c5SAndroid Build Coastguard Worker "environment.store_" + target_cpu, 82*8975f5c5SAndroid Build Coastguard Worker ], 83*8975f5c5SAndroid Build Coastguard Worker "scope") 84*8975f5c5SAndroid Build Coastguard Worker 85*8975f5c5SAndroid Build Coastguard Worker msvc_toolchain("uwp_" + target_cpu) { 86*8975f5c5SAndroid Build Coastguard Worker environment = "environment.store_" + target_cpu 87*8975f5c5SAndroid Build Coastguard Worker cl = "\"${store_cpu_toolchain_data.vc_bin_dir}/cl.exe\"" 88*8975f5c5SAndroid Build Coastguard Worker toolchain_args = { 89*8975f5c5SAndroid Build Coastguard Worker current_os = "winuwp" 90*8975f5c5SAndroid Build Coastguard Worker current_cpu = target_cpu 91*8975f5c5SAndroid Build Coastguard Worker is_clang = false 92*8975f5c5SAndroid Build Coastguard Worker } 93*8975f5c5SAndroid Build Coastguard Worker } 94*8975f5c5SAndroid Build Coastguard Worker} 95