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

Side by Side Diff: tools/trusted_cross_toolchains/trusted-toolchain-creator.mipsel.debian.sh

Issue 1195393006: Update mips sysroot creator script (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client.git@master
Patch Set: Created 5 years, 5 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 | « tools/trusted_cross_toolchains/trusted-toolchain-creator.armhf.sh ('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 #!/bin/bash 1 #!/bin/bash
2 # Copyright (c) 2012 The Native Client Authors. All rights reserved. 2 # Copyright (c) 2012 The Native Client Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 # 5 #
6 #@ This script creates the mips trusted SDK. 6 #@ This script creates the mips trusted SDK.
7 #@ It must be run from the native_client directory. 7 #@ It must be run from the native_client directory.
8 8
9 # This script is intended to build a mipsel-linux-gnu cross compilation 9 # This script is intended to build a mipsel-linux-gnu cross compilation
10 # toolchain that runs on x86 linux and generates code for a little-endian, 10 # toolchain that runs on x86 linux and generates code for a little-endian,
11 # hard-float, mips32 target. 11 # hard-float, mips32 target.
12 12
13 ###################################################################### 13 ######################################################################
14 # Config 14 # Config
15 ###################################################################### 15 ######################################################################
16 16
17 set -o nounset 17 set -o nounset
18 set -o errexit 18 set -o errexit
19 19
20 readonly SCRIPT_DIR=$(dirname $0) 20 readonly SCRIPT_DIR=$(dirname $0)
21 readonly NACL_ROOT=$(cd ${SCRIPT_DIR}/../.. && pwd)
21 22
22 readonly MAKE_OPTS="-j8" 23 readonly MAKE_OPTS="-j8"
23 readonly ARCH="mips32" 24 readonly ARCH="mips32"
24 25
25 readonly GMP_URL="http://ftp.gnu.org/gnu/gmp/gmp-5.1.3.tar.bz2" 26 readonly GMP_URL="http://ftp.gnu.org/gnu/gmp/gmp-5.1.3.tar.bz2"
26 readonly GMP_SHA1SUM="b35928e2927b272711fdfbf71b7cfd5f86a6b165" 27 readonly GMP_SHA1SUM="b35928e2927b272711fdfbf71b7cfd5f86a6b165"
27 28
28 readonly MPFR_URL="http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.bz2" 29 readonly MPFR_URL="http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.bz2"
29 readonly MPFR_SHA1SUM="46d5a11a59a4e31f74f73dd70c5d57a59de2d0b4" 30 readonly MPFR_SHA1SUM="46d5a11a59a4e31f74f73dd70c5d57a59de2d0b4"
30 31
(...skipping 10 matching lines...) Expand all
41 readonly KERNEL_SHA1SUM="9b094e817a7a9b7c09b5bc268e23de642c6c407a" 42 readonly KERNEL_SHA1SUM="9b094e817a7a9b7c09b5bc268e23de642c6c407a"
42 43
43 readonly GDB_URL="http://ftp.gnu.org/gnu/gdb/gdb-7.7.1.tar.bz2" 44 readonly GDB_URL="http://ftp.gnu.org/gnu/gdb/gdb-7.7.1.tar.bz2"
44 readonly GDB_SHA1SUM="35228319f7c715074a80be42fff64c7645227a80" 45 readonly GDB_SHA1SUM="35228319f7c715074a80be42fff64c7645227a80"
45 46
46 readonly GLIBC_URL="http://ftp.gnu.org/gnu/glibc/glibc-2.19.tar.bz2" 47 readonly GLIBC_URL="http://ftp.gnu.org/gnu/glibc/glibc-2.19.tar.bz2"
47 readonly GLIBC_SHA1SUM="382f4438a7321dc29ea1a3da8e7852d2c2b3208c" 48 readonly GLIBC_SHA1SUM="382f4438a7321dc29ea1a3da8e7852d2c2b3208c"
48 49
49 readonly DOWNLOAD_QEMU_URL="http://wiki.qemu-project.org/download/qemu-2.0.0.tar .bz2" 50 readonly DOWNLOAD_QEMU_URL="http://wiki.qemu-project.org/download/qemu-2.0.0.tar .bz2"
50 51
51 readonly INSTALL_ROOT=$(pwd)/toolchain/linux_x86/mips_trusted 52 readonly OUT_DIR=$(dirname ${NACL_ROOT})/out
52 53 readonly INSTALL_ROOT=${NACL_ROOT}/toolchain/linux_x86/mips_trusted
53 readonly TMP=$(pwd)/toolchain/tmp/crosstool-trusted 54 readonly JAIL_MIPS32=${INSTALL_ROOT}/sysroot
54 55 readonly TMP=${OUT_DIR}/sysroot_mips_trusted
55 readonly BUILD_DIR=${TMP}/build 56 readonly BUILD_DIR=${TMP}/build
56
57 readonly JAIL_MIPS32=${INSTALL_ROOT}/sysroot
58
59 readonly CROSS_TARBALL="chromesdk_linux_mipsel" 57 readonly CROSS_TARBALL="chromesdk_linux_mipsel"
58 readonly TAR_ARCHIVE=${OUT_DIR}/sysroot_mipsel_trusted_jessie.tar.gz
59 readonly PACKAGES="
60 libgcc1
61 libc6
62 libc6-dev
63 libstdc++6
64 libssl1.0.0
65 libssl-dev
66 zlib1g
67 zlib1g-dev
68 "
60 69
61 ###################################################################### 70 ######################################################################
62 # Helper 71 # Helper
63 ###################################################################### 72 ######################################################################
64 73
65 Banner() { 74 Banner() {
66 echo "######################################################################" 75 echo "######################################################################"
67 echo $* 76 echo $*
68 echo "######################################################################" 77 echo "######################################################################"
69 } 78 }
70 79
71 SubBanner() { 80 SubBanner() {
72 echo "......................................................................" 81 echo "......................................................................"
73 echo $* 82 echo $*
74 echo "......................................................................" 83 echo "......................................................................"
75 } 84 }
76 85
86
77 Usage() { 87 Usage() {
78 echo 88 egrep "^#@" $0 | cut --bytes=3-
79 echo "$0 <nacl_sdk|chrome_sdk>"
80 echo
81 echo "nacl_sdk - Build nacl toolchain and package it"
82 echo "chrome_sdk - Build chrome toolchain and package it"
83 echo
84 } 89 }
85 90
86 DownloadOrCopy() { 91 DownloadOrCopy() {
87 local url=$1 92 local url=$1
88 local filename="${TMP}/${url##*/}" 93 local filename="${TMP}/${url##*/}"
89 local filetype="${url%%:*}" 94 local filetype="${url%%:*}"
90 95
91 if [ "${filename}" == "" ]; then 96 if [ "${filename}" == "" ]; then
92 echo "Unknown error occured. Aborting." 97 echo "Unknown error occured. Aborting."
93 exit 1 98 exit 1
94 fi 99 fi
95 100
96 if [[ "${filetype}" == "http" || ${filetype} == "https" ]] ; then 101 if [[ "${filetype}" == "http" || ${filetype} == "https" ]] ; then
97 if [ ! -f "${filename}" ]; then 102 if [ ! -f "${filename}" ]; then
98 SubBanner "downloading from ${url} -> ${filename}" 103 SubBanner "downloading from ${url} -> ${filename}"
99 wget ${url} -O ${filename} 104 wget ${url} -O ${filename}
105 else
106 SubBanner "using existing file: ${filename}"
100 fi 107 fi
101 else 108 else
102 SubBanner "copying from ${url}" 109 SubBanner "copying from ${url}"
103 cp ${url} ${filename} 110 cp ${url} ${filename}
104 fi 111 fi
105 } 112 }
106 113
107 DownloadOrCopyAndVerify() { 114 DownloadOrCopyAndVerify() {
108 local url=$1 115 local url=$1
109 local checksum=$2 116 local checksum=$2
110 local filename="${TMP}/${url##*/}" 117 local filename="${TMP}/${url##*/}"
111 local filetype="${url%%:*}" 118 local filetype="${url%%:*}"
112 119
113 if [ "${filename}" == "" ]; then 120 if [ "${filename}" == "" ]; then
114 echo "Unknown error occured. Aborting." 121 echo "Unknown error occured. Aborting."
115 exit 1 122 exit 1
116 fi 123 fi
117 124
118 if [[ "${filetype}" == "http" || ${filetype} == "https" ]] ; then 125 if [[ "${filetype}" == "http" || ${filetype} == "https" ]] ; then
119 if [ ! -f "${filename}" ]; then 126 if [ ! -f "${filename}" ]; then
120 SubBanner "downloading from ${url} -> ${filename}" 127 SubBanner "downloading from ${url} -> ${filename}"
121 wget ${url} -O ${filename} 128 wget ${url} -O ${filename}
129 else
130 SubBanner "using existing file: ${filename}"
122 fi 131 fi
123 if [ "${checksum}" != "nochecksum" ]; then 132 if [ "${checksum}" != "nochecksum" ]; then
124 if [ "$(sha1sum ${filename} | cut -d ' ' -f 1)" != "${checksum}" ]; then 133 if [ "$(sha1sum ${filename} | cut -d ' ' -f 1)" != "${checksum}" ]; then
125 echo "${filename} sha1sum failed. Deleting file and aborting." 134 echo "${filename} sha1sum failed. Deleting file and aborting."
126 rm -f ${filename} 135 rm -f ${filename}
127 exit 1 136 exit 1
128 fi 137 fi
129 fi 138 fi
130 else 139 else
131 SubBanner "copying from ${url}" 140 SubBanner "copying from ${url}"
(...skipping 24 matching lines...) Expand all
156 echo "Required binary $tool not found." 165 echo "Required binary $tool not found."
157 echo "Exiting." 166 echo "Exiting."
158 exit 1 167 exit 1
159 fi 168 fi
160 done 169 done
161 } 170 }
162 171
163 172
164 ClearInstallDir() { 173 ClearInstallDir() {
165 Banner "clearing dirs in ${INSTALL_ROOT}" 174 Banner "clearing dirs in ${INSTALL_ROOT}"
166 rm -rf ${INSTALL_ROOT}/* 175 rm -rf ${INSTALL_ROOT}
167 mkdir -p ${JAIL_MIPS32} 176 mkdir -p ${INSTALL_ROOT}
168 } 177 }
169 178
179
170 ClearBuildDir() { 180 ClearBuildDir() {
171 Banner "clearing dirs in ${BUILD_DIR}" 181 Banner "clearing dirs in ${BUILD_DIR}"
172 rm -rf ${BUILD_DIR}/* 182 rm -rf ${BUILD_DIR}/*
173 } 183 }
174 184
185
175 CreateTarBall() { 186 CreateTarBall() {
176 local tarball=$1 187 Banner "creating tar ball ${TAR_ARCHIVE}"
177 Banner "creating tar ball ${tarball}" 188 tar cfz ${TAR_ARCHIVE} -C ${INSTALL_ROOT} .
178 tar cfz ${tarball}.tgz -C ${INSTALL_ROOT} .
179 } 189 }
180 190
181 191
182 # Download the toolchain source tarballs or use a local copy when available. 192 # Download the toolchain source tarballs or use a local copy when available.
183 DownloadOrCopyAndInstallToolchain() { 193 DownloadOrCopyAndInstallToolchain() {
184 Banner "Installing toolchain" 194 Banner "Installing toolchain"
185 195
186 tarball="${TMP}/${GCC_URL##*/}" 196 tarball="${TMP}/${GCC_URL##*/}"
187 DownloadOrCopyAndVerify ${GCC_URL} ${GCC_SHA1SUM} 197 DownloadOrCopyAndVerify ${GCC_URL} ${GCC_SHA1SUM}
188 SubBanner "extracting from ${tarball}" 198 if [ ! -d ${TMP}/gcc-4.9.0 ]; then
189 tar jxf ${tarball} -C ${TMP} 199 SubBanner "extracting from ${tarball}"
200 tar jxf ${tarball} -C ${TMP}
201 fi
190 202
191 pushd ${TMP}/gcc-* 203 pushd ${TMP}/gcc-4.9.0
192 204
193 local tarball="${TMP}/${GMP_URL##*/}" 205 local tarball="${TMP}/${GMP_URL##*/}"
194 DownloadOrCopyAndVerify ${GMP_URL} ${GMP_SHA1SUM} 206 DownloadOrCopyAndVerify ${GMP_URL} ${GMP_SHA1SUM}
195 SubBanner "extracting from ${tarball}" 207 SubBanner "extracting from ${tarball}"
196 tar jxf ${tarball} 208 tar jxf ${tarball}
197 local filename=`ls | grep gmp\-` 209 local filename=`ls | grep gmp\-`
198 rm -f gmp 210 rm -f gmp
199 ln -s ${filename} gmp 211 ln -s ${filename} gmp
200 # Fix gmp configure problem with flex. 212 # Fix gmp configure problem with flex.
201 sed -i "s/m4-not-needed/m4/" gmp/configure 213 sed -i "s/m4-not-needed/m4/" gmp/configure
(...skipping 11 matching lines...) Expand all
213 SubBanner "extracting from ${tarball}" 225 SubBanner "extracting from ${tarball}"
214 tar zxf ${tarball} 226 tar zxf ${tarball}
215 local filename=`ls | grep mpc\-` 227 local filename=`ls | grep mpc\-`
216 rm -f mpc 228 rm -f mpc
217 ln -s ${filename} mpc 229 ln -s ${filename} mpc
218 230
219 popd 231 popd
220 232
221 local tarball="${TMP}/${BINUTILS_URL##*/}" 233 local tarball="${TMP}/${BINUTILS_URL##*/}"
222 DownloadOrCopyAndVerify ${BINUTILS_URL} ${BINUTILS_SHA1SUM} 234 DownloadOrCopyAndVerify ${BINUTILS_URL} ${BINUTILS_SHA1SUM}
223 SubBanner "extracting from ${tarball}" 235 if [ ! -d ${TMP}/binutils-2.24 ]; then
224 tar jxf ${tarball} -C ${TMP} 236 SubBanner "extracting from ${tarball}"
237 tar jxf ${tarball} -C ${TMP}
238 fi
225 239
226 tarball="${TMP}/${GDB_URL##*/}" 240 tarball="${TMP}/${GDB_URL##*/}"
227 DownloadOrCopyAndVerify ${GDB_URL} ${GDB_SHA1SUM} 241 DownloadOrCopyAndVerify ${GDB_URL} ${GDB_SHA1SUM}
228 SubBanner "extracting from ${tarball}" 242 if [ ! -d ${TMP}/gdb-7.7.1 ]; then
229 tar jxf ${tarball} -C ${TMP} 243 SubBanner "extracting from ${tarball}"
244 tar jxf ${tarball} -C ${TMP}
245 fi
230 246
231 tarball="${TMP}/${KERNEL_URL##*/}" 247 tarball="${TMP}/${KERNEL_URL##*/}"
232 DownloadOrCopyAndVerify ${KERNEL_URL} ${KERNEL_SHA1SUM} 248 DownloadOrCopyAndVerify ${KERNEL_URL} ${KERNEL_SHA1SUM}
233 SubBanner "extracting from ${tarball}" 249 SubBanner "extracting from ${tarball}"
234 tar zxf ${tarball} -C ${TMP} 250 tar zxf ${tarball} -C ${TMP}
235 251
236 tarball="${TMP}/${GLIBC_URL##*/}" 252 tarball="${TMP}/${GLIBC_URL##*/}"
237 DownloadOrCopyAndVerify ${GLIBC_URL} ${GLIBC_SHA1SUM} 253 DownloadOrCopyAndVerify ${GLIBC_URL} ${GLIBC_SHA1SUM}
238 SubBanner "extracting from ${tarball}" 254 if [ ! -d ${TMP}/glibc-2.19 ]; then
239 tar jxf ${tarball} -C ${TMP} 255 SubBanner "extracting from ${tarball}"
256 tar jxf ${tarball} -C ${TMP}
257 fi
240 258
241 259
242 Banner "Preparing the code" 260 Banner "Preparing the code"
243 261
244 # Fix a minor syntax issue in tc-mips.c. 262 # Fix a minor syntax issue in tc-mips.c.
245 local OLD_TEXT="as_warn_where (fragp->fr_file, fragp->fr_line, msg);" 263 local OLD_TEXT="as_warn_where (fragp->fr_file, fragp->fr_line, msg);"
246 local NEW_TEXT="as_warn_where (fragp->fr_file, fragp->fr_line, \"%s\", msg);" 264 local NEW_TEXT="as_warn_where (fragp->fr_file, fragp->fr_line, \"%s\", msg);"
247 local FILE_NAME="${TMP}/binutils-2.24/gas/config/tc-mips.c" 265 local FILE_NAME="${TMP}/binutils-2.24/gas/config/tc-mips.c"
248 sed -i "s/${OLD_TEXT}/${NEW_TEXT}/g" "${FILE_NAME}" 266 sed -i "s/${OLD_TEXT}/${NEW_TEXT}/g" "${FILE_NAME}"
249 267
250 export PATH=${INSTALL_ROOT}/bin:$PATH 268 export PATH=${INSTALL_ROOT}/bin:$PATH
269 local PREFIX_MIPSEL=/usr
270 local PREFIX=/
251 271
252 272
253 Banner "Building binutils" 273 Banner "Building binutils"
254 274
255 rm -rf ${BUILD_DIR}/binutils/
256 mkdir -p ${BUILD_DIR}/binutils/ 275 mkdir -p ${BUILD_DIR}/binutils/
257 pushd ${BUILD_DIR}/binutils/ 276 pushd ${BUILD_DIR}/binutils/
258 277
259 SubBanner "Configuring" 278 SubBanner "Configuring"
260 ${TMP}/binutils-2.24/configure \ 279 ${TMP}/binutils-2.24/configure \
261 --prefix=${INSTALL_ROOT} \ 280 --prefix=${PREFIX} \
262 --target=mipsel-linux-gnu \ 281 --target=mipsel-linux-gnu \
263 --with-sysroot=${JAIL_MIPS32} 282 --with-sysroot=${JAIL_MIPS32}
264 283
265 SubBanner "Make" 284 SubBanner "Make"
266 make ${MAKE_OPTS} all-binutils all-gas all-ld 285 make ${MAKE_OPTS} all-binutils all-gas all-ld
267 286
268 SubBanner "Install" 287 SubBanner "Install"
269 make ${MAKE_OPTS} install-binutils install-gas install-ld 288 make ${MAKE_OPTS} DESTDIR=${INSTALL_ROOT} install-binutils install-gas \
289 install-ld
270 290
271 popd 291 popd
272 292
273 293
274 Banner "Building GCC (initial)" 294 Banner "Building GCC (initial)"
275 295
276 rm -rf ${BUILD_DIR}/gcc/initial
277 mkdir -p ${BUILD_DIR}/gcc/initial 296 mkdir -p ${BUILD_DIR}/gcc/initial
278 pushd ${BUILD_DIR}/gcc/initial 297 pushd ${BUILD_DIR}/gcc/initial
279 298
280 SubBanner "Configuring" 299 SubBanner "Configuring"
281 ${TMP}/gcc-4.9.0/configure \ 300 ${TMP}/gcc-4.9.0/configure \
282 --prefix=${INSTALL_ROOT} \ 301 --prefix=${PREFIX} \
283 --disable-libssp \ 302 --disable-libssp \
284 --disable-libgomp \ 303 --disable-libgomp \
285 --disable-libmudflap \ 304 --disable-libmudflap \
286 --disable-fixed-point \ 305 --disable-fixed-point \
287 --disable-decimal-float \ 306 --disable-decimal-float \
288 --with-mips-plt \ 307 --with-mips-plt \
289 --with-endian=little \ 308 --with-endian=little \
290 --with-arch=${ARCH} \ 309 --with-arch=${ARCH} \
291 --enable-languages=c \ 310 --enable-languages=c \
292 --with-newlib \ 311 --with-newlib \
293 --without-headers \ 312 --without-headers \
294 --disable-shared \ 313 --disable-shared \
295 --disable-threads \ 314 --disable-threads \
296 --disable-libquadmath \ 315 --disable-libquadmath \
297 --disable-libatomic \ 316 --disable-libatomic \
298 --target=mipsel-linux-gnu 317 --target=mipsel-linux-gnu
299 318
300 SubBanner "Make" 319 SubBanner "Make"
301 make ${MAKE_OPTS} all 320 make ${MAKE_OPTS} all
302 321
303 SubBanner "Install" 322 SubBanner "Install"
304 make ${MAKE_OPTS} install 323 make ${MAKE_OPTS} DESTDIR=${INSTALL_ROOT} install
305 324
306 popd 325 popd
307 326
308 327
309 Banner "Installing Linux kernel headers" 328 Banner "Installing Linux kernel headers"
310 pushd ${TMP}/linux-3.14.2 329 pushd ${TMP}/linux-3.14.2
311 make headers_install ARCH=mips INSTALL_HDR_PATH=${JAIL_MIPS32}/usr 330 make headers_install ARCH=mips INSTALL_HDR_PATH=${JAIL_MIPS32}${PREFIX_MIPSEL}
312 popd 331 popd
313 332
333
314 Banner "Building GLIBC" 334 Banner "Building GLIBC"
315 335
316 rm -rf ${BUILD_DIR}/glibc/final 336 mkdir -p ${BUILD_DIR}/glibc
317 mkdir -p ${BUILD_DIR}/glibc/final 337 pushd ${BUILD_DIR}/glibc
318 pushd ${BUILD_DIR}/glibc/final
319 338
320 BUILD_CC=gcc \ 339 BUILD_CC=gcc \
321 AR=mipsel-linux-gnu-ar \ 340 AR=mipsel-linux-gnu-ar \
322 RANLIB=mipsel-linux-gnu-ranlibi \ 341 RANLIB=mipsel-linux-gnu-ranlibi \
323 CC=mipsel-linux-gnu-gcc \ 342 CC=mipsel-linux-gnu-gcc \
324 CXX=mipsel-linux-gnu-g++ \ 343 CXX=mipsel-linux-gnu-g++ \
325 ${TMP}/glibc-2.19/configure \ 344 ${TMP}/glibc-2.19/configure \
326 --prefix=/usr \ 345 --prefix=${PREFIX_MIPSEL} \
327 --enable-add-ons \ 346 --enable-add-ons \
328 --host=mipsel-linux-gnu \ 347 --host=mipsel-linux-gnu \
329 --disable-profile \ 348 --disable-profile \
330 --without-gd \ 349 --without-gd \
331 --without-cvs \ 350 --without-cvs \
332 --build=i686-pc-linux-gnu \ 351 --build=i686-pc-linux-gnu \
333 --with-headers=${JAIL_MIPS32}/usr/include 352 --with-sysroot=${JAIL_MIPS32} \
353 --with-headers=${JAIL_MIPS32}${PREFIX_MIPSEL}/include
354
334 355
335 SubBanner "Make" 356 SubBanner "Make"
336 make ${MAKE_OPTS} all 357 make ${MAKE_OPTS} all
337 358
338 SubBanner "Install" 359 SubBanner "Install"
339 make ${MAKE_OPTS} install install_root=${JAIL_MIPS32} 360 make ${MAKE_OPTS} DESTDIR=${JAIL_MIPS32} install
340 361
341 popd 362 popd
342 363
343
344 Banner "Building GCC (final)" 364 Banner "Building GCC (final)"
345 365
346 rm -rf ${BUILD_DIR}/gcc/final
347 mkdir -p ${BUILD_DIR}/gcc/final 366 mkdir -p ${BUILD_DIR}/gcc/final
348 pushd ${BUILD_DIR}/gcc/final 367 pushd ${BUILD_DIR}/gcc/final
349 368
369 export MULTIARCH_DIRNAME=mipsel-linux-gnu
370
350 ${TMP}/gcc-4.9.0/configure \ 371 ${TMP}/gcc-4.9.0/configure \
351 --prefix=${INSTALL_ROOT} \ 372 --prefix=${PREFIX} \
352 --disable-libssp \ 373 --disable-libssp \
353 --disable-libgomp \ 374 --disable-libgomp \
354 --disable-libmudflap \ 375 --disable-libmudflap \
355 --disable-fixed-point \ 376 --disable-fixed-point \
356 --disable-decimal-float \ 377 --disable-decimal-float \
357 --with-mips-plt \ 378 --with-mips-plt \
358 --with-endian=little \ 379 --with-endian=little \
359 --with-arch=${ARCH} \ 380 --with-arch=${ARCH} \
360 --target=mipsel-linux-gnu \ 381 --target=mipsel-linux-gnu \
361 --enable-__cxa_atexit \ 382 --enable-__cxa_atexit \
362 --enable-languages=c,c++ \ 383 --enable-languages=c,c++ \
363 --with-sysroot=${JAIL_MIPS32} 384 --enable-multiarch \
385 --with-sysroot=${PREFIX}/sysroot \
386 --with-build-sysroot=${JAIL_MIPS32}
387
364 388
365 SubBanner "Make" 389 SubBanner "Make"
366 make ${MAKE_OPTS} all 390 make ${MAKE_OPTS} all
367 391
368 SubBanner "Install" 392 SubBanner "Install"
369 make ${MAKE_OPTS} install 393 make ${MAKE_OPTS} DESTDIR=${INSTALL_ROOT} install
370 394
371 popd 395 popd
372 396
373 397
374 Banner "Building GDB" 398 Banner "Building GDB"
375 399
376 rm -rf ${BUILD_DIR}/gdb/
377 mkdir -p ${BUILD_DIR}/gdb/ 400 mkdir -p ${BUILD_DIR}/gdb/
378 pushd ${BUILD_DIR}/gdb/ 401 pushd ${BUILD_DIR}/gdb/
379 402
380 ${TMP}/gdb-7.7.1/configure \ 403 ${TMP}/gdb-7.7.1/configure \
381 --prefix=${INSTALL_ROOT} \ 404 --prefix=${PREFIX} \
382 --target=mipsel-linux-gnu 405 --target=mipsel-linux-gnu
383 406
384 SubBanner "Make" 407 SubBanner "Make"
385 make ${MAKE_OPTS} all-gdb 408 make ${MAKE_OPTS} all-gdb
386 409
387 SubBanner "Install" 410 SubBanner "Install"
388 make ${MAKE_OPTS} install-gdb 411 make ${MAKE_OPTS} DESTDIR=${INSTALL_ROOT} install-gdb
389 412
390 popd 413 popd
391 } 414 }
392 415
393 416
394 # ---------------------------------------------------------------------- 417 # ----------------------------------------------------------------------
395 # mips32 deb files to complete our code sourcery jail 418 # mips32 deb files to complete our code sourcery jail
396 # ---------------------------------------------------------------------- 419 # ----------------------------------------------------------------------
397 420
398 readonly REPO_DEBIAN=http://ftp.debian.org/debian 421 readonly REPO_DEBIAN=http://ftp.debian.org/debian
399 readonly MIPS32_PACKAGES=${REPO_DEBIAN}/dists/wheezy/main/binary-mipsel/Packages .bz2 422 readonly MIPS32_PACKAGES=${REPO_DEBIAN}/dists/jessie/main/binary-mipsel/Packages .gz
423 readonly PACKAGE_LIST=${SCRIPT_DIR}/packagelist.jessie.mipsel.base
400 424
401 readonly BASE_PACKAGELIST_MIPS32=${SCRIPT_DIR}/packagelist.wheezy.mipsel.base 425 #@
402 readonly EXTRA_PACKAGELIST_MIPS32=${SCRIPT_DIR}/packagelist.wheezy.mipsel.extra 426 #@ GeneratePackageList
403 readonly TMP_BASE_PKG_MIPS32=${TMP}/packagelist.generated.wheezy.mipsel.base 427 #@
404 readonly TMP_EXTRA_PKG_MIPS32=${TMP}/packagelist.generated.wheezy.mipsel.extra 428 GeneratePackageList() {
405 429 Banner "generating package lists for mips32"
406 GeneratePackageLists() { 430 rm -f ${TMP}/Packages.gz
407 local sdk_target=$1
408 local packages=
409 local TMP_PACKAGELIST=
410 Banner "generating ${sdk_target} package lists for mips32"
411 rm -f ${TMP}/Packages.bz2
412 DownloadOrCopy ${MIPS32_PACKAGES} 431 DownloadOrCopy ${MIPS32_PACKAGES}
413 bzcat ${TMP}/Packages.bz2\ 432 zcat ${TMP}/Packages.gz\
414 | egrep '^(Package:|Filename:)' > ${TMP}/Packages_mipsel 433 | egrep '^(Package:|Filename:)' > ${TMP}/Packages_mipsel
415 434
416 if [ ${sdk_target} == "nacl_sdk" ] ; then 435 echo -n > ${PACKAGE_LIST}
417 echo -n > ${TMP_BASE_PKG_MIPS32}
418 TMP_PACKAGELIST=${TMP_BASE_PKG_MIPS32}
419 packages=$(cat ${BASE_PACKAGELIST_MIPS32})
420 elif [ ${sdk_target} == "chrome_sdk" ] ; then
421 echo -n > ${TMP_EXTRA_PKG_MIPS32}
422 TMP_PACKAGELIST=${TMP_EXTRA_PKG_MIPS32}
423 packages=$(cat ${EXTRA_PACKAGELIST_MIPS32})
424 else
425 Banner "ERROR: Packages for \"${sdk_taget}\" not defined."
426 exit -1
427 fi
428 436
429 for pkg in ${packages} ; do 437 for pkg in ${PACKAGES} ; do
430 grep -A 1 "${pkg}\$" ${TMP}/Packages_mipsel\ 438 grep -A 1 "${pkg}\$" ${TMP}/Packages_mipsel\
431 | egrep -o "pool/.*" >> ${TMP_PACKAGELIST} 439 | egrep -o "pool/.*" >> ${PACKAGE_LIST}
432 done 440 done
433 } 441 }
434 442
435 InstallMissingLibraries() { 443 #@
436 local sdk_target=$1 444 #@ InstallPackages
445 #@
446 InstallPackages() {
447 mkdir -p ${JAIL_MIPS32}
437 local DEP_FILES_NEEDED_MIPS32= 448 local DEP_FILES_NEEDED_MIPS32=
438 449 DEP_FILES_NEEDED_MIPS32=$(cat ${PACKAGE_LIST})
439 if [ ${sdk_target} == "nacl_sdk" ] ; then
440 DEP_FILES_NEEDED_MIPS32=$(cat ${TMP_BASE_PKG_MIPS32})
441 elif [ ${sdk_target} == "chrome_sdk" ] ; then
442 DEP_FILES_NEEDED_MIPS32=$(cat ${TMP_EXTRA_PKG_MIPS32})
443 else
444 Banner "ERROR: Target \"${sdk_taget}\" not defined."
445 exit -1
446 fi
447 450
448 for file in ${DEP_FILES_NEEDED_MIPS32} ; do 451 for file in ${DEP_FILES_NEEDED_MIPS32} ; do
449 local package="${TMP}/${file##*/}" 452 local package="${TMP}/${file##*/}"
450 Banner "installing ${file}" 453 Banner "installing ${file}"
451 DownloadOrCopy ${REPO_DEBIAN}/${file} 454 DownloadOrCopy ${REPO_DEBIAN}/${file}
452 SubBanner "extracting to ${JAIL_MIPS32}" 455 SubBanner "extracting to ${JAIL_MIPS32}"
453 dpkg --fsys-tarfile ${package}\ 456 dpkg --fsys-tarfile ${package}\
454 | tar -xvf - --exclude=./usr/share -C ${JAIL_MIPS32} 457 | tar -xvf - --exclude=./usr/share -C ${JAIL_MIPS32}
455 done 458 done
456 } 459 }
457 460
458 # Workaround for missing headers since pkg-config is not working correctly.
459 FixIncludes() {
460 Banner "Fixing includes"
461 pushd ${JAIL_MIPS32}/usr/include/glib-2.0
462 ln -s ../../lib/glib-2.0/include/glibconfig.h .
463 popd
464
465 pushd ${JAIL_MIPS32}/usr/include/gtk-2.0
466 ln -s ../../lib/gtk-2.0/include/gdkconfig.h .
467 popd
468
469 pushd ${JAIL_MIPS32}/usr/include/dbus-1.0/dbus
470 ln -s ../../../lib/dbus-1.0/include/dbus/dbus-arch-deps.h .
471 popd
472 }
473
474 FixLinks() {
475 Banner "Fixing links"
476 pushd ${JAIL_MIPS32}/lib/
477 mv mipsel-linux-gnu/* .
478 rm -rf mipsel-linux-gnu
479 ln -s . mipsel-linux-gnu
480 popd
481
482 pushd ${JAIL_MIPS32}/usr/lib/
483 mkdir -p pkgconfig
484 mv mipsel-linux-gnu/pkgconfig/* pkgconfig/
485 rm -rf mipsel-linux-gnu/pkgconfig
486 mv mipsel-linux-gnu/* .
487 rm -rf mipsel-linux-gnu
488 ln -s . mipsel-linux-gnu
489 popd
490
491 pushd ${JAIL_MIPS32}/usr/lib/
492 rm -f libstdc++.so*
493 ln -s ../../../mipsel-linux-gnu/lib/libstdc++.so.6.0.20 .
494 ln -s libstdc++.so.6.0.20 libstdc++.so.6
495 ln -s libstdc++.so.6.0.20 libstdc++.so
496
497 rm -f libgcc_s.so*
498 ln -s ../../../mipsel-linux-gnu/lib/libgcc_s.so.1 .
499 ln -s libgcc_s.so.1 libgcc_s.so
500 popd
501 }
502
503 FixLibs() {
504 Banner "Fixing libraries"
505
506 readonly liblist="libbz2.so \
507 libcom_err.so \
508 libdbus-1.so \
509 libexpat.so \
510 libglib-2.0.so \
511 libgpg-error.so \
512 libkeyutils.so \
513 libpamc.so \
514 libpam_misc.so \
515 libpam.so \
516 libpci.so \
517 libpcre.so \
518 libpng12.so \
519 libudev.so \
520 libz.so"
521
522 pushd ${JAIL_MIPS32}/usr/lib/
523 for library in ${liblist}; do
524 rm -f ${library}
525 ln -s ../../lib/${library}.[0123] ${library}
526 done
527 popd
528 }
529
530 BuildAndInstallQemu() { 461 BuildAndInstallQemu() {
531 local saved_dir=$(pwd) 462 local saved_dir=$(pwd)
532 local tmpdir="${TMP}/qemu-mips.nacl" 463 local tmpdir="${TMP}/qemu-mips.nacl"
533 local tarball="qemu-2.0.0.tar.bz2" 464 local tarball="qemu-2.0.0.tar.bz2"
534 465
535 Banner "Building qemu in ${tmpdir}" 466 Banner "Building qemu in ${tmpdir}"
536 467
537 rm -rf ${tmpdir} 468 rm -rf ${tmpdir}
538 mkdir ${tmpdir} 469 mkdir ${tmpdir}
539 cd ${tmpdir} 470 cd ${tmpdir}
540 471
541 SubBanner "Downloading" 472 SubBanner "Downloading"
542 wget -c ${DOWNLOAD_QEMU_URL} 473 wget -c ${DOWNLOAD_QEMU_URL}
543 474
544 SubBanner "Untarring" 475 SubBanner "Untarring"
545 tar xf ${tarball} 476 tar xf ${tarball}
546 cd qemu-2.0.0 477 cd qemu-2.0.0
547 478
548 SubBanner "Configuring" 479 SubBanner "Configuring"
549 env -i PATH=/usr/bin/:/bin \ 480 env -i PATH=/usr/bin/:/bin \
550 ./configure \ 481 ./configure \
551 --disable-system \ 482 --disable-system \
552 --enable-linux-user \ 483 --enable-linux-user \
553 --disable-bsd-user \ 484 --disable-bsd-user \
554 --target-list=mipsel-linux-user \ 485 --target-list=mipsel-linux-user \
555 --disable-sdl \ 486 --disable-sdl \
556 --disable-linux-aio 487 --disable-linux-aio
557 488
558 SubBanner "Make" 489 SubBanner "Make"
559 env -i PATH=/usr/bin/:/bin \ 490 env -i PATH=/usr/bin/:/bin make ${MAKE_OPTS}
560 make MAKE_OPTS=${MAKE_OPTS}
561 491
562 SubBanner "Install" 492 SubBanner "Install"
563 cp mipsel-linux-user/qemu-mipsel ${INSTALL_ROOT}/qemu-mips32 493 cp mipsel-linux-user/qemu-mipsel ${INSTALL_ROOT}/qemu-mips32
564 cd ${saved_dir} 494 cd ${saved_dir}
565 cp tools/trusted_cross_toolchains/qemu_tool_mips32.sh ${INSTALL_ROOT} 495 cp tools/trusted_cross_toolchains/qemu_tool_mips32.sh ${INSTALL_ROOT}
566 ln -sf qemu_tool_mips32.sh ${INSTALL_ROOT}/run_under_qemu_mips32 496 ln -sf qemu_tool_mips32.sh ${INSTALL_ROOT}/run_under_qemu_mips32
567 } 497 }
568 498
499 CleanupSysrootSymlinks() {
500 Banner "jail symlink cleanup"
501
502 pushd ${JAIL_MIPS32}
503 find usr/lib -type l -printf '%p %l\n' | while read link target; do
504 # skip links with non-absolute paths
505 if [[ ${target} != /* ]] ; then
506 continue
507 fi
508 echo "${link}: ${target}"
509 case "${link}" in
510 usr/lib/mipsel-linux-gnu/*)
511 # Relativize the symlink.
512 ln -snfv "../../..${target}" "${link}"
513 ;;
514 usr/lib/*)
515 # Relativize the symlink.
516 ln -snfv "../..${target}" "${link}"
517 ;;
518 esac
519 done
520
521 find usr/lib -type l -printf '%p %l\n' | while read link target; do
522 # Make sure we catch new bad links.
523 if [ ! -r "${link}" ]; then
524 echo "ERROR: FOUND BAD LINK ${link}"
525 exit -1
526 fi
527 done
528 popd
529 }
530
531 #@
532 #@ UploadArchive <revision>
533 #@
534 #@ Upload archive to Cloud Storage along with json manifest and
535 #@ update toolchain_revisions to point to new version.
536 #@ This requires write access the Cloud Storage bucket for Native Client.
537 UploadArchive() {
538 local REV=$1
539 local TAR_NAME=$(basename ${TAR_ARCHIVE})
540 local GS_FILE=nativeclient-archive2/toolchain/${REV}/${TAR_NAME}
541 local URL=https://storage.googleapis.com/${GS_FILE}
542 set -x
543 gsutil cp -a public-read ${TAR_ARCHIVE} gs://${GS_FILE}
544 local package_version=build/package_version/package_version.py
545 ${package_version} archive --archive-package linux_x86/mips_trusted \
546 ${TAR_ARCHIVE}@${URL}
547 ${package_version} upload --upload-package linux_x86/mips_trusted \
548 --revision ${REV}
549 ${package_version} setrevision --revision-package linux_x86/mips_trusted \
550 --revision ${REV}
551 set +x
552 }
553
554 help() {
555 Usage
556 }
557
569 ###################################################################### 558 ######################################################################
570 # Main 559 # Main
571 ###################################################################### 560 ######################################################################
572 561
573 if [[ $# -eq 0 ]] ; then 562 mkdir -p ${TMP}
574 echo "you must specify a mode on the commandline:"
575 echo
576 Usage
577 exit -1
578 563
579 elif [[ $1 == "nacl_sdk" || $1 == "chrome_sdk" ]] ; then 564 BuildSysroot() {
580 mkdir -p ${TMP}
581 SanityCheck 565 SanityCheck
582 ClearInstallDir 566 ClearInstallDir
583 ClearBuildDir 567 ClearBuildDir
584 DownloadOrCopyAndInstallToolchain 568 DownloadOrCopyAndInstallToolchain
585 GeneratePackageLists $1 569 GeneratePackageList
586 InstallMissingLibraries $1 570 InstallPackages
587 FixLinks 571 CleanupSysrootSymlinks
588 if [[ $1 == "nacl_sdk" ]] ; then 572 BuildAndInstallQemu
589 BuildAndInstallQemu 573 CreateTarBall
590 CreateTarBall $1 574 }
591 else
592 FixLibs
593 FixIncludes
594 CreateTarBall ${CROSS_TARBALL}
595 fi
596 575
576 if [[ $# -eq 0 ]] ; then
577 BuildSysroot
578 elif [[ "$(type -t $1)" != "function" ]]; then
579 echo "ERROR: unknown function '$1'." >&2
580 echo "For help, try:"
581 echo " $0 help"
582 exit 1
597 else 583 else
598 Usage 584 "$@"
599 exit -1
600
601 fi 585 fi
602
OLDNEW
« no previous file with comments | « tools/trusted_cross_toolchains/trusted-toolchain-creator.armhf.sh ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698