Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(271)

Side by Side Diff: build/toolchain/win/BUILD.gn

Issue 2287603003: Move gyp-win-tool to the GN Windows toolchain. (Closed)
Patch Set: fix Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « build/toolchain/toolchain.gni ('k') | build/toolchain/win/midl.gni » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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")
11 11
12 # Should only be running on Windows. 12 # Should only be running on Windows.
13 assert(is_win) 13 assert(is_win)
14 14
15 # Setup the Visual Studio state. 15 # Setup the Visual Studio state.
16 # 16 #
17 # Its arguments are the VS path and the compiler wrapper tool. It will write 17 # Its arguments are the VS path and the compiler wrapper tool. It will write
18 # "environment.x86" and "environment.x64" to the build directory and return a 18 # "environment.x86" and "environment.x64" to the build directory and return a
19 # list to us. 19 # list to us.
20 gyp_win_tool_path = 20
21 rebase_path("//tools/gyp/pylib/gyp/win_tool.py", root_build_dir) 21 # This tool will is used as a wrapper for various commands below.
22 tool_wrapper_path = rebase_path("tool_wrapper.py", root_build_dir)
22 23
23 if (use_goma) { 24 if (use_goma) {
24 goma_prefix = "$goma_dir/gomacc.exe " 25 goma_prefix = "$goma_dir/gomacc.exe "
25 } else { 26 } else {
26 goma_prefix = "" 27 goma_prefix = ""
27 } 28 }
28 29
29 # Copy the VS runtime DLL for the default toolchain to the root build directory 30 # Copy the VS runtime DLL for the default toolchain to the root build directory
30 # so things will run. 31 # so things will run.
31 if (current_toolchain == default_toolchain) { 32 if (current_toolchain == default_toolchain) {
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 command = "$env_wrapper$cl /nologo /showIncludes /FC @$rspfile /c {{source }} /Fo{{output}} /Fd\"$pdbname\"" 154 command = "$env_wrapper$cl /nologo /showIncludes /FC @$rspfile /c {{source }} /Fo{{output}} /Fd\"$pdbname\""
154 depsformat = "msvc" 155 depsformat = "msvc"
155 description = "CXX {{output}}" 156 description = "CXX {{output}}"
156 outputs = [ 157 outputs = [
157 "$object_subdir/{{source_name_part}}.obj", 158 "$object_subdir/{{source_name_part}}.obj",
158 ] 159 ]
159 rspfile_content = "$sys_include_flags{{defines}} {{include_dirs}} {{cflags }} {{cflags_cc}}" 160 rspfile_content = "$sys_include_flags{{defines}} {{include_dirs}} {{cflags }} {{cflags_cc}}"
160 } 161 }
161 162
162 tool("rc") { 163 tool("rc") {
163 command = "$python_path gyp-win-tool rc-wrapper $env rc.exe {{defines}} {{ include_dirs}} /fo{{output}} {{source}}" 164 command = "$python_path $tool_wrapper_path rc-wrapper $env rc.exe {{define s}} {{include_dirs}} /fo{{output}} {{source}}"
164 outputs = [ 165 outputs = [
165 "$object_subdir/{{source_name_part}}.res", 166 "$object_subdir/{{source_name_part}}.res",
166 ] 167 ]
167 description = "RC {{output}}" 168 description = "RC {{output}}"
168 } 169 }
169 170
170 tool("asm") { 171 tool("asm") {
171 if (toolchain_args.current_cpu == "x64") { 172 if (toolchain_args.current_cpu == "x64") {
172 ml = "ml64.exe" 173 ml = "ml64.exe"
173 } else { 174 } else {
174 ml = "ml.exe" 175 ml = "ml.exe"
175 } 176 }
176 command = "$python_path gyp-win-tool asm-wrapper $env $ml {{defines}} {{in clude_dirs}} {{asmflags}} /c /Fo{{output}} {{source}}" 177 command = "$python_path $tool_wrapper_path asm-wrapper $env $ml {{defines} } {{include_dirs}} {{asmflags}} /c /Fo{{output}} {{source}}"
177 description = "ASM {{output}}" 178 description = "ASM {{output}}"
178 outputs = [ 179 outputs = [
179 "$object_subdir/{{source_name_part}}.obj", 180 "$object_subdir/{{source_name_part}}.obj",
180 ] 181 ]
181 } 182 }
182 183
183 tool("alink") { 184 tool("alink") {
184 rspfile = "{{output}}.rsp" 185 rspfile = "{{output}}.rsp"
185 command = "$python_path gyp-win-tool link-wrapper $env False $lib /nologo {{arflags}} /OUT:{{output}} @$rspfile" 186 command = "$python_path $tool_wrapper_path link-wrapper $env False $lib /n ologo {{arflags}} /OUT:{{output}} @$rspfile"
186 description = "LIB {{output}}" 187 description = "LIB {{output}}"
187 outputs = [ 188 outputs = [
188 # Ignore {{output_extension}} and always use .lib, there's no reason to 189 # Ignore {{output_extension}} and always use .lib, there's no reason to
189 # allow targets to override this extension on Windows. 190 # allow targets to override this extension on Windows.
190 "{{output_dir}}/{{target_output_name}}.lib", 191 "{{output_dir}}/{{target_output_name}}.lib",
191 ] 192 ]
192 default_output_extension = ".lib" 193 default_output_extension = ".lib"
193 default_output_dir = "{{target_out_dir}}" 194 default_output_dir = "{{target_out_dir}}"
194 195
195 # The use of inputs_newline is to work around a fixed per-line buffer 196 # The use of inputs_newline is to work around a fixed per-line buffer
196 # size in the linker. 197 # size in the linker.
197 rspfile_content = "{{inputs_newline}}" 198 rspfile_content = "{{inputs_newline}}"
198 } 199 }
199 200
200 tool("solink") { 201 tool("solink") {
201 dllname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" # e .g. foo.dll 202 dllname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" # e .g. foo.dll
202 libname = "${dllname}.lib" # e.g. foo.dll.lib 203 libname = "${dllname}.lib" # e.g. foo.dll.lib
203 pdbname = "${dllname}.pdb" 204 pdbname = "${dllname}.pdb"
204 rspfile = "${dllname}.rsp" 205 rspfile = "${dllname}.rsp"
205 pool = "//build/toolchain:link_pool($default_toolchain)" 206 pool = "//build/toolchain:link_pool($default_toolchain)"
206 207
207 command = "$python_path gyp-win-tool link-wrapper $env False $link /nologo /IMPLIB:$libname /DLL /OUT:$dllname /PDB:$pdbname @$rspfile" 208 command = "$python_path $tool_wrapper_path link-wrapper $env False $link / nologo /IMPLIB:$libname /DLL /OUT:$dllname /PDB:$pdbname @$rspfile"
208 209
209 default_output_extension = ".dll" 210 default_output_extension = ".dll"
210 default_output_dir = "{{root_out_dir}}" 211 default_output_dir = "{{root_out_dir}}"
211 description = "LINK(DLL) {{output}}" 212 description = "LINK(DLL) {{output}}"
212 outputs = [ 213 outputs = [
213 dllname, 214 dllname,
214 libname, 215 libname,
215 ] 216 ]
216 link_output = libname 217 link_output = libname
217 depend_output = libname 218 depend_output = libname
(...skipping 12 matching lines...) Expand all
230 # size in the linker. 231 # size in the linker.
231 rspfile_content = "{{libs}} {{solibs}} {{inputs_newline}} {{ldflags}}" 232 rspfile_content = "{{libs}} {{solibs}} {{inputs_newline}} {{ldflags}}"
232 } 233 }
233 234
234 tool("solink_module") { 235 tool("solink_module") {
235 dllname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" # e .g. foo.dll 236 dllname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" # e .g. foo.dll
236 pdbname = "${dllname}.pdb" 237 pdbname = "${dllname}.pdb"
237 rspfile = "${dllname}.rsp" 238 rspfile = "${dllname}.rsp"
238 pool = "//build/toolchain:link_pool($default_toolchain)" 239 pool = "//build/toolchain:link_pool($default_toolchain)"
239 240
240 command = "$python_path gyp-win-tool link-wrapper $env False $link /nologo /DLL /OUT:$dllname /PDB:$pdbname @$rspfile" 241 command = "$python_path $tool_wrapper_path link-wrapper $env False $link / nologo /DLL /OUT:$dllname /PDB:$pdbname @$rspfile"
241 242
242 default_output_extension = ".dll" 243 default_output_extension = ".dll"
243 default_output_dir = "{{root_out_dir}}" 244 default_output_dir = "{{root_out_dir}}"
244 description = "LINK_MODULE(DLL) {{output}}" 245 description = "LINK_MODULE(DLL) {{output}}"
245 outputs = [ 246 outputs = [
246 dllname, 247 dllname,
247 ] 248 ]
248 if (symbol_level != 0) { 249 if (symbol_level != 0) {
249 outputs += [ pdbname ] 250 outputs += [ pdbname ]
250 } 251 }
251 runtime_outputs = outputs 252 runtime_outputs = outputs
252 253
253 # The use of inputs_newline is to work around a fixed per-line buffer 254 # The use of inputs_newline is to work around a fixed per-line buffer
254 # size in the linker. 255 # size in the linker.
255 rspfile_content = "{{libs}} {{solibs}} {{inputs_newline}} {{ldflags}}" 256 rspfile_content = "{{libs}} {{solibs}} {{inputs_newline}} {{ldflags}}"
256 } 257 }
257 258
258 tool("link") { 259 tool("link") {
259 exename = "{{output_dir}}/{{target_output_name}}{{output_extension}}" 260 exename = "{{output_dir}}/{{target_output_name}}{{output_extension}}"
260 pdbname = "$exename.pdb" 261 pdbname = "$exename.pdb"
261 rspfile = "$exename.rsp" 262 rspfile = "$exename.rsp"
262 pool = "//build/toolchain:link_pool($default_toolchain)" 263 pool = "//build/toolchain:link_pool($default_toolchain)"
263 264
264 command = "$python_path gyp-win-tool link-wrapper $env False $link /nologo /OUT:$exename /PDB:$pdbname @$rspfile" 265 command = "$python_path $tool_wrapper_path link-wrapper $env False $link / nologo /OUT:$exename /PDB:$pdbname @$rspfile"
265 266
266 default_output_extension = ".exe" 267 default_output_extension = ".exe"
267 default_output_dir = "{{root_out_dir}}" 268 default_output_dir = "{{root_out_dir}}"
268 description = "LINK {{output}}" 269 description = "LINK {{output}}"
269 outputs = [ 270 outputs = [
270 exename, 271 exename,
271 ] 272 ]
272 if (symbol_level != 0) { 273 if (symbol_level != 0) {
273 outputs += [ pdbname ] 274 outputs += [ pdbname ]
274 } 275 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 clang_cl = "clang-cl" 307 clang_cl = "clang-cl"
307 } 308 }
308 309
309 # 32-bit toolchains. Only define these when the target architecture is 32-bit 310 # 32-bit toolchains. Only define these when the target architecture is 32-bit
310 # since we don't do any 32-bit cross compiles when targeting 64-bit (the 311 # since we don't do any 32-bit cross compiles when targeting 64-bit (the
311 # build does generate some 64-bit stuff from 32-bit target builds). 312 # build does generate some 64-bit stuff from 32-bit target builds).
312 if (target_cpu == "x86") { 313 if (target_cpu == "x86") {
313 x86_toolchain_data = exec_script("setup_toolchain.py", 314 x86_toolchain_data = exec_script("setup_toolchain.py",
314 [ 315 [
315 visual_studio_path, 316 visual_studio_path,
316 gyp_win_tool_path,
317 windows_sdk_path, 317 windows_sdk_path,
318 visual_studio_runtime_dirs, 318 visual_studio_runtime_dirs,
319 "x86", 319 "x86",
320 "${sys_include_prefix}", 320 "${sys_include_prefix}",
321 ], 321 ],
322 "scope") 322 "scope")
323 323
324 msvc_toolchain("x86") { 324 msvc_toolchain("x86") {
325 environment = "environment.x86" 325 environment = "environment.x86"
326 cl = "${goma_prefix}\"${x86_toolchain_data.vc_bin_dir}/cl.exe\"" 326 cl = "${goma_prefix}\"${x86_toolchain_data.vc_bin_dir}/cl.exe\""
(...skipping 13 matching lines...) Expand all
340 current_cpu = "x86" 340 current_cpu = "x86"
341 is_clang = true 341 is_clang = true
342 } 342 }
343 } 343 }
344 } 344 }
345 345
346 # 64-bit toolchains. 346 # 64-bit toolchains.
347 x64_toolchain_data = exec_script("setup_toolchain.py", 347 x64_toolchain_data = exec_script("setup_toolchain.py",
348 [ 348 [
349 visual_studio_path, 349 visual_studio_path,
350 gyp_win_tool_path,
351 windows_sdk_path, 350 windows_sdk_path,
352 visual_studio_runtime_dirs, 351 visual_studio_runtime_dirs,
353 "x64", 352 "x64",
354 "${sys_include_prefix}", 353 "${sys_include_prefix}",
355 ], 354 ],
356 "scope") 355 "scope")
357 356
358 template("win_x64_toolchains") { 357 template("win_x64_toolchains") {
359 msvc_toolchain(target_name) { 358 msvc_toolchain(target_name) {
360 environment = "environment.x64" 359 environment = "environment.x64"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 msvc_toolchain("winrt_x64") { 421 msvc_toolchain("winrt_x64") {
423 environment = "environment.winrt_x64" 422 environment = "environment.winrt_x64"
424 cl = "${goma_prefix}\"${vc_bin_dir}/cl.exe\"" 423 cl = "${goma_prefix}\"${vc_bin_dir}/cl.exe\""
425 424
426 toolchain_args = { 425 toolchain_args = {
427 is_clang = false 426 is_clang = false
428 current_cpu = "x64" 427 current_cpu = "x64"
429 } 428 }
430 } 429 }
431 } 430 }
OLDNEW
« no previous file with comments | « build/toolchain/toolchain.gni ('k') | build/toolchain/win/midl.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698