OLD | NEW |
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 Loading... |
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 } |
OLD | NEW |