xref: /aosp_15_r20/external/cronet/build/toolchain/win/BUILD.gn (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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