Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2014 The Native Client 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 toolchain("x86_newlib") { | 5 import("//build/config/sysroot.gni") |
|
Dirk Pranke
2015/08/28 02:29:41
The old version of this file was way out of date a
| |
| 6 toolprefix = "gen/sdk/toolchain/linux_x86_newlib/bin/x86_64-nacl-" | 6 import("//build/toolchain/nacl_toolchain.gni") |
| 7 cc = toolprefix + "gcc" | 7 |
| 8 cxx = toolprefix + "g++" | 8 declare_args() { |
| 9 ld = toolprefix + "g++" | 9 nacl_toolchain_dir = rebase_path("//native_client/toolchain", root_build_dir) |
|
brettw
2015/08/28 18:25:52
Is this ever set outside of the build today? I can
Dirk Pranke
2015/08/28 20:08:32
I'd defer this one to the NaCl folks ...
Dirk Pranke
2015/08/28 20:37:07
ok, after checking with them, we think that we wil
| |
| 10 | 10 } |
| 11 tool("cc") { | 11 |
| 12 command = "$cc -MMD -MF \$out.d \$defines \$includes \$cflags \$cflags_c -c \$in -o \$out" | 12 os_toolchain_dir = "${nacl_toolchain_dir}/${current_os}_x86" |
| 13 description = "CC(NaCl x86 Newlib) \$out" | 13 |
| 14 depfile = "\$out.d" | 14 # Add the toolchain revision as a preprocessor define so that sources are |
| 15 depsformat = "gcc" | 15 # rebuilt when a toolchain is updated. |
| 16 } | 16 # Idea we could use the toolchain deps feature, but currently that feature is |
| 17 tool("cxx") { | 17 # bugged and does not trigger a rebuild. |
| 18 # cflags_pch_cc | 18 # https://code.google.com/p/chromium/issues/detail?id=431880 |
| 19 command = "$cxx -MMD -MF \$out.d \$defines \$includes \$cflags \$cflags_cc - c \$in -o \$out" | 19 # Calls to get the toolchain revision are relatively slow, so do them all in a |
| 20 description = "CXX(NaCl x86 Newlib) \$out" | 20 # single batch to amortize python startup, etc. |
| 21 depfile = "\$out.d" | 21 revisions = exec_script("//native_client/build/get_toolchain_revision.py", |
| 22 depsformat = "gcc" | 22 [ |
| 23 } | 23 "nacl_arm_newlib", |
| 24 tool("alink") { | 24 "nacl_x86_newlib", |
| 25 command = "rm -f \$out && ${toolprefix}ar rcs \$out \$in" | 25 "nacl_x86_glibc", |
| 26 description = "AR(NaCl x86 Newlib) \$out" | 26 "pnacl_newlib", |
| 27 } | 27 ], |
| 28 tool("solink") { | 28 "trim list lines") |
| 29 command = "if [ ! -e \$lib -o ! -e \${lib}.TOC ]; then $ld -shared \$ldflags -o \$lib -Wl,-soname=\$soname -Wl,--whole-archive \$in \$solibs -Wl,--no-whole- archive \$libs && { readelf -d \${lib} | grep SONAME ; nm -gD -f p \${lib} | cut -f1-2 -d' '; } > \${lib}.TOC; else $ld -shared \$ldflags -o \$lib -Wl,-soname=\ $soname -Wl,--whole-archive \$in \$solibs -Wl,--no-whole-archive \$libs && { rea delf -d \${lib} | grep SONAME ; nm -gD -f p \${lib} | cut -f1-2 -d' '; } > \${li b}.tmp && if ! cmp -s \${lib}.tmp \${lib}.TOC; then mv \${lib}.tmp \${lib}.TOC ; fi; fi" | 29 nacl_arm_newlib_rev = revisions[0] |
| 30 description = "SOLINK(NaCl x86 Newlib) \$lib" | 30 nacl_x86_newlib_rev = revisions[1] |
| 31 | 31 nacl_x86_glibc_rev = revisions[2] |
| 32 #pool = "link_pool" | 32 pnacl_newlib_rev = revisions[3] |
| 33 restat = "1" | 33 |
| 34 } | 34 nacl_toolchain("newlib_arm") { |
|
Roland McGrath
2015/08/28 20:58:40
When I started hacking on this stuff, I made nacl_
Dirk Pranke
2015/08/28 21:17:05
Acknowledged.
| |
| 35 tool("link") { | 35 toolchain_package = "nacl_arm_newlib" |
| 36 command = "$ld \$ldflags -o \$out -Wl,--start-group \$in \$solibs -Wl,--end- group \$libs" | 36 toolchain_revision = nacl_arm_newlib_rev |
| 37 description = "LINK(NaCl x86 Newlib) \$out" | 37 toolchain_cpu = "arm" |
| 38 | 38 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/arm-nacl-" |
| 39 #pool = "link_pool" | 39 |
| 40 } | 40 cc = toolprefix + "gcc" |
| 41 | 41 cxx = toolprefix + "g++" |
| 42 if (is_win) { | 42 ar = toolprefix + "ar" |
| 43 tool("stamp") { | 43 ld = cxx |
| 44 command = "$python_path gyp-win-tool stamp \$out" | 44 } |
| 45 description = "STAMP \$out" | 45 |
| 46 } | 46 nacl_toolchain("newlib_x86") { |
| 47 } else { | 47 toolchain_package = "nacl_x86_newlib" |
| 48 tool("stamp") { | 48 toolchain_revision = nacl_x86_newlib_rev |
| 49 command = "touch \$out" | 49 toolchain_cpu = "x86" |
| 50 description = "STAMP \$out" | 50 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/i686-nacl-" |
| 51 } | 51 |
| 52 } | 52 cc = toolprefix + "gcc" |
| 53 | 53 cxx = toolprefix + "g++" |
| 54 toolchain_args() { | 54 ar = toolprefix + "ar" |
| 55 # Override the default OS detection. The build config will set the is_* | 55 ld = cxx |
| 56 # flags accordingly. | 56 } |
| 57 current_os = "nacl" | 57 |
| 58 | 58 nacl_toolchain("newlib_x64") { |
| 59 # Component build not supported in NaCl, since it does not support shared | 59 toolchain_package = "nacl_x86_newlib" |
| 60 # libraries. | 60 toolchain_revision = nacl_x86_newlib_rev |
| 61 is_component_build = false | 61 toolchain_cpu = "x64" |
| 62 } | 62 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/x86_64-nacl-" |
| 63 } | 63 |
| 64 cc = toolprefix + "gcc" | |
| 65 cxx = toolprefix + "g++" | |
| 66 ar = toolprefix + "ar" | |
| 67 ld = cxx | |
| 68 } | |
| 69 | |
| 70 nacl_toolchain("newlib_pnacl") { | |
| 71 toolchain_package = "pnacl_newlib" | |
| 72 toolchain_revision = pnacl_newlib_rev | |
| 73 toolchain_cpu = "pnacl" | |
| 74 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/pnacl-" | |
| 75 | |
| 76 cc = toolprefix + "clang" | |
| 77 cxx = toolprefix + "clang++" | |
| 78 ar = toolprefix + "ar" | |
| 79 ld = cxx | |
| 80 executable_extension = ".pexe-debug" | |
| 81 | |
| 82 finalize = toolprefix + "finalize" | |
| 83 nonfinal_file = | |
| 84 "{{root_out_dir}}/{{target_output_name}}${executable_extension}" | |
| 85 finalized_file = "{{root_out_dir}}/{{target_output_name}}.pexe" | |
| 86 postlink = "$finalize $nonfinal_file -o $finalized_file" | |
| 87 link_outputs = [ finalized_file ] | |
| 88 } | |
| 89 | |
| 90 nacl_toolchain("glibc_x86") { | |
| 91 toolchain_package = "nacl_x86_glibc" | |
| 92 toolchain_revision = nacl_x86_glibc_rev | |
| 93 toolchain_cpu = "x86" | |
| 94 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/i686-nacl-" | |
| 95 | |
| 96 cc = toolprefix + "gcc" | |
| 97 cxx = toolprefix + "g++" | |
| 98 ar = toolprefix + "ar" | |
| 99 ld = cxx | |
| 100 } | |
| 101 | |
| 102 nacl_toolchain("glibc_x64") { | |
| 103 toolchain_package = "nacl_x86_glibc" | |
| 104 toolchain_revision = nacl_x86_glibc_rev | |
| 105 toolchain_cpu = "x64" | |
| 106 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/x86_64-nacl-" | |
| 107 | |
| 108 cc = toolprefix + "gcc" | |
| 109 cxx = toolprefix + "g++" | |
| 110 ar = toolprefix + "ar" | |
| 111 ld = cxx | |
| 112 } | |
| 113 | |
| 114 nacl_toolchain("clang_newlib_x86") { | |
| 115 toolchain_package = "pnacl_newlib" | |
| 116 toolchain_revision = pnacl_newlib_rev | |
| 117 toolchain_cpu = "x86" | |
| 118 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/i686-nacl-" | |
| 119 is_clang = true | |
| 120 | |
| 121 cc = toolprefix + "clang" | |
| 122 cxx = toolprefix + "clang++" | |
| 123 ar = toolprefix + "ar" | |
| 124 ld = cxx | |
| 125 } | |
| 126 | |
| 127 nacl_toolchain("clang_newlib_x64") { | |
| 128 toolchain_package = "pnacl_newlib" | |
| 129 toolchain_revision = pnacl_newlib_rev | |
| 130 toolchain_cpu = "x64" | |
| 131 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/x86_64-nacl-" | |
| 132 is_clang = true | |
| 133 | |
| 134 cc = toolprefix + "clang" | |
| 135 cxx = toolprefix + "clang++" | |
| 136 ar = toolprefix + "ar" | |
| 137 ld = cxx | |
| 138 } | |
| 139 | |
| 140 link_irt = rebase_path("//native_client/build/link_irt.py", root_build_dir) | |
|
Roland McGrath
2015/08/28 20:58:40
This needs comments about what it is and why it ex
Dirk Pranke
2015/08/28 21:17:05
Acknowledged. I would prefer it if you can make th
| |
| 141 | |
| 142 nacl_toolchain("irt_x86") { | |
| 143 toolchain_package = "pnacl_newlib" | |
| 144 toolchain_revision = pnacl_newlib_rev | |
| 145 toolchain_cpu = "x86" | |
| 146 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/i686-nacl-" | |
| 147 is_clang = true | |
| 148 | |
| 149 cc = toolprefix + "clang" | |
| 150 cxx = toolprefix + "clang++" | |
| 151 ar = toolprefix + "ar" | |
| 152 readelf = toolprefix + "readelf" | |
| 153 | |
| 154 # Some IRT implementations (notably, Chromium's) contain C++ code, | |
| 155 # so we need to link w/ the C++ linker. | |
| 156 ld = "${python_path} ${link_irt} --tls-edit=tls_edit --link-cmd=${cxx} --reade lf-cmd=${readelf}" | |
| 157 | |
| 158 # TODO(ncbray): depend on link script | |
| 159 deps = [ | |
| 160 "//native_client/src/tools/tls_edit:tls_edit($host_toolchain)", | |
| 161 ] | |
| 162 } | |
| 163 | |
| 164 nacl_toolchain("irt_x64") { | |
| 165 toolchain_package = "pnacl_newlib" | |
| 166 toolchain_revision = pnacl_newlib_rev | |
| 167 toolchain_cpu = "x64" | |
| 168 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/x86_64-nacl-" | |
| 169 is_clang = true | |
| 170 | |
| 171 cc = toolprefix + "clang" | |
| 172 cxx = toolprefix + "clang++" | |
| 173 ar = toolprefix + "ar" | |
| 174 readelf = toolprefix + "readelf" | |
| 175 | |
| 176 # Some IRT implementations (notably, Chromium's) contain C++ code, | |
| 177 # so we need to link w/ the C++ linker. | |
| 178 ld = "${python_path} ${link_irt} --tls-edit=tls_edit --link-cmd=${cxx} --reade lf-cmd=${readelf}" | |
| 179 | |
| 180 # TODO(ncbray): depend on link script | |
| 181 deps = [ | |
| 182 "//native_client/src/tools/tls_edit:tls_edit($host_toolchain)", | |
| 183 ] | |
| 184 } | |
| 185 | |
| 186 # Uses newlib to match the Chrome build. | |
| 187 nacl_toolchain("irt_arm") { | |
| 188 toolchain_package = "nacl_arm_newlib" | |
| 189 toolchain_revision = nacl_arm_newlib_rev | |
| 190 toolchain_cpu = "arm" | |
| 191 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/arm-nacl-" | |
| 192 | |
| 193 cc = toolprefix + "gcc" | |
| 194 cxx = toolprefix + "g++" | |
| 195 ar = toolprefix + "ar" | |
| 196 readelf = toolprefix + "readelf" | |
| 197 | |
| 198 # Some IRT implementations (notably, Chromium's) contain C++ code, | |
| 199 # so we need to link w/ the C++ linker. | |
| 200 ld = "${python_path} ${link_irt} --tls-edit=tls_edit --link-cmd=${cxx} --reade lf-cmd=${readelf}" | |
| 201 | |
| 202 # TODO(ncbray): depend on link script | |
| 203 deps = [ | |
| 204 "//native_client/src/tools/tls_edit:tls_edit($host_toolchain)", | |
| 205 ] | |
| 206 } | |
| OLD | NEW |