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

Side by Side Diff: pnacl/build.sh

Issue 8698014: Switch to using the LLVM gold plugin as a fully linked-in object rather than DSO. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: Created 8 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | pnacl/driver/driver_env.py » ('j') | 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 #@ Untrusted Toolchain Manager 6 #@ Untrusted Toolchain Manager
7 #@------------------------------------------------------------------- 7 #@-------------------------------------------------------------------
8 #@ This script builds the ARM and PNaCl untrusted toolchains. 8 #@ This script builds the ARM and PNaCl untrusted toolchains.
9 #@ It MUST be run from the native_client/ directory. 9 #@ It MUST be run from the native_client/ directory.
10 ###################################################################### 10 ######################################################################
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 readonly LLVM_INSTALL_DIR="${INSTALL_PKG}/llvm" 169 readonly LLVM_INSTALL_DIR="${INSTALL_PKG}/llvm"
170 readonly GCC_INSTALL_DIR="${INSTALL_PKG}/gcc" 170 readonly GCC_INSTALL_DIR="${INSTALL_PKG}/gcc"
171 readonly GMP_INSTALL_DIR="${INSTALL_PKG}/gmp" 171 readonly GMP_INSTALL_DIR="${INSTALL_PKG}/gmp"
172 readonly MPFR_INSTALL_DIR="${INSTALL_PKG}/mpfr" 172 readonly MPFR_INSTALL_DIR="${INSTALL_PKG}/mpfr"
173 readonly MPC_INSTALL_DIR="${INSTALL_PKG}/mpc" 173 readonly MPC_INSTALL_DIR="${INSTALL_PKG}/mpc"
174 readonly BINUTILS_INSTALL_DIR="${INSTALL_PKG}/binutils" 174 readonly BINUTILS_INSTALL_DIR="${INSTALL_PKG}/binutils"
175 readonly BFD_PLUGIN_DIR="${BINUTILS_INSTALL_DIR}/lib/bfd-plugins" 175 readonly BFD_PLUGIN_DIR="${BINUTILS_INSTALL_DIR}/lib/bfd-plugins"
176 readonly SYSROOT_DIR="${INSTALL_NEWLIB}/sysroot" 176 readonly SYSROOT_DIR="${INSTALL_NEWLIB}/sysroot"
177 readonly FAKE_INSTALL_DIR="${INSTALL_PKG}/fake" 177 readonly FAKE_INSTALL_DIR="${INSTALL_PKG}/fake"
178 178
179 readonly LLVM_GOLD_PLUGIN_DIR="${LLVM_INSTALL_DIR}"/plugin
180 readonly LLVM_GOLD_PLUGIN="${LLVM_GOLD_PLUGIN_DIR}"/gold-plugin-static.o
181
179 # TODO(pdox): Consider getting rid of pnacl-ld libmode bias, 182 # TODO(pdox): Consider getting rid of pnacl-ld libmode bias,
180 # and merging these two. 183 # and merging these two.
181 readonly PNACL_LD_NEWLIB="${INSTALL_NEWLIB_BIN}/pnacl-ld" 184 readonly PNACL_LD_NEWLIB="${INSTALL_NEWLIB_BIN}/pnacl-ld"
182 readonly PNACL_LD_GLIBC="${INSTALL_GLIBC_BIN}/pnacl-ld" 185 readonly PNACL_LD_GLIBC="${INSTALL_GLIBC_BIN}/pnacl-ld"
183 186
184 # These driver tools are always pulled from newlib/bin, 187 # These driver tools are always pulled from newlib/bin,
185 # but this should not introduce a bias. 188 # but this should not introduce a bias.
186 readonly PNACL_PP="${INSTALL_NEWLIB_BIN}/pnacl-clang -E" 189 readonly PNACL_PP="${INSTALL_NEWLIB_BIN}/pnacl-clang -E"
187 readonly PNACL_AR="${INSTALL_NEWLIB_BIN}/pnacl-ar" 190 readonly PNACL_AR="${INSTALL_NEWLIB_BIN}/pnacl-ar"
188 readonly PNACL_RANLIB="${INSTALL_NEWLIB_BIN}/pnacl-ranlib" 191 readonly PNACL_RANLIB="${INSTALL_NEWLIB_BIN}/pnacl-ranlib"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 # which can then be translated to each individual architecture. 250 # which can then be translated to each individual architecture.
248 SBTC_PRODUCTION=${SBTC_PRODUCTION:-false} 251 SBTC_PRODUCTION=${SBTC_PRODUCTION:-false}
249 252
250 # Which toolchain to use for each arch. 253 # Which toolchain to use for each arch.
251 SBTC_BUILD_WITH_PNACL="arm x8632 x8664" 254 SBTC_BUILD_WITH_PNACL="arm x8632 x8664"
252 if ${PNACL_IN_CROS_CHROOT}; then 255 if ${PNACL_IN_CROS_CHROOT}; then
253 SBTC_BUILD_WITH_PNACL="arm" 256 SBTC_BUILD_WITH_PNACL="arm"
254 fi 257 fi
255 258
256 # Current milestones in each repo 259 # Current milestones in each repo
257 readonly UPSTREAM_REV=${UPSTREAM_REV:-1de82863028c} 260 readonly UPSTREAM_REV=${UPSTREAM_REV:-fb48564375b4}
258 261
259 readonly NEWLIB_REV=346ea38d142f 262 readonly NEWLIB_REV=346ea38d142f
260 readonly BINUTILS_REV=ae568f8eb6e0 263 readonly BINUTILS_REV=3cd8f04ea3b2
261 readonly COMPILER_RT_REV=1a3a6ffb31ea 264 readonly COMPILER_RT_REV=1a3a6ffb31ea
262 265
263 readonly LLVM_PROJECT_REV=${LLVM_PROJECT_REV:-147864} 266 readonly LLVM_PROJECT_REV=${LLVM_PROJECT_REV:-147864}
264 readonly LLVM_MASTER_REV=${LLVM_PROJECT_REV} 267 readonly LLVM_MASTER_REV=${LLVM_PROJECT_REV}
265 readonly CLANG_REV=${LLVM_PROJECT_REV} 268 readonly CLANG_REV=${LLVM_PROJECT_REV}
266 readonly DRAGONEGG_REV=${LLVM_PROJECT_REV} 269 readonly DRAGONEGG_REV=${LLVM_PROJECT_REV}
267 270
268 # Repositories 271 # Repositories
269 readonly REPO_UPSTREAM="nacl-llvm-branches.upstream" 272 readonly REPO_UPSTREAM="nacl-llvm-branches.upstream"
270 readonly REPO_NEWLIB="nacl-llvm-branches.newlib" 273 readonly REPO_NEWLIB="nacl-llvm-branches.newlib"
271 readonly REPO_BINUTILS="nacl-llvm-branches.binutils" 274 readonly REPO_BINUTILS="nacl-llvm-branches.binutils"
272 readonly REPO_COMPILER_RT="nacl-llvm-branches.compiler-rt" 275 readonly REPO_COMPILER_RT="nacl-llvm-branches.compiler-rt"
273 276
274 # LLVM repos (svn) 277 # LLVM repos (svn)
275 readonly REPO_LLVM_MASTER="http://llvm.org/svn/llvm-project/llvm/trunk" 278 readonly REPO_LLVM_MASTER="http://llvm.org/svn/llvm-project/llvm/trunk"
276 readonly REPO_CLANG="http://llvm.org/svn/llvm-project/cfe/trunk" 279 readonly REPO_CLANG="http://llvm.org/svn/llvm-project/cfe/trunk"
277 readonly REPO_DRAGONEGG="http://llvm.org/svn/llvm-project/dragonegg/trunk" 280 readonly REPO_DRAGONEGG="http://llvm.org/svn/llvm-project/dragonegg/trunk"
278 281
279 CC=${CC:-gcc} 282 CC=${CC:-gcc}
280 CXX=${CXX:-g++} 283 CXX=${CXX:-g++}
284 AR=${AR:-ar}
281 if ${HOST_ARCH_X8632} ; then 285 if ${HOST_ARCH_X8632} ; then
282 # These are simple compiler wrappers to force 32bit builds 286 # These are simple compiler wrappers to force 32bit builds
283 # For bots and releases we build the toolchains 287 # For bots and releases we build the toolchains
284 # on the oldest system we care to support. Currently 288 # on the oldest system we care to support. Currently
285 # that is a 32 bit hardy. The advantage of this is that we can build 289 # that is a 32 bit hardy. The advantage of this is that we can build
286 # the toolchain shared, reducing its size and allowing the use of 290 # the toolchain shared, reducing its size and allowing the use of
287 # plugins. You can test them on your system by setting the 291 # plugins. You can test them on your system by setting the
288 # environment variable HOST_ARCH=x86_32 on a 64 bit system. 292 # environment variable HOST_ARCH=x86_32 on a 64 bit system.
289 # Make sure you clean all your build dirs 293 # Make sure you clean all your build dirs
290 # before switching arches. 294 # before switching arches.
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 mkdir -p "${INSTALL_ROOT}" 800 mkdir -p "${INSTALL_ROOT}"
797 # This is needed to build misc-tools and run ARM tests. 801 # This is needed to build misc-tools and run ARM tests.
798 # We check this early so that there are no surprises later, and we can 802 # We check this early so that there are no surprises later, and we can
799 # handle all user interaction early. 803 # handle all user interaction early.
800 check-for-trusted 804 check-for-trusted
801 805
802 clean-install 806 clean-install
803 807
804 clean-logs 808 clean-logs
805 809
810 llvm
806 binutils 811 binutils
807 llvm
808 driver 812 driver
809 813
810 libs 814 libs
811 815
812 # NOTE: we delay the tool building till after the sdk is essentially 816 # NOTE: we delay the tool building till after the sdk is essentially
813 # complete, so that sdk sanity checks don't fail 817 # complete, so that sdk sanity checks don't fail
814 misc-tools 818 misc-tools
815 verify 819 verify
816 } 820 }
817 821
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
1233 #+ llvm-install - Install LLVM 1237 #+ llvm-install - Install LLVM
1234 llvm-install() { 1238 llvm-install() {
1235 StepBanner "LLVM" "Install" 1239 StepBanner "LLVM" "Install"
1236 1240
1237 spushd "${TC_BUILD_LLVM}" 1241 spushd "${TC_BUILD_LLVM}"
1238 llvm-link-clang 1242 llvm-link-clang
1239 RunWithLog llvm.install \ 1243 RunWithLog llvm.install \
1240 make ${MAKE_OPTS} install 1244 make ${MAKE_OPTS} install
1241 spopd 1245 spopd
1242 1246
1243 llvm-install-links 1247 llvm-install-plugin
1244 } 1248 }
1245 1249
1246 llvm-install-links() { 1250 # Produces gold-plugin-static.o, which is the gold plugin
1247 local makelink="ln -sf" 1251 # with all LLVM dependencies statically linked in.
1252 llvm-install-plugin() {
1253 StepBanner "LLVM" "Installing plugin"
1254 mkdir -p "${LLVM_GOLD_PLUGIN_DIR}"
1248 1255
1249 # On Windows, these can't be symlinks. 1256 # This pulls every LLVM dependency needed for gold-plugin.o and libLTO.
1250 if ${BUILD_PLATFORM_WIN}; then 1257 local components="x86 arm linker analysis ipo bitwriter"
1251 makelink="cp -a"
1252 fi
1253 1258
1254 mkdir -p "${BFD_PLUGIN_DIR}" 1259 ${CC} -r -nostdlib \
1260 "${TC_BUILD_LLVM}"/tools/gold/Release+Asserts/gold-plugin.o \
1261 -L "${TC_BUILD_LLVM}"/Release+Asserts/lib \
1262 -Wl,-Bstatic \
1263 -lLTO \
1264 $("${LLVM_INSTALL_DIR}"/bin/llvm-config --libs ${components}) \
1265 -o "${LLVM_GOLD_PLUGIN}"
jvoung - send to chromium... 2012/06/22 19:58:49 Perhaps this shouldn't have been a single .o file
1255 1266
1256 # TODO(pdox): These may no longer be necessary. 1267 # Force re-link of ld, gold, ar, ranlib, nm
1257 if [ -f "${BFD_PLUGIN_DIR}/../../../llvm/${SO_DIR}/LLVMgold${SO_EXT}" ]; then 1268 rm -f "${TC_BUILD_BINUTILS}"/binutils/ar
1258 # this is to make sure whatever name LLVMgold.so is, it is always 1269 rm -f "${TC_BUILD_BINUTILS}"/binutils/nm-new
1259 # libLLVMgold.so as far as PNaCl is concerned 1270 rm -f "${TC_BUILD_BINUTILS}"/binutils/ranlib
1260 1271 rm -f "${TC_BUILD_BINUTILS}"/gold/ld-new
1261 StepBanner "Symlinking LLVMgold.so to libLLVMgold.so in " \ 1272 rm -f "${TC_BUILD_BINUTILS}"/ld/ld-new
1262 "${BFD_PLUGIN_DIR}/../../../llvm/${SO_DIR}"
1263
1264 (cd "${BFD_PLUGIN_DIR}/../../../llvm/${SO_DIR}";
1265 ${makelink} "LLVMgold${SO_EXT}" "${SO_PREFIX}LLVMgold${SO_EXT}";
1266 )
1267 fi
1268
1269 spushd "${BFD_PLUGIN_DIR}"
1270
1271 ${makelink} ../../../llvm/${SO_DIR}/${SO_PREFIX}LLVMgold${SO_EXT} .
1272 ${makelink} ../../../llvm/${SO_DIR}/${SO_PREFIX}LTO${SO_EXT} .
1273 spopd
1274
1275 spushd "${BINUTILS_INSTALL_DIR}/${SO_DIR}"
1276 ${makelink} ../../llvm/${SO_DIR}/${SO_PREFIX}LTO${SO_EXT} .
1277 ${makelink} ../../llvm/${SO_DIR}/${SO_PREFIX}LLVMgold${SO_EXT} .
1278 spopd
1279 } 1273 }
1280 1274
1281 ######################################################################### 1275 #########################################################################
1282 ######################################################################### 1276 #########################################################################
1283 # GCC/DragonEgg based front-end 1277 # GCC/DragonEgg based front-end
1284 ######################################################################### 1278 #########################################################################
1285 ######################################################################### 1279 #########################################################################
1286 1280
1287 ############################### GMP ############################### 1281 ############################### GMP ###############################
1288 #+ gmp - Build and install gmp 1282 #+ gmp - Build and install gmp
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after
1955 1949
1956 assert-dir "${srcdir}" "You need to checkout binutils." 1950 assert-dir "${srcdir}" "You need to checkout binutils."
1957 1951
1958 if binutils-needs-configure; then 1952 if binutils-needs-configure; then
1959 binutils-clean 1953 binutils-clean
1960 binutils-configure 1954 binutils-configure
1961 else 1955 else
1962 SkipBanner "BINUTILS" "configure" 1956 SkipBanner "BINUTILS" "configure"
1963 fi 1957 fi
1964 1958
1965 if binutils-needs-make; then 1959 binutils-dlwrap
1966 binutils-make 1960 binutils-make
1967 else
1968 SkipBanner "BINUTILS" "make"
1969 fi
1970
1971 binutils-install 1961 binutils-install
1972 } 1962 }
1973 1963
1974 #+ binutils-clean - Clean binutils 1964 #+ binutils-clean - Clean binutils
1975 binutils-clean() { 1965 binutils-clean() {
1976 StepBanner "BINUTILS" "Clean" 1966 StepBanner "BINUTILS" "Clean"
1977 local objdir="${TC_BUILD_BINUTILS}" 1967 local objdir="${TC_BUILD_BINUTILS}"
1978 rm -rf ${objdir} 1968 rm -rf ${objdir}
1979 } 1969 }
1980 1970
1971 binutils-dlwrap() {
1972 local srcdir="${TC_SRC_BINUTILS}"
1973 local objdir="${TC_BUILD_BINUTILS}"
1974
1975 if ! [ -f "${LLVM_GOLD_PLUGIN}" ]; then
1976 Fatal "LLVM must be installed before building binutils."
1977 fi
1978
1979 # Build libdlwrap.a
1980 mkdir -p "${objdir}/dlwrap"
1981 spushd "${objdir}/dlwrap"
1982 ${CC} -c "${srcdir}"/dlwrap/dlwrap.c -o dlwrap.o
1983 cp "${LLVM_GOLD_PLUGIN}" gold_plugin_static.o
1984 ${AR} crs libdlwrap.a dlwrap.o gold_plugin_static.o
1985 spopd
1986 }
1987
1981 #+ binutils-configure- Configure binutils for ARM 1988 #+ binutils-configure- Configure binutils for ARM
1982 binutils-configure() { 1989 binutils-configure() {
1983 StepBanner "BINUTILS" "Configure" 1990 StepBanner "BINUTILS" "Configure"
1984 1991
1985 local srcdir="${TC_SRC_BINUTILS}" 1992 local srcdir="${TC_SRC_BINUTILS}"
1986 local objdir="${TC_BUILD_BINUTILS}" 1993 local objdir="${TC_BUILD_BINUTILS}"
1987 1994
1988 # enable multiple targets so that we can use the same ar with all .o files 1995 # enable multiple targets so that we can use the same ar with all .o files
1989 local targ="arm-pc-nacl,i686-pc-nacl,x86_64-pc-nacl" 1996 local targ="arm-pc-nacl,i686-pc-nacl,x86_64-pc-nacl"
1990 mkdir -p "${objdir}" 1997 mkdir -p "${objdir}"
1991 spushd "${objdir}" 1998 spushd "${objdir}"
1992 1999
1993 # The --enable-gold and --enable-plugins options are on so that we 2000 # The --enable-gold and --enable-plugins options are on so that we
1994 # can use gold's support for plugin to link PNaCl modules. 2001 # can use gold's support for plugin to link PNaCl modules.
1995 2002
1996 # TODO(pdox): Building binutils for nacl/nacl64 target currently requires 2003 # TODO(pdox): Building binutils for nacl/nacl64 target currently requires
1997 # providing NACL_ALIGN_* defines. This should really be defined inside 2004 # providing NACL_ALIGN_* defines. This should really be defined inside
1998 # binutils instead. 2005 # binutils instead.
2006 local flags="-DNACL_ALIGN_BYTES=32 -DNACL_ALIGN_POW2=5 \
2007 -I${TC_SRC_BINUTILS}/dlwrap -DENABLE_DLWRAP"
1999 RunWithLog binutils.configure \ 2008 RunWithLog binutils.configure \
2000 env -i \ 2009 env -i \
2001 PATH="/usr/bin:/bin" \ 2010 PATH="/usr/bin:/bin" \
2002 CC="${CC}" \ 2011 CC="${CC}" \
2003 CXX="${CXX}" \ 2012 CXX="${CXX}" \
2004 CFLAGS="-DNACL_ALIGN_BYTES=32 -DNACL_ALIGN_POW2=5" \ 2013 LDFLAGS="-L${objdir}/dlwrap" \
2014 CFLAGS="${flags}" \
2015 CXXFLAGS="${flags}" \
2005 ${srcdir}/binutils-2.20/configure --prefix="${BINUTILS_INSTALL_DIR}" \ 2016 ${srcdir}/binutils-2.20/configure --prefix="${BINUTILS_INSTALL_DIR}" \
2006 --target=${BINUTILS_TARGET} \ 2017 --target=${BINUTILS_TARGET} \
2007 --enable-targets=${targ} \ 2018 --enable-targets=${targ} \
2008 --enable-gold=yes \ 2019 --enable-gold=yes \
2009 --enable-ld=yes \ 2020 --enable-ld=yes \
2010 --enable-plugins \ 2021 --enable-plugins \
2011 --disable-werror \ 2022 --disable-werror \
2012 --with-sysroot="${NONEXISTENT_PATH}" 2023 --with-sysroot="${NONEXISTENT_PATH}"
2013 # There's no point in setting the correct path as sysroot, because we 2024 # There's no point in setting the correct path as sysroot, because we
2014 # want the toolchain to be relocatable. The driver will use ld command-line 2025 # want the toolchain to be relocatable. The driver will use ld command-line
2015 # option --sysroot= to override this value and set it to the correct path. 2026 # option --sysroot= to override this value and set it to the correct path.
2016 # However, we need to include --with-sysroot during configure to get this 2027 # However, we need to include --with-sysroot during configure to get this
2017 # option. So fill in a non-sense, non-existent path. 2028 # option. So fill in a non-sense, non-existent path.
2018 2029
2019 spopd 2030 spopd
2020 } 2031 }
2021 2032
2022 binutils-needs-configure() { 2033 binutils-needs-configure() {
2023 [ ! -f "${TC_BUILD_BINUTILS}/config.status" ] 2034 [ ! -f "${TC_BUILD_BINUTILS}/config.status" ]
2024 return $? 2035 return $?
2025 } 2036 }
2026 2037
2027 binutils-needs-make() {
2028 local srcdir="${TC_SRC_BINUTILS}"
2029 local objdir="${TC_BUILD_BINUTILS}"
2030 local ret=1
2031 binutils-mess-hide
2032 ts-modified "$srcdir" "$objdir" && ret=0
2033 binutils-mess-unhide
2034 return ${ret}
2035 }
2036
2037 #+ binutils-make - Make binutils for ARM 2038 #+ binutils-make - Make binutils for ARM
2038 binutils-make() { 2039 binutils-make() {
2039 StepBanner "BINUTILS" "Make" 2040 StepBanner "BINUTILS" "Make"
2040 local srcdir="${TC_SRC_BINUTILS}" 2041 local srcdir="${TC_SRC_BINUTILS}"
2041 local objdir="${TC_BUILD_BINUTILS}" 2042 local objdir="${TC_BUILD_BINUTILS}"
2042 spushd "${objdir}" 2043 spushd "${objdir}"
2043 2044
2044 ts-touch-open "${objdir}" 2045 ts-touch-open "${objdir}"
2045 2046
2046 RunWithLog binutils.make \ 2047 RunWithLog binutils.make \
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after
2598 env -i \ 2599 env -i \
2599 PATH="/usr/bin:/bin" \ 2600 PATH="/usr/bin:/bin" \
2600 ${srcdir}/binutils-2.20/configure \ 2601 ${srcdir}/binutils-2.20/configure \
2601 "${BINUTILS_SB_CONFIGURE_ENV[@]}" \ 2602 "${BINUTILS_SB_CONFIGURE_ENV[@]}" \
2602 --prefix=${installdir} \ 2603 --prefix=${installdir} \
2603 --host=nacl \ 2604 --host=nacl \
2604 --target=${BINUTILS_TARGET} \ 2605 --target=${BINUTILS_TARGET} \
2605 --enable-targets=${BINUTILS_SB_ELF_TARGETS} \ 2606 --enable-targets=${BINUTILS_SB_ELF_TARGETS} \
2606 --disable-nls \ 2607 --disable-nls \
2607 --disable-werror \ 2608 --disable-werror \
2609 --disable-plugins \
2608 --enable-static \ 2610 --enable-static \
2609 --enable-shared=no 2611 --enable-shared=no
2610 spopd 2612 spopd
2611 } 2613 }
2612 2614
2613 binutils-sb-needs-make() { 2615 binutils-sb-needs-make() {
2614 binutils-sb-setup "$@" 2616 binutils-sb-setup "$@"
2615 ts-modified "${TC_SRC_BINUTILS}" "${BINUTILS_SB_OBJDIR}" 2617 ts-modified "${TC_SRC_BINUTILS}" "${BINUTILS_SB_OBJDIR}"
2616 return $? 2618 return $?
2617 } 2619 }
(...skipping 1274 matching lines...) Expand 10 before | Expand all | Expand 10 after
3892 #Usage 3894 #Usage
3893 echo "ERROR: unknown function '$1'." >&2 3895 echo "ERROR: unknown function '$1'." >&2
3894 echo "For help, try:" 3896 echo "For help, try:"
3895 echo " $0 help" 3897 echo " $0 help"
3896 exit 1 3898 exit 1
3897 fi 3899 fi
3898 3900
3899 hg-migrate 3901 hg-migrate
3900 3902
3901 "$@" 3903 "$@"
OLDNEW
« no previous file with comments | « no previous file | pnacl/driver/driver_env.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698