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