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

Side by Side Diff: build/toolchain/gcc_toolchain.gni

Issue 1435583002: Support spaces in output names in GN Linux (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge Created 5 years, 1 month 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 | « no previous file | no next file » | 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/nacl/config.gni") 5 import("//build/config/nacl/config.gni")
6 import("//build/config/sanitizers/sanitizers.gni") 6 import("//build/config/sanitizers/sanitizers.gni")
7 import("//build/toolchain/ccache.gni") 7 import("//build/toolchain/ccache.gni")
8 import("//build/toolchain/goma.gni") 8 import("//build/toolchain/goma.gni")
9 import("//build/toolchain/toolchain.gni") 9 import("//build/toolchain/toolchain.gni")
10 10
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 ] 205 ]
206 } 206 }
207 207
208 tool("alink") { 208 tool("alink") {
209 rspfile = "{{output}}.rsp" 209 rspfile = "{{output}}.rsp"
210 arflags = "" 210 arflags = ""
211 if (is_cfi && invoker.toolchain_os != "nacl") { 211 if (is_cfi && invoker.toolchain_os != "nacl") {
212 gold_plugin_path = rebase_path( 212 gold_plugin_path = rebase_path(
213 "//third_party/llvm-build/Release+Asserts/lib/LLVMgold.so", 213 "//third_party/llvm-build/Release+Asserts/lib/LLVMgold.so",
214 root_build_dir) 214 root_build_dir)
215 arflags = "--plugin $gold_plugin_path" 215 arflags = "--plugin \"$gold_plugin_path\""
216 } 216 }
217 217
218 # This needs a Python script to avoid using simple sh features in this 218 # This needs a Python script to avoid using simple sh features in this
219 # command, in case the host does not use a POSIX shell (e.g. Windows). 219 # command, in case the host does not use a POSIX shell (e.g. compiling
220 ar_wrapper = rebase_path("//build/toolchain/gcc_ar_wrapper.py") 220 # POSIX-like toolchains such as NaCl on Windows).
221 command = "$python_path $ar_wrapper --output={{output}} --ar=$ar $arflags rcs @$rspfile" 221 ar_wrapper =
222 rebase_path("//build/toolchain/gcc_ar_wrapper.py", root_build_dir)
223 command = "$python_path \"$ar_wrapper\" --output={{output}} --ar=$ar $arfl ags rcs @\"$rspfile\""
222 description = "AR {{output}}" 224 description = "AR {{output}}"
223 rspfile_content = "{{inputs}}" 225 rspfile_content = "{{inputs}}"
224 outputs = [ 226 outputs = [
225 "{{target_out_dir}}/{{target_output_name}}{{output_extension}}", 227 "{{target_out_dir}}/{{target_output_name}}{{output_extension}}",
226 ] 228 ]
227 default_output_extension = ".a" 229 default_output_extension = ".a"
228 output_prefix = "lib" 230 output_prefix = "lib"
229 } 231 }
230 232
231 tool("solink") { 233 tool("solink") {
232 soname = "{{target_output_name}}{{output_extension}}" # e.g. "libfoo.so". 234 soname = "{{target_output_name}}{{output_extension}}" # e.g. "libfoo.so".
233 sofile = "{{root_out_dir}}/$soname" # Possibly including toolchain dir. 235 sofile = "{{root_out_dir}}/$soname" # Possibly including toolchain dir.
234 if (shlib_subdir != ".") { 236 if (shlib_subdir != ".") {
235 sofile = "{{root_out_dir}}/$shlib_subdir/$soname" 237 sofile = "{{root_out_dir}}/$shlib_subdir/$soname"
236 } 238 }
237 rspfile = sofile + ".rsp" 239 rspfile = sofile + ".rsp"
238 240
239 unstripped_sofile = sofile 241 unstripped_sofile = sofile
240 if (defined(invoker.strip)) { 242 if (defined(invoker.strip)) {
241 unstripped_sofile = "{{root_out_dir}}/lib.unstripped/$soname" 243 unstripped_sofile = "{{root_out_dir}}/lib.unstripped/$soname"
242 } 244 }
243 245
244 # These variables are not built into GN but are helpers that 246 # These variables are not built into GN but are helpers that
245 # implement (1) linking to produce a .so, (2) extracting the symbols 247 # implement (1) linking to produce a .so, (2) extracting the symbols
246 # from that file (3) if the extracted list differs from the existing 248 # from that file (3) if the extracted list differs from the existing
247 # .TOC file, overwrite it, otherwise, don't change it. 249 # .TOC file, overwrite it, otherwise, don't change it.
248 tocfile = sofile + ".TOC" 250 tocfile = sofile + ".TOC"
249 251
250 link_command = "$ld -shared {{ldflags}} -o $unstripped_sofile -Wl,-soname= $soname @$rspfile" 252 link_command = "$ld -shared {{ldflags}} -o \"$unstripped_sofile\" -Wl,-son ame=\"$soname\" @\"$rspfile\""
251 253
252 assert(defined(readelf), "to solink you must have a readelf") 254 assert(defined(readelf), "to solink you must have a readelf")
253 assert(defined(nm), "to solink you must have an nm") 255 assert(defined(nm), "to solink you must have an nm")
254 strip_switch = "" 256 strip_switch = ""
255 if (defined(invoker.strip)) { 257 if (defined(invoker.strip)) {
256 strip_switch = "--strip=${invoker.strip}" 258 strip_switch = "--strip=${invoker.strip}"
257 } 259 }
258 260
259 # This needs a Python script to avoid using a complex shell command 261 # This needs a Python script to avoid using a complex shell command
260 # requiring sh control structures, pipelines, and POSIX utilities. 262 # requiring sh control structures, pipelines, and POSIX utilities.
261 # The host might not have a POSIX shell and utilities (e.g. Windows). 263 # The host might not have a POSIX shell and utilities (e.g. Windows).
262 solink_wrapper = rebase_path("//build/toolchain/gcc_solink_wrapper.py") 264 solink_wrapper = rebase_path("//build/toolchain/gcc_solink_wrapper.py")
263 command = "$python_path $solink_wrapper --readelf=$readelf --nm=$nm $strip _switch --sofile=$unstripped_sofile --tocfile=$tocfile --output=$sofile -- $link _command" 265 command = "$python_path $solink_wrapper --readelf=$readelf --nm=$nm $strip _switch --sofile=\"$unstripped_sofile\" --tocfile=\"$tocfile\" --output=\"$sofil e\" -- $link_command"
264 266
265 rspfile_content = "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whol e-archive $solink_libs_section_prefix {{libs}} $solink_libs_section_postfix" 267 rspfile_content = "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whol e-archive $solink_libs_section_prefix {{libs}} $solink_libs_section_postfix"
266 268
267 description = "SOLINK $sofile" 269 description = "SOLINK $sofile"
268 270
269 # Use this for {{output_extension}} expansions unless a target manually 271 # Use this for {{output_extension}} expansions unless a target manually
270 # overrides it (in which case {{output_extension}} will be what the target 272 # overrides it (in which case {{output_extension}} will be what the target
271 # specifies). 273 # specifies).
272 default_output_extension = default_shlib_extension 274 default_output_extension = default_shlib_extension
273 275
(...skipping 23 matching lines...) Expand all
297 if (shlib_subdir != ".") { 299 if (shlib_subdir != ".") {
298 sofile = "{{root_out_dir}}/$shlib_subdir/$soname" 300 sofile = "{{root_out_dir}}/$shlib_subdir/$soname"
299 } 301 }
300 rspfile = sofile + ".rsp" 302 rspfile = sofile + ".rsp"
301 303
302 unstripped_sofile = sofile 304 unstripped_sofile = sofile
303 if (defined(invoker.strip)) { 305 if (defined(invoker.strip)) {
304 unstripped_sofile = "{{root_out_dir}}/lib.unstripped/$soname" 306 unstripped_sofile = "{{root_out_dir}}/lib.unstripped/$soname"
305 } 307 }
306 308
307 command = "$ld -shared {{ldflags}} -o $unstripped_sofile -Wl,-soname=$sona me @$rspfile" 309 command = "$ld -shared {{ldflags}} -o \"$unstripped_sofile\" -Wl,-soname=\ "$soname\" @\"$rspfile\""
308 310
309 if (defined(invoker.strip)) { 311 if (defined(invoker.strip)) {
310 strip_command = 312 strip_command = "${invoker.strip} --strip-unneeded -o \"$sofile\" \"$uns tripped_sofile\""
311 "${invoker.strip} --strip-unneeded -o $sofile $unstripped_sofile"
312 command += " && " + strip_command 313 command += " && " + strip_command
313 } 314 }
314 rspfile_content = "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whol e-archive $solink_libs_section_prefix {{libs}} $solink_libs_section_postfix" 315 rspfile_content = "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whol e-archive $solink_libs_section_prefix {{libs}} $solink_libs_section_postfix"
315 316
316 description = "SOLINK_MODULE $sofile" 317 description = "SOLINK_MODULE $sofile"
317 318
318 # Use this for {{output_extension}} expansions unless a target manually 319 # Use this for {{output_extension}} expansions unless a target manually
319 # overrides it (in which case {{output_extension}} will be what the target 320 # overrides it (in which case {{output_extension}} will be what the target
320 # specifies). 321 # specifies).
321 default_output_extension = default_shlib_extension 322 default_output_extension = default_shlib_extension
(...skipping 16 matching lines...) Expand all
338 339
339 # Use this for {{output_extension}} expansions unless a target manually 340 # Use this for {{output_extension}} expansions unless a target manually
340 # overrides it (in which case {{output_extension}} will be what the target 341 # overrides it (in which case {{output_extension}} will be what the target
341 # specifies). 342 # specifies).
342 default_output_extension = default_executable_extension 343 default_output_extension = default_executable_extension
343 344
344 if (defined(invoker.strip)) { 345 if (defined(invoker.strip)) {
345 unstripped_outfile = "{{root_out_dir}}/exe.unstripped/$exename" 346 unstripped_outfile = "{{root_out_dir}}/exe.unstripped/$exename"
346 } 347 }
347 348
348 command = "$ld {{ldflags}} -o $unstripped_outfile -Wl,--start-group @$rspf ile {{solibs}} -Wl,--end-group $libs_section_prefix {{libs}} $libs_section_postf ix" 349 command = "$ld {{ldflags}} -o \"$unstripped_outfile\" -Wl,--start-group @\ "$rspfile\" {{solibs}} -Wl,--end-group $libs_section_prefix {{libs}} $libs_secti on_postfix"
349 if (defined(invoker.strip)) { 350 if (defined(invoker.strip)) {
350 link_wrapper = rebase_path("//build/toolchain/gcc_link_wrapper.py") 351 link_wrapper =
351 command = "$python_path $link_wrapper --strip=${invoker.strip} --unstrip ped-file=$unstripped_outfile --output=$outfile -- $command" 352 rebase_path("//build/toolchain/gcc_link_wrapper.py", root_build_dir)
353 command = "$python_path \"$link_wrapper\" --strip=${invoker.strip} --uns tripped-file=\"$unstripped_outfile\" --output=\"$outfile\" -- $command"
352 } 354 }
353 description = "LINK $outfile" 355 description = "LINK $outfile"
354 rspfile_content = "{{inputs}}" 356 rspfile_content = "{{inputs}}"
355 outputs = [ 357 outputs = [
356 outfile, 358 outfile,
357 ] 359 ]
358 if (outfile != unstripped_outfile) { 360 if (outfile != unstripped_outfile) {
359 outputs += [ unstripped_outfile ] 361 outputs += [ unstripped_outfile ]
360 } 362 }
361 if (defined(invoker.link_outputs)) { 363 if (defined(invoker.link_outputs)) {
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 nm = "${toolprefix}nm" 443 nm = "${toolprefix}nm"
442 444
443 forward_variables_from(invoker, 445 forward_variables_from(invoker,
444 [ 446 [
445 "toolchain_cpu", 447 "toolchain_cpu",
446 "toolchain_os", 448 "toolchain_os",
447 "use_gold", 449 "use_gold",
448 ]) 450 ])
449 } 451 }
450 } 452 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698