| Index: pnacl/build.sh
|
| ===================================================================
|
| --- pnacl/build.sh (revision 7831)
|
| +++ pnacl/build.sh (working copy)
|
| @@ -176,6 +176,9 @@
|
| readonly SYSROOT_DIR="${INSTALL_NEWLIB}/sysroot"
|
| readonly FAKE_INSTALL_DIR="${INSTALL_PKG}/fake"
|
|
|
| +readonly LLVM_GOLD_PLUGIN_DIR="${LLVM_INSTALL_DIR}"/plugin
|
| +readonly LLVM_GOLD_PLUGIN="${LLVM_GOLD_PLUGIN_DIR}"/gold-plugin-static.o
|
| +
|
| # TODO(pdox): Consider getting rid of pnacl-ld libmode bias,
|
| # and merging these two.
|
| readonly PNACL_LD_NEWLIB="${INSTALL_NEWLIB_BIN}/pnacl-ld"
|
| @@ -254,10 +257,10 @@
|
| fi
|
|
|
| # Current milestones in each repo
|
| -readonly UPSTREAM_REV=${UPSTREAM_REV:-1de82863028c}
|
| +readonly UPSTREAM_REV=${UPSTREAM_REV:-1de82863028c} # TO BE UPDATED
|
|
|
| readonly NEWLIB_REV=346ea38d142f
|
| -readonly BINUTILS_REV=ae568f8eb6e0
|
| +readonly BINUTILS_REV=ae568f8eb6e0 # TO BE UPDATED
|
| readonly COMPILER_RT_REV=1a3a6ffb31ea
|
|
|
| readonly LLVM_PROJECT_REV=${LLVM_PROJECT_REV:-147864}
|
| @@ -278,6 +281,7 @@
|
|
|
| CC=${CC:-gcc}
|
| CXX=${CXX:-g++}
|
| +AR=${AR:-ar}
|
| if ${HOST_ARCH_X8632} ; then
|
| # These are simple compiler wrappers to force 32bit builds
|
| # For bots and releases we build the toolchains
|
| @@ -803,8 +807,8 @@
|
|
|
| clean-logs
|
|
|
| + llvm
|
| binutils
|
| - llvm
|
| driver
|
|
|
| libs
|
| @@ -1240,42 +1244,32 @@
|
| make ${MAKE_OPTS} install
|
| spopd
|
|
|
| - llvm-install-links
|
| + llvm-install-plugin
|
| }
|
|
|
| -llvm-install-links() {
|
| - local makelink="ln -sf"
|
| +# Produces gold-plugin-static.o, which is the gold plugin
|
| +# with all LLVM dependencies statically linked in.
|
| +llvm-install-plugin() {
|
| + StepBanner "LLVM" "Installing plugin"
|
| + mkdir -p "${LLVM_GOLD_PLUGIN_DIR}"
|
|
|
| - # On Windows, these can't be symlinks.
|
| - if ${BUILD_PLATFORM_WIN}; then
|
| - makelink="cp -a"
|
| - fi
|
| + # This pulls every LLVM dependency needed for gold-plugin.o and libLTO.
|
| + local components="x86 arm linker analysis ipo bitwriter"
|
|
|
| - mkdir -p "${BFD_PLUGIN_DIR}"
|
| + ${CC} -r -nostdlib \
|
| + "${TC_BUILD_LLVM}"/tools/gold/Release+Asserts/gold-plugin.o \
|
| + -L "${TC_BUILD_LLVM}"/Release+Asserts/lib \
|
| + -Wl,-Bstatic \
|
| + -lLTO \
|
| + $("${LLVM_INSTALL_DIR}"/bin/llvm-config --libs ${components}) \
|
| + -o "${LLVM_GOLD_PLUGIN}"
|
|
|
| - # TODO(pdox): These may no longer be necessary.
|
| - if [ -f "${BFD_PLUGIN_DIR}/../../../llvm/${SO_DIR}/LLVMgold${SO_EXT}" ]; then
|
| - # this is to make sure whatever name LLVMgold.so is, it is always
|
| - # libLLVMgold.so as far as PNaCl is concerned
|
| -
|
| - StepBanner "Symlinking LLVMgold.so to libLLVMgold.so in " \
|
| - "${BFD_PLUGIN_DIR}/../../../llvm/${SO_DIR}"
|
| -
|
| - (cd "${BFD_PLUGIN_DIR}/../../../llvm/${SO_DIR}";
|
| - ${makelink} "LLVMgold${SO_EXT}" "${SO_PREFIX}LLVMgold${SO_EXT}";
|
| - )
|
| - fi
|
| -
|
| - spushd "${BFD_PLUGIN_DIR}"
|
| -
|
| - ${makelink} ../../../llvm/${SO_DIR}/${SO_PREFIX}LLVMgold${SO_EXT} .
|
| - ${makelink} ../../../llvm/${SO_DIR}/${SO_PREFIX}LTO${SO_EXT} .
|
| - spopd
|
| -
|
| - spushd "${BINUTILS_INSTALL_DIR}/${SO_DIR}"
|
| - ${makelink} ../../llvm/${SO_DIR}/${SO_PREFIX}LTO${SO_EXT} .
|
| - ${makelink} ../../llvm/${SO_DIR}/${SO_PREFIX}LLVMgold${SO_EXT} .
|
| - spopd
|
| + # Force re-link of ld, gold, ar, ranlib, nm
|
| + rm -f "${TC_BUILD_BINUTILS}"/binutils/ar
|
| + rm -f "${TC_BUILD_BINUTILS}"/binutils/nm-new
|
| + rm -f "${TC_BUILD_BINUTILS}"/binutils/ranlib
|
| + rm -f "${TC_BUILD_BINUTILS}"/gold/ld-new
|
| + rm -f "${TC_BUILD_BINUTILS}"/ld/ld-new
|
| }
|
|
|
| #########################################################################
|
| @@ -1962,12 +1956,8 @@
|
| SkipBanner "BINUTILS" "configure"
|
| fi
|
|
|
| - if binutils-needs-make; then
|
| - binutils-make
|
| - else
|
| - SkipBanner "BINUTILS" "make"
|
| - fi
|
| -
|
| + binutils-dlwrap
|
| + binutils-make
|
| binutils-install
|
| }
|
|
|
| @@ -1978,6 +1968,23 @@
|
| rm -rf ${objdir}
|
| }
|
|
|
| +binutils-dlwrap() {
|
| + local srcdir="${TC_SRC_BINUTILS}"
|
| + local objdir="${TC_BUILD_BINUTILS}"
|
| +
|
| + if ! [ -f "${LLVM_GOLD_PLUGIN}" ]; then
|
| + Fatal "LLVM must be installed before building binutils."
|
| + fi
|
| +
|
| + # Build libdlwrap.a
|
| + mkdir -p "${objdir}/dlwrap"
|
| + spushd "${objdir}/dlwrap"
|
| + ${CC} -c "${srcdir}"/dlwrap/dlwrap.c -o dlwrap.o
|
| + cp "${LLVM_GOLD_PLUGIN}" gold_plugin_static.o
|
| + ${AR} crs libdlwrap.a dlwrap.o gold_plugin_static.o
|
| + spopd
|
| +}
|
| +
|
| #+ binutils-configure- Configure binutils for ARM
|
| binutils-configure() {
|
| StepBanner "BINUTILS" "Configure"
|
| @@ -1996,12 +2003,16 @@
|
| # TODO(pdox): Building binutils for nacl/nacl64 target currently requires
|
| # providing NACL_ALIGN_* defines. This should really be defined inside
|
| # binutils instead.
|
| + local flags="-DNACL_ALIGN_BYTES=32 -DNACL_ALIGN_POW2=5 \
|
| + -I${TC_SRC_BINUTILS}/dlwrap -DENABLE_DLWRAP"
|
| RunWithLog binutils.configure \
|
| env -i \
|
| PATH="/usr/bin:/bin" \
|
| CC="${CC}" \
|
| CXX="${CXX}" \
|
| - CFLAGS="-DNACL_ALIGN_BYTES=32 -DNACL_ALIGN_POW2=5" \
|
| + LDFLAGS="-L${objdir}/dlwrap" \
|
| + CFLAGS="${flags}" \
|
| + CXXFLAGS="${flags}" \
|
| ${srcdir}/binutils-2.20/configure --prefix="${BINUTILS_INSTALL_DIR}" \
|
| --target=${BINUTILS_TARGET} \
|
| --enable-targets=${targ} \
|
| @@ -2024,16 +2035,6 @@
|
| return $?
|
| }
|
|
|
| -binutils-needs-make() {
|
| - local srcdir="${TC_SRC_BINUTILS}"
|
| - local objdir="${TC_BUILD_BINUTILS}"
|
| - local ret=1
|
| - binutils-mess-hide
|
| - ts-modified "$srcdir" "$objdir" && ret=0
|
| - binutils-mess-unhide
|
| - return ${ret}
|
| -}
|
| -
|
| #+ binutils-make - Make binutils for ARM
|
| binutils-make() {
|
| StepBanner "BINUTILS" "Make"
|
| @@ -2605,6 +2606,7 @@
|
| --enable-targets=${BINUTILS_SB_ELF_TARGETS} \
|
| --disable-nls \
|
| --disable-werror \
|
| + --disable-plugins \
|
| --enable-static \
|
| --enable-shared=no
|
| spopd
|
|
|