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

Side by Side Diff: build/config/gcc/BUILD.gn

Issue 1996433002: 👻 Reland of Merge android's use_gold settings with the main use_gold GN arg logic (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: delete --icf=safe Created 4 years, 7 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/config/compiler/compiler.gni ('k') | 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 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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/compiler/compiler.gni")
5 import("//build/config/sanitizers/sanitizers.gni") 6 import("//build/config/sanitizers/sanitizers.gni")
7 import("//build/config/sysroot.gni")
6 import("//build/toolchain/toolchain.gni") 8 import("//build/toolchain/toolchain.gni")
7 9
8 # This config causes functions not to be automatically exported from shared 10 # This config causes functions not to be automatically exported from shared
9 # libraries. By default, all symbols are exported but this means there are 11 # libraries. By default, all symbols are exported but this means there are
10 # lots of exports that slow everything down. In general we explicitly mark 12 # lots of exports that slow everything down. In general we explicitly mark
11 # which functiosn we want to export from components. 13 # which functiosn we want to export from components.
12 # 14 #
13 # Some third_party code assumes all functions are exported so this is separated 15 # Some third_party code assumes all functions are exported so this is separated
14 # into its own config so such libraries can remove this config to make symbols 16 # into its own config so such libraries can remove this config to make symbols
15 # public again. 17 # public again.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 ldflags = [ 64 ldflags = [
63 # Want to pass "\$". GN will re-escape as required for ninja. 65 # Want to pass "\$". GN will re-escape as required for ninja.
64 "-Wl,-rpath=\$ORIGIN/${rpath_link}", 66 "-Wl,-rpath=\$ORIGIN/${rpath_link}",
65 "-Wl,-rpath-link=${rpath_link}", 67 "-Wl,-rpath-link=${rpath_link}",
66 ] 68 ]
67 } 69 }
68 } 70 }
69 71
70 # Settings for executables. 72 # Settings for executables.
71 config("executable_ldconfig") { 73 config("executable_ldconfig") {
74 ldflags = []
72 if (is_android) { 75 if (is_android) {
73 ldflags = [ 76 ldflags += [
74 "-Bdynamic", 77 "-Bdynamic",
75 "-Wl,-z,nocopyreloc", 78 "-Wl,-z,nocopyreloc",
76 ] 79 ]
77 } else { 80 } else {
78 # See the rpath_for... config above for why this is necessary for component 81 # See the rpath_for... config above for why this is necessary for component
79 # builds. Sanitizers use a custom libc++ where this is also necessary. 82 # builds. Sanitizers use a custom libc++ where this is also necessary.
80 if (is_component_build || using_sanitizer) { 83 if (is_component_build || using_sanitizer) {
81 configs = [ ":rpath_for_built_shared_libraries" ] 84 configs = [ ":rpath_for_built_shared_libraries" ]
82 } 85 }
86 if (current_cpu == "mipsel") {
87 ldflags += [ "-pie" ]
88 }
89 }
83 90
91 if (!is_android || !use_gold) {
84 # Find the path containing shared libraries for this toolchain 92 # Find the path containing shared libraries for this toolchain
85 # relative to the build directory. ${root_out_dir} will be a 93 # relative to the build directory. ${root_out_dir} will be a
86 # subdirectory of ${root_build_dir} when cross compiling. 94 # subdirectory of ${root_build_dir} when cross compiling.
87 rebased_out_dir = rebase_path(root_out_dir, root_build_dir) 95 _rpath_link = rebase_path(root_out_dir, root_build_dir)
88 if (shlib_subdir != ".") { 96 if (shlib_subdir != ".") {
89 rpath_link = "${rebased_out_dir}/${shlib_subdir}" 97 _rpath_link += "/$shlib_subdir"
90 } else { 98 }
91 rpath_link = rebased_out_dir 99 if (is_android) {
100 _rebased_sysroot = rebase_path(sysroot, root_build_dir)
101 _rpath_link += ":$_rebased_sysroot/usr/lib"
92 } 102 }
93 103
94 ldflags = [ 104 ldflags += [
95 "-Wl,-rpath-link=${rpath_link}", 105 "-Wl,-rpath-link=$_rpath_link",
96 106
97 # TODO(GYP): Do we need a check on the binutils version here? 107 # TODO(GYP): Do we need a check on the binutils version here?
98 # 108 #
99 # Newer binutils don't set DT_RPATH unless you disable "new" dtags 109 # Newer binutils don't set DT_RPATH unless you disable "new" dtags
100 # and the new DT_RUNPATH doesn't work without --no-as-needed flag. 110 # and the new DT_RUNPATH doesn't work without --no-as-needed flag.
101 "-Wl,--disable-new-dtags", 111 "-Wl,--disable-new-dtags",
102 ] 112 ]
103 if (current_cpu == "mipsel") {
104 ldflags += [ "-pie" ]
105 }
106 } 113 }
107 } 114 }
108 115
109 config("no_exceptions") { 116 config("no_exceptions") {
110 cflags_cc = [ "-fno-exceptions" ] 117 cflags_cc = [ "-fno-exceptions" ]
111 cflags_objcc = cflags_cc 118 cflags_objcc = cflags_cc
112 } 119 }
OLDNEW
« no previous file with comments | « build/config/compiler/compiler.gni ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698